pmarquez@sistemasunica.edu.pe Descripción general del módulo
• Clasificación de datos • Filtrar datos con predicados • Filtrar datos con TOP y OFFSET-FETCH • Trabajando con Valores Desconocidos Lección 1: Clasificación de datos
• Uso de la cláusula ORDER BY
• Sintaxis de cláusula ORDER BY • Ejemplos de cláusula ORDER BY Uso de la cláusula ORDER BY
• ORDER BY ordena las filas en los resultados con
fines de presentación • Sin orden garantizado de filas sin ORDER BY • El uso de ORDER BY garantiza el orden de clasificación del resultado • Última cláusula para ser procesada lógicamente • Ordena todos los NULL juntos
• ORDER BY puede referirse a:
• Columnas por nombre, alias o posición ordinal (no recomendado) • Columnas que no forman parte de la lista SELECT • A menos que se especifique DISTINCT • Declarar orden de clasificación con ASC o DESC Sintaxis de cláusula ORDER BY
• Escribiendo ORDER BY usando nombres de
columna: SELECT <select list> FROM <table source> ORDER BY <column1_name>, <column2_name>;
• Escribiendo ORDEN usando alias de columna:
SELECT <column> AS <alias> FROM <table source> ORDER BY <alias>;
• Especificando el orden de clasificación en la
cláusula ORDER BY: SELECT <column> AS <alias> FROM <table source> ORDER BY <column_name|alias> ASC|DESC; Ejemplos de cláusula ORDER BY
• ORDER BY con nombres de columna:
SELECT orderid, custid, orderdate FROM Sales.Orders ORDER BY orderdate;
• ORDER BY con alias de columna:
SELECT orderid, custid, YEAR(orderdate) AS orderyear FROM Sales.Orders ORDER BY orderyear;
• ORDER BY con orden descendente:
SELECT orderid, custid, orderdate FROM Sales.Orders ORDER BY orderdate DESC; Lección 2: Filtrar datos con predicados
• Filtrar datos en la cláusula WHERE con predicados
• Sintaxis de la clausula WHERE Filtrar datos en la cláusula WHERE con predicados
• WHERE cláusulas usan predicados
• Debe expresarse como condiciones lógicas • Solo se aceptan las filas para las que el predicado se evalúa como VERDADERO • Valores de FALSO o DESCONOCIDO filtrados • La cláusula WHERE sigue a FROM, precede a otras cláusulas • No se pueden ver los alias declarados en la cláusula SELECT • Puede ser optimizado por SQL Server para usar índices • Datos filtrados del lado del servidor • Puede reducir el tráfico de red y el uso de la memoria del cliente Sintaxis de la clausula WHERE
• Filter rows for customers from Spain
SELECT contactname, country FROM Sales.Customers WHERE country = N'Spain';
• Filter rows for orders after July 1, 2007
SELECT orderid, orderdate FROM Sales.Orders WHERE orderdate > '20070101';
• Filter orders within a range of dates
SELECT orderid, custid, orderdate FROM Sales.Orders WHERE orderdate >= '20070101' AND orderdate < '20080101'; Lección 3: Filtrar datos con TOP y OFFSET-FETCH
• Filtrar en la cláusula SELECT usando la opción TOP
• Filtrar en la cláusula ORDER BY Usar OFFSET- FETCH • Sintaxis OFFSET-FETCH Filtrar en la cláusula SELECT usando la opción TOP
• TOP le permite limitar el número o porcentaje de filas
devueltas por una consulta • Funciona con la cláusula ORDER BY para limitar filas por orden de clasificación • Si la lista ORDER BY no es única, los resultados no son deterministas (no hay un solo conjunto de resultados correcto) • Modifique la lista ORDER BY para asegurar la exclusividad, o use TOP WITH TIES • Agregado a la cláusula SELECT: • SELECCIONAR TOP (N) | TOP (N) Porcentaje • Con el porcentaje, el número de filas redondeadas • SELECCIONAR TOP (N) CON LAZOS • Recuperar duplicados cuando corresponda (no determinista)
• TOP es propiedad de Microsoft SQL Server
Filtrar en la cláusula ORDER BY Usar OFFSET-FETCH
OFFSET-FETCH es una extensión de la cláusula
ORDER BY: • Permite filtrar un rango solicitado de filas • Depende de la cláusula ORDER BY • Proporciona un mecanismo para paginación a través de resultados • Especifique el número de filas para omitir, el número de filas para recuperar: ORDER BY <order_by_list> OFFSET <offset_value> ROW(S) FETCH FIRST|NEXT <fetch_value> ROW(S) ONLY • Nueva opción en SQL Server 2012 • Basado en el borrador del estándar SQL: 2011 • Proporciona más compatibilidad que TOP Sintaxis OFFSET-FETCH
• El valor OFFSET debe ser suministrado
• Puede ser cero si no se requiere saltar • La cláusula FETCH opcional permite devolver todas las filas que siguen al valor OFFSET • Enfoque del lenguaje natural al código: • FILA y FILAS intercambiables • PRIMERO y SIGUIENTE intercambiables • El valor OFFSET y el valor FETCH pueden ser constantes o expresiones, incluidas variables y parámetros OFFSET <offset_value> ROW|ROWS FETCH FIRST|NEXT <fetch_value> ROW|ROWS [ONLY] Lección 4: Trabajar con valores desconocidos
• Lógica de tres valores
• Manejo de NULL en Consultas Lógica de tres valores
• SQL Server usa NULL para marcar valores perdidos
• NULL puede ser "faltante pero aplicable" o "perdido pero inaplicable" • Segundo nombre del cliente: ¿No se proporciona o no tiene uno?
• Sin valores faltantes, las salidas de predicados son
VERDADERAS o FALSAS solamente (5> 2, 1 = 1) • Con valores perdidos, los resultados pueden ser VERDADERO, FALSO o DESCONOCIDO (NULO> 99, NULO = NULO) • Los predicados devuelven UNKNOWN cuando se compara el valor perdido con otro valor, incluido otro valor perdido Manejo de NULL en Consultas
• Diferentes componentes de SQL Server manejan NULL
de manera diferente • Los filtros de consulta (ON, WHERE, HAVING) filtran UNKNOWNs • Las restricciones de CHECK aceptan NECESIDADES • ORDER BY, DISTINCT trata NULLs como iguales • Prueba de NULL • Use IS NULL o IS NOT NULL en lugar de = NULL o <> NULL