Está en la página 1de 20

Un lenguaje de definicin de datos (Data Definition Language, DDL por sus siglas en ingls) es un lenguaje proporcionado por elsistema

de gestin de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definicin de las estructuras que almacenarn los datos as como de los procedimientos o funciones que permitan consultarlos. El DDL (Data Definition Language) lenguaje de definicin de datos es la parte del SQL que ms vara de un sistema a otro ya que esa area tiene que ver con cmo se organizan internamente los datos y eso, cada sistema lo hace de una manera u otra.

2.1. Creacin del esquema de la base de datos

El esquema de una base de datos (en ingls, Database Schema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.

El esquema es generalmente almacenado en un Diccionario de Datos. Aunque generalmente el esquema es definido en un lenguaje de Base de datos, el trmino se usa a menudo para referirse a una representacin grfica de la estructura de base de datos (Diseo de lgico de la base de datos).

Generalmente en la prctica el trmino esquema de la base de datos se refiere al diseo fsico de la base de datos.

Oracle generalmente asocia un 'username' como esquemas en este caso SYSTEM y HR (Recursos humanos).

Por otro lado MySQL presenta dos esquemas information_schema y MySQL ambos guardan informacin sobre privilegios y procedimientos del gestor y no deben ser elimandos.

Sintaxis bsica para crear una base de datos en Oracle ( No express)

aplica en Oracle

CREATE DATABASE nombre_baseDatos;

Sintaxis bsica para crear una base de datos en MySQL

CREATE DATABASE IF NOT EXISTS nombre_baseDatos;

Para conocer las bases datos creadas use

SHOW DATABASES;

2.1 Creacin de bases de datos Una base de datos en un sistema relacional est compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminologa usada en SQL no se alude a las relaciones, del mismo modo que no se usa el trmino atributo, pero s la palabra columna, y no se habla de tupla, sino de lnea. A continuacin se usarn indistintamente ambas terminologas, por lo que tabla estar en lugar de relacin, columna en el de atributo y lnea en el de tupla, y viceversa. Prcticamente, la creacin de la base de datos consiste en la creacin de las tablas que la componen. En realidad, antes de poder proceder a la creacin de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas. De esta manera, para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas. El sistema previsto por el estndar para crear los espacios separados de nombres consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho sistema no se usa (o por lo menos no con los fines y el significado previstos por el estndar), pero cada DBMS prev un procedimiento propietario para crear una base de datos. Normalmente, se ampla el lenguaje SQL introduciendo una instruccin no prevista en el estndar: "CREATE DATABASE". La sintaxis empleada por PostgreSQL, pero tambin por las DBMS ms difundidas, es la siguiente: CREATE DATABASE nombre_base de datos Con PostgreSQL est a disposicin una orden invocable por shell Unix (o por shell del sistema usado), que ejecuta la misma operacin:

createdb nombre_base de datos Para crear nuestra base de datos bibliogrfica, usaremos pues la orden: createdb biblio Una vez creada la base de datos, se pueden crear las tablas que la componen. La instruccin SQL propuesta para este fin es: CREATE TABLE nombre_tabla ( nombre_columna tipo_columna [ clusula_defecto ] [ vnculos_de_columna ] [ , nombre_columna tipo_columna [ clusula_defecto ] [ vnculos_de_columna ] ... ] [ , [ vnculo_de tabla] ... ] ) nombre_columna: es el nombre de la columna que compone la tabla. Sera mejor no exagerar con la longitud de los identificadores de columna, puesto que SQL Entry Level prev nombres con no ms de 18 caracteres. Consltese, de todos modos, la documentacin de la base de datos especfica. Los nombres tienen que comenzar con un carcter alfabtico. tipo_columna: es la indicacin del tipo de dato que la columna podr contener. Los principales tipos previstos por el estndar SQL son:

CHARACTER(n) Una cadena de longitud fija con exactamente n caracteres. CHARACTER se puede abreviar con CHAR

CHARACTER VARYING(n) Una cadena de longitud variable con un mximo de n caracteres. CHARACTER VARYING se puede abreviar con VARCHAR o CHAR VARYING.

INTEGER Un nmero estero con signo. Se puede abreviar con INT. La precisin, es decir el tamao del nmero entero que se puede memorizar en una columna de este tipo, depende de la implementacin de la DBMS en cuestin.

SMALLINT Un nmero entero con signo y una precisin que no sea superior a INTEGER.

FLOAT(p) Un nmero con coma mvil y una precisin p. El valor mximo de p depende de la implementacin de la DBMS. Se puede usar FLOAT sin indicar la precisin, empleando, por tanto, la precisin por defecto, tambin sta dependiente de la implementacin. REAL y DOUBLE PRECISION son sinnimo para un FLOAT con precisin concreta. Tambin en este caso, las precisiones dependen de la implementacin, siempre que la precisin del primero no sea superior a la del segundo.

DECIMAL(p,q) Un nmero con coma fija de por lo menos p cifras y signo, con q cifras despus de la coma. DEC es la

abreviatura de DECIMAL. DECIMAL(p) es una abreviatura de DECIMAL(p,0). El valor mximo de p depende de la implementacin.

INTERVAL Un periodo de tiempo (aos, meses, das, horas, minutos, segundos y fracciones de segundo).

DATE, TIME y TIMESTAMP Un instante temporal preciso. DATE permite indicar el ao, el mes y el da. Con TIME se pueden especificar la hora, los minutos y los segundos. TIMESTAMP es la combinacin de los dos anteriores. Los segundos son un nmero con coma, lo que permite especificar tambin fracciones de segundo. clusula_defecto: indica el valor de defecto que tomar la columna si no se le asigna uno explcitamente en el momento en que se crea la lnea. La sintaxis que hay que usar es la siguiente: DEFAULT { valor | NULL } donde valor es un valor vlido para el tipo con el que la columna se ha definido. vnculos_de_columna: son vnculos de integridad que se aplican a cada atributo concreto. Son:

NOT NULL, que indica que la columna no puede tomar el valor NULL. PRIMARY KEY, que indica que la columna es la llave primaria de la tabla. una definicin de referencia con la que se indica que la columna es una llave externa hacia la tabla y los campos indicados en la definicin. La sintaxis es la siguiente: REFERENCES nombre_tabla [ ( columna1 [ , columna2 ... ] ) ] [ ON DELETE { CASCADE | SET DEFAULT | SET NULL } ] [ ON UPDATE { CASCADE | SET DEFAULT | SET NULL } ] Las clusulas ON DELETE y ON UPDATE indican qu accin hay que ejecutar en el caso en que una tupla en la tabla referenciada sea eliminada o actualizada. De hecho, en dichos casos en la columna referenciante (que es la que se est definiendo) podra haber valores inconsistentes. Las acciones pueden ser: CASCADE: eliminar la tupla que contiene la columna referenciante (en el caso de ON DELETE) o tambin actualizar la columna referenciante (en el caso de ON UPDATE). o SET DEFAULT: asignar a la columna referenziante su valor de defecto. o SET NULL: asignar a la columna referenciante el valor NULL.
o

un control de valor, con el que se permite o no asignar un valor a la columna en funcin del resultado de una expresin. La sintaxis que se usa es: CHECK (expresin_condicional) donde expresin_condicional es una expresin que ofrece verdadero o falso.

Por ejemplo, si estamos definiendo la columna COLUMNA1, con el siguiente control: CHECK ( COLUMNA1 < 1000 ) en dicha columna se podrn incluir slo valores inferiores a 1000. vnculo_de_tabla: son vnculos de integridad que se pueden referir a ms columnas de la tabla. Son:

la definicin de la llave primaria:

PRIMARY KEY ( columna1 [ , columna2 ... ] ) Vase que en este caso, a diferencia de la definicin de la llave primaria como vnculo de columna, sta se puede formar con mas de un atributo.

las definiciones de las llaves externas:

FOREIGN KEY ( columna1 [ , columna2 ... ] ) definiciones_de_referencia La definicin_de_referencia tiene la misma sintaxis y significado que la que puede aparecer como vnculo de columna.

un control de valor, con la misma sintaxis y significado que el que se puede usar como vnculo de columna. Para aclarar mejor el uso de la instruccin CREATE TABLE, veamos algunas rdenes que implementan la base de datos bibliogrfica ejemplificada. CREATE TABLE Publication ( ID INTEGER PRIMARY KEY, type CHAR(18) NOT NULL ); La instruccin anterior crea la tabla Publication, formada por las dos columna ID de tipo INTEGER, y type de tipo CHAR(18). ID es la llave primaria de la relacin. En el atributo type hay un vnculo de no nulidad. CREATE TABLE Book ( ID INTEGER PRIMARY KEY REFERENCES Publication(ID), title VARCHAR(160) NOT NULL, publisher INTEGER NOT NULL REFERENCES Publisher(ID), volume VARCHAR(16), series VARCHAR(160), edition VARCHAR(16), pub_month CHAR(3), pub_year INTEGER NOT NULL, note VARCHAR(255)

); Crea la relacin Book, formada por nueve atributos. La llave primaria es el atributo ID, que es tambin una llave externa hacia la relacin Publication. Sobre los atributos title, publisher y pub_year hay vnculos de no nulidad. Adems, el atributo publisher es una llave externa hacia la tabla Publisher. CREATE TABLE Author ( publicationID INTEGER REFERENCES Publication(ID), personID INTEGER REFERENCES Person(ID), PRIMARY KEY (publicationID, personID) ); Crea la relacin Author, compuesta por dos atributos: publicationID y personID. La llave primaria en este caso est formada por la combinacin de los dos atributos, como est indicado por el vnculo de tabla PRIMARY KEY. PublicationID es una llave externa hacia la relacin Publication, mientras que personID lo es hacia la relacin Person. El archivo create_biblio.sql contiene todas las rdenes necesarias para crear la estructura de la base de datos bibliogrfica ejemplificada. NOTA SOBRE POSTGRESQL En PotgreSQL, por lo menos hasta la versin 6.5.1, no se han implementado todava los vnculos sobre las llaves externas. El parser acepta, de todos modos, las sintaxis SQL que le afectan, y por tanto los constructos FOREIGN KEY y REFERENCES no producen un error, sino slo un warning.

2.2. Actualizacin, modificacin y eliminacin del esquema de base de datos

Oracle

Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un nmero especfico de columnas, pero puede tener cualquier nmero de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria.

Una tabla de una base de datos es similar en apariencia a una hoja de clculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fcil importar una hoja de clculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de clculo y hacerlo en una base de datos es la forma de organizarse los datos.

Por lo tanto, la creacin de las tablas en el proceso de programacin en Oracle juegan un papel muy importante. En el momento de crear las tablas se definen caractersticas a dos niveles: Tabla y Columna, como se muestra a continuacin:

A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente. Nombre de la tabla puede ser de 1 a 30 caracteres. La tabla tiene como propietario al usuario que las crea. Por ejemploEQUIPO. Nombre: Hay que tener en cuenta tambin ciertas restricciones con los nombres de las tablas: longitud mxima de 30 caracteres, no puede haber nombres de tabla duplicados, deben comenzar con un carcter alfabtico, permitir caracteres alfanumricos y el guin bajo '_', y Oracle no distingue entre maysculas y minsculas. La tabla tiene como propietario al usuario que las crea En nuestro caso somos el

Propietario:

usuario ALUMNO. Otro usuario que desee usar nuestras tablas debe tener autorizacin para ello y hacer referencia a la tabla como ALUMNO.EQUIPO (propietario.tabla) Cantidad Columnas: de Una tabla puede tener un mximo de 254 columnas.

A nivel de Columna el nombre de la columna puede tener un mximo de 30 caracteres.

En Oracle podemos implementar diversos tipos de tablas. A continuacin se presenta una recompilacin no exhaustiva de ellas. Descripcin Son el mecanismo de almacenamiento de los datos en una base de datos Oracle. Contienen un conjunto fijo de columnas. Las columnas de una tabla Regular describen los atributos de la entidad que se representa con la tabla. Cada (heap) columna tiene un nombre y caractersticas especficas: tipo de dato y longitud, restricciones, etc. Un cluester proporciona un mtodo opcional de almacenar datos de tabla. Un Clustered cluster est compuesto de un grupo de tablas que comparten los mismos bloques de datos. Las tablas son agrupadas mediante columnas comunes. Aqu una tabla es almacenada en la estructura de un ndice. Esto impone orden fsico a las filas por si mismas. A diferencia de un heap, donde los datos son Index almacenados en donde caben, en una tabla IOT (Tabla Organizada por Indices) los datos son almacenados en el orden de la clave primaria. Es un esquema de organizacin de los datos con el cual podemos dividirla en mltiples objetos de almacenamientos llamados particiones de datos o rangos, dependiendo los valores puede ser dividido en uno o ms columnas de la tabla. Particionadas Cada particiones de datos es almacenado separadamente. Estos objetos almacenados pueden estar en diferentes tablespaces, en el mismo o en una combinacin de ambos. Son tablas cuyos datos permanecern en el sistema slo durante el tiempo que dure la transaccin o sesin involucrada. No obstante, al igual que para las Temporales tablas permanentes, la definicin de las tablas temporales se almacena en las tablas del sistema. Tipo Tabla

La sintaxis del comando que permite crear un tabla es la siguiente:

Del examen de la sintaxis de la sentencia Create Table se pueden concluir que necesitamos conocer los distintos tipos de columna y las distintas restricciones que se pueden imponer al contenido de las columnas.

Existen varios tipos de datos en SQL. De esta manera, cada columna puede albergar una informacin de naturaleza distinta. Los tipos de datos ms comunes y sus caractersticas en Oracle Express (10 Y 11g) se resumen en la siguiente tabla. Las versiones de Oracle comercial soportan una gama mucho ms amplia de tipos de datos.

Tipo de Dato

Descripcin Contiene datos binarios con un tamao mximo de 4 gigabytes. Los datos binarios nos van a permitir guardar en la base de datos archivos, imagenes, sonidos, etc ... Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio archivo en modo binario, pero existen ciertas circunstancias en las que no nos queda otra solucin. Presicin doble Presicin simple Un tipo de datos CLOB de Oracle contiene datos de caracteres basados en el juego de caracteres predeterminados del servidor. Su tamao mximo es de 4 gigabytes. Se asigna a cadena. Use la siguiente expresin para una consulta de un campo CLOB

BLOB

BINARY_DOUBLE BINARY_FLOAT

CLOB

SELECT DBMS_LOB.substr(campo, DBMS_LOB.getlength(campo),1) FROM tablaprueba;


CHAR Almacena datos de tipo carcter alfanumrico de longitud fija, con un tamao mximo de 2000. caracteres

DATE

Almacena fechas desde el 1-Ene-4712 AC hasta el 31-Dic-4712 DC. Datos numricos de n dgitos, de los cuales dec son decimales. El NUMBER(dig [, dec]) tamao mximo es de 38 dgitos. Almacena un valor alfanumrico de longitud variable en caracteres NVARCHAR2 Unicode con las mismas restricciones de varchar. Fecha y hora (incluidos los segundos), con un tamao que abarca desde TIMESTAMP 7 a 11 bytes. Guarda datos de tipo carcter alfanumrico de longitud variable, con un VARCHAR2(tamao) tamao mximo de 4,000 caracteres. Ejemplo: Considere la siguiente tabla de datos correspondientes a los campeones de Formula 1 (1950 - 2012) y sus escuderias. Y su traduccin a sentencias Oracle. Ao 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 Campen Sebastian Vettel Sebastian Vettel Jenson Button Lewis Hamilton Kimi Raikkonen Fernando Alonso Fernando Alonso Michael Schumacher Michael Schumacher Michael Schumacher Michael Schumacher Michael Schumacher Escudera Red Bull Racing Red Bull Racing Brawn GP McLaren Ferrari Renault Renault Ferrari Ferrari Ferrari Ferrari Ferrari

CREATE TABLE f1 ( year INTEGER PRIMARY KEY, campeon CHAR(30), escuderia CHAR(20) ); Ejemplo: Estados, capitales, densidad de poblacin y superficie de la Republica Mexicana CREATE TABLE idEstado nombreEstado capital densidad poblacion ); estados ( INTEGER PRIMARY KEY, CHAR(25) NOT NULL, CHAR(25) NOT NULL, INTEGER NOT NULL, INTEGER NOT NULL

Tablas Temporales
Oracle permite la creacin de tablas temporales para mantener datos propios y exclusivos a una sesin Oracle determinada. Estos datos permanecern en el sistema slo durante el tiempo que dure la transaccin o sesin involucrada. No obstante, al igual que para las tablas permanentes, la definicin de las tablas temporales se almacena en las tablas del sistema.

La siguiente sintaxis permite crear una tabla temporal personal para cada sesion. Eso significa que los datos no se comparten entre sesiones y se eliminan al final de la misma. CREATE GLOBAL TEMPORARY TABLE [ schema. ]table ( nombreColumna tipoDato [DEFAULT expresin] [NOT NULL], [,nombre_columna tipo_dato [DEFAULT expresin] [restriccin_columna] ... |restriccin_tabla]; ON COMMIT { DELETE | PRESERVE } ROWS ] [ physical_properties ]

Con la opcion ON COMMIT DELETE ROWS se borran los datos cada vez que se hace COMMIT en la sesion. Con la opcion ON PRESERVE DELETE ROWS los datos no se borran hasta el final de la sesion. Sus ventajas son varias, la informacin contenida en ella esta solo disponible para la sesin actual, cualquier insercin, borrado, actualizacinsolo se refleja en la sesin activa.

Muchas funcionalidades de cualquier tabla normal se mantienen en ella, como triggers a nivel tabla, vistas, indices, exportar e importar (claro solo la definicin de la tabla).

No es posible declarar llaves foraneas en una tabla temporal.

(DROP) Eliminacin Cuando una tabla ya no es til y no vamos a volver a necesitarla debe ser borrada. Esta operacin se puede realizar con el comando DROPTABLE.

DROP TABLE nombre_tabla [CASCADE CONSTRAINTS][PURGE]

Se borra la tabla de la base de datos, borrando toda la informacin contenida en la tabla, es decir, todas las filas. Tambin se borrar toda la informacin que sobre la tabla existiera en el diccionario.

Si alguna columna de la tabla a borrar sirve como clave ajena de alguna tabla detalle, impide la eliminacin de la tabla, ya que existe una restriccin que requiere de la existencia de la tabla maestra. Esto se puede areglar colocando la sentencia CASCADE CONSTRAINTS. Esto produce que las restricciones de la tabla detalle se borren antes de borrar la tabla maestra. PURGE evita que los objetos borrados se vayan a la papelera

La siguiente sentencia produce la eliminacin de la tabla BORRAME.

Modificacin

Oracle permite modificar las restricciones definidas para una tabla. Esto puede llevar a inconsistencia de los datos ya introducidos en la base de datos. Por ello, Oracle tiene definidos mecanismos para modificacin de los datos ya existentes. Esta operacin se puede realizar con el comando ALTER TABLE. ALTER TABLE [esquema.]tabla clausula_constraint [,] [ENABLE clausula_activa | DISABLE clausula_disable] [{ENABLE|DISABLE} TABLE LOCK] [{ENABLE|DISABLE} ALL TRIGGERS];

Hay que tener en cuenta varios puntos: No es posible disminuir el tamao de una columna, si esta contiene datos.

En las modificaciones, los tipos anterior y nuevo deben ser compatibles, o la tabla debe estar vaca. La opcin ADD ... NOT NULL slo ser posible si la tabla est vaca.

La opcin MODIFY ... NOT NULL slo podr realizarse cuando la tabla no contenga ninguna fila cuestin.

Considere el ejemplo Propietario - Automvil, bajo el criterio de hacienda del Gobierno del Estado de Veracruz, Mxico. Modificaremos el ejemplo para aadir el atributo color.

ALTER TABLE automovil ADD(color CHAR(15) NOT NULL); Descargar

Es factible modificar una tabla aadiendo o eliminando restricciones, en este caso para el ejemplo anterior el comando a utilizar ser

ALTER TABLE tabla {ADD | DROP} CONSTRAINT restriccin; ALTER TABLE automovil DROP CONSTRAINT FK_Propietario; ALTER TABLE automovil ADD CONSTRAINT FK_Propietario FOREIGN KEY (idPropietario) REFERENCES propietario (idPropietario) ON DELETE CASCADE;

El cual permitira el borrado en cascada.

MySQL

MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:

MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperacin de datos rpida, as como posibilidad de bsquedas fulltext.MyISAM se soporta en todas las

configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuracin distinta a la que viene por defecto con MySQL. El motor de almacenamiento MEMORY proporciona tablas en memoria.El motor de almacenamiento MERGE permite una coleccin de tablasMyISAM idnticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto. Nota: El motor de almacenamiento MEMORY anteriormente se conoca como HEAP. Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribucin binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB tambin se incluye por defecto en todas las distribuciones binarias de MySQL 5.0 . En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto. El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto' que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el cdigo MySQL para ilustrar cmo escribir un motor de almacenamiento. Como tal, su inters primario es para desarrolladores. NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias mquinas. Est disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento est disponible para linux, Solaris, y Mac OS X. Los autores mencionan que se anadir soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en prximas versiones. El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin ndices con una huella muy pequea. El motor de almacenamiento CSV guarda datos en archivos de texto usando formato de valores separados por comas. El motor de almacenamiento FEDERATED se aadi en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versin slo funciona con MySQL a travs de la API MySQL C Client. En futuras versiones, ser capaz de conectar con otras fuentes de datos usando otros drivers o mtodos de conexin clientes.

La versin 5 de MySQL crea por defecto tablas innoDB que permiten el manejo de integridad referencial, transacciones. Al igual que las tablas regulares de oracle. Para saber si el gestor de base de datos de MySQL que tenemos las soporta es necesario ejecutar la siguiente sentencia. SHOW VARIABLES liKE '%innodb%'; Ejecutar Si nuestro gestor soporta por defecto las tablas innodb las sentencias para crear las tablas previamente mostradas sern exactamente igual a las de oracle. En caso contrario se muestra la sintaxis correspondiente CREATE TABLE f1 ( year INTEGER PRIMARY KEY, campeon CHAR(30), escuderia CHAR(20) ) ENGINE = InnoDB; Ejemplo: Estados, capitales, densidad de poblacin y superficie de la Republica Mexicana CREATE TABLE estados ( idEstado INTEGER PRIMARY KEY, nombreEstado CHAR(25) NOT NULL, capital CHAR(25) NOT NULL, densidad INTEGER NOT NULL, poblacion INTEGER NOT NULL ) ENGINE = InnoDB;

Comando Describe MySQL proporciona este comando que resulta til para conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. La sintsis es la siguiente DESCRIBE nombreTabla. DESCRIBE f1; Ejecutar

Comando SHOW TABLES y SHOW CREATE TABLE

El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW CREATE TABLES muestra la estructura de creacin de la tabla. Descargar Ejecutar

Tablas temporales

Las tablas temporales solo existen mientras la sesin est viva . Si se corre este cdigo en un script de PHP ( Cualquier otro lenguaje), la tabla temporal se destruir automticamente al termino de la ejecucin de la pgina. Si no especfica MEMORY, la tabla se guardar por defecto en el disco.

CREATE TEMPORARY TABLE temporal ( ife INTEGER(13) PRIMARY KEY, nombre CHAR(30) NOT NULL UNIQUE );

Este tipo de tabla solo puede ser usada por el usuario que la crea.

Si creamos una tabla que tiene el mismo nombre que una existente en la base de datos, la que existe quedar oculta y trabajaremos sobre la temporal.

Tablas Memory ( Head )

Se almacenan en memoria Una tabla head no puede tener ms de 1600 campos Las tablas MEMORY usan una longitud de registro fija. MEMORY no soporta columnas BLOB o TEXT.

MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e ndices en columnas que contengan valores NULL.

Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla noTEMPORARY).

CREATE TEMPORARY TABLE temporal ( ife INTEGER(13) PRIMARY KEY, nombre CHAR(30) NOT NULL UNIQUE ) ENGINE = MEMORY;

Modificacin

Esta operacin se puede realizar con el comando ALTER TABLE. Para usar ALTER TABLE, necesita permisos ALTER, INSERT y CREATEpara la tabla. La sintaxis para MySQL es

ALTER [IGNORE] TABLE tbl_name

alter_specification [, alter_specification] ...;

alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (column_definition,...) | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS

| | | | | | |

RENAME [TO] new_tbl_name ORDER BY col_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] DISCARD TABLESPACE IMPORT TABLESPACE
table_options

Considere el ejemplo Propietario - Automvil, bajo el criterio de hacienda del Gobierno del Estado de Veracruz, Mxico. Modificaremos el ejemplo para aadir el atributo color segn la sintaxis MySQL

ALTER TABLE automovil ADD(color CHAR(15) NOT NULL); Descargar

Ejemplo: Eliminar una llave foranea ALTER TABLE automovil DROP FOREIGN KEY FK_Propietario; Ejemplo: Agregar una llave foranea con borrado en cascada

ALTER TABLE automovil ADD CONSTRAINT FK_Propietario FOREIGN KEY (idPropietario) REFERENCES propietario (idPropietario) ON DELETE CASCADE;

Puede ejecutar mltiples clusulas ADD, ALTER, DROP, y CHANGE en un nico comando ALTER TABLE. Esta es una extensin MySQL al estndar SQL, que permite slo una de cada clusula por comando ALTER TABLE.