Aprenderemos la estructura de las tablas, creación de índices y como modificiar el diseño de las mismas.

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:

[TABLE] consulta1 UNION [ALL] [TABLE]
consulta2 [UNION [ALL] [TABLE] consultan [ ... ]]

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 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.
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,
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.
unicoN 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.

Tipo de 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
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 una 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 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 Prohíbe 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.

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 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 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:

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 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
(ID_Empleado) REFERENCES Empleados (ID_Empleado);

Agrega un índice 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 índice de la tabla Pedidos.

Siguiente capítulo: Consultas
con Parámetros

banner

  1. Introducción
  2. Consultas
    de Selección
  3. Criterios
    de Selección
  4. Agrupamiento
    de Registros y Funciones Agregadas
  5. Consultas
    de Actualización
  6. Tipos
    de Datos
  7. SubConsultas
  8. Consultas
    y Referencias Cruzadas
  9. Consultas
    de Unión Interna
  10. Consultas
    de Unión Externas
  11. Estructuras
    de las Tablas
  12. Consultas
    con Parámetros
  13. Acceso
    a las Bases de Datos Externas
  14. Omitir los permisos de ejecución
  15. La
    Cláusula Procedure
  16. Anexos