Tema 4: SQL
n Lenguaje de definición de datos (DDL) n Consultas: estructura básica n Operaciones de conjuntos n Funciones agregadas n Valores nulos n Subconsultas anidadas n Relaciones derivadas n Vistas n Modificaciones de Bases de Datos n Relaciones unidas (joined) n SQL embebido, ODBC y JDBC
Bases de datos
1
Esquema utilizado en los ejemplos
sucursal nombre-sucursalciudad-sucursal activos
cuenta numero-cuenta nombre-sucursal saldo
depositante nombre-cliente numero-cuenta
cliente nombre-cliente calle-cliente ciudad-cliente
prestamo numero-prestamo nombre-sucursal cantidad
prestatario nombre-cliente numero-prestamo
Bases de datos
2
Lenguaje de definición de datos (DDL)
Permite la especificación de un conjunto de relaciones y además de informaciónsobre cada una de las relaciones, incluyendo:
n El esquema de cada relación. n El dominio de los datos asociados a cada atributo. n Restricciones de integridad. n El conjunto de índices que se debe mantener para
cada relación. n Información de seguridad y autorización para cada relación. n La estructura de almacenamiento físico de cada relación en disco.
Bases de datos
3
Tipos dedominio en SQL
n char(n). Cadena de caracteres de longitud fija n indicada por el usuario. n varchar(n). Cadena de caracteres de longitud variable, con una longitud
máxima n indicada por el usuario. n int. Entero (un subconjunto finito de enteros dependiente de la máquina). n smallint. Entero corto (un subconjunto del dominio entero cuyo tamaño es dependiente de la máquina). n numeric(p,d).Número en formato de punto fijo, con una precisión indicada por el usuario de p digitos, con n digitos a la derecha del punto decimal.
n real, double precision. Numeros en formato de punto flotante y punto
flotante de doble precisión, con precisión dependiente de la máquina. n float(n). Númeor en punto flotante, conuna precisión indicada por el usuario de al menos n digitos. n En todos los tipos dedominios se permiten valores nulos. Si un atributose declara not null, se prohiben los valores nulos para ese atributo. n La construcción create domain de SQL-92 permite crear dominios definidos por el usuario:
create domain nombre-persona char(20) not null
Bases de datos 4
Tipos de Fecha/Hora en SQL (Cont.)
n date. Fechas, conteniendo un año (4 dígitos) , mes y día.
H P.e. date‘2001-7-27’
n time. Horas, minutos y segundos.
H P.e. time ’09:00:30’
n timestamp: Fecha y hora.
time ’09:00:30.75’
H P.e. timestamp ‘2001-7-27 09:00:30.75’
n Interval: periodo de tiempo
H P.e. Interval ‘1’ día H Restar un valor date/time/timestamp de otro nos da un valor de tipo intervalo H Valores de tipo intervalo se pueden sumar a valores date/time/timestamp
n Podemos extraer valores decampos de date/time/timestamp
H P.e. extract (year from r.fechainicio)
n Podemos transformar tipos cadena de caracteres a
date/time/timestamp H P.e. cast as date
Bases de datos 5
Comando Create Table
n Una relación SQL se define mediante el comando
create table: create table r (A1 D1 RI1, A2 D2 RI2, …, An Dn RIn, (restriccion-integridad1), …, (restriccion-integridadk))
H r esel nombre de la relación H cada Ai es un nombre de atributo en el esquema de la relación r H Di es el tipo de datos de los valores del dominio del atributo Ai
n Ejemplo:
Bases de datos
create table sucursal (nombre-sucursal ciudad-sucursal activos
char(15) not null, char(30), integer)
6
Restricciones de integridad en Create Table
n n n n
not null primary key (A1, …, A n)check (P), donde P es un predicado foreign key (A1, …, A n) references r (B1, …, B n)
Ejemplo: Declarar nombre-sucursal como la clave primaria de sucursal y asegurar que el valor de activos no es negativo. create table sucursal (nombre-sucursal char(15), ciudad-sucursal char(30) activos integer, primary key (nombre-sucursal), check (activos >= 0))
Bases de datos
7
Comandos Drop…