2.5.- El lenguaje estándar SQL



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

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

Consultas con combinaciones

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

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

Bases de Datos 2. Teórico

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

Restricciones de Integridad

1. DML. Las subconsultas

SQL (Structured Query Language)

SQL como lenguaje de definición de datos (DDL) El lenguaje estándar SQL Definición del Esquema (SQL)

A.1. Definiciones de datos en SQL

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Lenguaje para descripción de datos

Unidad. Lenguaje SQL. (Structured Query Language)

Bases de Datos Relacionales

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

8 SQL SERVER 2008 RA-MA

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

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

SQL Server FEMEPA SQL Server 2000

Tema 33. El lenguaje SQL

Bases de Datos: Structured Query Language (SQL)

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

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

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

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

TEMA II. El Modelo Relacional de Datos. El Modelo Relacional de Datos. El Modelo Relacional de Datos. El Modelo Relacional de Datos. Temario (cont.

SQL Los fundamentos del lenguaje

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

select nombre from profesores where categoria='aso6';

SQL (Structured Query Language)- DML

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

SQL SQL. Índice. Componentes. Objetivos

Bases de datos relacionales y el modelo entidad-relación

6. Integridad en Sistemas de Bases de Datos Relacionales

SQL. Orígenes y Evolución

6- Combinación de tablas

Integridad en sistemas de bases de datos relacionales

Tema 4. Manipulación de datos con SQL

ÍNDICE PRIMERA PARTE... 17

Oracle Básico PL/SQL

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

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Temario. Índices simples Árboles B Hashing

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

Base de datos I Facultad de Ingeniería. Escuela de computación.

MANUAL BÁSICO DEL LENGUAJE SQL

Práctica 3. Consultas SQL

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

Bases de Datos SQL - Ejemplos

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

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

Vistas en postgresql

Sub consultas avanzadas

Tema 4. Lenguajes de consulta comerciales

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Base de datos relacional

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE)

CURSO DE SQL SERVER 2005

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

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

Tema 4. SQL. Juan Ignacio Rodríguez de León

CONSULTAS BASICAS EN SQL SERVER

T12 Vistas y tablas temporales

4. Modelo Relacional: Manipulación de los datos.

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

EL ENTORNO DE TRABAJO SQL ORACLE

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

DML en SQL. Consultas sencillas usando el DML de SQL

Oracle 12c DISEÑO Y PROGRAMACIÓN

1

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

SQL: Lenguaje de Interrogación Estructurado

Tema II: El modelo relacional de datos (2.1) El modelo relacional de datos.

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

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Diseño de bases de datos

Tema II: El modelo relacional de datos Objetivos:

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

Grupo Kybele, Pág. 1

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

Microsoft SQL Server 2005

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

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

PRÁCTICA B2. Definición y modificación de datos en SQL

Modelos y Bases de Datos

Introducción a las bases de datos.

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

Transcripción:

25- El lenguaje estándar SQL El SQL es un lenguaje estándar de definición y manipulación (y consulta) de bases de datos relacionales El SQL estándar incluye: Características del Álgebra Relacional Características del Cálculo Relacional de Tuplas La versión que actualmente se encuentra más extendida es el SQL2 (ó SQL- 92)

251- SQL como lenguaje de definición de datos (DDL) Instrucciones del SQL para poder definir esquemas relacionales: create schema: permite dar nombre a un esquema relacional y declarar el usuario que es el creador y propietario de dicho esquema create domain: permite definir un nuevo dominio de datos ORACLE ORACLE create table: define una tabla, su esquema y las restricciones asociadas create view: define una vista o relación derivada en el esquema relacional create assertion: permite definir restricciones de integridad generales ORACLE grant: permite definir autorización de operaciones sobre objetos de la BD Todas estas instrucciones tienen asociada la operación inversa (DROP / REVOKE) y modificación (ALTER)

2511- Definición del Esquema (SQL) create schema [esquema] [authorization usuario] [lista_elemento_esquema]; Un elemento de esquema puede ser uno de los siguientes: Definición de dominio Definición de tabla Definición de vista Definición de restricción Definición de privilegio Eliminación de la definición de un esquema relacional: drop schema esquema {restrict cascade};

2512- Definición de Dominios (SQL) create domain dominio [as] tipo_dato Funciones del sistema: [default {literal función_sistema null }] [definición_restricción_dominio]; user current_user session_user current_date current_time current_timestamp

2512- Definición de Dominios (SQL) A un dominio se le puede asociar un conjunto de restricciones: [constraint restricción] check (expresión_condicional) [not] deferrable expresión_condicional permite expresar cualquier condición que debe cumplir siempre el dominio (debe ser CIERTA o INDEFINIDA) deferrable indica que el sistema ha de comprobar la restricción al finalizar la transacción activa Not deferrable indica que el sistema ha de comprobar la restricción después de cada operación de actualización a la base de datos

2512- Definición de Dominios (SQL) Ejemplo CREATE DOMAIN ángulo AS FLOAT DEFAULT 0 CHECK (VALUE >= 0 AND VALUE < 360) NOT DEFERRABLE; Eliminación de un Dominio: drop domain dominio [restrict cascade]

2513- Definición de Tablas (SQL) CREATE TABLE tabla comalista_definición_columna [comalista_definición_restrición_tabla]; La definición de una columna de una tabla se realiza como sigue: columna {tipo_dato dominio} [default {literal función_sistema null }] [lista_definición_restricción_columna] Las restricciones que se pueden definir sobre las columnas son las siguientes: not null: restricción de valor no nulo Definiciones de restricciones de CP, UNI, CAj de una sola columna Definición de restricciones generales con la cláusula check

2513- Definición de Tablas (SQL) La cláusula para definir restricciones de tabla es la siguiente: [constraint restricción] { primary key (comalista_columna) unique (comalista_columna) foreign key (comalista_columna) references tabla[(comalista_columna)] [match {full partial}] [on update [cascade * NO ORACLE * NO ORACLE set null set default no action ]] [on delete [cascade set null set default no action ]] check expresión_condicional } [comprobación_restricción] - debe ser CIERTA o INDEFINIDA * NO ORACLE * NO ORACLE - no puede incluir subconsultas ni referencias a otras tablas

2513- Ejemplo: Proveedor-Piezas- Suministro d_cod_pieza: tira(4) d_cod_proy: tira(4) d_dni: entero (positivo) Proveedor(dni: d_dni, nombre: tira(40), dirección: tira(25), ciudad: tira(30)) CP: {dni} VNN: {nombre} Pieza(código: d_cod_pieza, desc: tira(40), color: tira(20), peso: real ) CP: {código} Suministro(dni: d_dni, código: tira(4), precio: real) CP: {dni, código} CAj: {dni} Proveedor CAj: {código} Pieza Restricciones de integridad: R1) Px: Pieza Px ( Pieza(Px) Pxcolor= rojo Pxpeso>100 ) R2) Px: Pieza, Sx: Suministro Px ( Pieza(Px) Sx ( Suministro(Sx) Sxcódigo=Pxcódigo ) )

2513- Ejemplo: Proveedor-Piezas- Suministro (SQL) create schema Almacén authorization pepe create domain d_cod_pieza as char(4) create domain d_cod_proy as char(4) create domain d_dni as integer check value>0 create table Proveedor ( dni d_dni primary key, nombre varchar(40) not null, dirección char(25), ciudad char(30) ) create table Pieza ( código d_cod_pieza primary key, desc varchar(40), color char(20), peso float, constraint r1 check (color<> rojo or peso>100)) create table Suministro ( dni d_dni, código d_cod_pieza references Pieza, precio float, primary key (dni, código), foreign key (dni) references Proveedor(dni) ); R1 Y R2?

2513- Definición de Tablas (SQL) Cláusula MATCH ORACLE completa (match full): en cada tupla de R la clave ajena CA tiene el valor nulo o no lo tiene, en cada una de sus columnas En el segundo caso, ha de existir una fila en la tabla S cuyo valor en las columnas de CU sea idéntico parcial (match partial): en cada tupla de R la clave ajena CA tiene el valor nulo en cada una de sus columnas, o ha de existir una fila en la tabla S, de forma que para las columnas de la clave ajena CA que no tienen valor nulo, el valor en las columnas correspondientes de CU es idéntico débil (no se incluye cláusula match): en cada tupla de R si la clave ajena CA no tiene el valor nulo, en cada una de sus columnas, ha de existir una fila en la tabla S tal que el valor en coincida en todas las columnas

2513- Modificación de Definición de Tablas (SQL) Para modificar la definición de una tabla: alter table tabla_base {add [column] definición_columna alter [column] columna {set default {literal función_sistema null } drop default} drop [column] columna {restrict cascade} }; Para eliminar una tabla del esquema relacional: drop table tabla_base {restrict cascade}; En ORACLE cambian algunas cosas

2514- Definición de Restricciones (SQL) create assertion restricción check (expresión_condicional) [comprobación_restricción]; La condición debe ser CIERTA

2514- Ejemplo: Proveedor-Piezas- Suministro (SQL) La restricción R2 : R2) Px: Pieza, Sx: Suministro Px ( Pieza(Px) Sx ( Suministro(Sx) Sxcódigo=Pxcódigo ) ) se define mediante una restricción general: create assertion R2 check not exists(select * from Pieza P where not exists(select * from Suministro S where Pcódigo=Scódigo)); Eliminación de una Restricción DROP ASSERTION restricción

252- SQL como lenguaje de manipulación de datos El SQL como lenguaje de manipulación de datos incorpora: La sentencia de consulta SELECT: Integración de las perspectivas lógica y algebraica Las sentencias de actualización de datos: INSERT, DELETE y UPDATE

2521- La sentencia SELECT SELECT Permite recuperar información almacenada en una base de datos Su sintaxis es: 5 select [all distinct] comalista_ítem_seleccionado * 1 from tabla 2 [where expresión_condicional] 3 [group by comalista_col] 4 [having expresión_condicional] 6 [order by comalista_referencia_col]

2521- La sentencia SELECT 3 select R1XA, R2XB,, RnXAA 1 from R1 [AS] R1X, R2 [AS] R2X,, Rn [AS] RnX 2 [where F(R1X, R2X,, RnX)] donde: R1, R2,, Rn son relaciones A, B,, AA son atributos de las correspondientes relaciones R1X, R2X,, RnX son nombres alternativos (alias) F(R1X, R2X,, RnX) es una condición El resultado es una relación formada por los atributos A, BB,, AA de las tuplas de las relaciones R1, R2,, Rn para las que F es cierta

2521- La sentencia SELECT RENOMBRAR Para realizar renombramientos en SQL se utiliza la palabra reservada AS Permite el renombramiento de una relación así como de todos sus atributos (OJO: no cambia el esquema de la relación) EJEMPLOS: Jugador(nombre:varchar, edad: number, país:varchar) Jugador AS Tenista Jugador AS T(nom, ed, pa) Renombra la relación Jugador Renombra la relación Jugador y todos sus atributos

2521- La sentencia SELECT RENOMBRAR AS (cont) (Cont) La palabra reservada AS es opcional En el caso de que una consulta haga referencia dos o más veces a una misma tabla, resulta imprescindible realizar un renombramiento EJEMPLO: Jugador(dni:number, nombre:varchar, edad: number, país:varchar) CP:{dni} Obtén la lista de pares de nombres de jugadores del mismo país: Select J1nombre, J2nombre from Jugador AS J1, Jugador J1, Jugador J2 AS J2 where J1país = J2país and J1dni < J2dni;

2521- La sentencia SELECT: La aproximación lógica 3 select R1XA, R2XB,, RnXAA 1 from R1 [AS] R1X, R2 [AS] R2X,, Rn [AS] RnX 2 [where F(R1X, R2X,, RnX)] donde: En el SELECT se indican los atributos que se desean consultar En la componente FROM se declaran variables de tipo tupla WHERE es una fórmula lógica en las que las únicas variables libres son las declaradas en el FROM La fórmula del WHERE se construye siguiendo la sintaxis usual de los lenguajes de 1er orden

2521- La sentencia SELECT: La aproximación lógica FORMALIZACIÓN (SINTAXIS): FÓRMULAS DE LA CLÁUSULA WHERE Una condición es una expresión que puede ser: IS NULL (RXAi) RXAi α SXAj RXAi α a donde: α es un operador de comparación (<, >,,, =, ) Ai y Aj son nombre de atributo de las relaciones sobre las que se han definido las variables RX y SX a es un valor del dominio asociado al atributo RXAi (excepto el nulo)

2521- La sentencia SELECT: La aproximación lógica Con lo dicho, las fórmulas se construyen aplicando las siguientes reglas: Toda condición es una fórmula Si F es una fórmula, entonces (F) y NOT F son fórmulas Si F y G son fórmulas, entonces también lo son F OR G, F AND G Si S es una sentencia SELECT, entonces EXISTS(S) es una fórmula Nada más es una fórmula

2521- La sentencia SELECT: La aproximación lógica 3 select R1XA, R2XB,, RnXAA 1 from R1 [AS] R1X, R2 [AS] R2X,, Rn [AS] RnX 2 [where F(R1X, R2X,, RnX)] La sentencia SELECT devuelve una relación en la que cada tupla de la relación lo forman los valores de los atributos R1XA, R2XB,, RnXAA de modo que: Estos valores aparecen en las variables R1X, R2X,, RnX Por tanto, estos valores aparecen en las extensiones de las relaciones R1, R2,, Rn Dichos valores hacen cierta la fórmula F(R1X, R2X,, RnX)

2521- La sentencia SELECT: La aproximación lógica EVALUACIÓN DE FÓRMULAS (SEMÁNTICA) Valor de verdad de una condición: Si F es de la forma RXAi α SXAj entonces F se evalúa a indefinido si al menos un atributo Ai o Aj tiene el valor nulo en la tupla asignada a RX o a SX, en caso contrario se evalúa al valor de certeza de la condición Si F es de la forma RXAi α a entonces F se evalúa a indefinido si Ai tiene valor nulo en la tupla asignada a RX, en caso contrario se evalúa al valor de certeza de la comparación Si F es de la forma IS NULL(RXAi) entonces F se evalúa a cierto si Ai tiene el valor nulo para la tupla asignada a RX, en caso contrario se evalúa a falso

2521- La sentencia SELECT: La aproximación lógica Valor de verdad de una fórmula: 1) Sea F una condición, entonces su valor de verdad es el de la condición 2) Si F es de la forma (G), F se evalúa al valor de certeza de G 3) Si F es de una de las siguientes formas NOT G, G AND H ó G OR H donde G y H son fórmulas, entonces F se evalúa de acuerdo a las siguientes tablas de verdad:

2521- La sentencia SELECT: La aproximación lógica G H F =G AND H F = G OR H G F = NOT G falso falso falso Falso falso cierto indefinido falso falso indefinido indefinido indefinido cierto falso falso cierto cierto falso falso indefinido falso indefinido indefinido indefinido indefinido indefinido cierto indefinido indefinido cierto falso cierto falso cierto indefinido cierto indefinido cierto cierto cierto cierto cierto

2521- La sentencia SELECT: La aproximación lógica 4) Si F es de la forma: EXISTS( select * from R1 [AS] R1X, R2 [AS] R2X,, Rn [AS] RnX [where G(R1X, R2X,, RnX)] ) entonces F se evalúa a cierto si existen valores de las variables R1X,, RnX de las extensiones de R1,, Rn para los cuales G se evalúa a cierto, en caso contrario se evalúa a falso

2521- La sentencia SELECT: La aproximación lógica EJEMPLO: RÍO(rcod:dom_rcod, nombre:dom_nom) PROVINCIA(pcod:dom_pcod, nombre:dom_nom) PASA_POR(pcod:dom_pcod, rcod:dom_rcod) Consulta1: Provincias por las que pasa el río de código r1 Lógica de 1er orden: Variables tupla: Cláusula SELECT:

2521- La sentencia SELECT: La aproximación lógica EJEMPLO: RÍO(rcod:dom_rcod, nombre:dom_nom) PROVINCIA(pcod:dom_pcod, nombre:dom_nom) PASA_POR(pcod:dom_pcod, rcod:dom_rcod) Consulta2: Provincias por las que no pasa ningún río Lógica de 1er orden: Variables tupla: Cláusula SELECT:

2521- La sentencia SELECT: La aproximación lógica La sintaxis del cuantificador existencial en el lenguaje SQL: EXISTS( SELECT * FROM R1 R1X, R2 R2X,, Rn RnX WHERE F(R1X, R2X,, RnX)) equivale a la fórmula R1X:R1( R2X:R2 ( RnX:Rn (F(R1X, R2X,, RnX))) En SQL no existe el cuantificador universal, se utiliza el existencial en su lugar mediante la conversión: x F(x) x ( F(x))

2521- La sentencia SELECT: La aproximación lógica EJEMPLO: RÍO(rcod:dom_rcod, nombre:dom_nom) PROVINCIA(pcod:dom_pcod, nombre:dom_nom) PASA_POR(pcod:dom_pcod, rcod:dom_rcod) Consulta3: Obtener los ríos que pasan por todas las provincias Variables tupla: Cláusula SELECT:

2521- La sentencia SELECT: La aproximación algebraica UNIÓN Permite fusionar el contenido de dos relaciones (o resultados de consultas) en una única tabla La correcta ejecución de la operación de unión requiere que las dos relaciones que se unen sean compatibles EJEMPLO: Cocinero(nombre:varchar, edad: number, país:varchar) Camarero(nombre:varchar, edad: number, país:varchar) Obtén la lista de trabajadores mayores de edad del restaurante: Select nombre from Cocinero where edad >= 18 UNION Select nombre from Camarero where edad >= 18;

2521- La sentencia SELECT: La aproximación algebraica DIFERENCIA La palabra reservada en SQL para realizar diferencias entre relaciones es EXCEPT La correcta ejecución de la operación de diferencia requiere que las dos relaciones sean compatibles EJEMPLO: Cocinero(nombre:varchar, edad: number, país:varchar) Camarero(nombre:varchar, edad: number, país:varchar) Obtén la lista de trabajadores que trabajan únicamente como cocineros en el restaurante: 1 Select * from (Cocinero except Camarero) 2 Cocinero except Camarero

2521- La sentencia SELECT: La aproximación algebraica INTERSECCIÓN La palabra reservada en SQL para realizar diferencias entre relaciones es INTERSECT La correcta ejecución de la operación de diferencia requiere que las dos relaciones que intersectan sean compatibles EJEMPLO: Cocinero(nombre:varchar, edad: number, país:varchar) Camarero(nombre:varchar, edad: number, país:varchar) Obtén la lista de trabajadores que trabajan como cocineros y camareros en el restaurante: 1 Select * from (Cocinero intersect Camarero) 2 Cocinero intersect Camarero

2521- La sentencia SELECT: La aproximación algebraica La correcta ejecución de la operación de producto cartesiano requiere que las relaciones que intervienen tengan diferentes nombres En SQL el producto cartesiano de relaciones se aplica añadiendo dichas relaciones, separadas por comas, dentro de la cláusula FROM EJEMPLO: PRODUCTO CARTESIANO Equipo1(nombre:varchar, edad: number, país:varchar) Equipo2(nombre:varchar, edad: number, país:varchar) Obtén todas las posibles combinaciones de jugadores del equipo 1 con jugadores del equipo 2: Select * from Equipo1, Equipo2 Select * from Equipo 1 CROSS JOIN Equipo2 Obtén pares de jugadores del Equipo1 del mismo país: Select * from Equipo1 e1, Equipo1 e2 where e1país = e2país and e1edad < e2edad

2521- La sentencia SELECT: La aproximación algebraica PROYECCIÓN Para proyectar basta con escribir el nombre de los atributos que se desean visualizar dentro de la cláusula SELECT separados por comas Los atributos proyectados se pueden renombrar utilizando la cláusula AS EJEMPLO: Cocinero(nombre:varchar, edad: number, país:varchar) Obtén el nombre de los cocineros del restaurante: Select nombre from cocinero

2521- La sentencia SELECT: La aproximación algebraica Corresponden a variantes del operador concatenación del Álgebra Relacional Hay dos tipos básicos de concatenación en SQL: Interna y Externa Concatenación interna: referencia_tabla [natural] [inner] join referencia_tabla [on expresión_condicional using (comalista_columna) ] Concatenación externa: referencia_tabla [natural] CONCATENACIÓN {left [outer] right [outer] full [outer]} JOIN referencia_tabla [on expresión_condicional using (comalista_columna) ]

2521- La sentencia SELECT: La aproximación algebraica EJEMPLOS: Concatenación interna CONCATENACIÓN (Cont) referencia_tabla [natural] [inner] join referencia_tabla [on expresión_condicional using (comalista_columna) ] PERSONA(nif: dom_nif, nombre: dom_nom, edad: dom_edad) VIVIENDA(cod_viv: dom_cod, prop: dom_nif, dir: dom_dir, num_hab: dom_num) Obtener un listado en el que aparezca cada vivienda asociada con su propietario: 1 PERSONA inner join VIVIENDA on PERSONAnif = VIVIENDAprop 2 PERSONA natural inner join VIVIENDA AS V(cv, nif, dir, nh) 3 SELECT * FROM PERSONA, VIVIENDA WHERE nif = prop

2521- La sentencia SELECT: La aproximación algebraica EJEMPLOS: Concatenación externa referencia_tabla [natural] CONCATENACIÓN (Cont) {left [outer] right [outer] full [outer]} JOIN referencia_tabla [on expresión_condicional using (comalista_columna) ] PERSONA(nif: dom_nif, nombre: dom_nom, edad: dom_edad) VIVIENDA(cod_viv: dom_cod, nif: dom_nif, dir: dom_dir, num_hab: dom_num) Obtener un listado en el que aparezca cada vivienda asociada con su propietario: 1 PERSONA natural left join VIVIENDA 2 PERSONA natural right join VIVIENDA 3 PERSONA natural full join VIVIENDA Aparecen todos los propietarios Aparecen todas las viviendas Aparecen todas las viviendas y todos los propietarios

2521- La sentencia SELECT: La aproximación algebraica CONCATENACIÓN (Cont) Concatenación unión select t1*, null, null,, null from t1 FROM T1 UNION JOIN T2 FROM union all select null, null,, null, t2* from t2

2521- La sentencia SELECT: La aproximación algebraica La expresión del álgebra relacional: SELECCIÓN R DONDE F(Ai, Aj, Ak, ) es equivalente a la expresión en SQL: SELECT * FROM R WHERE F(RAi, RAj, RAk, ) En el caso de que se incluyan varias relaciones en la cláusula FROM del SELECT: SELECT * FROM R1, R2,, Rn WHERE F(R1Ai,, RnZk) su equivalente en álgebra relacional sería: R1 x R2 x x Rn DONDE F (R1Ai,, RnZk)

2521- La sentencia SELECT: La aproximación algebraica Operador Álgebra Relacional SQL Selección R DONDE F SELECT FROM R WHERE F Proyección R [A i, A j, A k ] SELECT A i, A j, A k FROM R Producto Cartesiano R 1 x R 2, x R n SELECT FROM R 1, R 2,, R n, o SELECTFROM R 1 CROSS JOIN R 2,, CROSS JOIN R n Concatenación R 1 R 2 SELECT FROM R 1 NATURAL JOIN R 2 Unión R 1 R 2 SELECT * FROM R 1 UNION SELECT * FROM R 2 Diferencia R 1 - R 2 SELECT * FROM R 1 EXCEPT SELECT * FROM R 2 Intersección R 1 R 2 SELECT * FROM R 1 INTERSECT SELECT * FROM R 2

2521- La sentencia SELECT: La aproximación algebraica EJEMPLO: RÍO(rcod:dom_rcod, nombre:dom_nom) PROVINCIA(pcod:dom_pcod, nombre:dom_nom) PASA_POR(pcod:dom_pcod, rcod:dom_rcod) Consulta2: Provincias por las que no pasa ningún río Álgebra Relacional: SQL:

2522- SQL como lenguaje de manipulación de datos: la actualización INSERT Sirve para insertar una o varias tuplas en una relación Su sintaxis es: insert into tabla [(comalista_columna)] { default values values (comalista_átomos) expresión_tabla}

2522- SQL como lenguaje de manipulación de datos: la actualización insert into tabla [(comalista_columna)] { default values values (comalista_átomos) expresión_tabla} Si no se incluye la lista de columnas se deberán insertar filas completas de tabla

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Edad País INSER INTO Cocinero VALUES ( Carmelo Cotón, 27, Francia );

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Carmelo Cotón 27 Edad Francia País INSER INTO Cocinero VALUES ( Carmelo Cotón, 27, Francia );

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Edad País INSER INTO Cocinero(Edad, Nombre) VALUES (27, Carmelo Cotón );

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Carmelo Cotón 27 Edad? País INSER INTO Cocinero(Edad, Nombre) VALUES (27, Carmelo Cotón );

2522- SQL como lenguaje de manipulación de datos: la actualización insert into tabla [(comalista_columna)] { default values values (comalista_átomos) expresión_tabla} Si no se incluye la lista de columnas se deberán insertar filas completas de tabla Si se incluye la opción default values se insertará una única fila en la tabla con los valores por defecto apropiados en cada columna (según la definición de tabla) En la opción values(comalista_átomos) los átomos vienen dados por expresiones escalares En la opción expresión_tabla, se insertarán las filas resultantes de la ejecución de la expresión ( SELECT )

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Edad País Persona(nombre:varchar, edad: number) Nombre Paco Antonio Soledad 22 19 26 Edad INSER INTO Cocinero(Nombre, Edad) SELECT Nombre, Edad FROM Persona WHERE Edad > 20;

2522- SQL como lenguaje de manipulación de datos: la actualización Cocinero(nombre:varchar, edad: number, país:varchar) Nombre Edad País Paco Soledad 22 26?? INSER INTO Cocinero(Nombre, Edad) SELECT Nombre, Edad FROM Persona WHERE Edad > 20;

2522- SQL como lenguaje de manipulación de datos: la actualización UPDATE Sirve para modificar los valores de los atributos de una o más tuplas seleccionadas Su sintaxis es: update tabla set comalista_asignaciones [where expresión_condicional] donde una asignación es de la forma: columna = {default null expresión_escalar}

2522- SQL como lenguaje de manipulación de datos: la actualización Si se incluye la cláusula where sólo se aplicará a las filas que hagan cierta la condición EJEMPLO: Decrementar en 1 unidad la edad de los cocineros franceses UPDATE Cocinero SET Edad = Edad - 1 WHERE País = Francia ;

2522- SQL como lenguaje de manipulación de datos: la actualización Elimina una o varias tuplas de una relación Su sintaxis es: DELETE Delete from tabla [where expresión_condicional] Si se incluye la cláusula where se eliminarán aquéllas que hagan cierta la condición EJEMPLO: Eliminar la información de los cocineros menores de 18 años DELETE FROM Cocinero WHERE Edad < 18;