Sunteți pe pagina 1din 19

Módulo 3

Escribir consultas SELECT

Paco Márquez Urbina

pmarquez@sistemasunica.edu.pe

Escribir consultas SELECT

Descripción general del módulo

Escribir declaraciones SELECT simples Eliminando duplicados con DISTINCT

Usar alias de columna y tabla

Escribir expresiones CASE simples

Lección 1: Escribir declaraciones SELECT simples

Elementos de la declaración SELECT

Recuperando columnas de una tabla o vista Exhibiendo Columnas

Usar cálculos en la cláusula SELECT

Demostración: Escribir declaraciones SELECT simples

Elementos de la declaración SELECT

Clá usula Expresión SELECT <seleccionar lista> FROM <table de origen> WHERE <condición de b
Clá usula
Expresión
SELECT
<seleccionar lista>
FROM
<table de origen>
WHERE
<condición de b úsqueda>
GROUP BY
<grupo por lista>
ORDER BY
<orden por lista>

Recuperando columnas de una tabla o vista

Use SELECT con la lista de columnas para mostrar las columnas

Use FROM para especificar una tabla fuente o vista

Especifique los nombres de esquema y tabla

Delimite nombres si es necesario

Termine todas las declaraciones con un punto y coma

Keyword Expression SELECT <lista de campos> FROM <table de origen>
Keyword
Expression
SELECT
<lista de campos>
FROM
<table de origen>
SELECT companyname , country FROM Sales . Customers ;
SELECT companyname , country FROM Sales . Customers ;

SELECT companyname, country FROM Sales.Customers;

SELECT companyname , country FROM Sales . Customers ;

Exhibiendo Columnas

Mostrando todas las columnas ¡Esta no es una mejor práctica en el código de producción!

SELECT * FROM Sales.Customers;

SELECT * FROM Sales . Customers ;
SELECT * FROM Sales . Customers ;

Mostrar solo columnas especificadas

SELECT companyname , country FROM Sales . Customers ;
SELECT companyname , country FROM Sales . Customers ;

SELECT companyname, country FROM SELECT companyname , country Sales . Customers ; Sales.Customers;

SELECT companyname , country FROM Sales . Customers ;

Usar cálculos en la cláusula SELECT

Los cálculos son escalares, devolviendo un valor por fila

Operador Descripción + Sumar o concatenar - Restar * Multiplicar / Dividir % Residuo
Operador
Descripción
+
Sumar o concatenar
-
Restar
*
Multiplicar
/
Dividir
%
Residuo

Usar expresiones escalares en la cláusula SELECT

SELECT unitprice, qty, (unitprice * qty) FROM sales.orderdetails;
SELECT unitprice, qty, (unitprice * qty)
FROM sales.orderdetails;

Demostración: Escribir declaraciones SELECT simples

En esta demostración, verás cómo:

Use consultas SELECT simples

Lección 2: Eliminar duplicados con DISTINCT

Conjuntos de SQL y filas duplicadas

Comprender DISTINCT

Sintaxis SELECT DISTINCT

Demostración: eliminando duplicados con DISTINCT

Conjuntos de SQL y filas duplicadas

Comprender DISTINCT

Sintaxis SELECT DISTINCT

Conjuntos de SQL y filas duplicadas

Los resultados de la consulta SQL no son realmente relacionales

No se garantiza que las filas sean únicas, no hay orden garantizada

Incluso las filas únicas en una tabla fuente pueden devolver valores duplicados para algunas columnas

SELECT country FROM Sales . Customers ; country -------------- Argentina Argentina Austria Austria
SELECT country FROM Sales . Customers ; country -------------- Argentina Argentina Austria Austria

SELECT country

FROM Sales.Customers;

country

--------------

Argentina

Argentina

Austria

Austria

Belgium

Belgium

Comprender DISTINCT

Especifica que solo las filas únicas pueden aparecer en el conjunto de resultados

Elimina los duplicados según los resultados de la lista de columnas, no la tabla fuente Proporciona exclusividad en un conjunto de columnas seleccionadas

Elimina las filas ya operadas por las cláusulas WHERE, HAVING y GROUP BY

Algunas consultas pueden mejorar el rendimiento filtrando los duplicados antes de la ejecución de la

cláusula SELECT

Sintaxis SELECT DISTINCT

SELECT DISTINCT <column list> FROM <table or view> companyname country -------------- -------
SELECT DISTINCT <column list> FROM <table or view> companyname country -------------- -------
SELECT DISTINCT <column list> FROM <table or view> companyname country -------------- -------

SELECT DISTINCT <column list>

FROM <table or view>

companyname

country

-------------- -------

Customer AHPOP UK Customer AHXHT Mexico Customer AZJED Germany Customer BSVAR France Customer CCFIZ Poland

SELECT DISTINCT companyname , country FROM Sales . Customers ;
SELECT DISTINCT companyname , country FROM Sales . Customers ;

SELECT DISTINCT companyname, country FROM Sales.Customers;

SELECT DISTINCT companyname , country FROM Sales . Customers ;

Lección 3: Usar alias de columnas y tablas

Usar alias para referirse a columnas Usar alias para referirse a las tablas El impacto de la orden de procesamiento lógico en los alias

Usar alias para referirse a columnas

Alias de columna que usan AS

SELECT orderid , unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias
SELECT orderid , unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias
SELECT orderid , unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias

SELECT orderid, unitprice, qty AS quantity FROM Sales.OrderDetails;

SELECT orderid , unitprice , qty AS quantity FROM Sales . OrderDetails ;
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =
unitprice , qty AS quantity FROM Sales . OrderDetails ; • Alias de columna usando =

Alias de columna usando =

SELECT orderid, unitprice, quantity = qty

SELECT orderid , unitprice , quantity = qty

FROM Sales.OrderDetails;

FROM Sales . OrderDetails ;

Alias de columna accidentales

SELECT orderid , unitprice quantity FROM Sales . OrderDetails ;
SELECT orderid , unitprice quantity FROM Sales . OrderDetails ;

SELECT orderid, unitprice quantity FROM Sales.OrderDetails;

SELECT orderid , unitprice quantity FROM Sales . OrderDetails ;
SELECT orderid , unitprice quantity FROM Sales . OrderDetails ;

Usar alias para referirse a las tablas

Crear alias de tabla en la cláusula FROM Alias de tabla con AS

SELECT custid, orderdate FROM Sales.Orders AS SO;
SELECT custid, orderdate
FROM Sales.Orders AS SO;

Alias de tabla sin AS

SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla

SELECT custid, orderdate FROM Sales.Orders SO;

SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla en
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla en
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla en
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla en
SELECT custid , orderdate FROM Sales . Orders SO ; • Usar alias de tabla en

Usar alias de tabla en la cláusula SELECT

SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;

SELECT SO.custid, SO.orderdate FROM Sales.Orders AS SO;

SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;
SELECT SO.custid , SO.orderdate FROM Sales . Orders AS SO ;

El impacto de la orden de procesamiento lógico en

los alias

Cláusulas FROM, WHERE, y HAVING procesadas antes de SELECT

Los alias creados en la cláusula SELECT solo son visibles para ORDER BY Las expresiones con alias en la cláusula SELECT pueden repetirse en cualquier otro lugar de la

consulta

Lección 4: Escribir expresiones CASE simples

Usar expresiones CASE en cláusulas SELECT Formas de expresiones CASE

Usar expresiones CASE en cláusulas SELECT

Las expresiones T-SQL CASE devuelven un único valor (escalar)

Las expresiones CASE se pueden usar en:

SELECCIONAR lista de columnas

DONDE o TENER cláusulas

Cláusula ORDER BY

CASE devuelve el resultado de la expresión

No es un mecanismo de control de flujo

En la cláusula SELECT, CASE se comporta como una

columna calculada que requiere un alias

Formas de expresiones CASE

Dos formas de expresiones T-SQL CASE:

CASE simple

Compara un valor con una lista de valores posibles

Devuelve la primera coincidencia

Si no coincide, devuelve el valor encontrado en la

cláusula ELSE opcional

Si no coincide y no hay ELSE, devuelve NULL

CASE buscado

Evalúa un conjunto de predicados o expresiones lógicas

Devuelve el valor encontrado en la cláusula THEN que

coincide con la primera expresión que se evalúa como

TRUE