Estructuras de las Tablas
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:
|
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 [, ...]])]}
|
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.
|
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:
|
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:
|
|
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
- Introducción
- Consultas
de Selección - Criterios
de Selección - Agrupamiento
de Registros y Funciones Agregadas - Consultas
de Actualización - Tipos
de Datos - SubConsultas
- Consultas
y Referencias Cruzadas - Consultas
de Unión Interna - Consultas
de Unión Externas - Estructuras
de las Tablas - Consultas
con Parámetros - Acceso
a las Bases de Datos Externas - Omitir los permisos de ejecución
- La
Cláusula Procedure - Anexos
bueno vale el profesor es un pirata
ESTUVO MUY BIEN PRESENTADO EL TEMA.LOS FELICITOS CONTINUEN ASI.CHAO Y SUERTE
ha sido de gran ayuda por colocar este tipo de informacion. Suerte y exitos en la vida . Gracias
porq cuando kiero actualizar mi tabla agregando un nuevo campo no me permite???? :'(
no kontiene lo k yo necesito!
no kontiene lo k yo necesito!
no tiene lo que quiero
no me sirve expliquen mejor
no entendi nada si van a escribir escriban algo bueno que se pueda entender.porfa expliquen mejor
La verdad es una buena presentacion muchachos,les felicito porque me ayudaron a comprender mas las dudas que tenia sobre sql.gracias
En el campo de tipo fecha es Date y aparece en el formato(año-mes-dia)= 2007-05-24 hay alguna forma de ponerlo en el formato (dia-mes-año) osea asi: 24-05-2007 si alguien me ayudar opr fabor…..
es totalmente correcto
Me parece una introducción sencilla y bastante buena a las Tablas.
TENGO UN PROBLEMA ADICIONE UNOS CAMPOS MAS A MI PROGRAMA DE ESTADOS DE CUENTA IGUAL LO HICE NE LA BASE DE DATOS, NO CAMBIEN NADA EXTRA EN EL PROGRAMA, SOLO ADICIONE LOS CAMPOS NUEVOS.
EL PROGRAMA TRABAJA ASI: UNA PERSONA PONE SU CODIGO Y LE SALEN TODAS LAS CUENTAS QUE TIENE CON LA EMPRESA. AHORA QUE HICE TODO ESO NO SALE NADA PERO SI VALIDA SI EXISTE ESE CODIGO, LO UNICO QUE PASO FUE QUE BORRE LA TABLA POR ERROR Y NUEVAMENTE LA CREE IGUAL, PERO AHORA NO SALE NADA DE LA INFORMARMACION.
EXISTE ALGO ESPECIAL QUE DEBO CREAR EN LA TABLA PARA QUE SALGA LA INFORMACION ?
YA LA BASE DE DATOS TIENE TODA LA INFORMACIÓN DE LOS CLIENTES, NO VEO QUE PASA PORQUE LO UNICO ES LA BASE DE DATOS QUE SE CREO NUEVA
cuantas veces se usa el constraint en una tabla