Los principales comandos que provee SQL para la definición de la estructura de los datos son:
CREATE TABLE: Para crear una tabla nueva.
Sintaxis
CREATE TABLE <nombre de la tabla> ( <campo 1> < tipo de dato> , <campo 2><tipo de dato>,…)
CREATE INDEX: Crea un nuevo índice en la tabla indicada.
Sintaxis
CREATE INDEX <nombre del índice>
ON <tabla> (<campo1 que se indexa>, <campo2 que se indexa>….)
ALTER TABLE: Se emplea para modificar la estructura de una tabla.
Sintaxis
ALTER TABLE <nombre de la tabla>
[ADD | ALTER | DROP] COLUMN <nombre de la columna> <tipo de dato columna>
DROP TABLE: Para eliminar la tabla indicada
Sintaxis
DROP TABLE <nombre de la tabla>
DROP INDEX: Elimina un índice de la tabla indicada.
Sintaxis
DROP INDEX <índice>
ON <tabla>
Ejemplo: Generar la estructura de la BBDD con comandos SQL
Para practicar con los comandos de definición de la estructura, realizaremos una serie de ejercicios en Access. Seguiremos con el ejemplo de nuestro amigo Antonio y su supermercado Gades, para el que ya habíamos definido la estructura de los datos que necesitaba.
Paso 1: Creamos una base de datos
Creamos una base de datos nueva, le ponemos el nombre que queramos, por ejemplo: ProveedoresSQL
Paso 2: La estructura de datos
La estructura de datos que habíamos definido para el fichero de proveedores de Antonio se componía de dos tablas:
Tabla1:
- NombreProveedor
- ContactoProveedor
- Telefono
Tabla2:
- NombreProveedor
- Producto
- Precio
Estas tablas estaban relacionadas por el campo nombre de proveedor.
Vamos a hacer una pequeña mejora y a definir el tipo de datos para cada campo.
Nuestra nueva estructura quedaría:
Tabla1: Proveedores:
- IdProveedor: tipo INTEGER
- NombreProveedor: tipo TEXT de 100 caracteres (equivalente a VARCHAR)
- ContactoProveedor: tipo TEXT de 100 caracteres (equivalente a VARCHAR)
- Telefono: tipo TEXT de 12 caracteres (equivalente a VARCHAR)
Tabla2: Producto
- Proveedor: tipo INTEGER
- Producto: tipo TEXT de 50 caracteres (equivalente a VARCHAR)
- Precio: tipo DOUBLE
En esta nueva estructura, la relación entre ambas tablas la crearemos entre los campos IdProveedor de Tabla1 y Proveedor de Tabla2. Además crearemos un índice con el campo IdProveedor de Tabla1
Paso 3: Generando nuestra estructura de datos con SQL
La sentencia SQL para crear nuestra tabla de proveedores sería:
CREATE TABLE Proveedores(idProveedor INTEGER, NombreProveedor TEXT(100), ContactoProveedor TEXT(100), Telefono TEXT(12))
Para ejecutarla y crear la tabla Proveedores, abrimos una consulta nueva en su vista de SQL y introducimos la sentencia SQL anterior.
Si ejecutamos la consulta, veremos que se nos crea la tabla “Proveedores” con los campos indicados en la sentencia.
Para crear la tabla Productos, hacemos lo mismo que para la tabla “Proveedores”, pero en otra consulta. En este caso, la sentencia SQL para generar la tabla “Productos” sería:
CREATE TABLE Productos(Proveedor INTEGER, Producto TEXT(50), Precio DOUBLE)
Tras ejecutar también esta última consulta, el resultado es que habremos creado en Access las dos tablas: Proveedores y Productos
Paso 4: Definiendo un índice
Finalmente, para completar nuestra estructura de datos, queremos definir un índice en la tabla Proveedores, que sea único, es decir, que no admita duplicados. Mediante dicho índice podremos identificar de manera univoca a cada proveedor.
Obviamente el campo utilizado como índice será IdProveedor, que en el fondo lo habíamos creado para este propósito.
La sentencia SQL para generar el índice sería:
CREATE UNIQUE INDEX Indice1 ON Proveedores(idProveedor)
Ojo, hay que introducir la palabra UNIQUE delante de INDEX para asegurarnos que el índice no admite duplicados. Si eliminamos UNIQUE de la sentencia, crearíamos un índice que admite duplicados y podría haber dos proveedores con el mismo identificador en este campo. Ese índice ya no nos serviría para identificar de forma univoca a un proveedor.
Para ejecutar esta sentencia SQL, actuamos como en el apartado anterior. Creamos una consulta desde cero, nos movemos a la vista SQL y introducimos la sentencia SQL.
Tras ejecutar la consulta, comprobamos que la tabla “Proveedores” contiene el índice sin duplicados que acabamos de crear.
NOTA:
Este post es parte de la colección “Sistemas de acceso y almacenamiento de datos”. Puedes ver el índice de esta colección aquí.