El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos



Documentos relacionados
SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Bases de Datos: Structured Query Language (SQL)

Unidad. Lenguaje SQL. (Structured Query Language)

Bases de Datos 2. Teórico

8 SQL SERVER 2008 RA-MA

SERVICIO NACIONAL DE APRENDIZAJE SENA

Tema 33. El lenguaje SQL

Restricciones de Integridad

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

A.1. Definiciones de datos en SQL

LENGUAJE SQL. Bárbula, Febrero de Historia y Definición

SQL (Structured Query Language)- DML

El Sistema de Gestión de Bases de Datos

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

2.5.- El lenguaje estándar SQL

Bases de Datos SQL - Ejemplos

SQL (Structured Query Language)

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios

RESTRICCIONES DE DOMINIOS

SQL. Orígenes y Evolución

Lenguaje para descripción de datos

SQL Los fundamentos del lenguaje

Integridad en sistemas de bases de datos relacionales

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Bases de Datos Relacionales

Introducción a las bases de datos.

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Acceso a bases de datos MySQL con PHP

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

ÍNDICE PRIMERA PARTE... 17

PARTE II. MODELO RELACIONAL. ESTÁTICA

APÉNDICE SQL (Structures Query Language)

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Bases de Datos I. Cursada Clase 3: Restricciones de Integridad (de tablas y generales)

Práctica 3: Lenguaje SQL 2ª Parte: Definición de datos. Objetivos

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

MANUAL BÁSICO DEL LENGUAJE SQL

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Temario. Índices simples Árboles B Hashing

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales


Diseño de bases de datos

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

ADMINISTRACION DE BASES DE DATOS EN ORACLE

SÍLABO. : Obligatorio : Ingeniería de Sistemas : IS0704. : VII Ciclo : 03 Teoría y 02 Práctica : 04 : Lenguaje de Programación II

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Tipos de datos en SQL. SQL. DDL (Data Definition Language) CREATE DOMAIN CREATE TABLE CREATE TABLE. CREATE TABLE con restricciones de atributo

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Haga clic para PostgreS cambiar el estilo

Consultas con combinaciones

SQL Server FEMEPA SQL Server 2000

Tema 4. Lenguajes de consulta comerciales

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

CURSO DE SQL SERVER 2005

Bases de Datos 1. Teórico: Structured Query Language

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Práctica 3: El lenguaje SQL (2ª parte). (6ª sesión).

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Temario Curso Bases de Datos

[CASI v.0110] Pág. 1

SQL SQL. Índice. Componentes. Objetivos

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN

Ambos conjuntos son completamente distintos: propósito, acciones,... L M D. datos

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

ADMINISTRACIÓN DE BASE DE DATOS

6- Combinación de tablas

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

SQL: Lenguaje de Interrogación Estructurado

CONTROL DE ACCESO. curso 2008

Pequeños apuntes de SQL *

Práctica 3. Consultas SQL

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

Grupo Kybele, Pág. 1

TEMA 9. EL LENGUAJE SQL

Seguridad de la Información Permisos. Sistemas de Bases de Datos II - ITS EMT - CETP

HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS

Tema 1. Bases de datos activas

ÍNDICE INTRODUCCIÓN...13

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

Concepto y Objetivos de las Bases de Datos

Tema 1. Bases de datos activas

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

- Bases de Datos - - Diseño Físico - Luis D. García

Lenguaje SQL para Novatos

Tema 4. Manipulación de datos con SQL

Oracle Básico PL/SQL

Transcripción:

Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación de Datos V.2.1 Actualizaciones V.2.2 Consultas V.3 SQL como Lenguaje de Control FBD3 V.2 1

1. Introducción QUÉ ES SQL? (Structured Query Language) LENGUAJE DE: Definición Manipulación oconsulta interactiva o Programación Control OPERA CON CONJUNTOS DE REGISTROS LENGUAJE AUTOCONTENIDO Y NO PROCEDIMENTAL FBD3 V.3 1. Introducción HISTORIA DE SQL IBM lo desarrolla en los años 70 (SEQUEL, SEQUEL-2, SQL) en los 80, la ANSI (American National Standard Institute) lo transforma en estándar para la definición y manipulación de datos en RDBMS. Aparecen numerosos SGBD basados en SQL o con la misma apariencia que este. en los 90 se amplían sus capacidades: SQL embebido (89), varias revisiones del estándar (SQL92, SQL9x), y versiones propias de ciertos SGBDR. hoy, su uso es generalizado en todos los SGBD relacionales FBD3 V.4 2

1. Introducción SQL 86-87 Intersección de implementaciones existentes SQL 89 SQL 92 Integridad Referencial básica SQL3 + + Mejor tratamiento de restricciones Sintaxis de dominios Tablas temporales Nuevos tipos de datos L. manipulac. esquema Combinación externa SQL dinámico... Disparadores L. procedimental... Orientación al Objeto TAD Encapsulamiento Jerarquías Herencia IDO... Imagen tomada de [1] FBD3 V.5 SENTENCIAS DE DEFINICIÓN DE DATOS Definición del Esquema Nivel Lógico Global CREATE DOMAIN CREATE TABLE CREATE ASSERTION Nivel Externo CREATE VIEW Nivel Físico CREATE INDEX Evolución ALTER DOMAIN DROP VIEW DROP INDEX del ALTER TABLE Esquema DROP DOMAIN DROP TABLE DROP ASSERTION FBD3 V.6 3

Definición de Dominios <definición de dominio>::= CREATE DOMAIN nombre de dominio [AS] <tipo de datos> [DEFAULT <opción por defecto>] [<restricción de dominio>] <restricción de dominio>::= [<definición de nombre de restricción>] <definición de restricción de verificación> [<atributos de restricción>] <definición de nombre de restricción>::= CONSTRAINT <nombre de restricción> <definición de restricción de verificación>::= CHECK ( <condición> ) FBD3 V.7 Definición de Dominios ALUMNO (num_mat, nombre, ciudad, cod_grupo) DC/UC GRUPO (cod_grupo, curso, turno, num_alums) CREATE DOMAIN nomb_valido AS CHAR(20); CREATE DOMAIN nota_valida INTEGER CHECK (VALUE BETWEEN 0 AND 10); CREATE DOMAIN turno_valido CHAR(1) DEFAULT M CHECK (VALUE IN ( M, T )); FBD3 V.8 4

Creación de tablas <definición de tabla>::= CREATE [TEMPORARY] TABLE <nombre de tabla> ( <elemento de tabla> [ {, <elemento de tabla>}...] ) Los elementos de tabla son: <definición de columna>::= <nombre de columna>{<tipo de datos> <dominio>} [<cláusula de valor por defecto>] [<definición i ió de restricción ió de columna>...] <definición de restricción de tabla/columna>::= [<definición de nombre de restricción>] <restricción de tabla/columna> [<atributos de restricción>] FBD3 V.9 Creación de tablas <definición de integridad referencial>::= FOREIGN KEY (<columnas que referencian>) REFERENCES <tabla y columnas referenciadas> [ MATCH <tipo de correspondencia> ] [ <acción referencial disparada> ] Donde: <tabla y columnas referenciadas>::= <nombre de tabla> [(<lista de columnas referenciadas>)] <acción referencial disparada>::= <regla de modificación> [ <regla de borrado>] <regla de borrado> [<regla de modificación>] FBD3 V.10 5

Creación de tablas <regla de modificación> ::= ON UPDATE <acción referencial> <regla de borrado> ::= ON DELETE <acción referencial> <acción referencial> ::= CASCADE SET NULL SET DEFAULT NO ACTION FBD3 V.11 CREATE TABLE grupo ( ); Creación de tablas cod_grupo CHAR(3), curso CHAR(1) NOT NULL, turno TURNO_VALIDO, num_alums INTEGER(2), PRIMARY KEY (cod_grupo), CHECK (curso> 0 AND curso< 4 ) FBD3 V.12 6

CREATE TABLE alumno ( ); Creación de tablas num_mat INTEGER, nombre NOMB_VALIDO UNIQUE, ciudad CHAR(25) NOT NULL, cod_grupo CHAR(3), PRIMARY KEY (num_mat), FOREIGN KEY (cod_grupo) REFERENCES grupo ON DELETE CASCADE ON UPDATE CASCADE FBD3 V.13 Creación de aserciones <definición de aserción>::= CREATE ASSERTION <nombre de restricción> <verificación de aserción> [<atributos de restricción>] <verificación de aserción> :: = CHECK ( <condición>) FBD3 V.14 7

Creación de aserciones Todos los alumnos de Madrid tienen que estar matriculados en turno de tarde CREATE ASSERTION madrid_tarde CHECK (alumnos.ciudad<> MADRID OR grupo.turno= T ); FBD3 V.15 Creación de vistas <definición de vista>::= CREATE VIEW <nombre de vista> [ ( <lista de columna> ) ] AS <expresión consulta> [WITH CHECK OPTION] CREATE VIEW alumnos_madrid AS (SELECT * FROM alumno WHERE ciudad= Madrid ); FBD3 V.16 8

Creación de índices <definición de índice>::= CREATE [UNIQUE] INDEX <nombre del índice> ON <nombre de tabla> (<lista de columna>) CREATE INDEX ind_alumno ON Alumno(ciudad, cod_grupo); FBD3 V.17 Actualización de esquemas <borrar dominio>::= DROP DOMAIN <nombre de dominio> <borrar tabla>::= DROP TABLE <nombre de tabla> <borrar vista>::= DROP VIEW <nombre de vista> DROP DOMAIN turno_valido; DROP TABLE alumno; DROP ASSERTION ciudad_turno; FBD3 V.18 9

Actualización de esquemas <modificación de tabla>::=alter TABLE <nombre de tabla> ADD MODIFY DROP <elementos> donde elementos son COLUMN, CONSTRAINT ALTER TABLE alumno DROP COLUMN nombre; ALTER TABLE alumno ADD COLUMN precio INTEGER; FBD3 V.19 Disparadores <definición de disparador>::= [CREATE] TRIGGER [<nombre de disparador>]<tiempo acción disparador> <evento disparador> ON <nombre tabla> [REFERENCING <lista de alias para valores antiguos o nuevos> ] <acción disparada> Donde: <tiempo de acción> ::= AFTER BEFORE <evento disparador< ::= INSERT DELETE UPDATE [ OF <lista de columnas disparador>] FBD3 V.20 10

Disparadores <alias para valores antiguos o nuevos> ::= {OLD [ AS ] <nombre correlación valores antiguos> NEW [ AS ] <nombre correlación valores nuevos>} {OLD_TABLE [ AS ]<alias de tabla de valores antiguos> NEW_TABLE [ AS ]<alias de tabla de valores nuevos>} <acción disparada> ::= [ FOR EACH { ROW STATEMENT}] [ WHEN ( <condición de búsqueda>) <sentencia SQL disparada> <sentencia SQL disparada> ::= <sentencia de procedimiento SQL> BEGIN ATOMIC <sentencia de procedimiento SQL>; END FBD3 V.21 Disparadores CREATE TRIGGER modificar_alum AFTER UPDATE OF cod_grupo ON Alumno REFERENCING OLD_TABLE AS v_alum NEW_TABLE AS n_alum FOR EACH ROW BEGIN ATOMIC (UPDATE Grupo SET num_alums = num_alums + 1 WHERE Grupo.cod_grupo=n_alum.cod_grupo); (UPDATE Grupo SET num_alums = num_alums - 1 WHERE Grupo.cod_grupo=v_alum.cod_grupo); END FBD3 V.22 11

Sentencias de manipulación Operaciones de actualización: INSERT MODIFY DELETE Operación de consulta o recuperación SELECT FBD3 V.23 Operación de actualización Sintaxis para la inserción <sentencia de inserción>::= INSERT INTO <nombre tabla> [(columna [,columna]...) ] VALUES <( valor [,valor]...)> INSERT INTO alumno VALUES ( 016, Juan López, Barcelona, 3 ); FBD3 V.24 12

Operaciones de actualización Sintaxis de la modificación <sentencia de modificación>::= UPDATE <nombre tabla> SET { <nombre de columna> = <valor> [, <nombre de columna> = <valor>]...} [WHERE <condición de búsqueda>] UPDATE grupo SET turno= T WHERE curso= 3 ; FBD3 V.25 Operaciones de actualización Sintaxis del borrado <sentencia de borrado>::= DELETE FROM <nombre tabla> [WHERE <condición de búsqueda>] DELETE FROM alumno WHERE num_mat=16; FBD3 V.26 13

Operación de consulta o recuperación Sintaxis de la consulta <sentencia de consulta>::= SELECT (* ALL DISTINCT <columna [,columna]...>) FROM <nombre_tabla>[[,nombre_tabla]...] WHERE <condición de búsqueda> [GROUP BY <lista de columnas> [HAVING <condición de búsqueda>] ORDER BY <lista de atributos> [ASC DESC]] ALL => selecciona todas las columnas DISTINCT => suprime columnas duplicadas FBD3 V.27 Operación de consulta o recuperación Sintaxis de la consulta <condición de búsqueda>::= <atributo><operador> <atributo valor>[and OR <atributo><operador> <atributo valor>]... <operador>::=<,>,<=,>=,between, like,in... SELECT * FROM alumno WHERE nombre LIKE A% FBD3 V.28 14

Operación de consulta o recuperación Funciones de Agregado Funciones que se aplican sobre las tuplas que componen cada grupo resultante de aplicar una cláusula GROUP BY. Las funciones de agregado definidas en SQL92 son: COUNT, MAX, MIN, SUM y AVG. SELECT ciudad, COUNT(*) FROM alumno GROUP BY ciudad; FBD3 V.29 Operación de consulta o recuperación Orden de ejecución de cláusulas Se eligen las tuplas que cumplen las condiciones de la cláusula WHERE Se construyen los grupos según la cláusula GROUP BY Se calculan los resultados de las funciones de agregado para cada grupo, si las hay Se eliminan aquellos grupos que no cumplen las restricciones definidas en la cláusula HAVING Por último, se ordenan las tuplas de salida según las columnas indicadas en ORDER BY FBD3 V.30 15

SQL y el Álgebra Relacional Extensión de Ejemplo cod_grupo curso Turno G81 A M Grupo G82 B T Num_mat nombre ciudad Cod_grupo Alumno 334 Luis Madrid G81 335 Ana Madrid G81 336 Jorge Lugo G81 337 Jose Burgos G81 FBD3 V.31 SQL y el Álgebra Relacional Selección πnum_mat, nombre (σciudad= Madrid (alumno)) N um_mat nombre 334 Luis 335 Ana SELECT num_mat,nombre FROM alumno WHERE (ciudad= Madrid ); FBD3 V.32 16

SQL y el Álgebra Relacional πnombre,ciudad (alumno) Proyección Nombre Luis Ana Jorge Jose SELECT nombre, ciudad FROM alumno; Ciudad Madrid Madrid Lugo Burgos FBD3 V.33 πciudad (alumno) SQL y el Álgebra Relacional Proyección Ciudad Madrid Madrid Lugo Burgos SELECT ciudad FROM alumno; Proyección? FBD3 V.34 17

SQL y el Álgebra Relacional Producto Cartesiano alumno x grupo SELECT * FROM alumno, grupo; Cod_grupo curso turno Num_mat nombre ciudad Cod_grupo G81 A M 334 Luis Madrid G81 G81 A M 335 Ana Madrid G81 G81 A M 336 Jorge Lugo G81 G81 A M 337 Jose Burgos G81 G82 B T 334 Luis Madrid G81 G82 B T 335 Ana Madrid G81 G82 B T 336 Jorge Lugo G81 G82 B T 337 Jose Burgos G81 FBD3 V.35 πcod_grupo, curso, nombre ( SQL y el Álgebra Relacional alumno * cod_grupo grupo) Cod_grupo curso nom bre G81 A Luis G81 A Ana G81 A Jorge G81 A Jose Combinación Natural SELECT G.cod_grupo, G.curso, A.nombre FROM alumno AS A, grupo AS G WHERE (A.cod_grupo=G.cod_grupo); SELECT grupo.cod_grupo, curso, nombre FROM alumno INNER JOIN grupo ON (alumno.cod_grupo=curso.cod_gru po); FBD3 V.36 18

πcod_grupo, curso, nombre ( SQL y el Álgebra Relacional alumno */ cod_grupo grupo ) Cod_grupo curso nombre G81 A Luis G81 A Ana G81 A Jorge G81 A Jose G82 B Combinación Externa SELECT grupo.cod_grupo, curso, nombre FROM alumno RIGHT OUTER JOIN grupo ON (alumno.cod_grupo=curso.cod_gru po); FBD3 V.37 4. SQL como Lenguaje de Control El creador de un objeto es siempre el propietario del mismo y tiene todos los privilegios sobre el mismo. Autorización de acceso: <sentencia de concesión>::=grant <privilegios> ON <nombre de objeto> TO <usuario>[, <usuario>] [WITH GRANT OPTION] Donde: <privilegios>::= ALL PRIVILEGES <lista de acción> <lista de acción>::= SELECT DELETE INSERT UPDATE REFERENCES USAGE FBD3 V.38 19

4. SQL como Lenguaje de Control Revocar privilegios: <sentencia de revocación>::= REVOKE [GRANT OPTION FOR] <privilegios> ON <nombre de objeto> FROM <usuario>[, <usuario>] <comportamiento de borrado> Donde: <comportamiento de borrado>::= CASCADE RESTRICT GRANT DELETE ON Alumno TO Jose; REVOKE INSERT, UPDATE (precio) ON Alumno FROM Jose, Juan CASCADE FBD3 V.39 Bibliografía 1. Miguel, A. De, Piattini, M. Fundamentos y modelos de Bases de Datos, Ed. Rama 1999 2. Miguel, A. De, Piattini, M. y Marcos, E. Diseño de Bases de Datos Relacionales, Ed. Rama 1999 3. Miguel, A. De, Martínez, P., Castro, E., Cavero, J.M., Cuadra, D., Iglesias, A.M. y Nieto, C. Diseño de Bases de Datos. Problemas Resueltos, Ed. Rama, 2001 4. Oszu, M.T. y Valduriez, P., Principles of Distributed database systems, 2ª Edición, Prentice Hall, 1999 Tema I FBD3 V.40 20