Estructuras de las tablas en SQL

 

En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea.

Creación de Tablas Nuevas

 

CREATE TABLE tabla ( 
campo1 tipo (tamaño) índice1, 
campo2 tipo (tamaño) índice2,... , 
índice multicampo , ... )

 

En donde:

tabla

Es el nombre de la tabla que se va a crear.

campo1 
campo2

Es el nombre del campo o de los campos que se van a crear en la nueva tabla. La nueva tabla debe contener, al menos, un campo.

tipo

Es el tipo de datos de campo en la nueva tabla. (Ver Tipos de Datos)

tamaño

Es el tamaño del campo sólo se aplica para campos de tipo texto.

índice1 
índice2

Es una cláusula CONSTRAINT que define el tipo de índice a crear. Esta cláusula en opcional.

índice multicampos

Es una cláusula CONSTRAINT que define el tipo de índice multicampos a crear. Un índice multicampo es aquel que está indexado por el contenido de varios campos. Esta cláusula en opcional.


CREATE TABLE 
   Empleados ( 
   Nombre TEXT (25), 
   Apellidos TEXT (50) 
    )

(Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre de tipo texto y longitud 25 y otro llamado apellidos con longitud 50).

CREATE TABLE 
   Empleados ( 
   Nombre TEXT (10), 
   Apellidos TEXT, 
   FechaNacimiento DATETIME 
   ) 

CONSTRAINT 
   IndiceGeneral 
   UNIQUE ( 
       Nombre, Apellidos, FechaNacimiento 
    )

(Crea una nueva tabla llamada Empleados con un campo Nombre de tipo texto y longitud 10, otro con llamado Apellidos de tipo texto y longitud predeterminada (50) y uno más llamado FechaNacimiento de tipo Fecha/Hora. También crea un índice único - no permite valores repetidos - formado por los tres campos.)

CREATE TABLE 
    Empleados ( 
   IdEmpleado INTEGER CONSTRAINT IndicePrimario PRIMARY, 
    Nombre TEXT, 
   Apellidos TEXT, 
   FechaNacimiento DATETIME 
   )

(Crea una tabla llamada Empleados con un campo Texto de longitud predeterminada (50) llamado Nombre y otro igual llamado Apellidos, crea otro campo llamado FechaNacimiento de tipo Fecha/Hora y el campo IdEmpleado de tipo entero el que establece como clave principal.)

 

La cláusula CONSTRAINT

Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices. Existen dos sintaxis para esta cláusula dependiendo si desea Crear ó Eliminar un índice de un único campo o si se trata de un campo multiíndice. Si se utiliza el motor de datos de Microsoft, sólo podrá utilizar esta cláusula con las bases de datos propias de dicho motor. Para los índices de campos únicos:

CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa 
[(campo externo1, campo externo2)]}

Para los índices de campos múltiples:

CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [,...]]) | 
UNIQUE (único1[, único2 [, ...]]) | 
FOREIGN KEY (ref1[, ref2 [,...]]) REFERENCES tabla externa 
[(campo externo1 ,campo externo2 [,...])]}

En donde:

nombre

Es el nombre del índice que se va a crear.

primarioN

Es el nombre del campo o de los campos que forman el índice primario.

únicoN

Es el nombre del campo o de los campos que forman el índice de clave única.

refN

Es el nombre del campo o de los campos que forman el índice externo (hacen referencia a campos de otra tabla).

tabla externa

Es el nombre de la tabla que contiene el campo o los campos referenciados en refN

campos externos

Es el nombre del campo o de los campos de la tabla externa especificados por ref1, ref2,... , refN


Si se desea crear un índice para un campo cuando se esta utilizando las instrucciones ALTER TABLE o CREATE TABLE la cláusula CONTRAINT debe aparecer inmediatamente después de la especificación del campo indexado.

Si se desea crear un índice con múltiples campos cuando se está utilizando las instrucciones ALTER TABLE o CREATE TABLE la cláusula CONSTRAINT debe aparecer fuera de la cláusula de creación de tabla.

Indice

Descripción

UNIQUE

Genera un índice de clave única. Lo que implica que los registros de la tabla no pueden contener el mismo valor en los campos indexados.

PRIMARY KEY

Genera un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.

FOREIGN KEY

Genera un índice externo (toma como valor del índice campos contenidos en otras tablas). Si la clave principal de la tabla externa consta de más de un campo, se debe utilizar una definición de índice de múltiples campos, listando todos los campos de referencia, el nombre de la tabla externa, y los nombres de los campos referenciados en la tabla externa en el mismo orden que los campos de referencia listados. Si los campos referenciados son la clave principal de la tabla externa, no tiene que especificar los campos referenciados, predeterminado por valor, el motor Jet se comporta como si la clave principal de la tabla externa estuviera formada por los campos referenciados.

 

 

Creación de Índices

Si se utiliza el motor de datos Jet de Microsoft sólo se pueden crear índices en bases de datos del mismo motor. La sintaxis para crear un índice en ua tabla ya definida en la siguiente:

CREATE [ UNIQUE ] INDEX índice 
ON Tabla (campo [ASC|DESC][, campo [ASC|DESC], ...]) 
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

 

En donde:

 

índice

Es el nombre del índice a crear.

tabla

Es el nombre de una tabla existente en la que se creará el índice.

campo

Es el nombre del campo o lista de campos que constituyen el índice.

ASC|DESC

Indica el orden de los valores de los campos ASC indica un orden ascendente (valor predeterminado) y DESC un orden descendente.

UNIQUE

Indica que el índice no puede contener valores duplicados.

DISALLOW NULL

Prohibe valores nulos en el índice

IGNORE NULL

Excluye del índice los valores nulos incluidos en los campos que lo componen.

PRIMARY

Asigna al índice la categoría de clave principal, en cada tabla sólo puede existir un único índice que sea "Clave Principal". Si un índice es clave principal implica que no puede contener valores nulos ni duplicados.


En el caso de ACCESS, se puede utilizar CREATE INDEX para crear un pseudo índice sobre una tabla adjunta en una fuente de datos ODBC tal como SQL Server que no tenga todavía un índice. No necesita permiso o tener acceso a un servidor remoto para crear un pseudo índice, además la base de datos remota no es consciente y no es afectada por el pseudo índice. Se utiliza la misma sintaxis para las tablas adjuntas que para las originales. Esto es especialmente útil para crear un índice en una tabla que sería de sólo lectura debido a la falta de un índice.

 

CREATE INDEX 
   MiIndice 
ON 
    Empleados (Prefijo, Telefono) 
(Crea un índice llamado MiIndice en la tabla empleados con los campos Prefijo y Teléfono.)

CREATE UNIQUE INDEX 
    MiIndice 
ON 
   Empleados (IdEmpleado) 
   WITH DISALLOW NULL 


(Crea un índice en la tabla Empleados utilizando el campo IdEmpleado, obligando que el campo IdEmpleado no contenga valores nulos ni repetidos.)

 

 

Modificar el Diseño de una Tabla

 

Modifica el diseño de una tabla ya existente, se pueden modificar los campos o los índices existentes. Su sintaxis es:

ALTER TABLE tabla {ADD {COLUMN tipo de campo[(tamaño)] 
[CONSTRAINT índice] 
CONSTRAINT índice multicampo} | 
DROP {COLUMN campo I CONSTRAINT nombre del índice}}

En donde:

tabla

Es el nombre de la tabla que se desea modificar.

campo

Es el nombre del campo que se va a añadir o eliminar.

tipo

Es el tipo de campo que se va a añadir.

tamaño

Es el tamaño del campo que se va a añadir (sólo para campos de texto).

índice

Es el nombre del índice del campo (cuando se crean campos) o el nombre del índice de la tabla que se desea eliminar.

índice multicampo

Es el nombre del índice del campo multicampo (cuando se crean campos) o el nombre del índice de la tabla que se desea eliminar.

 

Operación

Descripción

ADD COLUMN

Se utiliza para añadir un nuevo campo a la tabla, indicando el nombre, el tipo de campo y opcionalmente el tamaño (para campos de tipo texto).

ADD

Se utiliza para agregar un índice de multicampos o de un único campo.

DROP COLUMN

Se utiliza para borrar un campo. Se especifica únicamente el nombre del campo.

DROP

Se utiliza para eliminar un índice. Se especifica únicamente el nombre del índice a continuación de la palabra reservada CONSTRAINT.


ALTER TABLE 
Empleados 
ADD COLUMN 
Salario CURRENCY 
(Agrega un campo Salario de tipo Moneda a la tabla Empleados.)

ALTER TABLE 
    Empleados 
DROP COLUMN 
   Salario 
(Elimina el campo Salario de la tabla Empleados.)

ALTER TABLE 
   Pedidos 
ADD CONSTRAINT 
   RelacionPedidos 
FOREIGN KEY 
   (IdEmpleado) 
REFERENCES 
    Empleados (IdEmpleado) 

(Agrega un índice externo a la tabla Pedidos. El índice externo se basa en el campo IdEmpleado y se refiere al campo IdEmpleado de la tabla Empleados. En este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la cláusula REFERENCES, pues ID_Empleado es la clave principal de la tabla Empleados.)

ALTER TABLE 
   Pedidos 
DROP CONSTRAINT 
   RelacionPedidos 

(Elimina el índice de la tabla Pedidos.)