Está en la página 1de 5

SQL-99: definición del esquema, restricciones, consultas y vistas

SQL se puede considerar como una de las principales razones del éxito comercial de las bases de datos
relacionales. Es un estándar los DBMSs relacionales que permite migrar aplicaciones de base de datos
desde otros tipos de SBD (red o jerárquicos) a sistemas relacionales.
SQL: Lenguaje de consulta estructurado (Structured Query Language).
Originalmente SEQUEL (Structured English Query Language) y fue diseñado e implementado por IBM
Research a modo de interfaz SBD relacional , SYSTEM R.
Un esfuerzo conjunto llevado a cabo (ANSI, American National Standards lnstitute) y la (ISO, International
Standards Organization) llevó a una versión estándar de SQL (ANSI 1986), denominada SQL-86 o SQL l.
A continuación se desarrolló un estándar revisado y mucho más amplio, SQL2 (también conocido como SQL-
92).
El siguiente estándar fue SQL-99. Se han propuesto otros estándares, como SQL3, pero no han gozado de
suficiente respaldo por parte de la industria.
SQL proporciona una interfaz de lenguaje declarativo del más alto nivel, por lo que el usuario sólo especifica
lo que debe ser el resultado, sin embargo incluye algunas características del álgebra relacional, pero la
sintaxis de SQL es mucho más amigable que los lenguajes formales.
El SQL se comporta como DDL ( Lenguaje de Definición de Datos) y como DML ( Lenguaje de Manejo de
Datos).
SQL utiliza los términos tabla, fila y columna para los términos relación, tupla y atributo del modelo
relacional formal, respectivamente, se utilizan estos términos indistintamente.
SQL como DDL :
La sentencia CREATE, se utiliza para crear esquemas, tablas (relaciones) y dominios, vistas.
El concepto de esquema SQL se incorporó por primera vez en SQL2 para agrupar las tablas y otras estructuras
pertenecientes a la misma aplicación de base de datos.
Un esquema SQL tiene un nombre e incluye un identificador de autorización para indicar el usuario o la cuenta
propietaria del esquema, así como unos descriptores para cada elemento, que son las tablas, las
restricciones, las vistas, los dominios y otras estructuras:
CREATE SCHEMA EMPRESA AUTHORIZATION Grupo1;
Comando CREATE TABLE
CREATE TABLE <Nombre nueva relación> (< nombres de atributos, un tipo de datos para especificar su
dominio de valores, y cualquier restricción de atributo y las restricciones de clave, integridad de entidad e
integridad referencial)
Las RI pueden especificarse con la sentencia CREATE TABLE después de haber declarado los atributos,
o pueden añadirse más tarde con el comando ALTER TABLE .
Comando DROP
Se puede utilizar para eliminar los elementos con nombre del esquema, como tablas, dominios o restricciones.
DROP SCHEMA <Nombre esquema> , si ya no se necesita un esquema entero
DROP TABLE <Nombre de la relación> , si ya no se necesita una relación base dentro de un esquema
DROP TABLE LOCALIZACIONES_DEPTO

DROP TABLE DEPENDIENTE CASCADE;


Con la opción CASCADE, todas estas restricciones y vistas que hacen referencia a la tabla se eliminan
automáticamente del esquema, junto con la propia tabla.
El comando DROP TABLE no sólo elimina todos los registros de la tabla, sino también la definición de la tabla.
Comando ALTER
Permite la evolución del esquema añadiendo o eliminando tablas, atributos, restricciones.
Ej. Añadir un atributo que sirva para hacer un seguimiento de la ocupación de los empleados:
ALTER TABLE EMPRESA.EMPLEADO ADD COLUMN Ocupación VARCHAR(12);
el atributo nuevo tendrá NULL en todas las tuplas de la relación inmediatamente después de haberse
ejecutado el comando, la restricción NOT NULL no está permitida en este caso.
ALTER TABLE EMPRESA.EMPLEADO DROP COLUMN Dirección CASCADE;
CASCADE, todas las restricciones y vistas que hacen referencia a la columna se eliminarán automáticamente
del esquema, junto con la columna
CREATE TABLE crea las tablas base (o relaciones base); esto significa que el DBMS crea y almacena como
un fichero la relación y sus tuplas. Las relaciones base se distinguen de las relaciones virtuales,
En SQL, los atributos de una tabla base están considerados como ordenados en la secuencia en que se
especificaron en la sentencia CREATE TABLE.
Los tipos de datos básicos disponibles para los atributos son numérico, cadena de caracteres, cadena de bits,
booleano, fecha y hora.
• El tipo de datos numéricos incluye los números enteros de varios tamaños (INTEGER o INT, y SMALLINT)
así como los números en coma flotante (reales) de distintas precisiones (FLOAT o REAL, y DOUBLE
PRECISION). Los números se pueden declarar utilizando DECIMAL(i,j) [ o DEC(i,j) o NUMERIC(i,j)], donde i,
la precisión, es el número total de dígitos decimales y i la escala, es el número de dígitos después del punto
decimal.
• El tipo de datos cadena de caracteres puede ser de longitud fija [CHAR(n) o CHARACTER(n), donde n es la
cantidad de caracteres] o de longitud variable [VARCHAR(n) o CHAR VARYING(n) o CHARACTER
VARYING(n), donde n es la cantidad máxima de caracteres].
• Un tipo de datos booleano tiene los valores tradicionales TRUE o FALSE
• En SQL2 se añadieron dos nuevos tipos de datos, fecha y hora. El tipo de datos DATE tiene diez posiciones,
AÑO, MES y DIA según la forma AAAA-MM-DD.
. El tipo de datos TIME , HORAS, MINUTOS y SEGUNDOS en la forma HH:MM:SS.

Es posible especificar directamente el tipo de datos de cada atributo, alternativamente, se puede declarar
un dominio, y el nombre del dominio se puede utilizar con la especificación del atributo. Por ejemplo, podemos
crear un dominio TIPO-NSSE con la siguiente sentencia:
CREATE DOMAIN TIPO-NSSE CHAR(9);
Se utiliza TIPO-NSSE en lugar de CHAR(9) para los atributos NSS y SuperNSS en todas las relaciones
Restricciones en SQL
SQL permite NULL como valor de atributo, es posible especificar una restricción NOT NULL si no se permite
NULL para un atributo en particular.
También es posible definir un valor predeterminado para un atributo añadiendo la cláusula DEFAULT <valor>
a su definición. El valor predeterminado se incluye en cualquier tupla nueva si no se proporciona un valor
explícito para ese atributo.
Po default es NULL para los .
Otro tipo de restricción puede ser restringir los valores de atributo o dominio con la cláusula CHECK a con-
tinuación de la definición de un atributo o dominio.
Por ejemplo, suponga que los números de departamto están restringidos a número enteros entre 1 y 10 :
NumeroD INT NOT NULL CHECK (NumeroD > 0 AND NumeroD < 10 );
Restricciones de clave

La cláusula PRIMARY KEY especifica uno o más atributos que constituyen la clave principal de una relación.
NumeroD INT PRIMARY KEY  cuando la clave tiene un solo atributo
La cláusula UNIQUE especifica claves (candidatas) alternativas.
Restriccion de Integridad referencial

Se especifica mediante la cláusula :


FOREIGN KEY <clave externa> REFERENCES < Relación referrida> (<Clave primaria>)
Claves externas (foreign keys) pueden provocar errores porque o bien se especifican a través de referencias
circulares, o porque se refieren a una tabla que todavía no se ha creado, estas restricciones pueden
omitirse de la sentencia CREATE TABLE inicial, y añadirse más tarde con la sentencia ALTER TABLE
Consultas básicas en SQL
Una distinción importante entre SQL y el modelo relacional formal : SQL permite que una tabla (relación) tenga
dos o más tuplas idénticas en todos sus valores de atributo. Por tanto, en general, una tabla SQL no es un
conjunto de tuplas, en su lugar, es un multiconjunto (conocido como bolsa) de tuplas.

Estructura de las consultas básicas de SOL


Las consultas en SQL están basadas en el bloque SELECT-FROM-WHERE y tiene la siguiente forma:

SELECT<lista de atributos>
FROM <lista de tablas>
WHERE<condición>;
• <lista de atributos> es una lista de los atributos cuyos valores serán recuperados por la consulta.
• <lista de tablas> es una lista de las relaciones necesarias para procesar la consulta.
• <condición> es una expresión condicional (booleana) que identifica las tuplas a ser recuperadas
Los operadores básicos para comparar los valores de los atributos entre sí y con constantes son
(=,<,<=,>,>= ,<>). Vamos a ilustrar la sentencia SELECT básica con algunas consultas de ejemplo. Las
consultas están etiqueta- das con los mismos números que en el Capítulo 6.
1. Recuperar la fecha de nacimiento y la dirección del empleado Franklin Wong.

SELECT Fech_Nac, Dirección


FROM EMPLEADO
WHERE Nombre='Franklin' AND Apellido ='Wong';
En algebra relacional :

((Π Fecha_Nac,Dirección(σ Nombre='Franflin' AND Apellido='Wong' (EMPLEADO))


La cláusula SELECT de SQL especifica los atributos de proyección y la cláusula WHERE especifica la
condición de selección. La única diferencia es que en la consulta SQL podemos obtener tuplas duplicadas.
Las cláusulas SELECT y FROM son necesarias en todas las consultas SQL.
WHERE es opcional

También podría gustarte