Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Roque
Covarrubias
Base de datos para
aplicaciones
UNIDAD I. Manipulacin
avanzada de datos con SQL
Resultado de Aprendizaje
Operadores Especiales
Concatenacin
Select convert(nvarchar(2),EmployeeID) +
LastName + FirstName as Nombre from
Employees
MC Ricardo Israel Roque Covarrubias
Operadores Especiales
Literales
Es cualquier cosa que no sea ni
alias ni nombre de columna.
Existen dos formas para colocar
estos valores anexados a la Lista de
Seleccin.
Se puede colocar el mensaje entre
comillas simples () o Colocar el
nombre de la columna de salida
entre corchetes [ ] = valor de
salida.
Operadores Especiales
Literales
Select EmployeeID, LastName as Apellido,
FirstName as Nombre, 'ESTOS SON
EMPLEADOS' as Literal, [Otra Forma] =
'Esta es otra forma'
from Employees
Operadores Especiales
BETWEEN . AND
Este operador se utiliza en la clusula
where, para poder restringir una lista de
seleccin segn un rango de valores.
WHERE Nombre_Columna BETWEEN
parametro1 AND parametro2
NOTA: parametro1 (Mnimo) y parametro2 (Mximo)
Operadores Especiales
IN
Este operador permite verificar si el campo
se encuentra en una lista determinada o
subconsulta. Retorna verdadero si el
campos se encuentra en la lista.
WHERE campo_tabla IN (Lista de datos o
Subconsulta)
Select * from Products where UnitPrice in
(10,18,19)
Operadores Especiales
IN
Select title from Titles where title_id IN
(Select title_id FROM sales)
Operadores Especiales
LIKE
Esta palabra clave indica el patrn de ajuste
con una condicin de bsqueda. La
coincidencia de patrones significa analizar
una coincidencia entre una expresin y el
patrn especificado en la condicin de
bsqueda.
Columna_Tabla LIKE Patron_de_Busqueda
Operadores Especiales
LIKE
Los patrones son realmente expresiones de
cadena. Y van acompaados de caracteres
de comodn, que colocados en la expresin
toman un significado especial.
Operadores Especiales
LIKE
Carcter
Comodn
Descripcin
Ejemplo
[]
[^ ]
LIKE
Operadores Especiales
LIKE
SELECT LastName FROM Employees
WHERE LastName LIKE 'S%'
SELECT LastName FROM Employees
WHERE LastName LIKE '[A-M ]%
Select * from authors
where au_id LIKE '724-__-____'
Operadores Especiales
IS NULL
Realiza un testeo para valores que son
Nulos. Retorna True si la columna es NULL
sino retorna FALSE.
WHERE Columna IS NULL
Select * from Suppliers
where Region is null
Operadores Especiales
TOP n
Devuelve solamente las n primeras
filas de un conjunto de registros
resultantes.
Por ejemplo, si se quiere obtener los
nombres de los empleados de las tres
(3) primeras filas de la tabla
employees. Se escribe la siguiente
instruccin:
Operadores Especiales
Operadores Especiales
GETDATE
Regresa la fecha y hora actuales.
select getdate()
Operadores Especiales
DATEPART
Tambin se puede utilizar la clusula
DATEPART(YYYY,Campo)
DATEPART(MM,Campo) o
DATEPART(DD,Campo)
Operadores Especiales
DATEPART
Datepart
year
quarter
month
dayofyear
day
week
weekday
hour
minute
second
millisecon
d Covarrubias
MC Ricardo Israel Roque
Abbreviations
yy yyyy
qq q
mm, m
dy y
dd d
wk ww
dw
hh
mi, n
ss s
ms
Operadores Especiales
DATENAME
Regresa el nombre de una parte
especfica de una fecha
datename(partedefecha,fecha).
Los valores para "partedefecha"
pueden ser los mismos que se
explicaron anteriormente. Ejemplos:
select datename(month,getdate());
Operadores Especiales
ORDER BY
Es posible ordenar los registros
devueltos por la sentencia SELECT
aadiendo a la instruccin la clusula
ORDER BY, por defecto se ordenan en
forma ascendente.
TIES
OrderID,
Operadores Especiales
WITH TIES
Esta clusula permite incluir en la
seleccin, todos los registros que
tengan el mismo valor del campo por
el que se ordena, que el ltimo
registro retornado si el ltimo registro
retornado (es decir, el nmero n)
tiene un valor repetido en el registro
n+1
Funciones de agregado
Las funciones de agregado son:
SUM, AVG, COUNT, COUNT(*),
MAX y MIN
Estas funciones generan valores
de resumen en los conjuntos de
resultados de las consultas. Una
funcin de agregado (con la
excepcin de COUNT(*)) procesa
todos los valores seleccionados
en una nica columna para
MC Ricardo Israel Roque Covarrubias
generar un nico resultado.
Funciones de agregado
Funciones de agregado
Funcin de agregado
Resultado
COUNT([ALL | DISTINCT]
expression)
COUNT(*)
MAX(expression)
MIN(expression)
Funciones de agregado
Funciones de agregado
Funciones de agregado
Funciones de agregado
Funciones de agregado
Funciones de agregado
COUNT:
Agrupacin
GROUP BY: Esta sentencia no
permite dividir el resultado de
una lista de seleccin en grupos
ms pequeos.
Para poder listar otras columnas
con las funciones de agregacin
se debe utilizar esta sentencia.
Agrupacin
Agrupacin
Use Pubs
SELECT TYPE, pub_id,SUM(ytd_sales)
from titles
Group by TYPE, pub_id - - El orden de
evaluacin es
MC Ricardo Israel Roque Covarrubias
TYPE, pub_id
Agrupacin
GROUP
BY
HAVING:
Esta
clusula se utiliza si se desea
especificar cuales grupos van a
ser desplegados, o sea, restringir
los grupos que retornan.
SELECT columnas FROM Tablas
[WHERE OPCIONAL]
GROUP BY columnas_para_grupos
HAVING condiciones_para_grupos
Agrupacin
LA
MC Ricardo Israel Roque Covarrubias
Tablas combinadas
Tablas combinadas
Tablas combinadas
INNER JOIN:
Tabla Empleados
Tabla Salarios
SELECT
E.CODIGO,
E.NOMBRES,
E.APELLIDOS,
E.TELEFONO, E.DIRECCION, S.SECCION, S.CARGO,
S.SALARIO
FROM EMPLEADOS E INNER JOIN SALARIO S ON
S.CODIGO = E.CODIGO
Tablas combinadas
INNER JOIN:
LEFT JOIN
Tablas combinadas
RIGHT JOIN:
Tablas combinadas
Tablas combinadas
Tablas combinadas
RIGTH
JOIN:
Devuelve
los
registros de la combinacin de
ambas tablas en los cuales hay
coincidencia de acuerdo a la
expresin vinculante e incluye
adems a todos los registros de
la segunda tabla que no tengan
pareja en la primera.
Tablas combinadas
Tablas combinadas
UNION
Unir (UNION) las filas de dos
columnas de tablas diferentes sin
repetir ningn valor.
Subconsultas
USE northwind
SELECT T.orderid, T.customerid
FROM (SELECT orderid, customerid
orders ) AS T
MC Ricardo Israel Roque Covarrubias
FROM
Subconsultas
Subconsulta
expresin
como
una
USE pubs
SELECT title, price,( SELECT AVG(price) FROM
titles) AS promedio, price-(SELECT AVG(price)
FROM titles) AS diferencia FROM titles WHERE
type='popular_comp
MC Ricardo Israel Roque Covarrubias
Subconsultas
Subconsulta correlacionada
USE northwind
SELECT orderid, customeridFROM orders AS
or1 WHERE 20 < (SELECT quantity FROM
[order details] AS od WHERE or1.orderid =
od.orderid AND od.productid = 23)
MC Ricardo Israel Roque Covarrubias
Subconsultas
USE northwind
SELECT DISTINCT productid, quantity
FROM [order details] AS ord1
WHERE quantity = (SELECT MAX(quantity)
FROM [order details] AS ord2
WHERE ord1.productid = ord2.productid)
Subconsultas
USE pubs
SELECT DISTINCT t1.type FROM titles AS t1
WHERE t1.type IN(SELECT t2.type FROM titles
AS t2 WHERE t1.pub_id = t2.pub_id)
Subconsultas
USE pubs
SELECT t1.type, t1.title, t1.priceFROM titles AS
t1WHERE
t1.price
>
(
SELECT
AVG(t2.price)FROM titles AS t2WHERE t1.type
= t2.type )
Subconsultas
USE NorthWind
SELECT
lastname,
employeeid
FROM
employees AS e WHERE EXISTS ( SELECT *
FROM orders AS o WHERE e.employeeid =
o.employeeid AND o.orderdate = '5/9/1997' )
En este ejemplo se utiliza una subconsulta
correlacionada con un operador EXISTS en
la clusula WHERE para devolver una lista
de empleados que realizarn pedidos el da
MC Ricardo Israel Roque Covarrubias
5/9/1997
Vistas
Vistas
nombre
ciudad
gerente
capital
Clementi
Kuala Lumpur
Ahmed Abdalah
Clementi
Singapur
Ng Wee Hiong
3000000
Costa Este
Singapur
Sanjay Bata
1000000
Jaya
Kuala Lumpur
9500000
Lion
Singapur
Kevin Hsu
2500000
Monas
Jakarta
Agus Arianto
4000000
Wijaya
Jakarta
Oliver Ooi
1200000
sucursal_singapur
Diapositiva 55
nombre
ciudad
750000
gerente
sucursal
capital
Clementi
Singapur
Ng Wee Hiong
3000000
Costa Este
Singapur
Sanjay Bata
1000000
Lion
Singapur
Kevin Hsu
2500000
Vistas
Sintaxis
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
Vistas
Crear vista
CREATE VIEW Lista_productos AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=0
Borrar la vista
IF EXISTS (SELECT TABLE_NAME FROM
INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = Lista_productos)
Vistas
Sinnimos
Sinnimos
Ejemplo
USE Northwind
GO
IF OBJECT_ID('MyOrders', 'SN') IS NOT
NULL
DROP SYNONYM MyOrders;
GO
CREATE
SYNONYM
MyOrders
FOR
Orders
SELECT * FROM MyOrders