SlideShare una empresa de Scribd logo
1 de 29
CONSULTAS
AVANZADAS SQL
UNIDAD 1. MANIPULACIÓN AVANZADA DE DATOS
UNIDAD II. ARQUITECTURA DE LA INFORMACIÓN
JOINS
• El propósito del JOIN es unir información de diferentes tablas, para no tener que
repetir datos en diferentes tablas.
INNER JOIN
SELECT * FROM tabla1 INNER JOIN tabla2 WHERE
tabla1.columna1 = tabla2.columna1
EJEMPLO INNER JOIN
SELECT nombre AS Nom, apellido1 AS AP1, departamento AS DEP FROM personas P INNER
JOIN departamentos D WHERE P.dep = D.dep
PERSONAS DEPARTAMENTOS
LEFT JOIN
SELECT * FROM tabla1 LEFT JOIN tabla2 ON
tabla1.columna1 = tabla2.columna1
EJEMPLO LEFT JOIN
SELECT pers.presonas.nombre, apellido1, departamento FROM personas LEFT JOIN departamentos ON
personas.dep = departamentos.dep
PERSONAS DEPARTAMENTOS
RIGHT JOIN
SELECT * FROM tabla1 RIGHT JOIN tabla2 ON
tabla1.columna1 = tabla2.columna1
EJEMPLO RIGHT JOIN
SELECT pers.personas.nombre, pers.personas.apellido1, deps.departamentos.departamento FROM
personas RIGHT JOIN departamentos ON personas.dep = departamentos.dep
PERSONAS DEPARTAMENTOS
FULL JOIN
SELECT * FROM tabla1 FULL JOIN tabla2 ON
tabla1.columna1 = tabla2.columna1
EJEMPLO FULL JOIN
SELECT nombre, apellido1, departamento FROM personas FULL JOIN departamentos
PERSONAS DEPARTAMENTOS
EJERCICIO EN CLASE
• Teniendo en cuenta las tablas anteriores:
1. Sacar Una relación completa de los científicos asignados a cada proyecto.
Mostrar DNI, Nombre del científico, Identificador del proyecto y nombre del
proyecto
2. Obtener el número de proyectos al que está asignado cada científico (mostrar
el DNI y el nombre)
3. Obtener el número de científicos asignados a cada proyecto (mostrar el
identificador de proyecto y el nombre del proyecto)
4. Obtener el número de horas de dedicación de cada científico
5. Obtener el DNI y nombre de los científicos que se dedican a más de un
proyecto y cuya dedicación media a cada proyecto sea superior a las 80hrs
CIENTÍFICOS
PK DNI varchar(10)
Nomcmp varchar(200)
ASIGNADO_A
FKC Cientifico varchar(10)
FKP Proyecto varchar(5)
PROYECTO
PK Id varchar(5)
Nombre
Horas
varchar(200)
int
Sacar Una relación completa de los científicos asignados a cada proyecto. Mostrar DNI, Nombre del
científico, Identificador del proyecto y nombre del proyecto.
SELECT DNI, nombrec, idp, nombrep FROM (CIENTIFICOS C INNER JOIN ASIGNADO_A A INNER
JOIN PROYECTOS P ON A.proyecto = p.idp) WHERE C.DNI = A.cientifico
Obtener el número de proyectos al que está asignado cada científico (mostrar el DNI y el nombre)
SELECT DNI, nombrec, COUNT(proyecto) FROM CIENTIFICOS LEFT JOIN ASIGNADO_A ON
CIENTIFICOS.DNI = ASIGNADO_A.cientifico GROUP BY DNI
Obtener el número de científicos asignados a cada proyecto (mostrar el identificador de
proyecto y el nombre del proyecto)
SELECT idp, nombrep, COUNT(proyecto) FROM PROYECTOS LEFT JOIN ASIGNADO_A
ON PROYECTOS.idp = ASIGNADO_A.Proyecto GROUP BY idp
Obtener el número de horas de dedicación de cada científico
SELECT DNI, nombrec, SUM(Horas) FROM CIENTIFICOS C LEFT JOIN (ASIGNADO_A A
INNER JOIN PROYECTOS P ON A.proyecto = P.idp) ON C.DNI = A.cientifico GROUP BY DNI
Obtener el DNI y nombre de los científicos que se dedican a más de un proyecto y cuya dedicación
media a cada proyecto sea superior a las 80hrs
SELECT DNI, nombrec FROM CIENTIFICOS C WHERE 1 <(SELECT COUNT(*) FROM ASIGNADO_A
A WHERE A.cientifico = C.DNI)AND 80 <(SELECT AVG(horas)FROM PROYECTOS INNER JOIN
ASIGNADO_A ON PROYECTOS.idp = ASIGNADO_A.proyecto WHERE cientifico = C.DNI)
TAREA • Teniendo en cuenta las tablas anteriores:
1. Obtener los nombres de los productos de la tienda.
2. Obtener los nombres y los precios de los productos de la tienda.
3. Obtener el nombre de los productos cuyo precio sea mayor a $200.
4. Obtener todos los datos de los artículos cuyo precio esté entre los $60 y $120
(ambas cantidades incluidas).
5. Obtener el nombre y el precio en dólares (es decir, el precio en pesos
multiplicado por 18.60).
6. Seleccionar el precio medio de todos los productos.
7. Obtener el precio medio de los artículos cuyo código de fabricante sea 2.
8. Obtener el número de artículos cuyo código de fabricante sea 2.
9. Obtener el nombre y precio de los artículos cuyo precio sea mayor o igual a
$180.
10. Obtener un listado completo de artículos, incluyendo por cada artículo los
datos del artículo y de su fabricante.
FABRICANTES
PK Codigo Int
Nombre_fab varchar(100)
ARTICULOS
PK Id Int
FKP
Nombre
Precio
Fabricante
varchar(100)
decimal(12,2)
Int
TAREA
• Teniendo en cuenta las tablas anteriores:
11. Obtener un listado de artículos, incluyendo el nombre del artículo, su
precio y el nombre de su fabricante.
12. Obtener el precio medio d ellos productos de cada fabricante, mostrando el
nombre del fabricante.
13. Obtener el precio medio d ellos productos de cada fabricante, mostrando el
código del fabricante.
14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio
medio sea mayor o igual a $150.
15. Obtener el nombre y precio de los artículos más caros de cada proveedor.
16. Obtener una lista con el nombre y precio de los artículos más caros de cada
proveedor (incluyendo el nombre del proveedor).
17. Añadir un nuevo producto: Bocinad de $120 del fabricante 5.
18. Cambiar el nombre del producto 8 a “Toshiba 2012”.
19. Aplicar el 15% de descuento a todos los productos.
20. Aplicar un descuento del 5% a los productos que estén entre los $50 y $100.
FABRICANTES
PK Codigo Int
Nombre_fab varchar(100)
ARTICULOS
PK Id Int
FKP
Nombre
Precio
Fabricante
varchar(100)
decimal(12,2)
Int
Obtener un listado de artículos, incluyendo el nombre del artículo, su precio y el nombre de su
fabricante.
SELECT * FROM ARTICULOS, FABRICANTES WHERE ARTICULOS. Fabricante =
FABRICANTES. Codigo
SELECT * FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante =
FABRICANTES.Codigo
Obtener el precio medio de los productos de cada fabricante, mostrando el nombre del
fabricante.
SELECT AVG(Precio),FABRICANTES.Nombre FROM ARTICULOS INNER JOIN
FABRICANTE ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY
FABRICANTES.Nombre
Obtener el precio medio de los productos de cada fabricante, mostrando el código del
fabricante.
SELECT AVG(Precio), Fabricante FROM ARTICULOS GROUP BY Fabricante
Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o
igual a $150.
SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN
FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY
FABRICANTES.Nombre HAVING AVG(Precio) >=150
Obtener el nombre y precio de los artículos más caros de cada proveedor.
SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F
ON A.Fabricante = F.Codigo AND A.Precio = (SELECT MAX(A.Precio) FROM ARTICULOS A
WHERE A.Fabricante = F.Codigo)
Obtener una lista con el nombre y precio de los artículos más caros de cada
proveedor (incluyendo el nombre del proveedor).
SELECT A.Nombre, A.Precio, F. Nombre FROM ARTICULOS A INNER
JOIN FABRICANTES F ON A.Fabricante = F.Codigo AND A.Precio = (
SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante =
F.Codigo)
Añadir un nuevo producto: Bocinad de $120 del fabricante 5.
INSERT INTO ARTICULOS (Nombre, Precio, Fabricante) VALUES
(‘ALTAVOCES’, 70, 2)
Cambiar el nombre del producto 8 a “Toshiba 2012”.
UPDATE ARTICULOS SET Nombre= ‘Toshiba 2012’ WHERE Codigo = 8
Aplicar el 15% de descuento a todos los productos.
UPDATE ARTICULOS SET Precio = Precio – (Precio * .15)
Aplicar un descuento del 5% a los productos que estén entre los $50 y $100.
UPDATE ARTICULOS SET Precio = Precio – (Precio * .05) WHERE Precio
BETWEEN 50 AND 100
27
Estructura básica de la sentencia SELECT
• Consta de tres cláusulas:
• SELECT
• La lista de los atributos que se incluirán en el resultado de una consulta.
• FROM
• Especifica las relaciones que se van a usar como origen en el proceso de la
consulta.
• WHERE
• Especifica la condición de filtro sobre las tuplas en términos de los atributos de
las relaciones de la cláusula FROM.
28
Estructura básica de la sentencia SELECT
• Una consulta SQL tiene la forma:
SELECT A1, ..., An /* Lista de atributos */
FROM R1, ..., Rm /* Lista de relaciones. A veces opcional */
WHERE P; /* Condición. Cláusula opcional */
• Es posible que exista el mismo nombre de atributo en dos relaciones
distintas.
• Se añade "NOMBRE_RELACION." antes del nombre para desambiguar.
29
Estructura de la sentencia SELECT
- Nombres de las tablas / vistas
- Condiciones de selección de filas
- Nombre de las columnas
- Condiciones de selección de grupo
- Nombres de columnas
SELECT A1, …, An
FROM T1, …, Tn
WHERE P
GROUP BY Ai1, …, Ain
HAVING Q
ORDER BY Aj1, …, Ajn
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
SQL
Sintaxis
• Verbo + cláusulas (obligatorias y opcionales)
• DIAGRAMA SINTÁCTICO
Ejemplos válidos
SELECT ALL col1,col2,col3 FROM mitabla;
SELECT col1,col2,col3 FROM mitabla;
SELECT DISTINCT col1 FROM mitabla;
SELECT col1,col2 FROM mitabla WHERE col2=0
SQL
select
• La orden select se usa para consultar la base de datos y recuperar datos que
cumplan el criterio que se especifique
• Formato:
• Select “column1”[,”column2”,etc] from “tablename” [where “condition”]
• Condiciones que se pueden usar:
• =, >, <, >=, <=, <>
• LIKE
• Ejemplo: select nombre, apellido, ciudad from listado where nombre LIKE ‘Je%’;
• % es un comodín que significa “cualquier carácter”
• Más ejemplos:
• select nombre, apellido from listado where apellido LIKE ‘%s’;
• select * from listado where nombre=‘Jesús’;
Columnas que se devolverán en los resultados
“*” implica Todas
SQL
Ejercicios
• Escribir órdenes select para:
1. Mostrar el nombre y la edad de todos los de la tabla
2. Mostrar el nombre, apellido y ciudad de todos los que no son de Palencia
3. Mostrar todas las columnas para todos los que son mayores de 40 años
4. Mostrar el nombre y apellido de todos cuyo apellido termina en “a”
5. Mostrar todas las columnas para todos los que su nombre es igual a “María”
6. Mostrar todas las columnas para todos los que su nombre contiene “María”
nombre apellido id edad ciudad pais
Juan Juárez 99980 45 Palencia España
María Juárez 99982 25 Palencia España
Enrique Esteban 88232 32 Oporto Portugal
María Antonia Esteban 88233 32 Pontevedra España
Beatriz Hernández 98002 42 Córdoba España
Sebastián Suárez 92001 23 Guadalajara España
Gustavo García 22322 35 Badajoz España
María Antonia Martínez 32326 52 Toledo España
Erica Zamora 32327 60 Santander España
Leandro Boada 32380 22 Peñafiel España
Ernesto Clavel 32382 22 Gandía España
PERSONAS
SQL
Ejercicio
• Tabla empinfo
• Primero averiguar el resultado y luego ejecutarlo
• select nombre, apellido, ciudad from empinfo;
• select apellido, ciudad, edad from empinfo where edad > 30;
• select nombre, apellido, ciudad, pais from empinfo where nombre LIKE 'J%';
• select * from empinfo;
• select nombre, apellido from empinfo where apellido LIKE '%z';
• select nombre, apellido, edad from empinfo where apellido LIKE '%áre%';
• select * from empinfo where nombre = 'Enrique';
nombre apellido id edad ciudad pais
Juan Juárez 99980 45 Palencia España
María Juárez 99982 25 Palencia España
Enrique Esteban 88232 32 Oporto Portugal
María Antonia Esteban 88233 32 Pontevedra España
Beatriz Hernández 98002 42 Córdoba España
Sebastián Suárez 92001 23 Guadalajara España
Gustavo García 22322 35 Badajoz España
María Antonia Martínez 32326 52 Toledo España
Erica Zamora 32327 60 Santander España
Leandro Boada 32380 22 Peñafiel España
Ernesto Clavel 32382 22 Gandía España

Más contenido relacionado

Similar a CONSULTAS_AVANZADAS_SQL.pptx

Similar a CONSULTAS_AVANZADAS_SQL.pptx (20)

Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Sql Server
Sql ServerSql Server
Sql Server
 
Celis perez, carlos
Celis perez, carlosCelis perez, carlos
Celis perez, carlos
 
Joins
Joins Joins
Joins
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docx
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Intro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptxIntro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptx
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Ejercicio sql tienda informatica
Ejercicio sql tienda informaticaEjercicio sql tienda informatica
Ejercicio sql tienda informatica
 
informacion sobre blog datos y sql
informacion sobre blog datos y sqlinformacion sobre blog datos y sql
informacion sobre blog datos y sql
 
Presentacio sql ok
Presentacio sql okPresentacio sql ok
Presentacio sql ok
 
MYSQL DDL DML.pdf
MYSQL DDL DML.pdfMYSQL DDL DML.pdf
MYSQL DDL DML.pdf
 
Primeros Pasos Aplicacion Java conexión BD Mysql
Primeros Pasos Aplicacion Java conexión BD MysqlPrimeros Pasos Aplicacion Java conexión BD Mysql
Primeros Pasos Aplicacion Java conexión BD Mysql
 
Teoria de sql y ejercicios
Teoria de sql y ejerciciosTeoria de sql y ejercicios
Teoria de sql y ejercicios
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 
Practica5
Practica5Practica5
Practica5
 
Whirlpower
WhirlpowerWhirlpower
Whirlpower
 

Último

TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Cuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfCuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfBrandonsanchezdoming
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 

Último (20)

Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Cuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfCuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 

CONSULTAS_AVANZADAS_SQL.pptx

  • 1. CONSULTAS AVANZADAS SQL UNIDAD 1. MANIPULACIÓN AVANZADA DE DATOS
  • 2. UNIDAD II. ARQUITECTURA DE LA INFORMACIÓN
  • 3. JOINS • El propósito del JOIN es unir información de diferentes tablas, para no tener que repetir datos en diferentes tablas.
  • 4. INNER JOIN SELECT * FROM tabla1 INNER JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1
  • 5. EJEMPLO INNER JOIN SELECT nombre AS Nom, apellido1 AS AP1, departamento AS DEP FROM personas P INNER JOIN departamentos D WHERE P.dep = D.dep PERSONAS DEPARTAMENTOS
  • 6. LEFT JOIN SELECT * FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna1 = tabla2.columna1
  • 7. EJEMPLO LEFT JOIN SELECT pers.presonas.nombre, apellido1, departamento FROM personas LEFT JOIN departamentos ON personas.dep = departamentos.dep PERSONAS DEPARTAMENTOS
  • 8. RIGHT JOIN SELECT * FROM tabla1 RIGHT JOIN tabla2 ON tabla1.columna1 = tabla2.columna1
  • 9. EJEMPLO RIGHT JOIN SELECT pers.personas.nombre, pers.personas.apellido1, deps.departamentos.departamento FROM personas RIGHT JOIN departamentos ON personas.dep = departamentos.dep PERSONAS DEPARTAMENTOS
  • 10. FULL JOIN SELECT * FROM tabla1 FULL JOIN tabla2 ON tabla1.columna1 = tabla2.columna1
  • 11. EJEMPLO FULL JOIN SELECT nombre, apellido1, departamento FROM personas FULL JOIN departamentos PERSONAS DEPARTAMENTOS
  • 12. EJERCICIO EN CLASE • Teniendo en cuenta las tablas anteriores: 1. Sacar Una relación completa de los científicos asignados a cada proyecto. Mostrar DNI, Nombre del científico, Identificador del proyecto y nombre del proyecto 2. Obtener el número de proyectos al que está asignado cada científico (mostrar el DNI y el nombre) 3. Obtener el número de científicos asignados a cada proyecto (mostrar el identificador de proyecto y el nombre del proyecto) 4. Obtener el número de horas de dedicación de cada científico 5. Obtener el DNI y nombre de los científicos que se dedican a más de un proyecto y cuya dedicación media a cada proyecto sea superior a las 80hrs CIENTÍFICOS PK DNI varchar(10) Nomcmp varchar(200) ASIGNADO_A FKC Cientifico varchar(10) FKP Proyecto varchar(5) PROYECTO PK Id varchar(5) Nombre Horas varchar(200) int
  • 13. Sacar Una relación completa de los científicos asignados a cada proyecto. Mostrar DNI, Nombre del científico, Identificador del proyecto y nombre del proyecto. SELECT DNI, nombrec, idp, nombrep FROM (CIENTIFICOS C INNER JOIN ASIGNADO_A A INNER JOIN PROYECTOS P ON A.proyecto = p.idp) WHERE C.DNI = A.cientifico
  • 14. Obtener el número de proyectos al que está asignado cada científico (mostrar el DNI y el nombre) SELECT DNI, nombrec, COUNT(proyecto) FROM CIENTIFICOS LEFT JOIN ASIGNADO_A ON CIENTIFICOS.DNI = ASIGNADO_A.cientifico GROUP BY DNI
  • 15. Obtener el número de científicos asignados a cada proyecto (mostrar el identificador de proyecto y el nombre del proyecto) SELECT idp, nombrep, COUNT(proyecto) FROM PROYECTOS LEFT JOIN ASIGNADO_A ON PROYECTOS.idp = ASIGNADO_A.Proyecto GROUP BY idp
  • 16. Obtener el número de horas de dedicación de cada científico SELECT DNI, nombrec, SUM(Horas) FROM CIENTIFICOS C LEFT JOIN (ASIGNADO_A A INNER JOIN PROYECTOS P ON A.proyecto = P.idp) ON C.DNI = A.cientifico GROUP BY DNI
  • 17. Obtener el DNI y nombre de los científicos que se dedican a más de un proyecto y cuya dedicación media a cada proyecto sea superior a las 80hrs SELECT DNI, nombrec FROM CIENTIFICOS C WHERE 1 <(SELECT COUNT(*) FROM ASIGNADO_A A WHERE A.cientifico = C.DNI)AND 80 <(SELECT AVG(horas)FROM PROYECTOS INNER JOIN ASIGNADO_A ON PROYECTOS.idp = ASIGNADO_A.proyecto WHERE cientifico = C.DNI)
  • 18. TAREA • Teniendo en cuenta las tablas anteriores: 1. Obtener los nombres de los productos de la tienda. 2. Obtener los nombres y los precios de los productos de la tienda. 3. Obtener el nombre de los productos cuyo precio sea mayor a $200. 4. Obtener todos los datos de los artículos cuyo precio esté entre los $60 y $120 (ambas cantidades incluidas). 5. Obtener el nombre y el precio en dólares (es decir, el precio en pesos multiplicado por 18.60). 6. Seleccionar el precio medio de todos los productos. 7. Obtener el precio medio de los artículos cuyo código de fabricante sea 2. 8. Obtener el número de artículos cuyo código de fabricante sea 2. 9. Obtener el nombre y precio de los artículos cuyo precio sea mayor o igual a $180. 10. Obtener un listado completo de artículos, incluyendo por cada artículo los datos del artículo y de su fabricante. FABRICANTES PK Codigo Int Nombre_fab varchar(100) ARTICULOS PK Id Int FKP Nombre Precio Fabricante varchar(100) decimal(12,2) Int
  • 19. TAREA • Teniendo en cuenta las tablas anteriores: 11. Obtener un listado de artículos, incluyendo el nombre del artículo, su precio y el nombre de su fabricante. 12. Obtener el precio medio d ellos productos de cada fabricante, mostrando el nombre del fabricante. 13. Obtener el precio medio d ellos productos de cada fabricante, mostrando el código del fabricante. 14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o igual a $150. 15. Obtener el nombre y precio de los artículos más caros de cada proveedor. 16. Obtener una lista con el nombre y precio de los artículos más caros de cada proveedor (incluyendo el nombre del proveedor). 17. Añadir un nuevo producto: Bocinad de $120 del fabricante 5. 18. Cambiar el nombre del producto 8 a “Toshiba 2012”. 19. Aplicar el 15% de descuento a todos los productos. 20. Aplicar un descuento del 5% a los productos que estén entre los $50 y $100. FABRICANTES PK Codigo Int Nombre_fab varchar(100) ARTICULOS PK Id Int FKP Nombre Precio Fabricante varchar(100) decimal(12,2) Int
  • 20. Obtener un listado de artículos, incluyendo el nombre del artículo, su precio y el nombre de su fabricante. SELECT * FROM ARTICULOS, FABRICANTES WHERE ARTICULOS. Fabricante = FABRICANTES. Codigo SELECT * FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo Obtener el precio medio de los productos de cada fabricante, mostrando el nombre del fabricante. SELECT AVG(Precio),FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTE ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre Obtener el precio medio de los productos de cada fabricante, mostrando el código del fabricante. SELECT AVG(Precio), Fabricante FROM ARTICULOS GROUP BY Fabricante Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o igual a $150. SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre HAVING AVG(Precio) >=150 Obtener el nombre y precio de los artículos más caros de cada proveedor. SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F ON A.Fabricante = F.Codigo AND A.Precio = (SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo)
  • 21. Obtener una lista con el nombre y precio de los artículos más caros de cada proveedor (incluyendo el nombre del proveedor). SELECT A.Nombre, A.Precio, F. Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F ON A.Fabricante = F.Codigo AND A.Precio = ( SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo) Añadir un nuevo producto: Bocinad de $120 del fabricante 5. INSERT INTO ARTICULOS (Nombre, Precio, Fabricante) VALUES (‘ALTAVOCES’, 70, 2) Cambiar el nombre del producto 8 a “Toshiba 2012”. UPDATE ARTICULOS SET Nombre= ‘Toshiba 2012’ WHERE Codigo = 8 Aplicar el 15% de descuento a todos los productos. UPDATE ARTICULOS SET Precio = Precio – (Precio * .15) Aplicar un descuento del 5% a los productos que estén entre los $50 y $100. UPDATE ARTICULOS SET Precio = Precio – (Precio * .05) WHERE Precio BETWEEN 50 AND 100
  • 22.
  • 23. 27 Estructura básica de la sentencia SELECT • Consta de tres cláusulas: • SELECT • La lista de los atributos que se incluirán en el resultado de una consulta. • FROM • Especifica las relaciones que se van a usar como origen en el proceso de la consulta. • WHERE • Especifica la condición de filtro sobre las tuplas en términos de los atributos de las relaciones de la cláusula FROM.
  • 24. 28 Estructura básica de la sentencia SELECT • Una consulta SQL tiene la forma: SELECT A1, ..., An /* Lista de atributos */ FROM R1, ..., Rm /* Lista de relaciones. A veces opcional */ WHERE P; /* Condición. Cláusula opcional */ • Es posible que exista el mismo nombre de atributo en dos relaciones distintas. • Se añade "NOMBRE_RELACION." antes del nombre para desambiguar.
  • 25. 29 Estructura de la sentencia SELECT - Nombres de las tablas / vistas - Condiciones de selección de filas - Nombre de las columnas - Condiciones de selección de grupo - Nombres de columnas SELECT A1, …, An FROM T1, …, Tn WHERE P GROUP BY Ai1, …, Ain HAVING Q ORDER BY Aj1, …, Ajn -Describe la salida deseada con: •Nombres de columnas •Expresiones aritméticas •Literales •Funciones escalares •Funciones de columna
  • 26. SQL Sintaxis • Verbo + cláusulas (obligatorias y opcionales) • DIAGRAMA SINTÁCTICO Ejemplos válidos SELECT ALL col1,col2,col3 FROM mitabla; SELECT col1,col2,col3 FROM mitabla; SELECT DISTINCT col1 FROM mitabla; SELECT col1,col2 FROM mitabla WHERE col2=0
  • 27. SQL select • La orden select se usa para consultar la base de datos y recuperar datos que cumplan el criterio que se especifique • Formato: • Select “column1”[,”column2”,etc] from “tablename” [where “condition”] • Condiciones que se pueden usar: • =, >, <, >=, <=, <> • LIKE • Ejemplo: select nombre, apellido, ciudad from listado where nombre LIKE ‘Je%’; • % es un comodín que significa “cualquier carácter” • Más ejemplos: • select nombre, apellido from listado where apellido LIKE ‘%s’; • select * from listado where nombre=‘Jesús’; Columnas que se devolverán en los resultados “*” implica Todas
  • 28. SQL Ejercicios • Escribir órdenes select para: 1. Mostrar el nombre y la edad de todos los de la tabla 2. Mostrar el nombre, apellido y ciudad de todos los que no son de Palencia 3. Mostrar todas las columnas para todos los que son mayores de 40 años 4. Mostrar el nombre y apellido de todos cuyo apellido termina en “a” 5. Mostrar todas las columnas para todos los que su nombre es igual a “María” 6. Mostrar todas las columnas para todos los que su nombre contiene “María” nombre apellido id edad ciudad pais Juan Juárez 99980 45 Palencia España María Juárez 99982 25 Palencia España Enrique Esteban 88232 32 Oporto Portugal María Antonia Esteban 88233 32 Pontevedra España Beatriz Hernández 98002 42 Córdoba España Sebastián Suárez 92001 23 Guadalajara España Gustavo García 22322 35 Badajoz España María Antonia Martínez 32326 52 Toledo España Erica Zamora 32327 60 Santander España Leandro Boada 32380 22 Peñafiel España Ernesto Clavel 32382 22 Gandía España PERSONAS
  • 29. SQL Ejercicio • Tabla empinfo • Primero averiguar el resultado y luego ejecutarlo • select nombre, apellido, ciudad from empinfo; • select apellido, ciudad, edad from empinfo where edad > 30; • select nombre, apellido, ciudad, pais from empinfo where nombre LIKE 'J%'; • select * from empinfo; • select nombre, apellido from empinfo where apellido LIKE '%z'; • select nombre, apellido, edad from empinfo where apellido LIKE '%áre%'; • select * from empinfo where nombre = 'Enrique'; nombre apellido id edad ciudad pais Juan Juárez 99980 45 Palencia España María Juárez 99982 25 Palencia España Enrique Esteban 88232 32 Oporto Portugal María Antonia Esteban 88233 32 Pontevedra España Beatriz Hernández 98002 42 Córdoba España Sebastián Suárez 92001 23 Guadalajara España Gustavo García 22322 35 Badajoz España María Antonia Martínez 32326 52 Toledo España Erica Zamora 32327 60 Santander España Leandro Boada 32380 22 Peñafiel España Ernesto Clavel 32382 22 Gandía España

Notas del editor

  1. La sentencia SQL JOIN permite consultar datos de 2 o más tablas.
  2. La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.
  3. La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.
  4. La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la segunda tabla, incluso aunque no cumplan la condición.
  5. La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la segunda tabla, incluso aunque no cumplan la condición.
  6. La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT.