2. Agenda Tercera Sesión
• Sentencia Where
• Formateo de resultados
• Agrupación de datos y resumen
• Funciones de clasificación
• Sentencia Join
3. Consultas simples – Filtros Básicos
SELECT Campos a traer
INTO Insertarlos en una nueva tabla
FROM Tabla Origen
WHERE Condición de filtro
GROUP BY Expresión Agrupación
HAVING Filtro de agrupación
ORDER BY Expresión de ordenamiento (ASC|DESC)
4. Sentencia - WHERE
• Se utilizan para limitar las filas que serán devueltas en una consultan.
Comparación: =,<,>,>=,<=,!=
Cadenas: LIKE, CONTAINTS,
FREETEXT
Logical: AND, OR, NOT, IN, ALL,
ANY, SOME, EXISTS
5. Sentencia - WHERE
SELECT DISTINCT ProductName
SELECT [FirstName] SELECT [FirstName] ,[Discount]
FROM [dbo].[Employees] FROM [dbo].[Employees] FROM [dbo].[Order Details] a
WHERE [FirstName] WHERE [FirstName] LIKE '_a%' INNER JOIN dbo.Products b
LIKE '%a%' ON a.[ProductID]=b.[ProductID]
WHERE ProductName in ('Alice Mutton','Boston Crab
Meat')
OR [Discount]>0.25
ORDER BY [Discount] DESC
6. Formateo de Resultados
• Ordenamiento de datos: Determina por cual columna va a ordenarse la información
devuelta. Puede ser ascendente o descendentemente.
SELECT [CustomerID],[CompanyName],[ContactName] SELECT [CustomerID] ,[CompanyName]
FROM [Northwind].[dbo].[Customers] ,[ContactName]
ORDER BY [CompanyName] FROM [Northwind].[dbo].[Customers]
ORDER BY [CompanyName] DESC
7. Formateo de Resultados
• DISCTINCT: Esta función permite eliminar los registro duplicados en una consulta.
SELECT ProductName SELECT DISTINCT ProductName
,[Discount] ,[Discount]
FROM [dbo].[Order Details] a FROM [dbo].[Order Details] a
INNER JOIN dbo.Products b INNER JOIN dbo.Products b
ON a.[ProductID]=b.[ProductID] ON a.[ProductID]=b.[ProductID]
ORDER BY ProductName ORDER BY ProductName
8. Formateo de Resultados
• Adicionalmente se pueden concatenar cadenas de carácter a través del operador + e
ingresar cadenas constantes , ingresando el texto entre comillas sencillas.
• Personalizar nombres de columnas de salida.
SELECT TOP 10 [EmployeeID]
,[TitleOfCourtesy]+ ' '+[FirstName]+ ' '+[LastName]+ '.' AS EmployeeFullName
FROM [dbo].[Employees]
3 columnas en 1
Más caracteres fijos.
9. Formateo de Resultados
Funciones de Funciones de Funciones de Funciones
caracteres que Tiempo: Seguridad: Matemáticas: ABS,
pueden ser utilizadas SYSDATETIME, CURRENT_USER, ACOS, ASIN,
son: ACSII, NCHAR, GETDATE, DEGREES, EXP,
CHAR, PATINDEX, SESSION_USER,
GETUTCDATE, FLOOR, LOG,
SPACE, STR, SUSER_ID,
DATENAME, LOG10, PI, POWER,
DIFFERENCE, DATEPART, DAY, IS_MEMBER, RADIANS, RAND,
REPLACE, STUFF, MONTH, YEAR, PERMISIONS, ROUND, SIGN, SIN,
LEFT, REPLICATE, DATEDIFF, SCHEMA_NAME, SQRT, SQUARE,
SUBSTRING, LEN, DATEADD, ISDATE USER_NAME TAN.
REVERSE, UNICODE,
LOWER, RIGHT,
UPPER, LTRIM,
RTRIM
http://msdn.microsoft.com/en-us/library/ms174318.aspx
10. Agrupación de resultados
SELECT b.orderid, SELECT b.orderid,
SUM((a.UnitPrice*Quantity)* SUM((a.UnitPrice*Quantity)*(1-Discount)) as CostBill
(1-Discount)) as CostBill FROM [dbo].[Order Details] a
FROM [dbo].[Order Details] a INNER JOIN dbo.Orders b
INNER JOIN dbo.Orders b ON a.orderid=b.orderid
ON a.orderid=b.orderid GROUP BY b.orderid
GROUP BY b.orderid HAVING SUM((a.UnitPrice*Quantity)*(1-Discount))>10000
http://msdn.microsoft.com/en-us/library/ms173454.aspx
11. Funciones de Clasificación
SELECT CategoryName
SELECT TOP 10 [ProductID] ,[ProductName]
,[ProductName] ,[UnitPrice]
,[UnitPrice] ,ROW_NUMBER() OVER (PARTITION BY CategoryName
,RANK() OVER ( ORDER BY ORDER BY [UnitPrice]) PriceRanking
[UnitPrice]) PriceRanking FROM [dbo].[Products] AS A
FROM [dbo].[Products] INNER JOIN dbo.Categories AS B
ON A.CategoryID=B.CategoryID
WHERE [UnitPrice]>20 AND [UnitPrice]<=40
http://msdn.microsoft.com/en-us/library/ms173454.aspx
12. Subconsultas
• Consultas anidadas dentro de un SELECT, INSERT, UPDATE o DELETE
• Puede ser utilizada en cualquier expresión que lo necesite.
13. Sentencia – EXISTS
• Devuelve los registros solo si existen en un resultset anterior..
14. Tablas Temporales
• Permiten almacenar información en tablas de sesión de usuario.
• Estas se almacenan en la base de datos TEMPDB
• Pueden ser locales o Globales
19. Eliminación de datos
TRUNCATE TABLE se diferencia del comando DELETE por:
1. Utiliza menos espacio en el log transaccional
2. Realiza menos bloqueos en la base de datos
3. Ninguna página queda en la tabla