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

La actualidad más candente

La actualidad más candente (20)

İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Bases De Datos En Excel
Bases De Datos En ExcelBases De Datos En Excel
Bases De Datos En Excel
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
 
Metodos en java
Metodos en javaMetodos en java
Metodos en java
 
Introduction To Msbi By Yasir
Introduction To Msbi By YasirIntroduction To Msbi By Yasir
Introduction To Msbi By Yasir
 
Heap sort
Heap sortHeap sort
Heap sort
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Integracion de Vistas
Integracion de VistasIntegracion de Vistas
Integracion de Vistas
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Sql select
Sql select Sql select
Sql select
 
Arboles
ArbolesArboles
Arboles
 
Comandos ddl
Comandos ddlComandos ddl
Comandos ddl
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySql
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de prueba
 
1. DBA
1. DBA1. DBA
1. DBA
 

Similar a CONSULTAS AVANZADAS SQL.pptx

Similar a CONSULTAS AVANZADAS SQL.pptx (20)

Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Sql ejercicios resueltos
Sql ejercicios resueltosSql ejercicios resueltos
Sql ejercicios resueltos
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
La Tienda de Informática.pdf
La Tienda de Informática.pdfLa Tienda de Informática.pdf
La Tienda de Informática.pdf
 
EJECICIO DE BASE DE DATOS TIENDA SQL
EJECICIO DE BASE DE DATOS TIENDA SQLEJECICIO DE BASE DE DATOS TIENDA SQL
EJECICIO DE BASE DE DATOS TIENDA SQL
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
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
 

Último

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
 
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
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
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
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
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
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
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
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
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
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 

Último (20)

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
 
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
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
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...
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
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
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
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
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
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
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 

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.