11. Estructuras de las Tablas
11.1 Creación de Tablas
Nuevas
Si se está utilizando el motor de datos de Microsoft para acceder
a bases de datos access, sólo se puede emplear esta instrucción
para crear bases de datos propias de access. Su sintaxis es:
CREATE TABLE tabla (campo1 tipo (tamaño) índice1
,
campo2 tipo (tamaño) índice2 , ...,
índice multicampo , ... )
En donde:
| Parte |
Descripción |
| 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 indice a crear. Esta cláusula en opcional. |
| índice multicampos |
Es una cláusula CONSTRAINT que define el
tipo de indice multicampos a crear. Un índice multi campo 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 longutid 25 y otro llamado apellidos con longitud
50.
CREATE TABLE Empleados
(Nombre TEXT (10), Apellidos
TEXT,
Fecha_Nacimiento DATETIME)
CONSTRAINT IndiceGeneral UNIQUE
([Nombre], [Apellidos], [Fecha_Nacimiento]);
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 Fecha_Nacimiento de tipo Fecha/Hora.
También crea un índice único (no permite valores repetidos)
formado por los tres campos.
CREATE TABLE Empleados
(ID INTEGER CONSTRAINT IndicePrimario PRIMARY,
Nombre TEXT, Apellidos
TEXT, Fecha_Nacimiento 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 Fecha_Nacimiento de tipo Fecha/Hora y el campo ID de
tipo entero el que establece como clave principal.
11.2 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 [, ...]])]}
| Parte |
Descripción |
| 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 indexeado.
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.
| Tipo de Indice |
Descripción |
| UNIQUE |
Genera un índece 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 fueran los campos referenciados . |
11.3 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:
| Parte |
Descripción |
| índice |
Es el nombre del índice a crear. |
| tabla |
Es el nombre de una tabla existentes en la que se creará el
índice. |
| campo |
Es el nombre del campo o lista de campos que consituyen el índice. |
| ASC|DESC |
Indica el orden de los valores de lso campos ASC indica un orden ascendente
(valor predeterminado) y DESC un orden descendente. |
| UNIQUE |
Indica que el indice 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 indice que sea "Clave
Principal". Si un índice es clave principal implica que que no puede
contener valores nulos ni duplicados. |
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 tabla adjunta 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 Telefono.
CREATE UNIQUE INDEX MiIndice
ON Empleados (ID) WITH
DISALLOW NULL;
Crea un índice en la tabla Empleados utilizando el campo
ID, obligando que que el campo ID no contenga valores nulos ni repetidos.
11.4 Modificar el Diseño
de una Tabla
Modifica el diseño de una tabla ya existente, se puden 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:
| Parte |
Descripción |
| 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 |
El 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 utliza para agregar un índice de multicampos o de un único
campo. |
| DROP COLUMN |
Se utliza 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
(ID_Empleado) REFERENCES
Empleados (ID_Empleado);
Agrega un indice externo a la tabla Pedidos. El índice externo
se basa en el campo ID_Empleado y se refiere al campo ID_Empleado 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 índide de la tabla Pedidos.
|