Академический Документы
Профессиональный Документы
Культура Документы
1.
2.
3.
4.
USANDO TRANSACT-SQL
USANDO TRANSACT-SQL
17/03/2010
La instruccin SELECT
Clausula
SELECT
Descripcin
FROM
WHERE
ORDER BY
Ejemplos
SELECT Name, StandardCost, Color FROM Production.Product
SELECT * FROM Production.Product
USANDO TRANSACT-SQL
Consulta Multi-Tabla
PRCTICA 3.1: Ejecutar las siguientes
consultas y analizar sus diferencias.
SELECT ProductID
,Name
,Color
,StandardCost
,ListPrice
FROM Production.Product
SELECT ProductID
,Name
Agregando
,Color
informacin
,StandardCost
sobre el
,ListPrice
Modelo
,ProductModelId
,Name
FROM Production.Product
INNER JOIN Production.ProductModel
ON Production.Product.ProductModelID =
Production.ProductModel.ProductModelID
SQL Server - Programacin
SELECT ProductID
, Production.Product.Name
Falla
,Color
corregida
,StandardCost
,ListPrice
, Production.ProductModel.ProductModelID
, Production.ProductModel.Name
FROM Production.Product
INNER JOIN Production.ProductModel
ON Production.Product.ProductModelID =
Production.ProductModel.ProductModelID
SELECT Production.Product.ProductID
,Production.Product.Name AS Product
Nombre
,Production.Product.Color
completo
,Production.Product.StandardCost
,Production.Product.ListPrice
,Production.ProductModel.ProductModelId
,Production.ProductModel.Name AS Model
FROM Production.Product
INNER JOIN Production.ProductModel
ON Production.Product.ProductModelID =
Production.ProductModel.ProductModelID
USANDO TRANSACT-SQL
17/03/2010
Esquemas y Resolucin de
Nombres
Servidor
Base de datos
Esquema
Objeto
USANDO TRANSACT-SQL
Alias de Columnas
Ms fcil de entender
Nombre ms descriptivo
Compatibilidad hacia atrs
Nombre repetidos en consultas multi-tablas
Descripcin
Ejemplo
Column AS
Alias
La tcnica ms
legible.
Column Alias
La tcnica mas
comn
Alias = Column
No es comn
en T-SQL
USANDO TRANSACT-SQL
17/03/2010
2.
3.
4.
USANDO TRANSACT-SQL
Filtrando Registros
Existen dos maneras para limitar la cantidad de
registros resultantes de una consulta
WHERE revisa cada registro contra un criterio de
filtraje
TOP limita los registros de acuerdo a una cantidad de
registros
Ejemplos
SELECT Name, StandardCost, Color
FROM Production.Product
WHERE Color = Black
USANDO TRANSACT-SQL
17/03/2010
Operadores de Comparacin
Operadores
Operador LIKE
Operador
Comodn
Descripcin
Igual que
Descripcin
<> !=
No igual que
<
Menor que
>
Mayor que
[]
!<
No menor que
!>
No mayor que
[^]
<=
>=
LIKE
USANDO TRANSACT-SQL
Tabla de Pruebas
Lastname
Firstname
Position
Flintstone
Fred
Bronto Driver
Rubble
Barney
Accountant
Turley
Paul
Developer
Wood
Dan
DBA
Rockhead
Don
System
Administrator
Rockstone
Pauline
Manager
USE AdventureWorks2008
GO
CREATE TABLE dbo.SlateGravel
( LastName varchar(25) NULL
,FirstName varchar(25) NULL
,Position varchar(25) NULL);
INSERT SlateGravel
VALUES
(Flintstone, Fred, Bronto Driver)
,(Rubble, Barney, Accountant)
,(Turley, Paul, Developer)
,(Wood, Dan, DBA)
,(Rockhead, Don, System Administrator)
,(Rockstone, Pauline, Manager)
USANDO TRANSACT-SQL
10
17/03/2010
Resultado Esperado
Flintstone
Flintstone y Rockstone
Flintstone y Rockstone
Turley
USANDO TRANSACT-SQL
11
Resultado Esperado
Dan y Don
Dan y Don
SELECT * FROM SlateGravel
WHERE FirstName LIKE D*a-o+n
Dan
Dan
USANDO TRANSACT-SQL
12
17/03/2010
Comparaciones Lgicas
Descripcin
Ejemplo
AND
OR
NOT
NULL
NOT NULL
USANDO TRANSACT-SQL
13
PRACTICA 3.6b
La funcin IN
1.
1.
USANDO TRANSACT-SQL
14
17/03/2010
USANDO TRANSACT-SQL
15
Primero se
procesa el
despus
NOT
OR
SELECT Name
,ProductNumber
,ListPrice
,ProductSubCategoryID
FROM Production.Product
WHERE ProductSubCategoryID = 1
OR ProductSubCategoryID = 2
AND ListPrice > 500
AND ListPrice < 1000
despus
AND
2.
USANDO TRANSACT-SQL
16
17/03/2010
Orden de Registros
Se utiliza la clausula ORDER BY
despus de WHERE
Puede contener una o mas
columnas delimitadas por
comas
Se puede especificar la
direccin
2.
SELECT SalesOrderID, ProductID
,UnitPrice * OrderQty As
PurchasePrice
FROM Sales.SalesOrderDetail
order by UnitPrice * OrderQty
ASC (ascendente)
DESC (descendente)
Si no se especifica es
ascendente
Tambin se pueden escribir
campos calculados en lugar de
columnas
3.
SELECT SalesOrderID, ProductID
,UnitPrice * OrderQty As
PurchasePrice
FROM Sales.SalesOrderDetail
order by PurchasePrice
USANDO TRANSACT-SQL
17
TOP n
Se escribe despus de SELECT y n
indica que se mostrarn las
primeras n lneas segn el orden
establecido en la consulta
WITH TIES
Se escribe a continuacin de TOP
n y mostrar las lneas que
coincidan con la lnea n a
continuacin de las primeras n
lneas
2.
SELECT TOP 10 WITH TIES Name,
ListPrice
FROM Production.Product
ORDER BY ListPrice DESC
PERCENT
Muestra un porcentaje de la
cantidad de registros en la tabla en
lugar de una cantidad de lneas
3.
SELECT TOP 10 PERCENT Name,
ListPrice
FROM Production.Product
ORDER BY ListPrice DESC
USANDO TRANSACT-SQL
18
17/03/2010
La instruccin CASE
Es una expresin escalar que regresa un valor
basado en una lgica condicional
Se puede usar en SELECT, WHERE, HAVING,
ORDER BY y otros
Si no se escribe ELSE entonces por defecto se
tiene ELSE NULL
Dos formatos
Una funcin CASE simple compara una expresin con
un juego simple de expresiones para determinar el
resultado
Una funcin CASE de bsqueda evala una expresin
booleana para determinar el resultado
SQL Server - Programacin
USANDO TRANSACT-SQL
19
SELECT ProductNumber
,Category =
CASE ProductLine
WHEN 'R' THEN 'Road
WHEN 'M' THEN 'Mountain
WHEN 'T' THEN 'Touring
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END
,Name
FROM Production.Product
ORDER BY ProductNumber
SELECT ProductNumber
,Name
,'Price Range' = CASE
WHEN ListPrice = 0
THEN 'Mfg item - not for resale'
WHEN ListPrice < 50
THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250
THEN 'Under $250'
WHEN ListPrice>=250 and ListPrice < 1000
THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber
USANDO TRANSACT-SQL
20
10
17/03/2010
Ejercicios 1/3
Ejercicio 3.1:
Ejercicio 3.2:
Ejercicio 3.4:
USANDO TRANSACT-SQL
21
Ejercicios 2/3
Ejercicio 3.5:
3.
4.
5.
USANDO TRANSACT-SQL
22
11
17/03/2010
Ejercicios 3/3
Ejercicio 3.6: Obtenga las ordenes puestas en Junio 2004.
(Tablas:
SalesSalesOrderHeader)
Ejercicio 3.7: Obtenga las ordenes puestas en el ltimo da del mes. (Tablas: Sales.
SalesOrderHeader)
Ejercicio 3.8: Obtenga los empleados cuyo apellido (LastName) contienen la letra
a tres veces o ms. (Tablas: Person.Contact)
Ejercicio 3.9: Encuentre la instruccin SELECT que regresa para cada empleado el
sexo basado en su titulo (Title). Por ejemplo Ms. y Mrs. regresa Female; para
Mr regresa Male; y para cualquier otro caso (por ejemplo Dr.) regresar
Unknown. Mostrar el ID, Nombre, Apellido, Titulo y Sexo. (Tablas:
Person.Contact)
Ejercicio 3.10:
USANDO TRANSACT-SQL
23
12