Está en la página 1de 32

Base de Datos

Subconsultas
y
Tipos de JOIN

Unidad 2: Creación de Base de datos y manipulación de Datos


Semana 6

Docente: Ing. Allende Tauma Renzo R.


CIP. 228248
Logro de la Unidad:
Importancia

• Al término de la unidad, el
Lograr que el trabajo con una Base de Datos nos sea
estudiante desarrolla consultas y
familiar.
sentencias de actualización de
Aprenderemos a crear, carga de datos, consultar y
bases de datos en el motor de base
modificar la información de las tablas de una base de
de datos SQL Server.
datos
Contenido general
• Subconjuntos: <,>, <=, >=, =, <>
• Cláusulas EXISTS, NOT EXISTS, IN
• Cláusula INNER JOIN
• Cláusulas LEFT JOIN, RIGHT JOIN, FULL JOIN
• Cláusulas UNION, UNION ALL
• Cláusula CROSS JOIN
• Funciones
Subconsultas
Subconjuntos simples: En Select

Es una consulta dentro de otra consulta, Se debe pensar como una tabla temporal. Las
simples devuelven un solo valor. Pueden estar en el Select
• Mostrar el código de cada orden y la cantidad de productos diferentes de cada una
de ellas. Hágalo sin un group by.

• Mostrar el código de cada orden, el nombre del cliente y el apellido del empleado
relacionado Hágalo sin inner joins.
Subconjuntos simples: <,>, <=, >=, =, <>

Las simples también pueden estar en el Where:


• Seleccione los empleados cuyo salario sea mayor que el promedio del salario
de todos

• Muestre los códigos de orden y costo de envío (Freight) tal que el costo de
envío sea menor que el mínimo costo de envío de las ordenes del empleado
con apellido “Davolio”
Subconsultas con grupo de datos:
IN, EXISTS, NOT EXISTS
• Mostrar los productos cuya categoría sean aquellas que empiezan con las letras “Con”

Las dos tienen el mismo resultado


Subconsultas con grupo de datos:
IN, EXISTS, NOT EXISTS

• Mostrar los diferentes empleados (nombres y apellidos) concatenados que en sus ordenes NO
tienen al producto “Tofu”

No funciona porque los <> “Tofu” elimina Detalles de Ordenes en vez de Ordenes completas
de la selección
Tipos de JOIN
Introducción
Los Joins combinan tablas horizontalmente, el Union verticalmente. El Cross multiplica las tablas.

Right Join
Introducción

Mostrando como conjuntos con sus respectivas sentencias SQL:

• Inner join, left join, right join, full join requieren especificar los atributos que conectan una
tabla con otra, haciendo la comparación al lado de la palabra ON
• Union requiere una consulta antes y otra despues. Su version con “all” muestra los duplicados
• Cross join no requiere atributos de comparación
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Mostrar el código de orden (OrderID), la fecha de la orden (OrderDate), el


nombre y apellido del empleado relacionado. Use los 4 joins y vea cuantos
registros son el resultado en cada caso. Analice y comente el porque.

824

830

826

832
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Mostrar el nombre de la categoría, su descripción, su stock


valorizado (Precio unitario x Unidades en stock), cantidad de
productos por categoría; todo agrupado por categoría. Debe filtrar
los datos para que solo se tome en cuenta proveedores de estos
países: USA, UK y Germany, adicionalmente solo se considerarán
categorías que su stock valorizado es mayor a cero y que la
cantidad de productos de la categoría sea menor igual a 6. Los
datos se ordenarán por el stock valorizado priorizando los más
valiosos.
INNER JOIN / LEFT, RIGHT, FULL JOIN

• Detecte y muestre el apellido y nombre de los Empleados que no tienen Ordenes


relacionadas usando Join.

• Muestre los códigos de orden y el concatenado del nombre con el apellido del empleado
de aquellos registros con fecha de envío mayor igual a 15/07/1996. Debe mostrar todas
las ordenes que cumplan con el filtro aún así no tengan asociado un empleado.
UNION / UNION ALL

Puede combinar verticalmente dos o más tablas, pero cada una debe tener en
el select el mismo tipo, orden y número de columnas.
• Una las columnas de País de la tabla de clientes y proveedores. Use UNION y
UNON ALL, vea la cantidad de registros de resultado, analice y comente

25

37
UNION / UNION ALL

• Una en una tabla el código y nombre de los empleados,


clientes y proveedores. Los Clientes y proveedores deben
ser del país USA. Anteceda una letra en el código de cada
tabla para diferenciar las identificaciones: C-cliente, P-
Proveedor, E-Empleado
CROSS JOIN

Hace una multiplicación de registros de dos tablas.


• Muestre por cada Proveedor todas las categorías. Ordene los resultados por
proveedor

• Muestre por cada Proveedor todas las categorías e indique por cada
combinación proveedor-categoría cuantos productos son de cada proveedor-
categoría. Ordene por proveedor y categoría
Funciones
MANEJO DE FECHAS

FUNCIONES DE FECHA Y HORA:


• SYSDATETIME(): Fecha y Hora del Servidor
• GETDATE(): Obtiene la fecha del Servidor

Fecha en partes
• DateName(): Nombre de parte de la fecha determinada
• DatePart(): Parte de la fecha
• Day(): El número de día del mes
• Month(): El número del mes
• Year(): El año de una fecha

Conversión de fechas y otros tipos de datos


• CONVERT ( data_type(length), Date, DateFormatCode ): Convierte formato de fechas
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

Añadir y obtener lapsos entre fechas.


• DateDiff(): Diferencia entre dos fechas
• DATEADD(): Añade partes de fecha a una fecha determinada
MANEJO DE FECHAS

PARTES DE UNA FECHA:


FUNCIONES ARITMETICAS
FUNCIONES ARITMETICAS
FUNCIONES ARITMETICAS - EJEMPLOS

Matemáticas:
FUNCIONES ARITMETICAS - EJEMPLOS

Redondeo:
FUNCIONES ARITMETICAS - EJEMPLOS

Trigonométricos:
FUNCIONES ARITMETICAS - EJEMPLOS

Trigonométricos:
FUNCIONES TEXTO - EJEMPLOS

• substring(cadena,inicio,longitud): devuelve una parte de la cadena especificada, desde el segundo


argumento y de tantos caracteres como el tercer argumento. Ejemplo:

select substring('Buenas tardes',8,6);


retorna "tardes".

• str(numero,longitud,cantidaddecimales): convierte números a caracteres; el primer parámetro indica el


valor, el segundo la longitud del resultado (mayor o igual a la parte entera del número más el signo) y el
tercero, la cantidad de decimales. El segundo y tercer argumento son opcionales.

Ejemplo: se convierte el valor numérico "123.456" a cadena, especificando 7 de longitud y 3 decimales:

select str(123.456,7,3); -- 123.456


select str(-123.456,7,3); -- -123.46
FUNCIONES TEXTO - EJEMPLOS

• len(cadena): retorna la longitud de la cadena enviada como argumento. "len" viene de length, que
significa longitud en inglés. Ejemplo:

select len('Hola’); --devuelve 4.

• left(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la


izquierda, primer caracter. Ejemplo:

select left('buenos dias',8); -- "buenos d".

• right(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la


derecha, último caracter. Ejemplo:

select right('buenos dias',8); -- "nos dias".


FUNCIONES TEXTO - EJEMPLOS

• lower(cadena): retornan la cadena con todos los caracteres en minúsculas. lower significa reducir en
inglés. Ejemplo:

select lower('HOLA ESTUDIAnte’); --"hola estudiante".

• upper(cadena): retornan la cadena con todos los caracteres en mayúsculas. Ejemplo:

select upper('HOLA ESTUDIAnte’);

• ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa recortar.
Ejemplo:

select ltrim(' Hola ‘); --"Hola ".

• rtrim(cadena): retorna la cadena con los espacios de la derecha eliminados. Ejemplo:

select rtrim(' Hola ‘); --" Hola".


FUNCIONES TEXTO - EJEMPLOS

• replace(cadena,cadenareemplazo,cadenareemplazar): retorna la cadena con todas las ocurrencias de la


subcadena reemplazo por la subcadena a reemplazar. Ejemplo:

select replace('xxx.sqlser.c','x','w’); --"www.sqlser.c'.

• reverse(cadena): devuelve la cadena invertida:

select reverse('Hola’); -- "aloH".

• replicate(cadena,cantidad): repite una cadena la cantidad de veces especificada. Ejemplo:

select replicate ('Hola',3); -- "HolaHolaHola";

• space(cantidad): retorna una cadena de espacios de longitud indicada por "cantidad" Ejemplo:

select 'Hola'+space(1)+'que tal’; --"Hola que tal".


Conclusiones:
• Para realizar consultas más complejas en una base de datos
se puede emplear SUBCONSULTAS.
• Los Left, Right, Full, Join me pueden ayudar a encontrar
registros incongruentes al validar si los valores de un
atributo existen en la tabla relacionada.
• Para hacer consultas con Join no requiere llaves foráneas,
solo saber los atributos de conexión entre las tablas.
• Hay funciones de fecha, número y texto que pueden ser de
utilidad

También podría gustarte