72
UF 1476 DEFINICIÓN Y MANIPULACIÓN DE DATOS CERTIFICADO DE PROFESIONALIDAD IFCD0112 PROGRAMACIÓN CON LENGUAJES ORIENTADOS A OBJETOS Y BASES DE DATOS RELACIONALES

CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

  • Upload
    lyduong

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

UF 1476

DEFINICIÓN Y

MANIPULACIÓN DE DATOS

CERTIFICADO DE PROFESIONALIDAD IFCD0112

PROGRAMACIÓN CON

LENGUAJES ORIENTADOS

A OBJETOS Y BASES DE

DATOS RELACIONALES

Page 2: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

PROGRAMACIÓN DIDÁCTICA

UF 1476: Definición y Manipulación de Datos (80 horas)

Comienzo: Lunes 6 de Abril de 2015

Fin: Miércoles 22 de Abril de 2015

Trabajo práctico: Viernes, 17 de Abril de 2015

Examen: Miércoles, 22 de Abril de 2015

Page 3: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

ÍNDICE

Lenguajes Relacionales: Operaciones en el modelo relacional Algebra relacional Consultas: SQL y QBE

SQL: DML DCL DDL

Transacciones

Otros objetos de la Base de Datos

Vistas

Optimización de Consultas

Índices

Page 4: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

INTRODUCCIÓN

Propósito de los SGBD: Un sistema de gestión de

bases de datos (SGDB) consiste en una colección

de datos (bases de datos) interrelacionados y un

conjunto de programas para acceder a dichos

datos.

Nivel físico: describe como se almacenan

realmente los datos.

Nivel lógico: describe que datos se almacenan

en la base de datos y que relaciones existen entre

ellos.

Nivel de vistas: describe sólo parte de la base de

datos completa

Page 5: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

INTRODUCCIÓN

MODELO CONCEPTUAL:

Modelo entidad - relación (E-R): consta

de una colección de objetos básicos (entidades) y

de las relaciones entre estos objetos. Para

expresarlos gráficamente se utiliza un diagrama

E-R

MODELO LÓGICO

Modelo relacional: se usa una colección de

tablas para representar los datos y las relaciones

entre ellos.

Page 6: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

INTRODUCCIÓN

MODELO FÍSICO: se usa para describir datos

en el nivel físico. Para ello se utilizará un

lenguaje de Base de Datos, SQL.

Lenguajes de Bases de Datos:

- LDD (DDL): Lenguaje de Definición de Datos

- LMD (DML): Lenguaje de Manipulación de

Datos

- LCD (DCL): Lenguaje de Control de Datos

Page 7: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

SQL

Structured Query Language

Funcionalidad:

Definir los diferentes objetos de un SGBDR.

Manipular los datos almacenados en la BDR.

Especificar restricciones de integridad y seguridad.

Es un Lenguaje de Alto Nivel para dialogar con el

SGBDR

Page 8: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

SQL

Características:

Utilizado por todo tipo de usuarios:

Administradores de BDR.

Programadores.

Usuarios Finales.

Lenguaje no procedimental:

Se especifica QUÉ se quiere obtener, sin decir

CÓMO.

Permite especificar cualquier consulta.

Page 9: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJES DE BASES DE DATOS

Lenguaje de definición de datos (DDL): sirve

para especificar el esquema de la BD. El

resultado es un conjunto de tablas que se

almacenan en un archivo especial llamado

diccionario de datos.

Permite crear, modificar y eliminar objetos de la

base de datos

CREATE, ALTER, DROP …

Page 10: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJES DE BASE DE DATOS

Lenguaje de manipulación de datos (DML):

permite acceder o manipular los datos

organizados.

Permite consultar, modificar y eliminar datos de

las tablas o bases de datos

INSERT, UPDATE, DELETE, SELECT

Page 11: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJES DE BASE DE DATOS

Lenguaje de control de datos (DCL): Sirve para

implementar la seguridad de nuestros datos y las

cuentas de usuario.

GRANT, RENAME, DROP, REVOKE

Tipos de Usuarios:

- DBA

- Usuarios de bases de datos

- Programadores de aplicaciones

- Usuarios de aplicaciones

Page 12: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

DISEÑO DE BASES DE DATOS

Diagrama Entidad-Relación:

Page 13: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

DISEÑO DE BASES DE DATOS

Transformando el DE/R a Modelo Relacional,

Las tablas obtenidas son las siguientes:

T_EMP (Num_Emp, Apellidos, Nombre, Salario,

F_Nacimiento, Cod_Proy)

T_DPTO (Num_Dpto, DNombre)

T_PROY (Cod_Proy, PNombre, Presupuesto,

Num_Dpto)

Page 14: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE DEFINICIÓN DE DATOS

(DDL)

Creación de una Base de Datos:

CREATE DATABASE nombre_base_datos;

Ver las características de una Tabla:

DESCRIBE nombre_tabla;

Modificación de la Base de Datos:

ALTER DATABASE nombre_base_datos;

Borrado de la Base de Datos:

DROP DATABASE nombre_base_datos;

Page 15: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

TIPOS BÁSICOS DE DATOS

Datos Alfanuméricos o Cadenas de Caracteres:

CHAR(longitud)

VARCHAR(longitud)

longitud = número máximo de caracteres del campo

BLOB: Hasta un máximo de 65535 caracteres

Datos Numéricos:

INTEGER: -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295

DECIMAL(precisión, decimal)

REAL: -2.2250738585072014E-308 a 2.2250738585072014E-308

FLOAT: -3.402823466E+38 a 3.402823466E+38

precisión = número de dígitos del número

decimal = número de dígitos decimales del nº decimal

Page 16: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

TIPOS BÁSICOS DE DATOS

Datos tipo fecha y tiempo:

DATE: Se puede elegir entre varios formatos.

DATETIME: También tiene diferentes formatos.

TIME

TIMESTAMP: Su valor es: fecha + tiempo +

nanosegundos.

Page 17: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

CREACIÓN DE TABLAS

Creación de tablas :

CREATE TABLE nombre_tabla

(<definición_atributo_1> [NOT NULL] [CHECK Condicion],

<definición_atributo_2> [NOT NULL] [CHECK Condicion],

.....................

<definición_atributo_n> [NOT NULL] [CHECK Condicion],

[ PRIMARY KEY (ListadeAtributos) ] );

donde:

definición_atributo = nombre_atributo tipo_dato (tamaño)

NOT NULL: no se permiten valores nulos en la columna

ListadeAtributos: uno o más atributos separados por comas

Page 18: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

CREACIÓN DE TABLAS

Creación de tablas de la BD “nominas” :

CREATE TABLE T_Emp

(Num_Emp CHAR(6) NOT NULL,

Apellidos CHAR(30) NOT NULL,

Nombre CHAR(12) NOT NULL,

Salario INTEGER,

F_Nacimiento DATE,

Cod_Proy CHAR(3) NOT NULL,

PRIMARY KEY (Num_Emp) );

Page 19: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

CREATE TABLE T_Dpto

(Num_Dpto CHAR(3) NOT NULL,

DNombre CHAR(20) NOT NULL,

PRIMARY KEY (Num_Dpto) );

CREATE TABLE T_Proy

(Cod_Proy CHAR(3) NOT NULL,

PNombre CHAR(15) NOT NULL,

Presupuesto INTEGER,

Num_Dpto CHAR(3) NOT NULL,

PRIMARY KEY(Cod_Proy) );

Page 20: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

MODIFICACIÓN DE TABLAS

Modificación de tablas:

Añadir un nuevo atributo:

ALTER TABLE <nombre_tabla>

ADD <definición_atributo>;

Modificar un atributo ya existente:

ALTER TABLE <nombre_tabla>

MODIFY <definición_atributo>;

Eliminación de tablas:

DROP TABLE <nombre_tabla>;

Page 21: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

CREACIÓN DE ÍNDICES

CREATE [UNIQUE] INDEX <nombre_índice>

ON <nombre_tabla> (<lista_atributos>);

Es el sistema el encargado de utilizar los

índices, para optimizar el acceso a los datos

El usuario sólo puede crear o eliminar

índices, pero no indicar su utilización

Eliminación de índices:

DROP INDEX <nombre_índice>;

Page 22: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

DEFINICIÓN DE CLAVES

REFERENCIALES

En la creación de la tabla :

CREATE TABLE nombre_tabla

( nombre_columna tipo_columna atributos,

............................................................................ ,

nombre_columna tipo_columna atributos,

PRIMARY KEY (lista_de_columnas),

FOREIGN KEY (lista_de_columnas)

REFERENCES nombre_de_tabla (lista_de_columnas)

ON UPDATE [RESTRICT | SET NULL | CASCADE]

ON DELETE [RESTRICT | SET NULL | CASCADE],

FOREIGN KEY ..... );

Page 23: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

EJEMPLO

CREATE TABLE T_Proy

(Cod_Proy CHAR(3) NOT NULL,

PNombre CHAR(15) NOT NULL,

Responsable CHAR(6) NOT NULL,

Presupuesto INTEGER,

Num_Dpto CHAR(3) NOT NULL),

PRIMARY KEY (Cod_Proy),

FOREIGN KEY (Num_Dpto),

REFERENCES T_Dpto (Num_Dpto)

ON UPDATE SET NULL

ON DELETE CASCADE );

Page 24: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

EJERCICIO

Se desean registrar los siguientes datos acerca de

cada pedido en una base de datos:

Page 25: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE MANIPULACIÓN DE

DATOS (DML)

Page 26: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

INSERCIÓN DE FILAS

Inserción de una fila:

INSERT INTO <nombre_tabla>

[(<lista_de _atributos>)]

VALUES (<valor_1>, <valor_2>,...,<valor_n>);

Inserción de varias filas:

INSERT INTO <nombre_tabla> [(<lista_de_atributos>)]

( <cláusula SELECT> );

La cláusula "SELECT" especifica una consulta cuyo resultado (filas) se insertará en la tabla especificada.

Page 27: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE ACTUALIZACIÓN

En el día de hoy se incorpora a la empresa el

empleado Nicolás García Ramos nacido el

27/09/1968, se le asigna al proyecto ‘P56’.

INSERT

INTO T_Emp

VALUES (‘E-1237’, ‘García Ramos’, ‘Nicolás’,

150000, ’27/09/1968’, ‘P56’);

Al no especificar la lista de atributos los valores

deben escribirse en el mismo orden en que se

definieron en el CREATE TABLE.

Page 28: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

Se ha creado una nueva tabla T_Formacion

con igual estructura que T_Emp. Se desea

inicializarla con todos aquellos empleados

cuya fecha de nacimiento sea posterior al

01/01/1980’.

INSERT

INTO T_Formacion

(SELECT * FROM T_Emp

WHERE F_Nacimiento > ’01/01/1980’);

Page 29: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE ACTUALIZACIÓN

Modificación de filas:

UPDATE <nombre_tabla>

SET <atributo_1> = <valor_1>,

<atributo_2> = <valor_2>,

...........

<atributo_n> = <valor_n>

[WHERE <condición>];

La modificación afectará a todas las filas que cumplan

la condición, si se especifica ésta. Si no se especifica

condición, la modificación afectará a todas las filas de

la tabla.

El valor que se asigne al atributo debe ser una

constante, o el resultado de una subconsulta.

Page 30: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE ACTUALIZACIÓN

El proyecto ‘P23’ es aumentado en 200000 de

presupuesto y reasignado al departamento

‘D25’.

UPDATE T_Proy

SET Dpto = ‘D25’, Presupuesto =

(SELECT Presupuesto + 200000

FROM T_Proy

WHERE Cod_Proy = ‘P23’)

WHERE Cod_Proy = ‘P23’;

Page 31: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE ACTUALIZACIÓN

Eliminación de filas:

DELETE

FROM <nombre_tabla>

[WHERE <condición>];

No se pueden eliminar partes de una fila.

Si no aparece la cláusula "WHERE" se

eliminarán todas las filas de la tabla, no

eliminándose la definición de ésta en el

esquema

Page 32: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

SELECT [DISTINCT] <expresión>

FROM <lista_de_tablas>

[WHERE <condición>]

[GROUP BY <lista_de_atributos>

[HAVING <condición_de_grupo> ]]

[ORDER BY <lista_de_atributos> [ASC/DESC] ];

SELECT: especifica la información que se desea obtener.

FROM: indica las tablas o vistas en las que se encuentran los atributos implicados en la consulta.

WHERE: especifica la condición de búsqueda.

GROUP BY: permite agrupar el resultado.

HAVING: especifica una condición de grupo.

ORDER BY: permite ordenar el resultado.

Page 33: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Operadores:

Los operadores que se pueden utilizar para expresar condiciones de fila (cláusula WHERE) o de grupo (cláusula HAVING) son:

De comparación: <, <=, >, >=, <>, =

Lógicos: AND, OR, NOT

BETWEEN ... AND ...

LIKE

IN

IS NULL

Cuantificadores: ANY, SOME, ALL

Existencial: EXISTS

Page 34: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Reglas de Evaluación de Operadores:

Orden de Evaluación:

Operadores de Relación, BETWEEN, IN,

LIKE, IS

NULL.

NOT.

AND.

OR.

Se pueden utilizar paréntesis para establecer

el orden de evaluación deseado por el

usuario.

Page 35: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

CONDICIONES DE SELECCIÓN (I)

1. Recuperación simple:

Obtener todos los datos de todos los proyectos:

SELECT Cod_Proy, PNombre, Presupuesto, Dpto

FROM T_Proy;

ó su equivalente:

SELECT *

FROM T_Proy;

*: equivale a todos los atributos de una tabla.

Obtener los nombres de proyectos actualmente en desarrollo.

SELECT DISTINCT PNombre

FROM T_Proy;

DISTINCT elimina los valores repetidos.

Page 36: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (II).

2. Recuperación calificada:

Obtener los números de los empleados que han nacido después del año 1979.

SELECT Num_Emp

FROM T_Emp

WHERE F_Nacimiento > ‘01/01/1980';

Obtener los apellidos y nombre de los empleados han nacido después del año 1979 y tengan un salario inferior a 20.000.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE F_Nacimiento > ‘01/01/1980' AND …

Page 37: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (III).

3. Recuperación con más de una tabla:

Obtener para cada proyecto, su código y los empleados asignados.

SELECT T_Proy.Cod_Proy, Apellidos, Nombre

FROM T_Proy, T_Emp

WHERE T_Proy.Cod_Proy =T_Emp.Proyecto;

4. Recuperación con el operador 'BETWEEN ... AND ...‘

(Establece una comparación dentro de un intervalo cerrado).

Obtener el nombre de los proyectos cuyo presupuesto esté

comprendido entre 5.000.000 y 15.000.000 €.

SELECT PNombre

FROM T_Proy

WHERE Presupuesto BETWEEN 5000000 AND 15000000;

También se puede utilizar NOT BETWEEN.

Page 38: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (IV).

5. Recuperación con el operador 'LIKE‘:

Establece una comparación entre cadenas de caracteres,

empleando los siguientes comodines:

'%' : sustituye a una cadena de caracteres cualquiera.

'_' : sustituye a un único carácter cualquiera.

Obtener los nombres de los empleados que comiencen por 'C‘.

SELECT Nombre

FROM T_Emp

WHERE Nombre LIKE "C%";

También se puede utilizar NOT LIKE.

Page 39: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (V).

6. Recuperación con el operador “IN”:

Comprueba la pertenencia de un valor a un conjunto dado.

Obtener los nombres de los proyectos desarrollados en los

departamentos ‘D01’ o ‘D02’.

SELECT PNombre

FROM T_Proy

WHERE Dpto IN ('D01',D02');

Obtener los empleados asignados al proyecto ‘Portal Formacion‘.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Proyecto IN (SELECT Cod_Proy

FROM T_Proy

WHERE PNombre = ' Portal Formacion ');

Page 40: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (VII).

7. Recuperación con el operador 'IS NULL‘:

Comprueba si un valor determinado es nulo

(NULL).

Obtener los empleados que no tienen sueldo

asignado.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Salario IS NULL;

También se puede utilizar IS NOT NULL.

Page 41: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (VIII).

8. Consulta con cuantificadores (ALL: todos, ANY:

alguno).

Van acompañados de un operador de comparación: >

ALL, >= ALL, < ALL, ...; > ANY, >= ANY, < ANY, ...

Obtener los empleados no asignados al proyecto 'Piloto‘

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Proyecto <> ALL (SELECT Cod_Proy

FROM T_Proy

WHERE Pnombre = 'Piloto');

Page 42: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Condiciones de selección (y X).

9. Recuperación con el operador 'EXISTS‘: Indica

la existencia o no de un conjunto.

Obtener los empleados asignados al proyecto ‘Internet

2000’.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE EXISTS (SELECT *

FROM T_Proy

WHERE Cod_Proy = T_Emp.Cod_Proy

AND PNombre = ‘Internet 2000');

Page 43: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Otros operadores para Consultas (I).

1. Consultas con UNION, DIFERENCIA e INTERSECCIÓN:

Unión de conjuntos: operador UNION.

Diferencia de conjuntos: operador MINUS.

Intersección de conjuntos: operador INTERSECT.

§ Obtener los empleados asignados al proyecto ‘P09’ o que

tengan salario inferior a 150.000 Pts.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Proyecto = ‘P09'

UNION

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Salario < 150000;

Page 44: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Otros operadores para Consultas (II).

Obtener los empleados con salario inferior a

15.000 € y que no estén asignados al

proyecto ‘P01’.

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Salario < 15000

MINUS

SELECT Apellidos, Nombre

FROM T_Emp

WHERE Proyecto = ‘P01'

Page 45: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Otros operadores para Consultas (y IV).

2. Expresiones en la cláusula SELECT.

No sólo se pueden seleccionar atributos, sino expresiones en las que aparezcan atributos y/o constantes y operadores aritméticos.

Obtener el salario anual de los empleados de la empresa.

SELECT Apellidos, Nombre, ‘Salario Anual’ , (Salario * 14)

FROM T_Emp;

‘Salario Anual’: es un literal o constante, que aparecerá ento das las tuplas resultado de la consulta.

Page 46: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Funciones agregadas:

COUNT (*): contador de tuplas (totalizador)

COUNT (DISTINCT Atributo): contador de tuplas (parcial), no tiene en cuenta valores nulos ni duplicados

AVG(Atributo): media aritmética de un atributo numérico

SUM(Atributo): suma de atributos o expresiones numéricas

MAX(Atributo): valor máximo de un atributo o expresión numérica

MIN(Atributo): valor mínimo de un atributo o expresión numérica

Devuelven un valor único, numérico.

Page 47: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Obtener el número total de proyectos realizados.

SELECT COUNT(*)

FROM T_Proy;

Obtener el número total de proyectos del Departamento ‘D02'.

SELECT COUNT (DISTINCT Cod_Proy)

FROM T_Proy

WHERE Dpto = ‘D02';

Obtener el presupuesto medio y total de los proyectos del

Departamento ‘D21'.

SELECT AVG(Presupuesto), SUM(Presupuesto)

FROM T_Proy

WHERE Dpto = ‘D21';

Page 48: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Cláusula GROUP BY:

GROUP BY <lista_de_atributos>

Agrupa el resultado, devolviendo una única fila por grupo.

El agrupamiento no se realiza ordenado.

Los atributos que aparezcan en GROUP BY, deben aparecer en la cláusula SELECT

Obtener por cada proyecto, el código de éste y el número total de empleados asignados.

SELECT Proyecto, COUNT(*)

FROM T_Emp

GROUP BY Proyecto;

Page 49: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Cláusula HAVING:

HAVING <condición_de_grupo>

Siempre va acompañada de la cláusula GROUP BY.

Especifica una condición de grupo.

Obtener por cada proyecto que tenga más de dos empleados, el código de éste y el número total de empleados asignados.

SELECT Proyecto, COUNT(*)

FROM T_Emp

GROUP BY Proyecto

HAVING COUNT(*) >2;

Page 50: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Cláusula ORDER BY:

ORDER BY <lista_de_atributos> [ASC | DESC]

El resultado de la consulta se ordena en base a los atributos que se indiquen en la lista.

Los atributos de ordenación deben aparecer en SELECT.

Obtener los nombres de los proyectos ordenados ascendentemente por departamento y presupuesto.

SELECT Pnombre, Dpto, Presupuesto

FROM T_Proy

ORDER BY Dpto, Presupuesto;

Page 51: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Uso de Alias de columnas (I):

SQL visualiza el resultado de una consulta,

dejando como nombre en la cabecera el

mismo nombre con que están definidos los

atributos en la tabla.

Para cambiar esos nombres de cabecera se

pueden usar Alias de Atributo en la

Sentencia SELECT:

SELECT Cod_Proy CODIGO, PNombre

PROYECTO

FROM T_Proy;

Page 52: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Uso de Alias de columnas (y II):

También, se usan para nombrar una columna

obtenida por medio de alguna expresión:

Obtener el presupuesto medio de los

proyectos del Departamento ‘D21'.

SELECT AVG(Presupuesto) ‘PRESUPUESTO

MEDIO’

FROM T_Proy

WHERE Dpto = ‘D21';

Page 53: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPERACIONES DE CONSULTA

Uso de Alias de tablas (utilidad):

Abreviar un nombre de tabla que se usa a menudo.

Hacer más clara una instrucción complicada de SQL.

Distinguir entre dos ocurrencias del mismo nombre de tabla en cualquier instrucción SELECT.

Obtener los empleados que tengan el salario más alto que otro.

SELECT E.Apellidos , E.Nombre CONDUCTOR

FROM T_Emp E, T_Emp F

WHERE E.Salario > F.Salario

AND E.Num_Emp <> F.Num_Emp;

Page 54: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL

DE DATOS

Page 55: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Concesión de Privilegios: Permite dar a los usuarios el acceso completo o restringido a la base de datos:

GRANT <privilegio_de_acceso>

[ON <lista_de_tablas>]

TO <lista_de_usuarios>

[WITH GRANT OPTION];

donde:

<privilegio_de_acceso>: CONNECT, RESOURCE, DBA,

ALL PRIVILEGES, SELECT, UPDATE, INSERT, DELETE.

WITH GRANT OPTION concede permiso para que el usuario a su vez, conceda esos permisos a otros usuarios

Page 56: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Nivel de Base de Datos:

El SGBDR chequea los privilegios del usuario

al iniciar la sesión.

Los posibles privilegios o permisos son:

- CONNECT: Conectarse a la BDR.

- RESOURCE: Crear objetos.

- DBA:

Ejecución de comandos restrictivos.

Acceso a cualquier objeto.

Privilegio RESOURCE implícito

Page 57: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Nivel de Tabla (I):

Las tablas son propiedad del usuario que las

creó.

Los posibles privilegios o permisos son:

• DELETE: Autoriza el borrado de tuplas.

• INSERT: Autoriza la inserción de nuevas tuplas.

• SELECT: Permite la realización de consultas.

• UPDATE: Permite la actualización de tuplas.

• ALL PRIVILEGES: Concede todos los privilegios.

Page 58: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Niveles Atributo y Tupla (I):

Se implantan a través de la definición de vistas.

Nivel de Atributo:

Se crea una vista sin condiciones:

CREATE VIEW listin

AS (SELECT Apellidos, Nombre, Telefono

FROM T_Emp);

Se establecen los permisos sobre la vista:

GRANT SELECT

ON listin TO UsuarioX;

UsuarioX no tiene acceso al resto de atributos de T_Emp

Page 59: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Niveles Atributo y Tupla (y II):

Nivel de Tupla:

Se crea una vista con sólo las tuplas permitidas:

CREATE VIEW Proyectos_Menores

AS (SELECT PNombre, Presupuesto

FROM T_Proy WHERE Presupuesto < 500000);

Se establecen los permisos sobre la vista:

GRANT SELECT

ON Proyectos_Menores

TO UsuarioY;

UsuarioY no tiene acceso a proyectos de presupuesto superior a 500.000 €.

Page 60: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Revocación de privilegios

Se utiliza para anular privilegios ya

concedidos a los usuarios:

REVOKE <privilegio_de_acceso>

[ON <lista_de_tablas>]

TO <lista_de_usuarios> ;

Quitar a ‘Usuario1’ el privilegio ALTER sobre

T_Emp

REVOKE ALTER

ON T_Emp

TO Usuario1;

Page 61: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Control de Integridad.

Está asociado al concepto de Transacción.

COMMIT

Los cambios que se puedan estar realizando sobre la base de datos se hacen fijos únicamente al completar la transacción.

ROLLBACK

Elimina todos los cambios que se hayan podido producir en la base de datos desde la ejecución de la última instrucción COMMIT.

Si se produce un error de programa o un fallo hardware el sistema realiza un ROLLBACK automáticamente.

Page 62: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Definición de Transacción:

Unidad de tratamiento secuencial ejecutada por un

usuario y que, aplicada a una base de datos coherente

sobre la que realiza cambios sobre una o más tablas,

devuelve una base de datos coherente.

Una transacción comienza implícitamente en el

momento que el usuario comienza la sesión.

Una transacción termina por:

- Validación explícita o implícita: COMMIT

- Anulación explícita o implícita: ROLLBACK

Tras una validación o anulación comienza una

nueva transacción.

Page 63: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

LENGUAJE DE CONTROL DE DATOS

Transacciones (I):

Una transacción DML puede constar de un

número indeterminado de sentencias DML.

Finaliza con una operación COMMIT o

ROLLBACK.

Una transacción DDL consta de una única

sentencia DDL.

Si se produce un error en el núcleo del

SGBDR, en el Sistema Operativo o en un

proceso automático o de usuario:

En el re-arranque del SGBDDR se restauran las

transacciones.

Page 64: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

ENGUAJE DE CONTROL DE DATOS

Ejemplo de Transacción:

Page 65: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

PROGRAMACIÓN DE ACCIONES Y TAREAS

Lenguaje de control de flujo

Extensiones de SQL

Disparadores

Pequeño programa que se almacena con el

esquema de la base de datos y que se define

para que se ejecute de forma automática como

resultado de alguna acción que se lleva a cabo

sobre la base de datos

Procedimientos almacenados

Parecido a un disparador excepto que se

ejecuta cuando es llamado desde un disparador,

otro procedimiento almacenado o un programa.

Page 66: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

DISPARADORES – TRIGGERS

Los disparadores o triggers son sentencias

que se ejecutan cuando se produce un

evento, entendiendo como tal una inserción,

borrado o actualización de una tupla en una

tabla

Son especialmente útiles para mantener la

integridad y coherencia de los datos ante

las operaciones.

A pesar de estar contemplados en el estándar,

la sintaxis es bastante dependiente de cada

gestor.

Page 67: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

PROCEDIMIENTOS ALMACENADO

Compuestos de

instrucciones SQL

instrucciones de control de flujo

Son compilados, por lo que su ejecución es

rápida

Pueden recibir y devolver parámetros, que

permiten modularizar o descomponer

problemas grandes y complejos

Page 68: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OTROS OBJETOS DE LA BASE DE

DATOS

Definición de Vista:

Estructura tabular no física (tabla virtual), que permite consultar y/o modificar datos de la tabla real.

Creación de vistas:

CREATE VIEW <nombre_vista> [(<lista_atributos>)]

AS ( <cláusula SELECT> );

Las filas de la vista serán aquellas que resulten de ejecutar la consulta sobre la que está definida.

ALTER VIEW <nombre_vista> > [(<lista_atributos>)]

AS ( <cláusula SELECT> );

Eliminación de vistas:

DROP VIEW <nombre_vista>;

Page 69: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

VISTAS

Características:

Se utilizan como si fuesen tablas reales.

No contienen datos propios.

No tienen asociada estructura física.

Ventajas de uso:

Menor complejidad en consultas: Permiten

obtener igual información de forma más simple.

Aumento confidencialidad: Permiten acceder

sólo a ciertos datos de las tablas reales.

Page 70: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

EJEMPLO

Esquema Externo (Vista) ‘listín telefónico’.

CREATE VIEW listin

AS (SELECT Apellidos, Nombre, Telefono

FROM T_Emp);

Esquema Externo (Vista) ‘relación de

empleados asignados a cada proyecto’.

CREATE VIEW proyectos (Proyecto, Apellidos,

Nombre)

AS (SELECT PNombre, Apellidos, Nombre

FROM T_Proy, T_Emp

WHERE T_Proy.Cod_Proy = T_Emp.Cod_Proy);

Page 71: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

OPTIMIZACIÓN DE CONSULTAS

Creación de índices:

CREATE [UNIQUE] INDEX

<nombre_índice>

ON <nombre_tabla> (<lista_atributos>);

Es el sistema el encargado de utilizar los

índices, para optimizar el acceso a los datos

El usuario sólo puede crear o eliminar

índices, pero no indicar su utilización

Eliminación de índices:

DROP INDEX <nombre_índice>;

Page 72: CERTIFICADO DE PROFESIONALIDAD IFCD0112 · PROGRAMACIÓN CON LENGUAJES ORIENTADOS ... INSERT, UPDATE, DELETE, SELECT . ... constante, o el resultado de una subconsulta

ÍNDICES

Definición de claves Referenciales:

En la creación de la tabla :

CREATE TABLE nombre_tabla

( nombre_columna tipo_columna atributos,

............................................................................ ,

nombre_columna tipo_columna atributos,

PRIMARY KEY (lista_de_columnas),

FOREIGN KEY (lista_de_columnas)

REFERENCES nombre_de_tabla (lista_de_columnas)

ON UPDATE [RESTRICT | SET NULL | CASCADE]

ON DELETE [RESTRICT | SET NULL | CASCADE],

FOREIGN KEY ..... );