El lenguaje SQL

El lenguaje SQL www.kybele.es Índice 1. 2. INTRODUCCIÓN  1.1.- ¿Qué es SQL?  1.2.- Estado actual y futuro del SQL SINTÁXIS BÁSICA DEL SQL-9

7 downloads 148 Views 2MB Size

Recommend Stories


Lenguaje SQL - Ejercicios
Lenguaje SQL - Ejercicios Consultas SELECT 1. Seleccionar todas las filas y columnas de la tabla pais. SELECT * FROM pais; 2. Seleccionar todas las fi

SQL (Lenguaje de consulta estructurado)
SQL (Lenguaje de consulta estructurado) Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de o

MANUAL BÁSICO DEL LENGUAJE SQL
MANUAL BÁSICO SQL UATF- INGENIERIA DE SISTEMAS MATERIA: BASE DE DATOS MANUAL BÁSICO DEL LENGUAJE SQL INTRODUCCIÓN A continuación se presentan lo que

Story Transcript

El lenguaje SQL

www.kybele.es

Índice 1.

2.

INTRODUCCIÓN 

1.1.- ¿Qué es SQL?



1.2.- Estado actual y futuro del SQL

SINTÁXIS BÁSICA DEL SQL-92 

2.1.- Lenguaje de Definición de Datos  



2.2.- Lenguaje de Manipulación de Datos  



3. 4. © Belén Vela 2008

2.1.1.- Definición del esquema 2.1.2.- Evolución del esquema 2.2.1.- Actualizaciones 2.2.2.- Consultas

2.3.- Lenguaje de Control de Datos 

2.3.1.- Recuperación y concurrencia



2.3.2.- Seguridad y confidencialidad

EJERCICIOS BIBLIOGRAFIA

1. Introducción ¿QUÉ ES SQL? Structured Query Language

• Evolución de SEQUEL de IBM para prototipo System R • LENGUAJE DE: * Definición * Manipulación - Consulta interactiva - Programación * Control • OPERA CON CONJUNTOS DE REGISTROS • LENGUAJE RELACIONAL y DECLARATIVO © Belén Vela 2008

1. Introducción Estado actual y futuro del SQL

SQL:2003, actual estándar: capacidades de Orientación al Objeto (SQL:1999) capacidades multicolecciones y XML

© Belén Vela 2008

1. Introducción SQL:2003 +

•Multisets, BigInt •XML …

SQL:1999 SQL 92

SQL 89 SQL 86-87 Intersección de implementaciones existentes

© Belén Vela 2008

+ IEF Integridad Referencial básica

+ + •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...

2. Sintaxis Básica del SQL-92 La Arquitectura ANSI/X3/SPARC

NIVEL EXTERNO

ESQUEMA EXTERNO 1

ESQUEMA EXTERNO n

Correspondencia Externa/Conceptual NIVEL CONCEPTUAL CONCEPTUAL/ LÓGICO GLOBAL

NIVEL INTERNO

ESQUEMA CONCEPTUAL Correspondencia Conceptual/Interna ESQUEMA INTERNO

DATOS ALMACENADOS © Belén Vela 2008

2. Sintaxis Básica del SQL-92 Lenguaje de Definición de Datos - LDD

Definición del esquema

Evolución del esquema

Nivel lógico global

Nivel externo

CREATE DOMAIN CREATE TABLE CREATE ASSERTION

CREATE VIEW

CREATE INDEX

DROP VIEW

DROP INDEX

ALTER DOMAIN ALTER TABLE DROP DOMAIN DROP TABLE DROP ASSERTION

© Belén Vela 2008

Nivel físico

2. Sintaxis Básica del SQL-92 Lenguaje de Manipulación de Datos - LMD

Actualizaciones • Altas

INSERT INTO...

• Bajas

DELETE FROM...

• Modificaciones

UPDATE...

Consultas

© Belén Vela 2008

SELECT...

2. Sintaxis Básica del SQL-92 Lenguaje de Control de Datos - LCD

Recuperación y control de concurrencia

COMMIT ROLLBACK

Seguridad y protección GRANT REVOKE

© Belén Vela 2008

2. Sintaxis Básica del SQL-92 EJEMPLO: ALUMNO (num_mat, nombre, ciudad, cod_grupo) Modificación: Cascada Borrado: Puesta a nulos

GRUPO (cod_grupo, curso, turno)

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos Tipos de datos del SQL-92: CHARACTER [VARYING] (n) BIT [VARYING] (n) NUMERIC (p,s) DECIMAL (p,s) INTEGER SMALLINT REAL DOUBLE PRECISION FLOAT (p) DATE TIME TIMESTAMP INTERVAL

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

DOMINIOS: Sintaxis ::= CREATE DOMAIN [ AS ] [ DEFAULT ] literal, [ ] ::= [ ] < definición de restricción de verificación> [ ] ::= CONSTRAINT ::= CHECK ( ) © Belén Vela 2008

función de valor tiempo o fecha, o bien USER, SYSTEM USER o NULL

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

¡ORACLE no soporta la creación de dominios!

DOMINIOS: • CREATE DOMAIN nomb_valido AS CHARACTER; • CREATE DOMAIN nota_valida NUMERIC CHECK (VALUE BETWEEN 0 AND 10); • CREATE DOMAIN turno_valido CHARACTER DEFAULT ‘M’ CONSTRAINT Mañana_o_Tarde CHECK (VALUE IN (‘M’,’T’)); © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos Tiempo de acción de una restricción: Los atributos de restricción, sirven para indicar si la restricción es inmediata o diferida. de verificación es inmediato: la restricción se verificará al finalizar • Modo cada sentencia • Modo de verificación diferido: se verificará al finalizar la transacción. ::= [ [NOT] DEFERRABLE] |[[NOT]DEFERRABLE]

::= INITIALLY DEFERRED | INITIALLY INMEDIATE

NOT NULL

DEPARTAMENTO (num_dep, localidad, …, jefe_dep) NOT NULL

EMPLEADO (cod_emp, nombre,…, departamento) © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

TABLAS: Sintaxis (I) ::= CREATE [TEMPORARY ] TABLE ::= ( [{ } ... ] ) ::= | ::= { | } [ ] [ .... ] ::= [ ] [ ] © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

TABLAS: Sintaxis (II) ‘0’ AND curso < ‘4’) );

© Belén Vela 2008

CREATE TABLE grupo (cod_grupo CHARACTER PRIMARY KEY, curso CHARACTER NOT NULL, ó turno TURNO_VALIDO, CHECK (curso > ‘0’ AND curso < ‘4’) );

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

CREATE TABLE alumno ( num_mat CHARACTER, nombre NOMB_VALIDO UNIQUE, ciudad CHARACTER NOT NULL, cod_grupo CHARACTER, PRIMARY KEY (num_mat), FOREIGN KEY (cod_grupo) REFERENCES grupo ON UPDATE CASCADE ON DELETE SET NULL);

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

INTEGRIDAD REFERENCIAL

ON UPDATE CASCADE SET NULL SET DEFAULT NO ACTION © Belén Vela 2008

ON DELETE CASCADE SET NULL SET DEFAULT NO ACTION

Por defecto: borrado y actualización restringidos ¡ORACLE no soporta ON UPDATE ni ON DELETE SET DEFAULT!

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

ESQUEMA: Alumno

num_mat

Grupo

© Belén Vela 2008

nombre

cod_grupo

curso

ciudad

turno

cod_grupo

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

Para ver la estructura de una tabla en ORACLE:  DESC nombre_tabla;

SQL> desc alumno; Nombre ¿Nulo? Tipo ----------------------------------------- -------- ---------------------------NUM_MAT NOT NULL CHAR(3) NOMBRE VARCHAR2(20) CIUDAD NOT NULL CHAR(25) COD_GRUPO CHAR(3) SQL> desc grupo; Nombre ¿Nulo? Tipo ----------------------------------------- -------- ---------------------------COD_GRUPO NOT NULL CHAR(3) CURSO NOT NULL CHAR(1) TURNO CHAR(1) © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel lógico global

¡ORACLE no soporta la creación de aserciones!

ASERCIONES: Todos los alumnos de Madrid tienen que estar matriculados en el turno de tarde. CREATE ASSERTION madrid_tarde CHECK (NOT EXISTS (SELECT * FROM ALUMNO, GRUPO WHERE alumno.cod_grupo=grupo.cod_grupo AND alumno.ciudad=‘MADRID’ AND grupo.turno‘T’)); © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel externo

VISTAS: CREATE VIEW nombre_de_vista [(lista de columnas)] AS CREATE VIEW alumnos_madrid AS (SELECT * FROM alumno WHERE ciudad=‘Madrid’);

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Definición del esquema Nivel físico

ÍNDICES: CREATE INDEX ind_alumno ON alumno (ciudad, cod_grupo); o CREATE UNIQUE INDEX ind_alumno ON alumno (ciudad, cod_grupo);

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Evolución del esquema Nivel lógico global

Borrar el nombre (atributo) de los alumnos: ALTER TABLE alumno DROP COLUMN nombre; Añadir el precio (atributo) que cada alumno paga al matricularse: ALTER TABLE alumno ADD (precio INTEGER);

DROP DOMAIN turno_valido; DROP TABLE alumno; DROP ASSERTION ciudad_turno; © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.1 Lenguaje de Definición de Datos LDD: Evolución del esquema Nivel externo

DROP VIEW alumnos_madrid;

LDD: Evolución del esquema Nivel físico

DROP INDEX ind_alumno;

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Altas

INSERT INTO [(lista_columnas)] VALUES (lista_columnas_inserción); INSERT INTO grupo VALUES (‘I11’, ‘1’, DEFAULT);  Todas las columnas de la tabla y en el mismo orden

INSERT INTO grupo (curso, cod_grupo) VALUES (‘2’,‘I12’);  Clave primaria tiene que estar incluida GRUPO

cod_grupo

© Belén Vela 2008

curso

turno

I11

1

M

I12

2

M

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Altas

INSERT INTO GRUPO_M SELECT * FROM Grupo WHERE turno='M'; GRUPO_M

cod_grupo

© Belén Vela 2008

curso

turno

I11

1

M

I12

2

M

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Altas

INSERT INTO GRUPO_Curso (Codigo, Turno) SELECT cod_grupo, turno FROM Grupo WHERE curso=‘1’; GRUPO_Curso

Codigo I11

© Belén Vela 2008

Turno M

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Altas

Alumno:

num_mat

nombre

1 3 8 2 5

Juan Ana María Pedro Salomé

Grupo:

© Belén Vela 2008

cod_grupo I11 I12 I13 I21 I22 I31

ciudad Madrid Leganés Leganés Getafe Madrid

cod_grupo precio I11 I21 I22 I21 I21

curso

turno

1 2 3 1 2 3

M M M T T T

25000 80000 30000 20000 25000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Bajas

DELETE FROM grupo; cod_grupo

curso

turno

DELETE FROM grupo WHERE curso=‘1’; cod_grupo

© Belén Vela 2008

I12 I13 I22 I23

curso

turno

2 3 2 3

M M T T

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Modificaciones

UPDATE alumno SET cod_grupo=‘I22’ WHERE nombre>‘Pérez’; Alumno:

num_mat

nombre

1 3 8 2 5

Juan Ana María Pedro Salomé

© Belén Vela 2008

ciudad Madrid Leganés Leganés Getafe Madrid

cod_grupo precio I11 I21 I22 I21 I22 I21

25000 80000 30000 20000 25000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

SELECT [ALL|DISTINCT] {lista-atributos | *} FROM nombre_tabla [, nombre_tabla, …] [WHERE condición] [cláusula GROUP BY] [cláusula HAVING] [cláusula ORDER BY];

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

De qué tabla/s se selecciona la información

Todos los atributos de la tabla en el orden de su creación

SELECT * FROM alumno;

 Todos los atributos de la tabla ALUMNO (todas las tuplas).

num_mat

nombre

1 3 8 2 5

Juan Ana María Pedro Salomé

© Belén Vela 2008

ciudad Madrid Leganés Leganés Getafe Madrid

cod_grupo precio I11 I21 I22 I21 I22

25000 80000 30000 20000 25000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Proyección SELECT nombre, ciudad FROM alumno  Selección de los atributos nombre y ciudad de la tabla ALUMNO.

© Belén Vela 2008

nombre

ciudad

Juan Ana María Pedro Salomé

Madrid Leganés Leganés Getafe Madrid

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

DISTINCT: Eliminación de duplicados

SELECT ciudad FROM alumno;

SELECT DISTINCT ciudad FROM alumno;

ciudad

ciudad

Madrid Leganés Leganés Getafe Madrid

Getafe Leganés Madrid

Proyección???? © Belén Vela 2008

ALL: valor que se asume por omisión

Proyección!!!

π

ciudad

Alumno

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas Por omisión: ASC

Valores nulos los más altos

ORDER BY {lista_columnas | lista_posiciones} [DESC|ASC ]

Columna/s debe/n estar incluida/s en la cláusula SELECT

© Belén Vela 2008

Posición: nº de orden de la columna dentro de la lista de columnas seleccionadas (izda a dcha)

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

SELECT ciudad FROM alumno ORDER BY ciudad ASC;

“ciudad” debe estar incluida en la cláusula SELECT

© Belén Vela 2008

ciudad Getafe Leganés Leganés Madrid Madrid

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

1

2

SELECT nombre, precio*0.10 FROM alumno ORDER BY 2, nombre;

Ordenación por una columna calculada y por nombre

© Belén Vela 2008

nombre PEDRO JUAN SALOME MARIA ANA

precio*0.10 2000 2500 2500 3000 8000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

SELECT * FROM alumno WHERE cod_grupo=‘I21’;

Selección

σ

cod_grupo=”I21” Alumno

Condición: combinación de una o más expresiones (usando operadores lógicos) que da como resultado: CIERTO, FALSO o DESCONOCIDO

num_mat

nombre

3 2

Ana Pedro

© Belén Vela 2008

ciudad Leganés Getafe

cod_grupo precio I21 I21

80000 20000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Predicados OPERADORES DE COMPARACIÓN: • igual (“=“), distinto (““), menor que (““), menor o igual a (“=“)

( No hay espacio entre los símbolos)

OPERADORES ARITMÉTICOS: • Suma (“+“), resta (“-“), multiplicación (“*“) y división (“/“) •OPERADORES LÓGICOS: • AND, OR y NOT

Primero condiciones con AND y luego OR

SELECT * FROM Alumno WHERE precio >20000 AND (ciudad = ‘MADRID’ OR ciudad=‘GETAFE’); SELECT * FROM Alumno WHERE precio >20000 AND ciudad = ‘MADRID’ OR ciudad=‘GETAFE’; 1º

•VALORES NULOS (desconocido): • IS [NOT] NULL

SELECT * FROM Alumno WHERE ciudad IS NULL; SELECT * FROM Alumno WHERE cod_grupo IS NOT NULL;

© Belén Vela 2008



2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas RANGO DE VALORES: • BETWEEN … AND

SELECT * FROM Alumno WHERE precio BETWEEN 20000 AND 25000; SELECT * FROM Alumno WHERE precio NOT BETWEEN 20000 AND 25000; ~ SELECT * FROM Alumno WHERE NOT (precio BETWEEN 20000 AND 25000); OPERADOR LIKE: Se emplea para comparar el contenido de una columna con una serie de caracteres. Caracteres comodín: • Subrayado (_): sustituye a un carácter en la misma posición • Tanto por ciento (%): sustituye a n caracteres, donde n puede ser 0.

SELECT * FROM Alumno WHERE nombre LIKE ‘_E%O’: OPERADOR IN: Permite comprobar si un valor pertenece a un conjunto de valores determinados. • expresión IN (lista de valores)

SELECT * FROM Alumno WHERE ciudad IN (‘BARCELONA’,’MADRID’): ~ SELECT * FROM ALUMNO WHERE ciudad =‘BARCELONA’ OR ciudad=‘MADRID’; SELECT * FROM Alumno WHERE ciudad NOT IN (‘BARCELONA’,’MADRID’): © Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Ejemplos: SELECT * FROM Documento WHERE Titulo LIKE '%DB%';

TIPO COD DOC

A

L L

002 004

TITULO

IDIOMA

NOMBRE

AÑO

ISBN

INTRODUCTION TO DBS RELATIONAL DB

I I

ADDISON-WESLEY ADDISON-WESLEY

1995 1995

0-201-54329-X 0-201-55483-X

SELECT * FROM Documento WHERE Isbn IS NULL;

© Belén Vela 2008

SELECT Titulo, Idioma, Nombre_E, Año FROM Documento WHERE Año BETWEEN 1976 AND 1993;

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Funciones de Agrupación

Cuenta líneas incluyendo NULOS

SELECT COUNT(*) FROM alumno WHERE precio=25000

Máximo

SELECT MAX(precio) FROM alumno

Mínimo

SELECT MIN(precio) FROM alumno

Promedio

SELECT AVG(precio) * 0.1 FROM alumno

Suma

SELECT SUM(precio) FROM alumno

© Belén Vela 2008

COUNT(*) 2

MAX(precio) 80000 MIN(precio) 20000 AVG(precio)*0.1 3600

SUM(precio) 180000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Actualizaciones Altas

Alumno:

num_mat

nombre

1 3 8 2 5

Juan Ana María Pedro Salomé

Grupo:

© Belén Vela 2008

cod_grupo I11 I12 I13 I21 I22 I31

ciudad Madrid Leganés Leganés Getafe Madrid

cod_grupo precio I11 I21 I22 I21 I21

curso

turno

1 2 3 1 2 3

M M M T T T

25000 80000 30000 20000 25000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Cláusulas de Agrupación

SELECT ciudad, AVG(precio) FROM alumno GROUP BY ciudad SELECT ciudad, AVG(precio) FROM alumno WHERE num_mat ANY (SELECT precio FROM ALUMNO WHERE ciudad=‘MADRID’):

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Predicados PREDICADO EXISTS: La condición EXISTS será CIERTA si la subconsulta devuelve una fila que satisfaga las condiciones impuestas en la cláusula WHERE (se puede expresar con el operador IN).

Obtener los alumnos que estén matriculados en algún grupo. SELECT * FROM Alumno a WHERE EXISTS (SELECT * FROM GRUPO g WHERE a.cod_grupo=g.cod_grupo);

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

CREATE VIEW alumnos_madrid AS (SELECT * FROM alumno WHERE ciudad=‘Madrid’);

Ejemplo de vistas SELECT * FROM alumnos_madrid;

Alumnos_madrid num_mat

nombre

1 5

Juan Salomé

© Belén Vela 2008

ciudad Madrid Madrid

cod_grupo precio I11 I22

25000 25000

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos Sección de Declaración de Variables

SQL Embebido Cuerpo

Sección de Tratamiento de Excepciones © Belén Vela 2008

Sentencia del lenguaje anfitrión EXEC SQL BEGIN DECLARE SECTION; Año Date; ISBN Char(12); ... EXEC SQL END DECLARE SECTION; Sentencia del lenguaje anfitrión Sentencia del lenguaje anfitrión EXEC SQL SELECT Año INTO :Año FROM DOCUMENTO WHERE ISBN = :ISBN; IF SQLSTATE = ... ... Sentencia del lenguaje anfitrión Sentencia del lenguaje anfitrión WHENEVER SQLERROR | NOT FOUND ... CONTINUE | GOTO ... Sentencia del lenguaje anfitrión

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

Declaración de Cursor

DECLARE cursor_e CURSOR FOR SELECT Código, Nombre, Dir, Ciudad FROM Editorial ORDER BY Ciudad DESC;

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.2 Lenguaje de Manipulación de Datos LMD: Consultas

SQL Dinámico

SELECT Nombre, Dirección FROM Editorial WHERE Ciudad = ?;

© Belén Vela 2008

2. Sintaxis Básica del SQL-92

2.3 Lenguaje de Control de Datos Lenguaje de Control de Datos

Recuperación y control de concurrencia

COMMIT ROLLBACK

Seguridad y protección GRANT REVOKE

© Belén Vela 2008

3. Ejercicios 1. Dada la siguiente relación:

PERSONA (DNI, nombre, ciudad, salario, profesión, fecha_nac, jubilado) a) Crear el dominio Tipo_Jubilado. Puede tomar los valores ‘SI’, ‘NO’ y por defecto tomará el valor ‘NO’. b) Crear la tabla PERSONA, siendo el atributo DNI la clave primaria, el atributo nombre una clave alternativa y el atributo jubilado tomará los valores del dominio Tipo_Jubilado previamente creado. c) Insertar las siguientes tuplas en la tabla: DNI

© Belén Vela 2008

nombre

ciudad

salario

profesión

fecha-nac

jubilado

11111111

Juan

Madrid

1500

informático

01/05/1972

NO

22222222

María

Barcelona

1800

informático

05/06/1980

NO

33333333

Pedro

Valencia

1200

administrativo

31/05/1940

SI

44444444

Isabel

Madrid

1600

informático

22/03/1974

NO

55555555

Antonio

Barcelona

1000

administrativo

15/08/1935

SI

3. Ejercicios Realizar las siguientes operaciones de manipulación: d) Incrementar en un 5% el salario de los informáticos. e) Decrementar en un 2% el salario de los que viven en Madrid. f) Modificar el nombre de la persona con DNI=‘55555555’ por ‘Juan Antonio’. g) Todos los jubilados pasan a ganar 100 Euros más. h) Borrar todas las personas de Madrid que hayan nacido antes del 1940.

© Belén Vela 2008

3. Ejercicios Realizar las siguientes consultas: i)

Obtener todas las personas ordenadas descendentemente por nombre.

j)

Obtener el sueldo medio de las personas de Madrid agrupadas por profesiones.

k) Obtener el sueldo medio de las personas de Madrid agrupadas por profesiones siempre que el sueldo medio por profesión supere los 1000 euros y ordenado por profesión.

© Belén Vela 2008

3. Ejercicios 2. Dado el siguiente esquema relacional:

EMPLEADO (NSS, Nombre, Apellidos, NSS_Supervisor, Fecha_Nac, Dirección Sexo, Núm_Dep, Salario) PROYECTO (Cod_P, Nombre_P, Lugar_P, Núm_Dep) DEPARTAMENTO (Número_D, Nombre_D, NSS_Gerente) FAMILIAR (NSSE, Nombre, Sexo, Parentesco) TRABAJA_EN (NSS_E, Cod_Proy, Horas)

© Belén Vela 2008

3. Ejercicios 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. © Belén Vela 2008

Obtener todas las combinaciones de empleados y departamentos. Obtener todas las combinaciones de NSS de empleados y nombres de departamento. Seleccionar el salario de cada uno de los empleados. Seleccionar los distintos salarios que cobran los empleados. Obtener todos los empleados del departamento 5. Seleccionar los empleados del departamento de ‘Investigación’ y la información de este departamento. Nombre y apellidos de los empleados de Móstoles. Nombre y apellidos de los empleados que vivan en una ciudad que empiece por ‘M’ y termine por ‘les’. Nombre del departamento, nombre y apellidos de los empleados ordenados descendentemente por nombre de departamento y ascendentemente por apellidos. NSS de los empleados del departamento 1, 2 o 3. Nombre y apellidos de los empleados que tengan un salario desconocido. Nombre y apellidos de los empleados junto con el nombre y apellidos de su supervisor. Obtener el total de los salarios, el salario máximo, el salario mínimo y la media del salario de todos los empleados. Obtener el total de los salarios, el salario máximo, el salario mínimo y la media del salario de los empleados del departamento de ‘Investigación’. Número de empleados que tiene el departamento de ‘Investigación’. Número de salarios diferentes en la empresa.

3. Ejercicios 17. 18. 19. 20. 21. 22. 23. 24.

© Belén Vela 2008

Seleccionar los NSS de los empleados que trabajan en el mismo proyecto y con las mismas horas de trabajo que el empleado con NSS=‘28/342139’. NSS, nombre y apellidos de los empleados que no tienen familiares dependientes de él. Nombre y apellidos de los empleados que tengan 2 o más familiares a su cargo. Por cada departamento que tenga más de 5 empleados, obtener el nombre de departamento y el número de empleados que ganan más de 3000 euros. Nombre y apellidos de los empleados que tengan un salario mayor que cualquiera de los empleados del departamento 5. Nombre y apellidos de los empleados que tienen familiares que tienen el mismo nombre y sexo que él. (select anidada, combinación y exists) Nombre de todos los empleados que trabajan en todos los proyectos del departamento 5. Lista de todos los códigos de los proyectos en los que participa un empleado que se apellide Silvano bien como trabajador o como gerente del departamento al que pertenece el proyecto.

4. Bibliografía  Tecnología y Diseño de Bases de Datos M.Piattini, E. Marcos, C.Calero y B. Vela Ed.: RA-MA, 2006 Octubre Parte II, capítulo 8  Fundamentos y Modelos de Bases de Datos A. de Miguel y M. Piattini Ed.: RA-MA, 1997 Capítulo 7 (Pág. 215-265) y Apéndice A (Pág. 453-468)  Introducción

al SQL para Usuarios y Programadores Rivero, E. et al. Ed.: Thomson, Segunda Edición, 2003

 Diseño

de Bases de Datos. Problemas Resueltos. A. de Miguel et al. Ed.: RA-MA, 2001

 hhttp://www.lc.leidenuniv.nl/awcourse/oracle/server.920/a96540/toc.htm © Belén Vela 2008

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.