Unidad. Lenguaje SQL. (Structured Query Language)



Documentos relacionados
Ejercicios SQL - Select TutorialesNET Versión Revisión 1 25 de julio de 2015

Bases de Datos I Práctica 1 Ejercicios de SQL

UNIDAD 8. Lenguaje SQL (Structured Query Language)

Tutorial de SQL - El comando SELECT

Tema 4. Manipulación de datos con SQL

Ampliación de Bases de Datos Práctica 1: El lenguaje PL/SQL de Oracle Sesión 1: Introducción al PL/SQL

Constraints (Restricciones) Copyright Oracle Corporation, All rights reserved.

Bases de Datos: Structured Query Language (SQL)

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

Subconsultas. Copyright Oracle Corporation, All rights reserved.

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

Bases de Datos Relacionales III

Bases de Datos 2. Teórico

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

Consultas con combinaciones

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

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

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

SQL (Structured Query Language)

SQL Server FEMEPA SQL Server 2000

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

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

ÍNDICE PRIMERA PARTE... 17

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

SQL Los fundamentos del lenguaje

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

Introducción a SQL sobre Oracle

Bases de Datos Relacionales

MANUAL BÁSICO DEL LENGUAJE SQL

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

8 SQL SERVER 2008 RA-MA

Informática Básica Práctica Tema 3 Ejercicios de SQL

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

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

A.1. Definiciones de datos en SQL

1. DML. Las subconsultas

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

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

SQL. Orígenes y Evolución

3. El catálogo 26. Laboratorio de Bases de Datos

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

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

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

SQL: Lenguaje de Interrogación Estructurado

6.1. Introducción. Guía 5. SQL.

select nombre from profesores where categoria='aso6';

Bases de Datos SQL - Ejemplos

Bases de Datos Ejercicios de SQL

SQL (Structured Query Language)- DML

Restricciones de Integridad

GONZALEZ VARGAS ANA KAREN GUTIERREZ MUNGUIA LUIS DANIEL TELLEZ ARCOS DIANA FATIMA PROBLEMA A RESOLVER

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

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

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

Tema 4. Lenguajes de consulta comerciales

Práctica 3. Consultas SQL

DML SQL II. Comparaciones con relaciones

Base de datos Lenguaje SQL

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

6- Combinación de tablas

SERVICIO NACIONAL DE APRENDIZAJE SENA

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

ÍNDICE INTRODUCCIÓN...13

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

CURSO DE SQL SERVER 2005

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

1.264 Tema 7. Introducción a SQL

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

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

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

Visualización de Datos a partir de Varias Tablas. Copyright Oracle Corporation, All rights reserved.

Boletín de Problemas de la Asignatura II18 Bases de Datos. Ingeniería Informática Universitat Jaume I

Acceso a bases de datos MySQL con PHP

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

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

Tema 33. El lenguaje SQL

Temario. Índices simples Árboles B Hashing

Sub consultas avanzadas

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 - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

Grupo Kybele, Pág. 1

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

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

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

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

ADMINISTRACION DE BASES DE DATOS EN ORACLE

Tema 2. Bases de Datos Relacionales

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

APÉNDICE SQL (Structures Query Language)

Base de datos relacional

[CASI v.0110] Pág. 1

Creación de Vistas. Copyright Oracle Corporation, All rights reserved.

Sql Basico. Seminar Introduction

T12 Vistas y tablas temporales

Bases de datos: Sistemas de bases de datos:

Transcripción:

Unidad Lenguaje SQL (Structured Query Language) 1

SQL Definición DDL Consulta y Actualización DML Create Alter Drop Select Insert Update Delete 2

SQL DDL CREATE TABLE nombre_tabla (nombre_columna tipo_dato/dominio [NOT NULL] [nombre_columna [DEFAULT valor], tipo_dato/dominio [NOT NULL] [DEFAULT valor],...], [ PRIMARY KEY (nombre_columna [, nombre_columna,...]), ] [ FOREIGN KEY (nombre_columna [, nombre_columna,...]), REFERENCES nombre_tabla (nombre_columna [, nombre_columna,...]) ]; 3

SQL DDL DROP TABLE nombre_tabla [RESTRICT/CASCADE]; 4

SQL DDL ALTER TABLE nombre_tabla ADD nombre_columna tipo_dato/dominio* [NOT NULL] [DEFAULT valor]; ALTER TABLE nombre_tabla DROP nombre_columna; 5

SQL - DML (Actualización) Inserción de tuplas Modificación de tuplas Eliminación de tuplas 6

DML - Inserción 1. INSERT INTO <tabla> [<columna i,, columna j>] VALUES (<valor i,, valor j>); Para cada columna debe ser especificado un valor. Si no se especifica una columna de la tabla, se almacenará en ella un valor nulo. Si no se especifican las columnas se asumirá el orden especificado en el create. 7

DML - Inserción 2. INSERT INTO <tabla> [<columna i,, columna j>] <query>; insert into hr.jobs select * from otrohr.jobs; 8

DML - Modificación 1. UPDATE <tabla> SET <columna i> = <expresión i>,, <columna j> = <expresión j> [WHERE <condición>]; <expresión> puede ser una constante, una expresión aritmética o un query. UPDATE EMP SET sal = (select min(sal) from EMP where job= MANAGER ) WHERE job= SALESMAN and deptno=20; 9

DML - Modificación 2. UPDATE <tabla> SET (<columna i,, columna j>) = <query> [WHERE <condición>];; 10

DML Eliminación DELETE FROM <tabla> [WHERE <condición>];; 11

SQL DML (consultas) SQL ALGEBRA multiconjunto o bolsa conjunto 12

SQL DML (consultas) SELECT lista_atributos FROM [nombre_tabla [, nombre_tabla,...]] / [join] [WHERE condición] [UNION UNION ALL INTERSECT MINUS Subconsulta] [GROUP BY lista_atributos [HAVING condición]] [ORDER BY lista_atributos]; 13

SQL DML (consultas) [join] :: = nom_tabla1 NATURAL JOIN nom_tabla2 / nom_tabla1 JOIN nom_tabla2 ON condición / nom_tabla1 INNER JOIN nom_tabla2 ON condición / nom_tabla1 LEFT [OUTER] JOIN nom_tabla2 ON condición / nom_tabla1 RIGHT [OUTER] JOIN nom_tabla2 ON condición 14

DML Tablas Ejemplo Tabla DEPT DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 4 filas 15

DML Tablas Ejemplo Tabla EMP EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782 17/12/80 20/02/81 22/02/81 02/04/81 28/09/81 01/05/81 09/06/81 19/04/87 17/11/81 08/09/81 23/05/87 03/12/81 03/12/81 23/01/82 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300 1400 0 20 30 30 20 30 30 10 20 10 30 20 30 20 10 14 filas 16

DML - Proyección Los valores que se pueden proyectar en una consulta son: Atributos Constantes Expresiones Funciones 17

DML Proyección (atributo) π <epno, ename> EMP SELECT epno, ename FROM EMP; (proyección1.sql) 18

DML Proyección (atributo) π<job> EMP SELECT job FROM EMP; SELECT distinct job FROM EMP; (proyección2.sql) (proyección3.sql) 19

DML Proyección (atributo) EMP SELECT * FROM EMP; (proyección4.sql) Proyecta todos los atributos de la tabla resultante 20

DML Proyección (atributo) ρ (nombre) (π<ename> EMP ) SELECT ename AS nombre FROM EMP; (proyección5.sql) 21

DML Proyección (expresión-constante) (proyección6.sql) SELECT ename as nombre, sal/2 as salario_quincena FROM EMP; (proyección7.sql) SELECT ename as nombre, cobra quincenalmente, sal/2 as salario_quincena, pesos FROM EMP; 22

DML Proyección (función) SELECT count(*) FROM EMP; (proyección8.sql) 23

DML - Selección π empno,ename (σ deptno=20 (EMP)) SELECT empno, ename FROM EMP WHERE DEPTNO=20; (selección1.sql) 24

DML - Selección SELECT empno, ename FROM EMP WHERE DEPTNO=20 and SAL<1000; La condición puede utilizar cualquiera de los operadores relacionales y operadores lógicos para generar expresiones más complejas (para cualquier tipo de dato). 25

DML - Selección SELECT empno, ename FROM EMP WHERE DEPTNO is null; La condición puede utilizar el operador is que permite evaluar si un atributo tiene un valor nulo o no. 26

DML - Selección SELECT * FROM scott.emp WHERE ename LIKE 'A%'; (selección2_1.sql) El operador like compara parte de una cadena de caracteres, donde: % sustituye a una cantidad arbitraria de caracteres _ sustituye a un solo carácter 27

Operadores de comparación para consultas simples (sin subqueries) Operadores de comparación de conjuntos <columna> [NOT] IN (<lista de valores>) Select * from EMP where DEPTNO in (20,30); Operadores de valores nulos <columna> IS [NOT] NULL (ya vimos un ejemplo) Operadores de condiciones de dominios <columna> [NOT] BETWEEN <valor inferior> AND <valor superior> 28

Operadores de comparación para consultas más complejas (con subqueries) Un subquery valuado en valor <expresión> [NOT] IN (<subquery>) En este caso <expresión> es comparada con el conjunto que devuelve el subquery 29

Operadores de comparación para consultas más complejas (con subqueries) Un subquery para test de existencia <NOT> EXISTS (<subquery>) En este caso: Exists: Evalúa verdadero si el subquery devuelve tuplas. Not Exists: Evalúa verdadero si el subquery no genera tuplas, es decir, devuelve una tabla vacía. 30

Ejemplo Mostrar todos los datos de los departamentos que no tienen empleados SELECT * FROM scott.dept WHERE not exists (SELECT * FROM scott.emp WHERE emp.deptno = dept.deptno); 31

DML Ordenamiento SELECT...... [ORDER BY lista_atributos ASC/DESC]; Ordena la salida (tabla resultante) según el/los atributos especificados 32

DML Producto Cartesiano EMP x DEPT SELECT * FROM EMP, DEPT; (producto.sql) 33

DML Natural Join π ename, job, dname (EMP * DEPT) SELECT ename, job, dname FROM EMP NATURAL JOIN DEPT; (join2.sql) (Los atributos sobre los cuales se hace el JOIN deben tener el mismo nombre en ambas tablas) 34

DML Natural Join construído con producto cartesiano SELECT epno,ename, job, mgr, hiredate, sal, comm, deptno, dname, loc FROM EMP, DEPT (join1.sql) WHERE EMP.deptno= DEPT.deptno; 35

DML Join π ename, job, dname (EMP EMP.deptno = DEPT.deptno DEPT) SELECT ename, job, dname FROM EMP JOIN DEPT ON EMP.deptno = DEPT.deptno; SELECT ename, job, dname FROM EMP INNER JOIN DEPT ON EMP.deptno = DEPT.deptno; (join3.sql) (join3_1.sql) 36

DML Join con restricción extra SELECT ename, job, dname FROM EMP JOIN DEPT ON EMP.deptno = DEPT.deptno WHERE EMP.deptno = 10; (join4.sql) 37

DML Outer Join LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN 38

DML Left Outer Join SELECT deptno,dname, ename, job FROM DEPT NATURAL JOIN EMP; (join5.sql) El departamento 40 no sale informado porque no existe ningún empleado asignado a él SELECT DEPT.deptno,dname, ename, job FROM DEPT LEFT OUTER JOIN EMP ON DEPT.DEPTNO=EMP.DEPTNO; (join6.sql) El departamento 40 sale informado a pesar de que no existen empleados asignados a él 39

DML Right Outer Join SELECT deptno,dname, ename, job FROM EMP NATURAL JOIN DEPT; (join5.sql) El departamento 40 no sale informado porque no existe ningún empleado asignado a él SELECT ename, job, dept.deptno,dname (join7.sql) FROM EMP RIGHT OUTER JOIN DEPT ON DEPT.DEPTNO=EMP.DEPTNO; El departamento 40 sale informado a pesar de que no existen empleados asignados a él 40

DML Full Outer Join SELECT lista_atributos FROM nombre_tabla FULL OUTER JOIN nombre_tabla ON condición; 41

DML Union π ename (σ deptno=20 or deptno=30 EMP) π ename (σ deptno=20 EMP) U π ename (σ deptno=30 EMP) SELECT ename FROM EMP WHERE deptno=20 or deptno=30 ; (union1.sql) SELECT ename FROM EMP WHERE deptno=20 UNION SELECT ename FROM EMP WHERE deptno=30; 42

DML Union All En este caso, si existen tuplas repetidas no se eliminan. 43

DML Intersección Departamentos que tienen administrativos y analistas entre sus empleados (CLERK y ANALYST) π deptno (σ job=`clerk EMP) π deptno (σ job=`analyst EMP) 44

DML Intersección Departamentos que tienen administrativos y analistas entre sus empleados (CLERK y ANALYST) Select deptno (intersección1.sql) from emp where job='clerk' INTERSECT Ver Select deptno (depts_jobs.sql) from emp where job= ANALYST'; 45

DML Intersección Departamentos que tienen administrativos y analistas entre sus empleados (CLERK y ANALYST) SELECT dept.deptno, dname (intersección2.sql) from dept where deptno in ((Select deptno from emp where job='clerk') and deptno in (Select deptno from emp where job= ANALYST')); 46

DML Minus Departamentos que no tienen empleados π deptno Dept π deptno EMP select deptno from dept minus select deptno from emp; select deptno from dept where deptno not in (select deptno from emp); (minus1.sql) (minus2.sql) 47

DML: In / Not In - Exists / Not Exists Las subconsultas vinculada con un In pueden seleccionar más de un atributo, obviamente compatible con los atributos expresados en el where. Todas las consultas resueltas con IN pueden ser resueltas con Exists. Idem para los negados (Not In Not Exists) 48

DML: División π x,y A DIVIDE BY π y B select A.x from A where not exists (select * from B where not exists (select * from A AX where AX.x=A.x and AX.y=B.y)); 49

DML: Alias SELECT lista_atributos FROM nombre_tabla nombre_alias...; 50

DML Funciones de Resumen - SUM - AVG - COUNT - MAX - MIN 51

DML Funciones Resumen SELECT Sum(nombre_atributo*) FROM nombre_tabla; SELECT Avg(nombre_atributo*) FROM nombre_tabla; SELECT Count(*) FROM nombre_tabla; (resumen salario emp.sql) * El atributo debe ser numérico 52

DML Grupos SELECT... (agrup cantidad emp x... depto.sql) [GROUP BY lista_atributos [HAVING condición]]; (agrup con join.sql) Agrupa las tuplas que tienen igual valor del/ de los atributos especificados en lista_atributos. Muestra una tupla representativa del grupo (resume el grupo). Este valor debe ser único al grupo y además si es un atributo, debe estar especificado en la cláusula group by. 53

DML Grupos SELECT...... [GROUP BY lista_atributos [HAVING condición]]; Selecciona los grupos que cumplen la condición (agrup cantidad emp x depto con condicion.sql) 54

Análisis de consultas SQL Una consulta SQL se evalúa conceptualmente así: Primero FROM, seguido de WHERE, en tercer lugar GROUP BY y por último ORDER BY. Si no hay GROUP BY ni ORDER BY, para cada combinación de tuplas (una de cada tabla de FROM), se evalúa la condición de WHERE. Si es cierta se colocan en el resultado los valores correspondientes a los atributos del SELECT. Esta NO es una forma eficiente de implementar una consulta SQL. Así pues, cada SGBD tiene rutinas de optimización. 55

Vistas CREATE VIEW <nombre de la vista> [<columna(s)>] AS <sentencia select> [ WITH CHECK OPTION ]; Si [<columna(s)>] no está especificado, las columnas toman el mismo nombre de los correspondientes a la trabla generada en la sentencia select. Una vista puede ser usada en una sentencia SELECT en forma idéntica que una tabla. Una vista es evaluada cada vez que es accedida. No toda vista puede ser actualizada (insert, update, delete). 56