Está en la página 1de 4

Bases de Datos - 2o Estadística

SQL I (Introducción y Lenguaje


de Definición de Datos)
 Introducción
 Creación de tablas (CREATE TABLE)
 Borrado de tablas (DROP TABLE)
 Modificación de las tablas (ALTER TABLE)

Introducción
SQL (Structured Query Language) es un potente lenguaje informático que cumple las
funciones de DDL y DML en los SGBD relacionales. Su origen está en el lenguaje
SEQUEL (Structured English QUEry Language) desarrollado en IBM en los años 1974-
75. Oracle fue el primer fabricante de sistemas de bases de datos en comercializar una
implementación de SQL en 1979. IBM lanzó el producto SQL/DS en 1981 y dos años
más tarde el conocido DB2.
Se trata de un lenguaje fuertemente basado en el inglés, que puede
ser utilizado en modo conversacional mediante un intérprete o bien
formando parte de un programa desarrollado en un lenguaje de
programación anfitrión como C, Cobol, etc. (SQL embebido). La
característica relacional más importante de SQL es que permite
acceder a los datos sin necesidad de especificar cómo se ha de
realizar dicho acceso permitiendo así la "navegación automática" por
los datos.
El lenguaje ha sido normalizado por varios organismos, si bien los
muchos aspectos que tradicionalmente han quedado indefinidos en
tales normalizaciones y qu e por lo tanto en la práctica quedan como
responsabilidad de los fabricantes han ocasionado variaciones de
diversa importancia entre las diferentes implementaciones
comerciales. La versión actual más común del lenguaje es la
denominado SQL2 que respecto al estándar anterior presenta las
ventajas de un mayor incremento de la capacidad expresiva, nuevos
operadores añadidos y mejor tratamiento de errores, entre otras.
SQL3 incorpora al lenguaje características propias del paradigma de
orientación a objeto.
Las principales funcionalidades de SQL como lenguaje de definición
(DDL) son la creación, modificación y borrado de las tablas que
componen la base de datos, así como de los índices, vistas,
sinónimos, permisos, etc. que pudieran definirse sobre las mismas.
Este documento introduce los comandos para el trabajo básico con
tablas. Los otros compoentes del DDL se tratan en los documentos
SQL III (Entorno multiusuario) y SQL IV (Aspectos adicionales).
Creación de tablas
El mandato para la creación de tablas o esquemas relacionales es CREATE TABLE.
Básicamente se debe definir los atributos que componen la tabla, la clave primaria, las
posibles claves ajenas y las restricciones a imponer sobre los valores de los atributos.
Cada definición se separa de la siguiente con una coma. La sintaxis general es la
siguiente:
CREATE TABLE
nombre_tabla(
definición de atributo 1,
.....................
definición de atributo a,
definición de clave primaria,
definición de clave foránea
1,
.....................
definición de clave foránea f,
definición de restricción 1,
definición de restricción r);
El orden de realización de las definiciones es muy flexible, aunque es
evidente que antes de definir un atributo como formando parte de
una clave primaria o ajena, o bien definir una restricción sobre sus
posibles valores, es necesario haber definido ese atributo con
anterioridad.
Una tabla recién creada no tiene contenido y por lo tanto su
cardinalidad es cero. Aunque esté vacía ocupa algún espacio en el
espacio de tablas en el que se crea.
Las definiciones de las tablas que componen una base de datos se
almacenan en un lugar especial denominado "diccionario de datos"
donde son accedidas por el SGBD cuando es necesario.
Definición de atributos
Para definir un atributo se debe especificar su nombre, su tipo básico
de datos y una sencilla restricción opcional sobre sus posibles valores.
El tipo de datos indica el dominio general del atributo, que puede
restringirse mediante la restricción opcional.
nombre_atributo tipo_atributo
restricción_atributo
El tipo de datos del atributo especifica sus posibles valores válidos.
Los tipos de datos más habituales son NUMBER (número entero), DATE
(fecha), CHAR (cadena de caracteres de longitud fija) y VARCHAR2
(cadena de caracteres de longitud máxima fija y longitud real
variable).
Si no se especifica ninguna restricción sobre el atributo, entonces
puede tomar cualquier valor compatible con su tipo de datos, y el
valor nulo (null). Las posibles restricciones son:
El atributo es clave primaria. Por tanto no acepta valores repetidos ni
PRIMARY KEY
nulos.
UNIQUE El atributo no acepta valores repetidos, pero sí nulos.
NOT NULL El atributo no acepta valores nulos, pero sí únicos.
CHECK Restricción arbitraria.
Es frecuente combinar las restricciones UNIQUE y NOT NULL, por lo cual
el atributo no aceptaría valores repetidos ni nulos, siendo considerado
una clave alternativa o secundaria del modelo relacional.
Las restricciones arbitrarias se especifican mediante CHECK seguida de
una condición lógica entre paréntesis. En la condición pueden
emplearse operadores lógicos relacionales (menor, mayor, etc.),
operadores lógicos booleanos (AND, OR, NOT) y otros, como el de
pertenencia a una lista de valores. La condición debe ser simple en el
sentido de que no debe involucrar a los valores de otros atributos,
sino que únicamente debe contemplarse el atributo en cuestión.
El SGBD debe comprobar automáticamente que se verifican las
restricciones definidas cuando se insertan nuevas filas en la tabla, se
borran filas o se modifica el valor de un atributo en una fila. Esta
comprobación requiere un tiempo, por lo que el rendimiento de las
operaciones anteriores puede verse negativamente afectado si se
definiera un gran número de restricciones. En la sección sobre
restricciones del documento SQL IV (Aspectos adicionales) se trata
con mayor detenimiento la definición de restricciones.
Definición de la clave primaria
Si la clave primaria se compone de un solo atributo (situación muy
habitual) entonces puede añadirse PRIMARY KEY al final de la definición
del atributo primo. Para definir una clave primaria en general se
acompaña además de una lista de los atributos primos, separados por
comas.
PRIMARY KEY (atributo, ...,
atributo)
Definición de claves ajenas
Una clave ajena, externa o foránea se define similarmente a la clave
primaria, indicando FOREIGN KEY seguida de la lista de atributos,
separados por comas, que componen la clave ajena, seguida a
continuación de la palabra REFERENCES tras la cual se indica el nombre
de la table referenciada (la tabla de la cual los atributos anteriores
son clave primaria).
FOREIGN KEY (atributo, ..., atributo) REFERENCES
nombre_tabla
Lógicamente para que la definición sea correcta los atributos que la
componen deben estar ya definidos y la tabla referenciada debe
existir con anterioridad. Por tanto la existencia de claves ajenas
restringe el orden de creación de las tablas que componen la base de
datos, pues si una tabla B incluye una clave ajena de la tabla A, ésta
debe crearse primero.
Ejemplos
CREATE TABLE provincia(
codprov NUMBER(2) PRIMARY KEY,
nomprov CHAR(20) UNIQUE NOT NULL);

CREATE TABLE alumno(


num NUMBER(4),
nombre CHAR(10) NOT NULL,
apellidos CHAR(20) NOT NULL,
edad NUMBER(2) CHECK (edad>16),
codprov NUMBER(2),
nota NUMBER(4,2) CHECK (nota >=0 AND nota
<= 10),
PRIMARY KEY (num),
FOREIGN KEY (codprov) REFERENCES provincia);

Borrado de tablas
El mandato para el borrado o eliminación de tablas es DROP TABLE.
DROP TABLE
nombre_tabla;
Esta orden elimina la definición de la tabla en cuestión, que no
existirá en lo sucesivo. La situación es muy diferente a la de una tabla
en la cual se borran todas sus filas, utilizando para ello un mandado
del lenguaje de manipulación de datos. En este caso la tabla se queda
vacía pero sigue existiendo.

Modificación de la estructura
de las tablas
El mandato para modificar la definición de una tabla o esquema relacional es ALTER
TABLE. Lo más habitual es añadir atributos o columnas nuevos (ADD).
ALTER TABLE alumno ADD (tipo NUMBER(1) CHECK (tipo IN
(0,1,2)));

Bases de Datos - 2o Estadística

También podría gustarte