SQL.

Slides:



Advertisements
Presentaciones similares
Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación.
Advertisements

SQL Sigla del nombre “Structured Query Language”.
integridad referencial
Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
SQL G r u p o
Consultas anidadas.
Estadística Computacional I
Teórico: Algebra Relacional
EL LENGUAJE ESTÁNDAR SQL
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Lenguaje Estructurado de Consultas (Structured Query Language – SQL)
OPERACIONES DE RECUPERACIÓN. WHERE ciudad =‘Las Palmas’; de los suministradores Obtener el código y la situación de Las Palmas SELECT sn, situacion FROM.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
MySQL M.C. Pedro Bello López.
CAPITULO 1 Escribiendo Sentencias SELECT Básicas
Lenguaje SQL (Structured Query Language)
SQL Lenguaje de consulta estructurado
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 5 Agregando Datos Usando Funciones de Grupo.
SQL el Structured Query Language no es mas que un lenguaje estándar de comunicación con bases de datos.
Subconsultas Avanzadas
Facultad de Tecnología Informática
6 Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Visualización de Datos de Varias Tablas Utilizando Uniones.
Componentes sintácticos

John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
COMANDOS SQL.
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Bases de datos con MYSQL
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
SQL MC Beatriz Beltrán Martínez Benemérita Universidad Autónoma de Puebla.
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
CONSULTAS SENCILLAS A LA BASE DE DATOS
Autora: Francisca Montañez Muñoz
SQL: Lenguaje de Interrogación Estructurado. Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado.
Consultas SQL (Base de Datos)
LENGUAJE SQL.
Bases de Datos Sql.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 14 Uso de Operadores de Conjuntos.
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
LENGUAJE ESTRUCTURADO DE CONSULTAS
SQL Sigla del nombre “Structured Query Language”.
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
© 2007 Fundamentos de Bases de Datos L. Gómez1 Fundamentos de Bases de Datos El lenguaje estándar para acceso y manipulación de Bases de Datos: Structured.
Tipos de Datos.
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
JOIN EN MYSQL Bueno en esta presentación mostrare cosas acerca de los usos de la sentencia JOIN en mysql , mediante esta presentación planeo mostrar los.
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
(Lenguaje de consulta estructurado)
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
SQL STRUCTURED QUERY LANGUAGE
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Unidad 6. Tema 4. Lenguaje de consultas SQL
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Diseño de Bases de Datos Tema 4: Integridad.
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Diseño de Bases de Datos Tema 4: Integridad.
SQL: DDL.
Copyright  Oracle Corporation, All rights reserved. 1 Escritura de sentencias SQL SELECT básicas.
INTEGRACION DE LAS TECNOLOGIAS DE LA INFORMACION Y COMUNICACION Implementación de base de datos (Lenguaje de manipulación de datos) Ing. Linda Masias Morales.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Copyright  Oracle Corporation, All rights reserved. 2 Restricción y ordenación de datos.
JOB_HISTORY EMPLOYEE_ID (PK,FK) START_DATE (PK) END_DATE JOB_ID (FK) DEPARTMENT_ID (FK) EMPLOYEES EMPLOYEE_ID (PK) FIRST_NAME LAST_NAME.
DLM Transact SQL Sesión II Recuperación de información.
DML Transact SQL Sesión VI Trabajando con subconsultas.
Selección Condicionada de Filas Uso de la cláusula WHERE La cláusula WHERE restringe las columnas que retorna una consulta según la condición que se imponga.
Transcripción de la presentación:

SQL

DEFINICIÓN DE DATOS EN SQL Usado para CREATE, DROP and ALTER las descripciones de las tablas (relaciones) de una base de datos. CREATE TABLE Especifica una nueva relación de base dándole a esta un nombre, y especificando cada uno de sus atributos y sus tipos de datos (INTEGER, FLOAT, DECIMAL(i,j), CHAR(n), VARCHAR(n)). Una restricción NOT NULL puede ser especificada en un atributo. CREATE TABLE DEPARTMENT (DNAME VARCHAR(10) NOT NULL, DNUMBER INTEGER NOT NULL, MGRSSN CHAR(9), MGRSTARTDATE CHAR(9) );

En SQL2 Podemos usar el comando CREATE TABLE para especificar la llave primaria, llaves secundarias y restricciones de integridad referencial (llaves foráneas). Atributos llaves pueden ser especificados a través de las palabras clave PRIMARY KEY y UNIQUE CREATE TABLE DEPARTMENT (DNAME VARCHAR(10) NOT NULL, DNUMBER INTEGER NOT NULL, MGRSSN CHAR(9), MGRSTARTDATE CHAR(9) PRIMARY KEY(DNUMBER), UNIQUE(DNAME));

DROP TABLE Usada para remover una relación de base y su definición La relación ya no podrá ser usada en consultas, actualizaciones u otros comandos ya que su descripción no existe. Ejemplo: DROP TABLE DEPENDENT;

ALTER TABLE Usada para añadir un atributo a una de las relaciones de base. El atributo añadido tendrá NULL en todas las tuplas de la relación después que el comando sea ejecutado; por lo tanto la restricción NOT NULL no será permitida para tales atributos. Ejemplo: ALTER TABLE EMPLOYEE ADD JOB VARCHAR(12); Los usuarios de la base de datos tienen que dar entrada a un valor para el nuevo atributo JOB para cada tupla de EMPLOYEE. Esto puede ser hecho usando el comando UPDATE.

CARACTERÍSTICAS AÑADIDAS EN SQL2 CREATE SQUEMA Especifica un nuevo esquema de base de datos dándole un nombre. CREATE SQUEMA COMPANY; OPCIONES DE INTEGRIDAD REFERENCIAL En SQL2, podemos especificar CASCADE ó SET NULL ó SET DEFAULT en restricciones de integridad referencial (foreign keys) CREATE TABLE DEPARTMENT (DNAME VARCHAR(10) NOT NULL, DNUMBER INTEGER NOT NULL, MGRSSN CHAR(9) DEFAULT 0, MGRSTARTDATE CHAR(9), PRIMARY KEY(DNUMBER), UNIQUE(DNAME), FOREIGN KEY(MGRSSN) REFEERENCES EMPLOYEE ON DELETE SET DEFAULT ON UPDATE CASCADE);

CREACION DE TABLA EN SQL2 CREATE TABLE EMPLOYEE (ENAME VARCHAR(30) NOT NULL, SSN CHAR(9), BDATE DATE, DNO INTEGER DEFAULT 1, SUPERSSN CHAR(9), PRIMARY KEY(SSN), FOREIGN KEY(DNO) REFERENCES DEPARTMENT ON DELETE SET DEFAULT ON UPDATE CASCADE, FOREIGN KEY(SUPERSSN) REFERENCES EMPLOYEE ON DELETE SET NULL ON UPDATE CASCADE);

CONSULTAS DE RECUPERACIÓN DE DATOS SQL tiene una instrucción básica para recuperación de información desde una base de datos: la sentencia SELECT. Esta no es la misma que la operación SELECT del Álgebra Relacional. Una importante distinción entre SQL y el modelo relacional formal: SQL permite que una tabla tenga dos o más tuplas idénticas en todos los valores de sus atributos . Por lo tanto una tabla en SQL es un multi-conjunto (multi-set o bag) de tuplas; esto no es un conjunto de tuplas. Una tabla SQL puede estar restringida a un conjunto de tuplas si especificamos atributos PRIMARY KEY ó UNIQUE o usando la opción DISTINCT en una consulta

La forma básica de la sentencia SELECT de SQL es llamada un mapeo o un bloque SELECT-FROM-WHERE SELECT <lista de atributos> FROM <lista de tablas> WHERE <condición> <lista de atributos> es una lista de nombres de atributos cuyos valores van a ser recuperados por la consulta <lista de tablas> es una lista de los nombres de las relaciones requeridos para procesar la consulta <condición> es una expresión condicional booleana que identifica las tuplas a ser recuperadas por la consulta

Query 0: Recuperar la fecha de nacimiento y la dirección del empleado ‘John B. Smith’. Q0: SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME=’John’ AND MINT=’B’ AND LNAME=’Smith’ Similar al par SELECT-PROJECT del Álgebra Relacional; la cláusula SELECT especifica los atributos de proyección y la cláusula WHERE especifica la condición de selección. Sin embargo, el resultado de la consulta podría contener tuplas duplicadas.

Query 1: Recuperar el nombre y la dirección de todos los empleados quienes trabajan para el departamento ‘Research’. Q1: SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNAME=’Research’ AND DNUMBER=DNO; Similar a la secuencia SELECT-PROJECT-JOIN de las operaciones del Álgebra Relacional. (DNAME=’Research’) es una condición de selección (corresponde a una operación SELECT en Álgebra Relacional). (DNUMBER=DNO) es una condición de join (corresponde a una operación JOIN en Álgebra Relacional).

Query 2: Para cada proyecto localizado en ‘Houston’, liste el número de proyecto, el número del departamento controlador, y el apellido, dirección y fecha de nacimiento del manager del departamento. Q2: SELECT PNUMBER, DNUM, LNAME, BDATE, ADDRESS FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION=’Houston’; En Q2 hay dos condiciones de join. La condición de join DNUM=DNUMBER relaciona un proyecto al departamento que lo controla. La condición de join MGRSSN=SSN relaciona el departamento controlador al empleado que dirige ese departamento.

CLAÚSULA WHERE NO ESPECIFICADA Una cláusula WHERE omitida indica no condición, por lo tanto todas las tuplas de las relaciones en la cláusula FROM serán seleccionadas. Esto es equivalente a la condición WHERE TRUE. Query 9: Recuperar los valores del SSN para todos los empleados Q9: SELECT SSN FROM EMPLOYEE;

PRODUCTO CARTESIANO Si más de una relación es especificada en la cláusula FROM y no hay condición de join, entonces el PRODUCTO CARTESIANO de tuplas es seleccionado. Example: Q10: SELECT SSN, DNAME FROM EMPLOYEE, DEPARTMENT; Es extremadamente importante no pasar por alto especificar ninguna condición de selección ni de join en la cláusula WHERE; de otra manera, relaciones incorrectas y muy grandes podrían resultar.

USE OF * Se usa * para recuperar todos los valores de los atributos de las tuplas seleccionadas. Ejemplos: Q1C: SELECT * FROM EMPLOYEE WHERE DNO=5; Q1D: SELECT * FROM EMPLOYEE, DEPARTMENT WHERE DNAME=’Research’ AND DNO=DNUMBER;

USE OF DISTINCT SQL no trata una relación como un conjunto: tuplas duplicadas pueden aparecer. Para eliminar tuplas duplicadas del resultado, la palabra clave DISTINCT es usada. Por ejemplo, el resultado de Q11 puede tener valores de SALARY duplicados mientras Q11A no tendrá ningún valor duplicado. Q11: SELECT SALARY FROM EMPLOYEE; Q11A: SELECT DISTINCT SALARY

OPERACIONES DE CONJUNTO SQL tiene directamente incorporadas operaciones de conjunto. Hay una operación de UNION y en algunas versiones de SQL hay diferencia de conjuntos (MINUS) e intersección (INTERSECT). Las relaciones resultantes de esas operaciones de conjuntos son conjuntos de tuplas; tuplas duplicadas son eliminadas del resultado. Las operaciones de conjunto aplican sólo a relaciones que sean unión compatible: las dos relaciones tienen que tener los mismos atributos apareciendo en el mismo orden.

UNION DE CONJUNTOS Q4: (SELECT PNAME FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME=‘Wong’) UNION (SELECT PNAME FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME=’Wong’);

CONSULTAS ANIDADAS Una consulta SELECT completa, llamada consulta anidada, puede ser especificada dentro de la cláusula WHERE de otra consulta llamada la consulta externa. Muchas de las consultas anteriores pueden ser especificadas en una forma alternativa usando anidamiento. Q1: SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=’Research’ ); La consulta anidada selecciona el número del departamento ‘Research’. La consulta externa selecciona una tupla de EMPLOYEE si su valor DNO está en el resultado de la consulta anidada. El operador de comparación IN compara un valor v con un conjunto o multiconjunto de valores V, y evalúa a TRUE si v es uno delos elementos en V. En general, tenemos varios niveles de consultas anidadas. Una referencia a un atributo no cualificado refiere a la relación declarada en la consulta anidada más interna. En este ejemplo, la consulta anidada no está correlacionada con la consulta más externa

FUNCIÓN EXISTS EXISTS es usado para checar si el resultado de una consulta correlacionada anidada es vacía (no contiene tuplas). Se puede formular la Query 12 en una forma alternativa que utiliza EXISTS como en Query 12B Query 12B: Recuperar el nombre de cada empleado que tenga dependientes con el mismo nombre de dicho empleado. Q12B: SELECT FNAME, LNAME FROM EMPLOYEE WHERE EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN AND FNAME=DEPENDENT_NAME); Query 6: Recuperar los nombres de los empleados quienes no tienen dependientes Q6: SELECT FNAME, LNAME WHERE NOT EXISTS (SELECT * WHERE SSN=ESSN );

CONJUNTOS EXPLÍCITOS Es también posible usar un conjunto explícito (enumerado) de valores en la cláusula WHERE antes que una consulta anidada. Query 13: Recuperar los números de seguro social de todos los empleados que trabajan en los proyectos con número 1, 2 ó 3. Q13: SELECT DISTINCT ESSN FROM WORKS_ON WHERE PNO IN (1,2,3);

NULLS EN CONSULTAS SQL SQL permite consultas que chequen si un valor es NULL (perdido, indefinido ó no aplicable) SQL usa IS ó IS NOT para comparar valores nulos porque este considera cada NULL distinto de otro valor NULL, por lo tanto la comparación por igualdad no es apropiada. Query 14: Recuperar los nombres de todos los empleados quienes no tienen supervisores. Q14: SELECT FNAME, LNAME FROM EMPLOYEE WHERE SUPERSSN IS NULL;

COMPARACIÓN DE SUBCADENAS El operador de comparación LIKE es usado para comparar cadenas parciales. Dos caracteres reservados son usados: ‘%’ (ó ‘*’ en algunas implementaciones) reemplaza un número arbitrario de caracteres y ‘_’ reemplaza un carácter arbitrario simple. Query 25: Recuperar todos los empleados cuyas direcciones están en Houston, Texas. Aquí, el valor del atributo ADDRESS tiene que contener la subcadena ‘Houston, Texas’. Q25: SELECT FNAME, LNAME FROM EMPLOYEE WHERE ADDRESS LIKE ‘%Houston,TX%’; Query 26: Recuperar todos los empleados que nacieon durante los años 50’s. Aquí, ‘5’ tiene que ser el octavo carácter de la cadena (de acuerdo al formato para la fecha dd-mm-aaaa), de manera que el valor de BDATE es ‘________5_’, con cada guión bajo reservando un lugar para cada carácter arbitrario simple. Q26: SELECT FNAME, LNAME WHERE BDATE LIKE ‘________5_ ’; El operador LIKE nos permite considerar cada valor como atómico o indivisible de la misma manera en que SQL trata a sus cadenas.

FUNCIONES AGREGADAS Incluye COUNT, SUM, MAX, MIN Y AVG Query 15: Encontrar el salario máximo, mínimo y promedio entre todos los empleados. Q15: SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE; Query 16: Encontrar el salario máximo, mínimo y promedio entre los empleados que trabajan en el Departamento de ‘Research’. Q16: SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=’Research’; Query 17 y 18: Recuperar el número total de empleados en la compañía (Q17), y el número de empleados en el departamento de ‘Research’ (Q18). Q17: SELECT COUNT(*) FROM EMPLOYEE; Q18: SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT

OPERACIONES ARITMÉTICAS Los operadores aritméticos estándar ‘+’, ‘-‘, ‘*’, ‘/’ (para suma, resta, multiplicación y división respectivamente) pueden ser aplicados a valores numéricos en una consulta SQL. Query 27: Mostrar el efecto de dar un 10% de aumento de salario a todos los empleados que trabajan en el proyecto ‘ProductX’. Q27: SELECT FNAME, LNAME, 1.1*SALARY FROM EMPLOYEE, WORKS_ON, PROJECT WHERE SSN=ESSN AND PNO=PNUMBER AND PNAME=’ProductX’;

AGRUPAMIENTO En muchos casos, queremos aplicar funciones agregadas a subgrupos de tuplas en una relación. Cada subgrupo de tuplas consiste del conjunto de tuplas que tiene el mismo valor para el atributo(s) de agrupamiento. La función es aplicada a cada subgrupo independientemente. SQL tiene una cláusula GROUP_BY para especificar el ó los atributos de agrupamiento, los cuales tienen que aparecer en la cláusula SELECT. Query 20: Por cada departamento, recuperar el número de departamento, el número de empleados en el departamento, y su salario promedio. Q20: SELECT DNO, COUNT(*), AVG(SALARY) FROM EMPLOYEE GROUP BY DNO; En la Q20, las tuplas de EMPLOYEE están divididas en grupos. Cada grupo tiene el mismo valor para el atributo de grupo DNO. Las funciones COUNT y AVG a cada grupo de tuplas separadamente. La cláusula SELECT incluye solo el atributo de agrupamiento y las funciones a ser aplicadas a cada grupo de tuplas. Query 21: Por cada proyecto, recuperar el número y el nombre de proyecto y el número de empleados que trabajan en ese proyecto. Q21: SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME;

CLAÚSULA HAVING Algunas veces nosotros queremos recuperar los valores de esas funciones para solo aquellos grupos que satisfacen ciertas condiciones. La cláusula HAVING es usada para especificar una condición de selección sobre grupos antes que en tuplas individuales. Query 22: Por cada proyecto en el cual más de dos empleados trabajan, recuperar el número y el nombre de proyecto y el número de empleados que trabajan en ese proyecto. Q22: SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT(*) > 2;

ORDER_BY La cláusula ORDER_BY es usada para ordenar las tuplas en el resultado de una consulta basado en los valores de algún atributo(s). Query 28: Recuperar una lista de empleados y los proyectos en que cada uno trabaja ordenados por departamento y dentro de cada departamento ordenados alfabéticamente por apellidos de los empleados. Q28: SELECT DNAME, LNAME, FNAME, PNAME FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT WHERE DNUMBER=DNO AND SSN=ESSN AND PNO=PNUMBER ORDER BY DNAME, LNAME LIMIT 0 , 3; El orden por default es por valor ascendente del atributo(s). Se puede especificar la palabra clave DESC si queremos un orden descendente de los atributos. La palabra clave ASC puede ser usada para explícitamente especificar el orden ascendente.

RESUMEN DE CONSULTAS SQL Una consulta en SQL puede consistir de un grupo de hasta seis cláusulas, pero solo las primeras dos SELECT y FROM son obligatorias. Las cláusulas son especificadas en el siguiente orden: SELECT <lista de atributos> FROM <lista de tablas> WHERE <condición> GROUP BY <atributos de grupo> HAVING <condición de tamaño del grupo> ORDER BY <lista de atributos> LIMIT < 0, N tuplas > La cláusula SELECT lista los atributos o funciones a ser recuperadas. La cláusula FROM especifica todas las relaciones (ó alias) necesarias en la consulta pero no aquellas necesarias en consultas anidadas. La cláusula WHERE especifica las condiciones para selección y join de tuplas para las relaciones especificadas en la cláusula FROM. GROUP BY especifica los atributos de agrupamiento. HAVING especifica una condición para la selección de los grupos. ORDER BY especifica un orden para desplegar el resultado de una consulta. Una consulta es evaluada primero aplicando la cláusula WHERE, entonces GROUP BY y HAVING, y finalmente la cláusula SELECT.