0% encontró este documento útil (0 votos)
56 vistas17 páginas

Clase-09 - Subconsultas, Operadores - Set, Vistas

Las vistas son tablas virtuales que contienen datos seleccionados de otras tablas reales mediante consultas SELECT. Se pueden crear, modificar y eliminar vistas. Las vistas permiten simplificar consultas complejas y proporcionar una interfaz unificada para acceder a datos almacenados en varias tablas.

Cargado por

Andrea Albarrán
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas17 páginas

Clase-09 - Subconsultas, Operadores - Set, Vistas

Las vistas son tablas virtuales que contienen datos seleccionados de otras tablas reales mediante consultas SELECT. Se pueden crear, modificar y eliminar vistas. Las vistas permiten simplificar consultas complejas y proporcionar una interfaz unificada para acceder a datos almacenados en varias tablas.

Cargado por

Andrea Albarrán
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

Subconsultas

Mtra. Edith Andrea Hernández Blancas


Subconsultas
Son consultas dentro de otra consulta más externa o
dispuestas de forma anidada, y puedes colocarlas
en cualquier parte de un SELECT .

Una subconsulta tiene la misma sintaxis que una


sentencia SELECT normal exceptuando que aparece
encerrada entre paréntesis

No puede contener la cláusula ORDER BY, ni puede


ser la UNION de varias sentencias SELECT
Subconsultas
=====> Referencias externas. Es un nombre de una columna que esta en una
subconsulta.

SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos WHERE


rep = numemp)
FROM empleados;

=====>Anidar subconsultas. Una subconsulta aparece en la cláusula WHERE de


otra subconsulta que a su vez forma parte de otra consulta principal.

SELECT numemp, nombre


FROM empleados
WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie
FROM clientes WHERE nombre = 'Julia Antequera'))
Subconsultas bd Hospital
=====> Referencias externas. Mostrar los médicos y sus id de especialidad. Indicar
el nombre del medico y la especialidad

select m.nombre, m.apellido,


(select me.idMedico from medicoespecialidad me where
me.idMedico=m.idmedico) idmedico
from medico m;

=====>Anidar subconsultas. Muestra el medico (nombre y apellidos) y su


especialidadselect nombre, apellido, especialidad
from medico m, especialidad e
where m.idmedico=(select me.idMedico from medicoespecialidad me where
me.idEspecialidad=e.idespecialidad and me.idMedico=m.idMedico);
Subconsultas

====>Subconsulta en UPDATE

-- UPDATE Productos SET existencia=0 WHERE idProveedor IN(SELECT id


FROM Proveedor WHERE activo=0);

====> Subconsulta en DELETE

DELETE FROM Productos WHERE idProveedor IN(SELECT id FROM Proveedor


WHERE activo=0);
Operadores SET
(Conjunto)

Mtra. Edith Andrea Hernández Blancas


Operadores SET (Conjunto)

Combinan los resultados de dos o más consultas en un


único resultado.

Las consultas que contienen operadores SET (Conjunto) son


llamadas consultas compuestas (compound queries).
UNION
El operador UNION obtiene todas las filas seleccionadas por
ambas consultas.
Use el operador UNION para obtener todas las filas de
múltiples tablas y eliminar cualquier fila duplicada.
UNION
Normas a seguir

• El número de columnas y tipo de datos deben ser idénticos en


todas las sentencias SELECT usadas en las consultas. Los
nombres de las columnas no necesitan ser idénticas.
• La UNION opera sobre todas las columnas inicialmente
seleccionadas.
• Los valores NULOS no son ignorados durante la verificación de
duplicados
• El operador IN tiene una mayor precedencia que el operador
UNION
• Por defecto, el resultado es ordenado ascendentemente por la
primera columna de la cláusula SELECT
UNION ALL

El operador UNION ALL obtiene todas las filas de múltiples


consultas
UNION ALL

Normas a seguir

• Diferente a UNION, las filas duplicadas no son eliminadas y el


resultado no es ordenado por defecto.

• La palabra reservada DISTINCT no puede ser usada


Ejemplos UNION bd Hospital

=====> Union

select * from turno where estado=2


union
select * from turno where estado=1;

=====> Esta consulta da un error porque los campos deben de ser iguales. Y la
estructura de la tabla turno y paciente debe de ser iguales asi mismo los tipos de
datos.
select * from turno where estado=2
union
select * from paciente;
Ejemplos UNION bd Hospital

=====> Como los campos tienen los mismos tipos de datos, puede hacer la
union entre las dos tablas

select idturno from turno where estado=2


union
select idpaciente from paciente;

=====> union obtiene los registros y elimina las repeticiones de de esos resultados
de la consulta union all devuelve todo, no elimina las repeticiones.select * from
turno
union all
select * from turno
Vistas

Mtra. Edith Andrea Hernández Blancas


VISTAS
Una vista es una tabla virtual compuesta de un subconjunto de
tablas a partir de consultas SELECT a otras tablas.

====>crear una vista


CREATE [OR REPLACE] VIEW nombre_vista [column_list]
AS consulta_SELECT

====>Eliminar una vista


DROP VIEW [IF EXISTS] nombre_vista1 , nombre_vista2 ...;

====>Modificar una vista


ALTER VIEW nombre_vista [column_list]
AS consulta_SELECT
VISTAS
====>creando la vista_medicos vista con todas las filas y columnas de la
tabla medico.
CREATE VIEW vista_medicos AS
SELECT * FROM medico;

-- ver resultados de la vista_medicos


select * from vista_medicos;

=====> Crear vista 'vista_detalleMedico' que muestre el detalle de los medicos:


el medico (nombre y apellidos) y su especialidad
CREATE VIEW vista_detalleMedico AS
select nombre, apellido, especialidad
from medico m, especialidad e
where m.idmedico=(select me.idMedico from medicoespecialidad me where
me.idEspecialidad=e.idespecialidad and me.idMedico=m.idMedico);
VISTAS
====> -- Crear vista 'vista_detalleCitaPaciente' que muestre el detalle
de la cita del paciente:
-- Vincular las tablas necesarias para Mostrar el medico(nombre y
apellidos), fechaturno,
-- nombre del paciente, apelido del paciente, observacion del campo
turno, y todos los campos de turnopaciente
CREATE VIEW vista_detalleCitaPaciente AS
select concat(m.nombre,' ', m.apellido) as medico,
t.fechaTurno, p.nombre, p.apellido, t.observacion,
tp.idpaciente, tp.idturno, tp.idmedico
from paciente as p
inner join turnopaciente as tp
on tp.idpaciente=p.idpaciente
inner join turno as t
on tp.idturno=t.idturno
inner join medico as m
on m.idmedico=tp.idmedico;

También podría gustarte