Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de...

58
Introducci´ on Instrucciones DML Select Group by Joins Otros Biblio Introducci´ on a SQL Luis Valencia Cabrera ([email protected]) Research Group on Natural Computing Departamento de Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla 11-11-2019, Bases de Datos Luis Valencia Cabrera ([email protected]) Bases de Datos Introducci´ on a SQL

Transcript of Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de...

Page 1: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Introduccion a SQL

Luis Valencia Cabrera ([email protected])

Research Group on Natural ComputingDepartamento de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

11-11-2019, Bases de Datos

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 2: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 3: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 4: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

mysql

SQL (Structured Query Language) es el lenguaje estandar delas bases de datos relacionales. Es un lenguaje declarativo quepermite especificar diversos tipos de operaciones sobre estas.Es capaz de conjugar las operaciones del Algebra y el calculorelacional con operadores adicionales, y definir ası consultaspara recuperar o modificar informacion de bases de datos, asıcomo hacer cambios en ellas.Pero no solo incluye consulta. SQL esta compuesto porcomandos, clausulas, operadores y funciones de agregado. Enconjunto, disponemos de instrucciones para definir (crear ymodificar el esquema), mantener (insertar, actualizar,eliminar) y consultar BBDD relacionales.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 5: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Origen

En 1970, E.F. Codd, del laboratorio de investigacion de IBM,presento el modelo relacional.Junto al modelo teorico, propuso un lenguaje llamadoDSL/Alpha.IBM creo una version simplificada del DSL/Alpha quellamaron SQUARE.Mas tade lanzaron SEQUEL, que era un mejora de SQUARE.Finalmente, SEQUEL se renombro como SQL (StructuredEnglish Query Language).Desde 1986 se han ido sucediendo distintas versiones delestandar ANSI/ISO SQL, ampliamente conocido comoStructured Query Language.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 6: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

SGBD relacionales usando SQL

Sistemas comerciales de Gestion:Oracle Database de Oracle CorporationSQL Server de MicrosoftDB2 Universal Database de IBMSybase Adaptive Server de Sybase

¿MS Access? Cubre gran parte de la funcionalidad del nucleodel estandar, pero con variaciones en la sintaxis de algunosaspectos, y quedando otras partes del estandar no cubiertas.

Sistemas de codigo abierto:Mysql → MariaDBPostgreSQLSQLite

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 7: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

SGBD relacionales usando SQL

Sistemas comerciales de Gestion:Oracle Database de Oracle CorporationSQL Server de MicrosoftDB2 Universal Database de IBMSybase Adaptive Server de Sybase¿MS Access?

Cubre gran parte de la funcionalidad del nucleodel estandar, pero con variaciones en la sintaxis de algunosaspectos, y quedando otras partes del estandar no cubiertas.

Sistemas de codigo abierto:Mysql → MariaDBPostgreSQLSQLite

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 8: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

SGBD relacionales usando SQL

Sistemas comerciales de Gestion:Oracle Database de Oracle CorporationSQL Server de MicrosoftDB2 Universal Database de IBMSybase Adaptive Server de Sybase¿MS Access? Cubre gran parte de la funcionalidad del nucleodel estandar, pero con variaciones en la sintaxis de algunosaspectos, y quedando otras partes del estandar no cubiertas.

Sistemas de codigo abierto:Mysql → MariaDBPostgreSQLSQLite

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 9: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

SGBD relacionales usando SQL

Sistemas comerciales de Gestion:Oracle Database de Oracle CorporationSQL Server de MicrosoftDB2 Universal Database de IBMSybase Adaptive Server de Sybase¿MS Access? Cubre gran parte de la funcionalidad del nucleodel estandar, pero con variaciones en la sintaxis de algunosaspectos, y quedando otras partes del estandar no cubiertas.

Sistemas de codigo abierto:Mysql → MariaDBPostgreSQLSQLite

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 10: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 11: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Comandos

Los tipos de comandos en SQL se agrupan en dos categorıas osub-lenguajes:

DDL (Definition Data Language): permite definir el esquemade bases de datos, creando relaciones (tablas), campos eındices, o modificando las definiciones existentes.DML (Data Maniplation Language): permiten generarconsultas para ordenar, filtrar y extraer datos de la base dedatos, ası como insertar, modificar y eliminar registros de lastablas.

Ademas esta DCL, con comandos de control y seguridad de datos,que gobiernan los privilegios de los usuarios, los controles deacceso, ...

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 12: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Un ejemplo de DDLPalabra reservada CREATE

El estandar SQL no dispone exactamente de sentencia decreacion de base de datos como tal.En su lugar, define de una sentencia de creacion de esquemas:CREATE SCHEMA. Con la creacion de esquemas podemosagrupar un conjunto de elementos de la base de datos que sonpropiedad de un usuario.Conceptualmente, podemos entender que la BD contendratanto la definicion de los datos como los registros, logs... Elesquema unicamente establecera la definicion de la base dedatos, plasmando el diseno logico en el SGBD concretoespecificando las relaciones (tablas) y otros objetosrelacionados (como las vistas, por ejemplo.)

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 13: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Creacion de Bases de Datos

No obstante, la mayorıa de SGBD incorporan sentencias decreacion de bases de datos como CREATE DATABASE. En elcaso de MySQL, lo define como sinonimo de CREATE SCHEMA.Ademas de creacion, dentro de DDL tenemos instruccionespara eliminacion; por ejemplo, podemos borrar un esquema ouna base de datos mediante DROP SCHEMA, e igualmente losSGBD suelen incorporar DROP DATABASE.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 14: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Creacion de una tablaEjemplo basico

CREATE TABLE PRODUCTOS (codigo_producto INTEGER,nombre_producto VARCHAR(20),tipo VARCHAR(20),descripcion VARCHAR(50),precio REAL,fabrica INTEGER,PRIMARY KEY (codigo_producto),FOREIGN KEY (fabrica) REFERENCES FABRICAS(id_fabrica)

);

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 15: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Tipos de datos

CHAR(n) Cadenas de longitud fija de hasta n caracteres.VARCHAR(n) Cadenas de longitud variable de hasta ncaracteres.INTEGER, BIGINT, SMALLINT, . . . Enteros, grandes enteros,pequenos enteros,. . .REAL Numero realDATE Fechas. Estan compuestas de: YEAR, MONTH y DAY.TIME Horas. Estan compuestas de HOUR, MINUTE minutos ySECOND.. . . y muchos mas (varıan segun el SGBD).

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 16: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Juegos de caracteres

La codificacion de caracteres nos permite introducir sımbolospropios del castellano que no corresponden a la condificacioninternacional (por ejemplo la n).En MySQL, podemos configurar el juego de caracteres paratoda la base de datos; por ejemplo:

CREATE DATABASE libros character set utf8;Tambien podemos hacer lo propio con un campo (columna),anadiendo el juego de caracteres a continuacion del tipo:

descripcion VARCHAR(50) character set utf8Los juegos mas comunes son latin1 y utf8

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 17: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Comandos DDL

CREATE TABLE, utilizado para crear tablas nuevasDROP TABLE empleado para eliminar tablas

• Por ejemplo DROP TABLE 'ALUMNOS';ALTER sirve para modificar tablas, agregando/eliminandocampos o cambiando su definicionVeamos algunos ejemplos

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 18: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Comandos ALTER

Uso de ADD, MODIFY y DROP.ALTER TABLE t1 ADD proveedor VARCHAR(50);ALTER TABLE t1 MODIFY tipo INTEGER;ALTER TABLE t1 DROP descripcion;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 19: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 20: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Comandos DML

SQL define cuatro sentencias de manipulacion de datos principales:INSERT, para insertar registros en la base de datosUPDATE Encargado de modificar los valores de los camposindicados, en los registros que cumplan cierta condicionDELETE Encargado de eliminar los registros de una tabla quecumplan una condicionSELECT Encargado de consultar registros de la base de datosque satisfagan una condicion determinada

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 21: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Insercion de datos - INSERT

Podemos insertar valores en una tabla de grado n de dos formas:Sin especificar los nombres de las columnas, solo los valores:

INSERT INTO nombre_tablaVALUES (v1,v2,..., vn)

Especificando el nombre de los k ≤ n atributos para los queinsertamos valores

INSERT INTO nombre_tabla (col1, col2, ..., colk)VALUES (v1, v2, ..., vk)

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 22: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Insercion de datos - INSERTEjemplos

Suponiendo que los campos son codigo, nombre,tipo, precio y procedencia, podemos hacer:

INSERT INTO productosVALUES (1, 'Peras', 3, 0.75, 'Utrera');o bien...INSERT INTO productos (codigo, precio)VALUES (5, 0.60);

En el segundo ejemplo, los valores no indicados explıcitamentetoman el valor NULL, o bien el valor por defecto si lo hemosdefinido mediante DEFAULT.Deben respetarse las restricciones establecidas (de entidad,referencial, condicion de requerido...)

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 23: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Modificadores

El uso de UPDATE, DELETE y SELECT necesita modificadores queindiquen a que tuplas afectan.Ciertos modificadores (clausulas) nos permiten generar criterios paradefinir los datos a manipular o selecionar.FROM: establece la tabla o tablas de la/s que seleccionar los registrosWHERE: condiciones que los registros a seleccionar deben cumplirGROUP BY: criterio para agrupar los registros seleccionadosHAVING: establece condiciones sobre datos calculados para losgrupos generados por GROUP BYORDER BY: ordena los registros seleccionados segun el ordenindicado

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 24: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Operadores logicos

Estos operadores permiten formar condiciones mas complejas apartir de otras pasadas como operandos. Ası, dadas trescondiciones (expresiones logicas) a, b y c:

a AND b: conjuncion, evalua las condiciones a y b y devuelveverdad si ambas son ciertas.a OR b: disyuncion logica, evalua a y b y devuelve verdad sialguna de las dos es cierta.NOT c: negacion logica, devuelve el valor logico contrario a laevaluacion de a.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 25: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Operadores de comparacion

Para cada condicion simple, antes de agruparlas mediante losoperadores logicos anteriores, podemos emplear operadores como:

= Igual que, <> Distinto de< Menor que, > Mayor que<= Menor o igual que (>= Mayor o igual que)x BETWEEN a AND b Devuelve los registros en los que el valorde campo a este entre a y b, ambos inclusive.LIKE Utilizado en la comparacion de un modeloIN Utilizado para especificar registros de una base de datos

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 26: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Funciones de agregado

Las funciones de agregado se usan dentro de una clausula SELECTen grupos de registros (un grupo por cada combinacion de valoresde GROUP BY, o un unico grupo global si no hay GROUP BY) paradevolver un valor para cada posible grupo.

AVG calcula el promedio de valores de un campo determinadoCOUNT devuelve el numero de registros del grupoSUM devuelve la suma de valores de un campo determinadopara el grupoMAX devuelve el valor mas alto de un campo especificado (MINel mas bajo)

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 27: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 28: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Consultas de Seleccion

Las consultas de seleccion se utilizan para indicar al motor dedatos que devuelva informacion de las bases de datos. Estainformacion es devuelta en forma de conjunto de registros que sepueden almacenar en una nueva tabla.

SELECT Campos FROM Tabla;Donde campos es la lista de campos que se deseen recuperar ytabla es el origen de los mismos.Por ejemplo,SELECT Nombre, Telefono FROM Clientes;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 29: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Consultas de Seleccion

Se puede especificar el orden en que se desean recuperar losregistros de las tablas mediante la clausula ORDER BYSELECT CodigoPostal, Nombre, TelefonoFROM ClientesORDER BY Nombre;Se puede indicar si el orden de los registros es ascendente, ASC(valor por defecto) o descendente, DESC.SELECT CodigoPostal, Nombre, TelefonoFROM ClientesORDER BY CodigoPostal DESC;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 30: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Consultas de Seleccion

En cuanto al conjunto de registros seleccionados, estosmodificadores, que se incluyen entre SELECT y el primer nombredel campo a recuperar, provocan las siguientes acciones:

* Devuelve todos los campos de la tabla (valor por defecto)LIMIT n Devuelve un determinado numero de registros (n) dela tabla.DISTINCT Omite repeticiones de registros cuyos camposseleccionados coincidan totalmenteDISTINCTROW Omite repeticiones de registros basandose en latotalidad del registro y no solo en los campos seleccionados.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 31: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Consultas de SeleccionEjemplos

SELECT * FROM Empleados;

SELECT Nombre, ApellidoFROM EstudiantesORDER BY Nota LIMIT 25;

SELECT DISTINCT ApellidoFROM Empleados;

SELECT DISTINCTROW ApellidoFROM Empleados;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 32: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Alias (AS)

En determinadas circunstancias es necesario asignar unnombre nuevo a alguna columna determinada de un conjuntode registros devuelto por una consulta.Usamos la palabra reservada AS, que se encarga de asignar elnombre que deseamos a la columna deseada.Por ejemplo,SELECT DISTINCTROW Apellido AS EmpleadoFROM Empleados;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 33: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Estableciendo condciones para la consulta

Operadores logicosSELECT *FROM EmpleadosWHERE (Sueldo > 100 AND Sueldo < 500) OR(Provincia='Madrid' AND Estado='Casado');Operador BETWEEN:SELECT *FROM PedidosWHERE CodPostal BETWEEN 28000 AND 28999;Combinado con NOT:SELECT *FROM PedidosWHERE cp NOT BETWEEN 28000 AND 28999;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 34: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Operador LIKE

Permite comparar una cadena con un patron. Su sintaxis es:expresion LIKE modelo,y admite comodines (algunos dependen del SGBD):

sirve para cualquier caracter unitario% comodın para cero o mas caracteresUna clase [...] puede tomar cualquier valor entre loscorchetes. Por ejemplo, [abc] indica que en esa posicionpueden ir a, b o c. Para un rango de valores, usamos el guion;ası, [a-z] indica cualquier letra y [0-9] cualquier dıgito.ˆ acepta cualquier caracter menos los indicados. Por ejemplo,[ˆoa] acepta cualquier caracter menos o y a.

Como vemos en este enlace, Access emplea sımbolos distintos.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 35: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Operador IN

Este operador devuelve los registros cuyo campo indicado coincidecon alguno de los dados en una lista. Su sintaxis es:expresion [NOT] IN (valor1, valor2, ...)

Por ejemplo:SELECT *FROM PedidosWHERE Provincia IN ('Madrid', 'Cadiz', 'Sevilla');

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 36: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Cuantificador EXISTS

El cuantificador existencial en SQL es EXISTS.La expresion siguiente:

WHERE EXISTS (SELECT ... FROM ...)

Esta condicion se cumple (es verdadera) si, y solo si, el resultadode evaluar la consulta especificada por

SELECT ... FROM ...

devuelve algun registro (i.e., no es el conjunto vacıo).

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 37: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Ejemplos con WHERE

SELECT Apellidos, SalarioFROM EmpleadosWHERE Salario > 21000;

SELECT Apellidos, NombreFROM EmpleadosWHERE Apellidos = 'King';

SELECT Apellidos, NombreFROM EmpleadosWHERE Apellidos Like 'S%';

SELECT Apellidos, SalarioFROM EmpleadosWHERE Salario Between 200 and 300;

SELECT Apellidos, Nombre, CiudadFROM EmpleadosWHERE Ciudad IN ('Sevilla', 'Los Angeles', 'Barcelona')

OR Nombre NOT LIKE '%B%';

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 38: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 39: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - GROUP BY

GROUP BY lista camposcombina los registros con valores identicos para lista campos en ungrupo, para el que se mostrara un unico registro. Si se incluye unafuncion SQL agregada (Sum, Count...) en el SELECT, se obtieneun valor del calculo para cada registro (grupo). Su sintaxis es:SELECT expresionesFROM tabla[WHERE lista criterios]GROUP BY lista campos;Por ejemplo:SELECT Id_Familia, Sum(Stock)FROM ProductosGROUP BY Id_Familia;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 40: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - HAVING

Una vez GROUP BY ha combinado losregistros, HAVING filtra los registrosagrupados que satisfagan lascondiciones del HAVING.Es similar a WHERE, determina queregistros se seleccionan. Pero adiferencia de este (que afecta a losregistros originales), HAVING filtra losregistros resultantes de la agrupacion,segun los resultados de los camposcalculados.Es decir, una vez se han agrupado losregistros utilizando GROUP BY y se hanhecho los calculos agregados, HAVINGdetermina cuales de los nuevosregistros se van a mostrar.

SELECT Id_Familia, Sum(Stock)FROM ProductosWHERE NombreProducto Like 'BOS%'GROUP BY Id_FamiliaHAVING Sum(Stock) > 100

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 41: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - AVG

Calcula, para cada grupo, la media aritmetica de los valores delcampo especificado para los distintos registros del grupo. Susintaxis es Avg(expr), con expr siendo el campo (o expresionderivada de campos) que contiene los datos numericos para los alos que calcular la media.

SELECT Avg(Gastos) AS PromedioFROM PedidosWHERE Gastos > 100;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 42: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - Count

Calcula el numero de registros devueltos por una consulta,para cada grupo.Su sintaxis es: Count(expr), con expr el nombre del campoque desea contar.Los operandos de expr pueden incluir el nombre de un campo(del tipo que sea, incluyendo texto), una constante o unafuncionNo cuenta los registros que tienen campos NULL, a menos queexpr sea el caracter *:

SELECT Count(*) AS TotalFROM Pedidos;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 43: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - Max, Min

Min(expr) y Max(expr) devuelven, respectivamente, el mınimo oel maximo de un conjunto de valores contenidos en un campo deuna consulta. Ası, expr es el campo o expresion (incluyendoconstantes, llamadas a funciones, etc.) sobre el que realizar elcalculo.

SELECT Min(gasto) AS gminFROM PedidosWHERE pais = 'Espana';

SELECT Max(gasto) AS gmaxFROM PedidosWHERE pais = 'Espana';

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 44: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Agrupamiento - Sum

Sum(expr) devuelve la suma de valores para el campo o expresionespecificada. Los operandos de expr pueden incluir nombres decampos de tablas, constantes, llamadas a funciones y operadores.

SELECT Sum(PrecioUnidad * Cantidad) AS TotalFROM DetallePedido;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 45: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Algunos ejemplos adicionales

Con COUNT podemos contar el numero de ocurrencias de ciertocampo (valores no nulos). Por ejemplo, para contar el numero deempleados con la ciudad informada:

SELECT COUNT(ciudad)FROM EMPLEADOS

Ahora bien, si queremos saber el numero de ciudades (sinrepeticiones), incluimos DISTINCT:

SELECT COUNT(DISTINCT ciudad)FROM EMPLEADOS

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 46: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 47: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Producto cartesiano

El producto cartesiano entre dos relaciones (tablas) se realiza, en suforma mas elemental, mediante la separacion por comas. Ası, sea:

T1 con 3 columnas y 5 filas.T2 con 4 columnas y 7 filas.

Podemos devolver el producto cartesiano mediante:SELECT *FROM T1, T2;

y este resultado tendra 7 (=3+4) columnas y 35 (=5 * 7) filas.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 48: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Joins

En general, denominamos JOIN al producto cartesiano filtrado porciertas condiciones que restrinjan el resultado a los registros quecumplan ciertas condiciones (usando valores de ciertas columnasde las tablas involucradas). Si hay campos con el mismo nombre,los prefijamos.

SELECT * FROM TABLA1, TABLA2WHERE TABLA1.ID=7 AND TABLA2.ID=9;

Podemos usar alias para no tener que escribir el nombre completode la tabla:

SELECT * FROM TABLA1 a, TABLA2 bWHERE a.ID=7 AND b.ID=9;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 49: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Joins

Podemos incluir restricciones de igualdad que afecten a columnasde distintas tablas.SELECT * FROM TABLA1, TABLA2WHERE TABLA1.ID=TABLA2.ID;Para evitar la columna ID duplicada, lo mas comun es usarINNER JOIN, con ON:SELECT a.NOMBRE, b.DEPTOFROM TABLA1 a INNER JOIN TABLA2 b ON a.ID=b.ID;o bien USING:SELECT a.NOMBRE, b.DEPTOFROM TABLA1 a INNER JOIN TABLA2 b USING(ID);

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 50: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

JoinsReflexividad

Para hacer JOIN a la propia tabla, lo mas comun es renombrar dosveces la tabla:

SELECT a.NOMBRE, b.NOMBREFROM EMPLEADOS a INNER JOIN EMPLEADOS bON a.ID = b.ID_SUPERVISOR;

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 51: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 52: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Subconsultas

Podemos tener una consulta contenida dentro de otra. Tienecaracter temporal y se resuelve antes de la consulta principal.SELECT producto, precioFROM tablaWHERE precio = (SELECT MAX(precio) FROM tabla);

SELECT producto, precioFROM tablaWHERE precio <> (SELECT MAX(precio) FROM tabla);

SELECT producto, precioFROM tablaWHERE producto NOT IN (SELECT producto FROM tabla2);

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 53: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

CASE - Primer uso

Formato general:CASE

WHEN cond1 THEN expr1[WHEN cond2 THEN expr2][ELSE expr3]

ENDEjemplo:SELECT Nombre, CASE WHEN Turno = 'Manana' THEN 1

ELSE 2 END as TurnoFROM Alumnos;Devuelve el campo ’Nombre’, y una segunda columna ’Nivel’formada a partir de la Columna ’Turno’ sustituyendo el valor’Manana’ por 1 y cualquier otro valor por 2.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 54: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

ANY

Formato general:Operador ANY Subconsulta

ANY se usa con un operador de comparacion, y el resultado de lamisma se evalua como Verdadero si la comparacion resulta ciertapara algun valor devuelto por la subconsulta.

Por ejemplo:SELECT s1FROM t1WHERE s1 > ANY (SELECT s1 FROM t2);

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 55: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

COALESCE

Devuelve el primer valor conocido (no NULL) de una lista.

SELECT Nombre,COALESCE(FijoCasa, FijoTrabajo, Movil) Telefono

FROM Clientes;

Devuelve el nombre y un telefono de cada cliente: si se conoce, elfijo de casa; si no el fijo del trabajo y si no el movil, en ese orden.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 56: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Creacion de Tablas a partir de consultas

Podemos crear tablas a partir de subconsultas:CREATE TABLE TABLA1 [AS]

SELECT Titulo, AutorFROM Libros;

Se guarda ası la nueva tabla, incluyendo su esquema y datos.

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 57: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Indice

1 Introduccion

2 Instrucciones

3 Data Manipulation Language

4 Select

5 Group by

6 Joins

7 Otros

8 Bibliografıa

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL

Page 58: Introducción a SQL - Universidad de Sevilla · consultas para ordenar, filtrar y extraer datos de la base de datos, as´ı como insertar, modificar y eliminar registros de las

Introduccion Instrucciones DML Select Group by Joins Otros Biblio

Bibliografıa

Mercedes MarquesApuntes de Bases de Datos.Universidad Jaume I en Castellon (2011)ISBN: 978-84-693-0146-3

Carme Martın EscofetEl lenguaje SQL.UOC (2007)P06/M2109/02149

Alan BeaulieuAprende SQL.Anaya Multimedia - O’Reilly, Segunda Ed. (2009)ISBN: 978-84-4152-637-2

Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a SQL