Bases de datos-SQL-Sentencias
SQL-Estructuras de las Tablas
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 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.)
(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.)