Transact SQL Fundamental
-
Upload
julian-castiblanco-p -
Category
Technology
-
view
1.421 -
download
0
description
Transcript of Transact SQL Fundamental
Julián Castiblanco P.http://julycastiblanco.blogspot.com/
MCT-MCITP-MCTS SQL Server 2008/2005
Líder ITPros-DC
SESIÓN 4- deepen queries
• Sentencia Where
• Formateo de resultados
• Agrupación de datos y resumen
• Funciones de clasificación
• Sentencia Join
Agenda Tercera Sesión
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)
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
Sentencia - WHERE
SELECT [FirstName]FROM [dbo].[Employees]WHERE [FirstName] LIKE '%a%'
SELECT [FirstName]FROM [dbo].[Employees]WHERE [FirstName] LIKE '_a%'
SELECT DISTINCT ProductName,[Discount]
FROM [dbo].[Order Details] aINNER JOIN dbo.Products bON a.[ProductID]=b.[ProductID]WHERE ProductName in ('Alice Mutton','Boston Crab
Meat')OR [Discount]>0.25ORDER BY [Discount] DESC
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]FROM [Northwind].[dbo].[Customers]ORDER BY [CompanyName] DESC
SELECT [CustomerID],[CompanyName],[ContactName]FROM [Northwind].[dbo].[Customers]ORDER BY [CompanyName]
Formateo de Resultados
• DISCTINCT: Esta función permite eliminar los registro duplicados en una consulta.
SELECT DISTINCT ProductName,[Discount]
FROM [dbo].[Order Details] aINNER JOIN dbo.Products bON a.[ProductID]=b.[ProductID]ORDER BY ProductName
SELECT ProductName,[Discount]
FROM [dbo].[Order Details] aINNER JOIN dbo.Products bON a.[ProductID]=b.[ProductID]ORDER BY ProductName
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 1Más caracteres fijos.
Formateo de Resultados
http://msdn.microsoft.com/en-us/library/ms174318.aspx
Funciones de caracteres que
pueden ser utilizadas son: ACSII, NCHAR, CHAR, PATINDEX,
SPACE, STR, DIFFERENCE,
REPLACE, STUFF, LEFT, REPLICATE, SUBSTRING, LEN,
REVERSE, UNICODE, LOWER, RIGHT, UPPER, LTRIM,
RTRIM
Funciones de Tiempo:
SYSDATETIME, GETDATE,
GETUTCDATE, DATENAME,
DATEPART, DAY, MONTH, YEAR,
DATEDIFF, DATEADD, ISDATE
Funciones de Seguridad:
CURRENT_USER, SESSION_USER,
SUSER_ID, IS_MEMBER, PERMISIONS,
SCHEMA_NAME, USER_NAME
Funciones Matemáticas: ABS,
ACOS, ASIN, DEGREES, EXP, FLOOR, LOG,
LOG10, PI, POWER, RADIANS, RAND,
ROUND, SIGN, SIN, SQRT, SQUARE,
TAN.
Agrupación de resultados
http://msdn.microsoft.com/en-us/library/ms173454.aspx
SELECT b.orderid,SUM((a.UnitPrice*Quantity)*(1-Discount)) as CostBillFROM [dbo].[Order Details] aINNER JOIN dbo.Orders bON a.orderid=b.orderidGROUP BY b.orderid
SELECT b.orderid,SUM((a.UnitPrice*Quantity)*(1-Discount)) as CostBillFROM [dbo].[Order Details] aINNER JOIN dbo.Orders bON a.orderid=b.orderidGROUP BY b.orderidHAVING SUM((a.UnitPrice*Quantity)*(1-Discount))>10000
Funciones de Clasificación
http://msdn.microsoft.com/en-us/library/ms173454.aspx
SELECT TOP 10 [ProductID],[ProductName],[UnitPrice],RANK() OVER ( ORDER BY
[UnitPrice]) PriceRankingFROM [dbo].[Products]
SELECT CategoryName,[ProductName],[UnitPrice],ROW_NUMBER() OVER (PARTITION BY CategoryNameORDER BY [UnitPrice]) PriceRanking
FROM [dbo].[Products] AS A INNER JOIN dbo.Categories AS BON A.CategoryID=B.CategoryIDWHERE [UnitPrice]>20 AND [UnitPrice]<=40
Subconsultas
• Consultas anidadas dentro de un SELECT, INSERT, UPDATE o DELETE• Puede ser utilizada en cualquier expresión que lo necesite.
Sentencia – EXISTS
• Devuelve los registros solo si existen en un resultset anterior..
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
Inserción de datos
Actualización de datos
Actualización de datos
Eliminación de datos
Eliminación de datos
TRUNCATE TABLE se diferencia del comando DELETE por:
1. Utiliza menos espacio en el log transaccional2. Realiza menos bloqueos en la base de datos3. Ninguna página queda en la tabla
Bibliografía
• http://msdn.microsoft.com/en-us/library/aa933206(v=sql.80).aspx
• http://msdn.microsoft.com/en-us/library/ms189835.aspx
• http://msdn.microsoft.com/en-us/library/aa260662(v=sql.80).aspx
• http://msdn.microsoft.com/en-us/library/ms189575.aspx
• http://msdn.microsoft.com/en-us/library/ms189872.aspx
• http://msdn.microsoft.com/en-us/library/ms189305(v=sql.90).aspx
• Course 2778A, Writing Queries Using Microsoft® SQL Server® 2008 Transact-SQL