You are on page 1of 20

Bases de Datos SQL

SQL
Jorge Prez R. e Universidad de Talca, II Semestre 2006

Bases de Datos SQL

Structured Query Language


Lenguaje de consulta para bases de datos comerciales. Originalmente llamado SEQUEL (Structured English Query Language) desarrollado por IBM como interfaz para System R (1970). Esfuerzo de estandarizacin produjo la primera versin estndar en o o a 1986, SQL1. Aparece una versin revisada en 1992, SQL2. o Actualmente se trabaja en la produccin y estandarizacin de o o SQL3 (con conceptos de recursin, orientacin a objetos, entre o o otras.)

Bases de Datos SQL

Mucho ms que Consultas a


SQL es un lenguaje no slo para consultar: o Lenguaje de denicin de datos (DDL) o Lenguaje de manipulacin de datos (DML) o Lenguaje de consulta.

Bases de Datos SQL

Mucho ms que Consultas (cont.) a


SQL permite: Crear y modicar esquemas: crear y modicar tablas. Denir dominios para cada atributo de las relaciones. Forzar restricciones de integridad de dominio. Forzar restricciones de integridad de llave primaria. Forzar restricciones de integridad referenciales. Forzar restricciones de integridad ms complejas (triggers). a ...

Bases de Datos SQL

Mucho ms que Consultas (cont.) a


SQL permite: Denir acciones ante violaciones de restricciones. Consultar tuplas mediante una combinacin de lgebra y o a clculo relacional. a Denir vistas de una relacin. o Insertar, borrar y actualizar tuplas en una relacin. o ...

Bases de Datos SQL

Creacin de Esquemas o
Mediante la instruccin create (table). o Se especica el nombre de la relacin y luego el conjunto de o atributos. Para cada atributo se debe especicar el nombre y el tipo de dato. Adicionalmente se pueden especicar restricciones de integridad de valores nulo, dominio y referenciales.

Bases de Datos SQL

Creacin de Esquemas (cont.) o


Sintaxis de creacin: o
create table nombre-tabla ( atributo-1 tipo-1 restricciones-1 , ... atributo-n tipo-n restricciones-n )

Bases de Datos SQL

Tipos de Datos Base


Los tipos de datos dependen de la implementacin de SQL, o generalmente se tienen: int: enteros. float: nmeros decimales de punto otante. u datetime: tipo de dato para fechas. money: tipo de dato especial para cantidades contables. char(n): cadena de caracteres de largo jo. varchar(n): cadena de caracteres de largo variable. binary: para tipos de datos en formato binario (archivos) ...

Bases de Datos SQL

Restricciones
Las restricciones pueden ser de: valores nulos: not null ms especicas de dominio a constraint r check(condicin) o llave primaria constraint r primary key llave foranea constraint r foreign key references tabla(atributo) Las restricciones pueden (deben) llevar un nombre.

Bases de Datos SQL

10

Acciones
Para las restricciones referenciales se pueden especicar acciones: on delete cascade on delete no action (opcin por defecto) o on update cascade on update no action (opcin por defecto) o cascade especica cambios en cascada. no action proh la eliminacin y actualizacin. be o o

Bases de Datos SQL

11

Manipulacin de Esquemas o
Las tablas pueden modicarse haciendo alter table nombre-tabla add nombre-columna ... alter table nombre-tabla drop column nombre-columna ... se pueden crear nuevos atributos, modicar o eliminar atributos, crear nuevas restricciones, modicar o eliminar restricciones. Las tablas pueden eliminarse haciendo drop table nombre-tabla

Bases de Datos SQL

12

Agregar Tuplas a una Relacin o


Se pueden agregar tuplas de una a la vez usando insert: insert into nombre-tabla values ( v1 , v2 , . . . , vn ) Se pueden especicar exactamente los atributos a agregar: insert into nombre-tabla(a1 , . . . , am ) values ( v1 , . . . , vm ) para que funcione deben permitirse nulos o tener valores por defecto. La istruccin insert es equivalente en lgebra relacional a o a relacion relacion {(v1 , v2 , . . . , vn )}

Bases de Datos SQL

13

Recuperar Informacin o
Estructura bsica compuesta por tres clausulas: a select correspondiente al operador de proyeccin del lgebra o a relacional. from correspondiente al producto cartesiano del lgebra a relacional. where correspondiente al predicado del operador de seleccin o del lgebra relacional. a

Bases de Datos SQL

14

Recuperar Informacin (cont.) o


Sintaxis de las clusulas select from where: a select A1 , A2 , . . . , An from r1 , r2 , . . . , rm where P Ai representa a algn atributo de alguna relacin rj y P es un u o predicado. La anterior instruccin es correspondiente a o A1 ,...,An (P (r1 r2 rm )) en el lgebra relacional. a

Bases de Datos SQL

15

Recuperar Informacin: Ejemplos o


En los ejemplos consideraremos nuestro esquema t pico
departamento(codigo, nombre, fecha_creacion, telefono, direccion) empleado(rut, nombre, departamento_codigo, salario, email, fecha_ingreso, supervisor) supervisa_departamento(empleado_rut, departamento_codigo)

select nombre, direccion from departamento select nombre, salario from empleado where salario > 300000 and fecha_ingreso > 1/1/2003 Aqu usamos la construccin and, tambin podemos usar or. o e select empleado.nombre, departamento.nombre from empleado, departamento where departamento.codigo = empleado.departamento_codigo

Bases de Datos SQL

16

Recuperar Informacin: renombre o


Dos instancias de una misma tabla A veces necesitamos reunir datos de una misma tabla. Usamos mltiples instancias de la tabla y usamos as: u select supervisor.nombre, supervisado.nombre from empleado as supervisor, empleado as supervisado where supervisado.supervisor = supervisor.rut

Bases de Datos SQL

17

Recuperar Informacin: renombre o


Podemos tambin renombrar el resultado usando as: e select supervisor.nombre as supervisor, supervisado.nombre as supervisado from empleado as supervisor, empleado as supervisado where supervisado.supervisor = supervisor.rut

Bases de Datos SQL

18

Recuperar Informacin: renombre o


Podemos tambin renombrar para acortar las consultas: e select e.nombre, e.salario, e.email from empleado as e, departamento as d where d.nombre = Marketing and e.departamento_codigo = d.codigo

Bases de Datos SQL

19

Recuperar Informacin: tuplas duplicadas o


En SQL no se supone que los resultados sean conjuntos. Podemos obtener tuplas duplicadas select salario from empleado Para evitarlo usamos distintct select distinct salario from empleado

Bases de Datos SQL

20

Recuperar Informacin: Agregacin o o


Funciones de agregacin similar a lo que se hace en una hoja de o clculo a count, sum, min, max, avg. select count(rut) form empleado as e, departamento as d where e.departamento_codigo = d.codigo and d.nombre = Marketing Cantidad de empleados del departamento de marketing.

You might also like