Avanzados de BD
versin 1.0
Autor/compilador ISC Ral Oramas Bustillos, 2011.
Tabla de Contenidos
1 -SQL Bsico............................................................................................................................5
Introduccin..........................................................................................................................5
Conceptos bsicos.................................................................................................................5
Instalacin de la Base de Datos NorthWind..........................................................................6
Consultas simples..................................................................................................................6
Sintaxis instruccin SELECT......................................................................................6
Reordenar columnas..............................................................................................................6
El comodin *.........................................................................................................................7
Eliminar renglones duplicados..............................................................................................7
Sintaxis instruccin DISTINCT...................................................................................7
La instruccin WHERE.........................................................................................................8
Sintaxis instruccin WHERE.......................................................................................8
Tipos de condiciones de bsqueda........................................................................................8
Operadores de comparacin..................................................................................................8
Operadores AND y OR.........................................................................................................9
Orden de Evaluacin...........................................................................................................10
Ordenando resultados con ORDER BY..............................................................................10
Sintaxis instruccin ORDER BY...............................................................................10
Insercin de Datos...............................................................................................................11
Sintaxis instruccin INSERT (1)................................................................................11
Sintaxis instruccin INSERT (2)................................................................................11
Agregar varios registros al mismo tiempo..........................................................................12
Sintaxis instruccin INSERT (3)...............................................................................12
Actualizacin de tablas........................................................................................................12
Sintaxis instruccin UPDATE...................................................................................12
Eliminar datos.....................................................................................................................12
Sintaxis instruccin DELETE....................................................................................12
Borrar todos los renglones...................................................................................................13
2 -SQL intermedio....................................................................................................................14
La clusula TOP...................................................................................................................14
Sintaxis instruccin TOP............................................................................................14
El Operador SQL LIKE ......................................................................................................14
Sintaxis instruccin LIKE..........................................................................................14
SQL Wildcards....................................................................................................................15
El Operador SQL IN............................................................................................................16
Sintaxis instruccin IN...............................................................................................16
El Operador SQL BETWEEN.............................................................................................17
Sintaxis instruccin BETWEEN................................................................................17
Renombrar el nombre de una tabla o columna....................................................................17
Sintaxis instruccin ALIAS.......................................................................................17
JOINS..................................................................................................................................18
Tipos de JOINS...................................................................................................................18
Inner Join.............................................................................................................................18
2
Left Join...............................................................................................................................19
Right Join............................................................................................................................19
Full Join...............................................................................................................................19
Union...................................................................................................................................19
Intersecciones......................................................................................................................20
Diferencia............................................................................................................................20
Subconsultas........................................................................................................................20
Select Into............................................................................................................................21
Crear una base de datos.......................................................................................................21
Sintaxis instruccin CREATE DATABASE..............................................................21
Crear una tabla....................................................................................................................21
Sintaxis instruccin CREATE TABLE......................................................................21
Constraints...........................................................................................................................21
Not Null...............................................................................................................................22
Unique.................................................................................................................................22
Unique con ALTER TABLE................................................................................................23
Borrar un constraint UNIQUE............................................................................................23
Primary Key.........................................................................................................................23
Primary Key con ALTER TABLE.......................................................................................23
Borrar PrimaryKey..............................................................................................................24
Foreign Key.........................................................................................................................24
Check...................................................................................................................................24
Default.................................................................................................................................24
Create Index........................................................................................................................24
Drop.....................................................................................................................................24
Alter.....................................................................................................................................24
Increment.............................................................................................................................24
Views...................................................................................................................................24
Dates....................................................................................................................................24
Nulls....................................................................................................................................25
IsNull()................................................................................................................................25
Tipos de datos en SQL Server.............................................................................................26
3 -Consultas resumen...............................................................................................................29
GROUP BY.........................................................................................................................29
Having.................................................................................................................................29
4 -Funciones de agregado en la lista de seleccin...................................................................30
La funcin AVG()................................................................................................................30
Sintaxis AVG()...........................................................................................................30
La funcin COUNT()..........................................................................................................30
Sintaxis COUNT().....................................................................................................30
La funcin FIRST().............................................................................................................31
Sintaxis FIRST()........................................................................................................31
La funcin LAST()..............................................................................................................31
La funcin MAX()..............................................................................................................31
Sintaxis MIN()...........................................................................................................31
La funcin MIN()................................................................................................................31
Sintaxis MIN()...........................................................................................................31
3
La funcin SUM()...............................................................................................................32
Sintaxis SUM()..........................................................................................................32
La funcin ucase()...............................................................................................................32
La funcin lcase()................................................................................................................32
La funcin mid()..................................................................................................................32
La funcin LEN()................................................................................................................32
Sintaxis LEN()...........................................................................................................32
La funcin ROUND()..........................................................................................................32
Sintaxis ROUND().....................................................................................................32
La funcin ISNUMERIC()..................................................................................................33
La funcin COALESCE()...................................................................................................33
La funcin now().................................................................................................................33
La funcin FORMAT()........................................................................................................33
Sintaxis FORMAT()...................................................................................................33
5 -Proyecto: la Base de Datos PUBs........................................................................................34
1 - SQL Bsico.
Introduccin.
SQL (Structured Query Language) es un lenguaje estndar para acceder y manipular Bases de
Datos Relacionales.
Una Base de Datos incluye a los datos ms las tablas, vistas, procedimientos almacenados, triggers,
consultas y a las reglas que el motor de Base de Datos utilizar para asegurar el resguardo de los
datos. Por motor de Base de Datos entendemos al componente principal de un Sistema
Manejadores de Bases de Datos(SMBD). Algunos SMBD populares:
MySQL
SQL Server
Oracle
PostGres
DB2
Conceptos bsicos.
Una sentencia o instruccin SQL es la accin que indica como se va a manipular la Base de
Datos.
Select
Insert
Delete
Update
Create Database
Alter Database
Create Table
Alter Table
Drop Table
Consultas simples
La instruccin SELECT se utiliza para extraer renglones y columnas de una tabla.
Sintaxis instruccin SELECT.
SELECT nombre_columna(s)
FROM nombre_tabla
Ejemplo: Mostrar apellidos y nombres de la tabla Empleados.
SELECT LastName, FirstName
FROM Employees
Ejemplo: Mostrar el nombre de la categora y su descripcin de la tabla Categorias.
SELECT CategoryName, Description
FROM Categories
Ejemplo: Mostrar el nombre de la compaia y el nombre del contacto de la tabla Clientes.
SELECT CompanyName, ContactName
FROM Customers
Reordenar columnas
El orden de las columnas en la instruccin SELECT ser el orden determinado de las columnas en el
resultado.
Ejemplo: Mostrar nombres y apellidos de la tabla Empleados.
SELECT FirstName, LastName
FROM Employees
Ejemplo: Mostrar el id del producto, el nombre del producto y el precio unitario de la tabla Productos.
SELECT ProductID, ProductName, UnitPrice
FROM Products
El comodin *
El asterisco es una forma rpida de recuperar todas las columnas de una tabla.
aparicin de las columnas depende de como est definido en la tabla.
El orden de
La instruccin WHERE.
La instruccin WHERE limita cuales renglones son extrados.
Sintaxis instruccin WHERE.
SELECT nombre_columna(s)FROM nombre_tabla
WHERE condicin
La condicin es una expresin booleana (verdadero,falso) que se aplica a cada rengln para
determinar el resultado que deber regresar.
Negacin (NOT)
Combinaciones (AND,OR)
Operadores de comparacin
Ejemplo: Mostrar la direccin, ciudad, regin y cdigo postal del empleado 'King'.
SELECT Address, City, Region, PostalCode
FROM Employees
WHERE lastName='King'
Nota: Para los textos tenemos que utilizar comillas simples. Los valores nmericos no se encierran
entre comillas simples.
Ejemplo: Mostrar el titulo, nombre y apellido de todos los representantes de ventas.
SELECT Title, FirstName, LastName
FROM Employees
WHERE Title = 'Sales Representative';
Ejemplo: Mostrar el titulo, nombre y apellido de todos los empleados excluyendo los representantes
de ventas.
SELECT Title, FirstName, LastName
FROM Employees
WHERE Title <> 'Sales Representative';
Ejemplo: Mostrar los productos con precio unitario mayor que $50.00.
SELECT *
FROM Products
WHERE UnitPrice > 60.00
Ejemplo: Mostrar los productos con precio unitario menor que $4.99.
SELECT *
FROM Products
WHERE UnitPrice < 4.99
Ejemplo: Mostrar el nombre y apellido de los empleados en el que su apellido sea mayor o igual que
la letra 'N'.
SELECT FirstName, LastName
FROM Employees
WHERE LastName >= 'N';
Operadores AND y OR
Los operadores AND y OR se utilizan para conectar dos o ms condiciones. Con el operador AND
regresa un resultado slo cuando todas las condiciones son verdaderos. El operador OR regresa
verdadero cuando alguna de las condiciones son verdaderos.
Ejemplo: Mostrar los productos que cuesten entre 10 y 20.
SELECT *
FROM Products
WHERE UnitPrice > 10.00 AND UnitPrice < 20.00
Ejemplo: Mostrar el nombre y apellidos de todos los representates de ventas que tienen el ttulo de
cortersia 'Mr.'
SELECT FirstName, LastName
FROM Employees
WHERE Title = 'Sales Representative' AND TitleOfCourtesy = 'Mr.'
Ejemplo: Mostrar los clientes que sean del pas de Mxico o Alemania o Canad.
SELECT *
FROM Customers
WHERE Country = 'Mexico' OR
'Canada'
Country = 'Germany' OR
Country =
Ejemplo: Mostrar el nombre, apellidos y ciudad de todos los empleados que son de 'Seattle' o
'Redmond'.
SELECT FirstName, LastName, City
FROM Employees
WHERE City = 'Seattle' OR City = 'Redmond'
Orden de Evaluacin.
Por default, SQL procesa el operador AND antes de procesar los operadores OR. Para ilustrar como
trabaja esto, vemos el siguiente ejemplo.
Ejemplo: Mostrar el nombre y apellido de los representates de ventas que son de 'Seattle' o
'Redmond'.
SELECT FirstName, LastName, Title
FROM Employees
WHERE City = 'Seattle' OR City = 'Redmond'
AND Title = 'Sales Representative'
Nota: Observa y analiza los resultados obtenidos.
Ejemplo: Mostrar el nombre y apellido de los representates de ventas que son de 'Seattle' o
'Redmond'.
SELECT FirstName, LastName, Title
FROM Employees
WHERE (City = 'Seattle' OR City = 'Redmond')
AND Title = 'Sales Representative'
Nota: Observa y analiza los resultados obtenidos.
10
Ejemplo: Seleccionar el titulo, nombre y apellidos de la tabla Empleados ordenados por titulo y
apellido.
SELECT Title, FirstName, LastName
FROM Employees
ORDER BY Title, LastName
Ejemplo: Mostrar el nombre y apellido de los empleados en el que su apellido sea mayor o igual que
la letra 'N' ordenados en forma descendente.
SELECT FirstName, LastName
FROM Employees
WHERE LastName >= 'N'
ORDER BY LastName DESC;
Insercin de Datos.
La instruccin INSERT permite agregar datos a una tabla. Es posible escribir la instruccin INSERT
en dos formatos. En el primer formato no necesitamos especificar el nombre de las columnas que
sern agregados, solo sus valores.
Sintaxis instruccin INSERT (1).
INSERT INTO nombre_tabla
VALUES(valor1,valor2,...,valorN)
En el segundo formato tenemos que especificar el nombre y valores de las columnas a insertar.
Sintaxis instruccin INSERT (2).
INSERT INTO nombre_tabla(columna1,columna2,...,columnaN)
VALUES(valor1,valor2,...,valorN)
Ejemplo: Utilizando el formato 1, agregar el proveedor 'Sinaloa Express' con telfono
'(667)7505816'.
INSERT INTO Shippers
VALUES('Sinaloa Express', '(667)7505816')
Ejemplo: Utilizando el formato 2, agregar el proveedor 'DHL' con telfono '1-800-222-7854'.
INSERT INTO Shippers(CompanyName,Phone)
VALUES('DHL', '1-800-222-7854')
11
Actualizacin de tablas
La instruccin UPDATE cambia los datos existentes en una tabla ya sea un slo rengln, un grupo de
renglones o toda la tabla.
Sintaxis instruccin UPDATE.
UPDATE nombre_tabla
SET columna1 = valor2,columna2 = valor,...,columnaN = valorN
WHERE alguna_columna = algun_valor
Nota: Si olvidamos especificar la instruccin WHERE, todos los registros de la tabla sern
actualizados.
Ejemplo: Actualizar el telefono del proveedor DHL con (667)7505816'.
UPDATE Shippers
SET Phone = '(667)7505816'
WHERE ShipperID = 5;
Ejemplo: Actualizar las unidades en el stock en 10 unidades para el proveedor con id igual a 1 en la
tabla Productos.
UPDATE Products
SET UnitsInStock = UnitsInStock + 10
WHERE SupplierID = 1;
Eliminar datos.
La instruccin DELETE se usa para eliminar datos de una tabla.
Sintaxis instruccin DELETE.
DELETE FROM nombre_tabla
WHERE alguna_columna = algun_valor
12
13
2 - SQL intermedio.
La clusula TOP.
La clusula TOP se utiliza para especificar el nmero de registros a regresar. La clusula TOP es
muy til cuando tenemos tablas grandes con miles de registros. Regresar todos los registros pueden
tener un impacto en el desempeo.
Nota: No todos los sistemas de BD soportan la clusula TOP.
Sintaxis instruccin TOP.
SELECT TOP numero|porcentanje nombre_columna(s)
FROM nombre_tabla;
Ejemplo: Seleccionar los dos primeros registros de la tabla Empleados.
SELECT TOP 2 *
FROM Employees;
Ejemplo: Seleccionar el 50% de losregistros de la tabla Empleados.
SELECT TOP 50 PERCENT *
FROM Employees;
Ejemplo: Mostrar el mayor en edad de los Empleados.
SELECT Top 1 *
FROM Employees
ORDER BY BirthDate
Ejemplo: Mostrar el menor en edad de los Empleados.
SELECT Top 1 *
FROM Employees
ORDER BY BirthDate DESC
14
SQL Wildcards
Los SQL Wildcards pueden ser utilizados para buscar datos en una base de datos y se utilizan con el
operador SQL Like.
Wildcars
Descripcin
Cualquier caracter.
[charlist]
[^charlist]
Ejemplo: Mostrar a todas los clientes que viven en una ciudad que inicia con la letra 'b'.
SELECT * FROM Customers
WHERE City LIKE 'b%'
El signo '%' pueden ser utilizado para definir wildcards (patrones de letras perdidos) antes o despus
del patrn.
Ejemplo: Mostrar los empleados cuyo apellido comienza con la letra 'D'
SELECT * FROM Employees
WHERE LastName LIKE 'D%'
Ejemplo: Mostrar a todos los empleados que viven en la ciudad que termina con la letra 's'.
SELECT * FROM Employees
WHERE City LIKE '%s'
Ejemplo: Mostrar los empleados cuyo apellido termina con la letra 'N'
SELECT * FROM Employees
WHERE LastName LIKE '%N'
Ejemplo: Mostrar a los clientes que viven en la ciudad y que contienen el patrn 'en'.
SELECT * FROM Customers
WHERE City LIKE '%en%'
Ejemplo: Mostrar a los clientes que no viven en la ciudad con el patrn 'en'.
SELECT * FROM Customers
WHERE City NOT LIKE '%en%'
Ejemplo: Mostrar los empleados cuyos nombres tengan como segunda letra la 'A'.
SELECT * FROM Employees
WHERE FirstName LIKE '_a'
15
Ejemplo: Mostrar los empleados cuyos nombres tengan como tercera letra 'N'.
SELECT * FROM Employees
WHERE FirstName LIKE '__n'
Ejemplo: Mostrar los empleados cuyos nombres comiencen con la letra 'A','M' o 'S'.
SELECT * FROM Employees
WHERE FirstName LIKE '[A,M,S]%'
Ejemplo: Mostrar los empleados cuyos nombres estn entre las letras 'L' y 'R'.
SELECT * FROM Employees
WHERE FirstName LIKE '[L-R]%'
Ejemplo: Mostrar los empleados cuyos nombres NO estn entre las letras 'L' y 'R'.
SELECT * FROM Employees
WHERE FirstName LIKE '[^L-R]%'
SELECT * FROM Employees
WHERE FirstName NOT LIKE '[L-R]%'
16
17
JOINS.
Los JOINS se utilizan para consultar datos en dos o ms tablas de la Base de Datos en base en una
relacin entre ciertas columnas en comn en esas tablas.
Esa relacin entre tablas se establecen a menudos entre llaves. Una llave primaria (primary key) es
una columna (o combinacin de columnas) con un valor nico (no nulo) para cada rengln de la
tabla.
Tipos de JOINS.
JOIN: Devuelve los renglones cuando hay alguna coincidencia en ambas tablas.
RIGTH JOIN: Devuelve todos los renglones de la tabla de la derecha, incluso si no hay
coincidencias en la tabla de la izquierda.
FULL JOIN: Devuelve los renglones si existe coincidencia en alguna de las tablas.
Inner Join.
Ejemplo: Mostrar el nombre de la categora y el nombre del producto.
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products
ON Categories.CategoryID = Products.ProductID
Ejemplo: Mostrar el nombre del proveedor y el nombre del producto.
SELECT CompanyName AS Proveedor, ProductName AS Producto
FROM Suppliers s INNER JOIN Products p
ON s.SupplierID = p.SupplierID
18
Ejemplo: Mostrar el nombre del proveedor, el nombre de la categora y el nombre del producto.
SELECT CompanyName AS Proveedor, CategoryName AS Categoria,
ProductName AS Producto
FROM Suppliers s INNER JOIN Products p
ON s.SupplierID = p.SupplierID INNER JOIN Categories c
ON c.CategoryID = p.CategoryID;
Ejemplo: Mostrar el nombre del cliente, el nombre del empleado y la fecha de orden.
SELECT c.CompanyName AS Cliente, e.lastName + ' ' + e.firstName
as Empleado, OrderDate as Fecha
FROM Employees e INNER JOIN Orders o ON
e.EmployeeID = o.EmployeeID INNER JOIN Customers c ON
o.customerID = c.CustomerID;
Left Join.
Ejemplo: Mostrar los clientes que aun no han efectuado compra alguna.
SELECT c.CompanyName, o.CustomerID
FROM Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL
Ejemplo: Mostrar los empleados junto con sus jefes.
SELECT e1.LastName as Empleado, e2.LastName as Jefe
FROM Employees e1 LEFT JOIN Employees e2 ON
e1.ReportsTo = e2.EmployeeID;
Right Join.
Ejemplo: Mostrar los clientes que aun no han efectuado compra alguna.
SELECT c.CompanyName, o.CustomerID
FROM Orders o RIGHT JOIN Customers c ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL;
Full Join.
Union.
La intruccin UNION permite combinar los resultados de dos o ms consultas en una nica tabla.
Sintaxis:
Como la operacin UNION combina las filas de dos conjuntos de resultados podran aparacer filas
duplicadas; sin embargo la instruccin UNION elimina las filas duplicadas.
Ejemplo: Mostrar las ciudades de los clientes y proveedores.
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
19
Intersecciones.
Ejemplo: Mostrar las regiones en comn (interseccin) de los clientes y proveedores.
SELECT Region FROM Customers
INTERSECT
SELECT Region FROM Suppliers
ORDER BY Region
Diferencia.
Ejemplo: Mostrar las regiones de los empleados, pero que no sean las regiones de los proveedores.
SELECT Region FROM Customers
EXCEPT
SELECT Region FROM Suppliers
ORDER BY Region
Subconsultas.
Ejemplo: Mostrar los clientes que no han efectuado una compra.
SELECT CustomerId, CompanyName
FROM Customers
WHERE NOT CustomerID IN(SELECT CustomerID FROM Orders)
Ejemplo: Obtener el nombre del producto ms vendido.
SELECT ProductName
FROM Products
WHERE ProductID = (SELECT TOP 1 ProductID FROM [Order Details]
GROUP BY ProductID ORDER BY SUM(Quantity) DESC)
Ejemplo: Obtener el empleado que mas ordenes ha realizado.
SELECT LastName, FirstName
FROM Employees
WHERE EmployeeID = (SELECT TOP 1 EmployeeID FROM Orders
GROUP BY EmployeeID ORDER BY
COUNT(EmployeeID) DESC)
Ejemplo: Obtener el producto ms caro.
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice=(SELECT MAX(UnitPrice) FROM Products);
20
Select Into.
Crear una base de datos.
La instruccin CREATE DATABASE se utiliza para crear una base de datos.
Sintaxis instruccin CREATE DATABASE.
CREATE DATABASE nombre_bd
Ejemplo: Crear una tabla my_db.
CREATE DATABASE my_db;
Constraints.
Los constraints se utilizan para limiar el tipo de datos que pueden ir en una tabla. Los constraints
pueden especificarse cuando la tabla es creada (con la instruccin CREATE TABLE) o despus de
que la tabla ha sido creada (con la instruccin ALTER TABLE).
Algunos constraints:
NOT NULL
UNIQUE
PRIMARY KEY
21
FOREIGN KEY
CHECK
DEFAULT
Not Null.
Por default, una columna de una tabla puede almacenar valores NULL. El constraint NOT NULL
permite asegurar que una columna tenga datos. Esto significa que al insertar un nuevo o actualizar
datos asegurando que el campo NOT NULL tenga datos.
Ejemplo: Crear una tabla de nombre 'Personas' en la base de datos my_db que contenga cinco
columnas: P_Id, Apellido, Nombre, Direccin y Ciudad. Se debe asegurar que P_Id, Nombre y
Apellido no permitan nulos.
CREATE TABLE Personas
(
P_Id int NOT NULL,
Apellido varchar(255) NOT NULL,
Nombre varchar(255) NOT NULL,
Direccion varchar(255) NULL,
Ciudad varchar(255) NULL
)
Unique.
El constraint UNIQUE identifica de forma nica a un registro en la tabla de la base de datos. Los
constraints UNIQUE y PRIMARY KEY garantizan que una columna o conjunto de columnas sean
nicos. El constraint PRIMARY KEY automticamente tiene un constraint UNIQUE definido en el.
Observa que podemos tener muchos contrainst UNIQUE por tabla, pero solo un constraint PRIMARY
KEY por tabla.
Ejemplo: Crear un constraint UNIQUE en la columna 'P_Id' cuando la tabla Personas es creada.
CREATE TABLE Personas
(
P_Id int NOT NULL UNIQUE,
Apellido varchar(255) NOT NULL,
Nombre varchar(255) NOT NULL,
Direccion varchar(255) NULL,
Ciudad varchar(255) NULL
)
Ejemplo: Crear un constraint UNIQUE para las columnas 'P_Id', 'Nombre' y 'Apellido'.
CREATE TABLE Personas
(
P_Id int NOT NULL UNIQUE,
Apellido varchar(255) NOT NULL,
Nombre varchar(255) NOT NULL,
Direccion varchar(255) NULL,
Ciudad varchar(255) NULL,
CONSTRAINT uc_PersonaID (P_ID, Apellido, Nombre)
)
22
Primary Key.
El constraint Primary Key (Llave Primaria) identifica de manera nica a cada registro en la tabla de la
base de datos. Las llaves primarias deben contener valores nicos. Una llave primaria no puede
contener valores nulos. Cada tabla deber tener una llave primaris, y en cada tabla solo puede tener
una llave primaria.
Ejemplo: Hacer de la columna P_Id una llave primaria.
CREATE TABLE Personas
(
P_Id int NOT NULL PRIMARY KEY,
Apellido varchar(255) NOT NULL,
Nombre varchar(255) NOT NULL,
Direccion varchar(255) NULL,
Ciudad varchar(255) NULL
)
Ejemplo: Hacer de la columna P_Id y Apellido una llave primaria.
CREATE TABLE Personas
(
P_Id int NOT NULL,
Apellido varchar(255) NOT NULL,
Nombre varchar(255) NOT NULL,
Direccion varchar(255) NULL,
Ciudad varchar(255) NULL,
CONSTRAINT pk_PersonaID PRIMARY KEY(P_Id, Apellido)
)
23
Borrar PrimaryKey.
Para eliminar una llave primaria utilizamos la instruccin DROP.
Ejemplo: Borrar la llave primaria para P_Id.
ALTER TABLE Personas
DROP CONSTRAINT pk_ID
Foreign Key.
Check.
Default.
Create Index.
Drop.
Alter.
Increment.
Views.
Dates.
Ejemplo: Mostrar nombres y apellidos, fecha de nacimiento y edad de los empleados.
SELECT FirstName, LastName, BirthDate,
DATEDIFF( YEAR, BirthDate, GETDATE()) as Edad
FROM Employees
Ejemplo: Mostrar los empleados cuya fecha de contrato (hiredate) haya sido en el ao 1993.
SELECT *
FROM Employees
WHERE YEAR(hiredate)= 1993;
Ejemplo: Mostrar los empleados cuya fecha de contrato (hiredate) sea diferente al ao 1993.
SELECT *
FROM Employees
24
Nulls.
Ejemplo: Mostrar los empleados que no tienen jefes.
SELECT EmployeeID, LastName
FROM Employees
WHERE ReportsTo is NULL
Ejemplo: Mostrar los empleados que si tiene un jefe asignado.
SELECT EmployeeID, LastName
FROM Employees
WHERE ReportsTo is NOT NULL
IsNull().
Ejemplo: A los empleados que no tienen jefe asignarles una leyenda que diga: 'Sin Jefe'.
SELECT LastName, FirstName, ISNULL(Region,'Sin asignar') as Region
FROM Employees
WHERE Region IS NULL;
Ejemplo: Contar los productos cuya existencia en el stock no sea cero.
SELECT count(NULLIF(UnitsInStock,0)) As Existencia
FROM Products;
SELECT count(UnitsInStock) As TotalProductos
FROM Products;
25
Descripcin
char(n)
varchar(n)
varchar(max)
text
Cadenas Unicode.
Tipo de dato
Descripcin
nchar(n)
nvarchar(n)
nvarchar(max)
ntext
Tipos binarios.
Tipo de dato
Descripcin
bit
binary(n)
varbinary(n)
varbinary(max)
image
Tipos nmericos.
Tipo de dato
Descripcin
Almacenamiento
tinyint
1 byte
smallint
2 bytes
int
4 bytes
bigint
decimal(p,s)
8 bytes
5-17 bytes
5-17 bytes
money
float(n)
-922,337,203,685,477.5808
4 bytes
a
8 bytes
4 o 8 bytes
4 bytes
Tipos de datos:
Tipo de dato
Descripcin
Almacenamiento
datetime
8 bytes
datetime2
6-8 bytes
smalldatetime
4 bytes
date
3 bytes
time
3-5 bytes
datetimeoffset
8-10 bytes
timestamp
27
Tipo de dato
Descripcin
sql_variant
uniqueidentifier
xml
cursor
table
28
3 - Consultas resumen.
SQL permite realizar consultas que permitan resumir datos a travs de funciones de columna y
mediante instrucciones GROUP BY, HAVING y COMPUTE de la sentencia SELECT.
GROUP BY.
Ejemplo: Mostrar el total de clientes agrupados por pases.
SELECT country, COUNT(*) as Total
FROM Customers GROUP BY Country
Ejemplo: Mostrar el total de clientes agrupados por pases y ordenados por dicho total.
SELECT country, COUNT(*) as Total
FROM Customers GROUP BY Country ORDER BY Total
Ejemplo: Mostrar el pas en donde hay menos clientes.
SELECT TOP 1 country, COUNT(*) as Total
FROM Customers GROUP BY Country ORDER BY Total
Ejemplo: Mostrar el pas en donde hay mas clientes.
SELECT TOP 1 country, COUNT(*) as Total
FROM Customers GROUP BY Country ORDER BY Total DESC
Ejemplo: Mostrar el flete cobrado por cada compaa de envo.
SELECT TOP 1 country, COUNT(*) as Total
FROM Customers GROUP BY Country ORDER BY Total DESC
Having.
Ejemplo: Mostrar los pases en donde hay ms de 10 clientes.
SELECT country, COUNT(*) as Total
FROM Customers GROUP BY Country HAVING COUNT(*) > 10
29
La funcin AVG().
La funcin AVG() regresa el valor promedio de una columna nmerica.
Sintaxis AVG().
SELECT AVG(nombre_columna)
FROM nombre_tabla
Ejemplo: Encontrar el valor promedio de las ordenes de compra de la vista que contiene los
subtotales correspondientes.
SELECT AVG(Subtotal) AS [Orden Promedio]
FROM [Order Subtotals];
Ejemplo: Encontrar a los clientes que tienen una orden de compra con un precio mayor al valor
promedio.
--
La funcin COUNT().
La funcin COUNT() regresa el nmero de renglones que cumplen con un criterio especificado.
Sintaxis COUNT().
SELECT COUNT(nombre_columna)
FROM nombre_tabla
SELECT COUNT(*)
FROM nombre_tabla
SELECT COUNT(DISTINCT nombre_columna)
FROM nombre_tabla
Ejemplo: Mostrar el total de productos.
SELECT COUNT(*)
FROM Products;
Ejemplo: Mostrar el total de empleados.
30
SELECT COUNT(*)
FROM Employees;
Ejemplo: Mostrar el total de ciudades de los empleados.
SELECT COUNT(DISTINCT City)
FROM Employees;
Ejemplo: Obtener el nmero de pases en los que hay clientes.
SELECT COUNT(Distinct Country)
FROM Customers;
La funcin FIRST().
La funcin FIRST() regresa el primer valor de la columna seleccionada.
Sintaxis FIRST().
SELECT FIRST(nombre_columna)
FROM nombre_tabla
Ejemplo: Obtener el id de la primer orden de compra de la tabla Ordenes.
--NO LA RECONOCE SQL SERVER
La funcin LAST().
No la reconoce SQL SERVER
La funcin MAX().
La funcin MAX obtiene el valor ms grande de una columna seleccionada.
Sintaxis MIN().
SELECT MAX(nombre_columna)
FROM nombre_tabla
Ejemplo: Mostrar el producto con el menor mas grande de la tabla Productos.
SELECT MAX(UnitPrice) AS PrecioUnitario
FROM Products;
La funcin MIN().
La funcin MIN obtiene el valor ms pequeo de una columna seleccionada.
Sintaxis MIN().
SELECT MIN(nombre_columna)
31
FROM nombre_tabla
Ejemplo: Mostrar el producto con el menor precio de la tabla Productos.
SELECT MIN(UnitPrice) AS PrecioUnitario
FROM Products;
La funcin SUM().
La funcin SUM regresa el total de la suma de una columna nmerica.
Sintaxis SUM().
SELECT SUM(nombre_columna)
FROM nombre_tabla
Ejemplo: Obtener el flete cobrado por el envio de productos.
SELECT SUM(Freight) AS Flete
FROM Orders;
La funcin ucase().
La funcin lcase().
La funcin mid().
La funcin LEN().
La funcin LEN() regresa la longitud de un campo de texto.
Sintaxis LEN().
SELECT LEN(nombre_columna)
FROM nombre_tabla
Ejemplo: Obtener la longitud del campo Address de la tabla Clientes.
SELECT Address, LEN(Address) AS Longitud
FROM Customers;
La funcin ROUND().
La funcin ROUND() se utiliza para redondear un valor nmerico con el nmero de decimales
especificado.
Sintaxis ROUND().
SELECT ROUND(nombre_columna, decimales)
32
FROM nombre_tabla
nombre_columna: el campo que ser formateado.
decimales: El nmero de decimales a redondear.
Ejemplo: Obtener los precios untarios redondeados de la tabla Productos.
SELECT UnitPrice, ROUND(UnitPrice,0) AS Redondedo,
ROUND(UnitPrice, 0, 1) AS ValorTruncado,
ROUND(UnitPrice,1) AS ValorAproximado,
ROUND(UnitPrice,-1) AS ValorAproximado2
FROM Products;
La funcin ISNUMERIC().
Ejemplo: Obtener los cdigos postales de la tabla Customer e identificar cuales de ellos son
nmericos.
SELECT ISNUMERIC(PostalCode), PostalCode
FROM Customers;
La funcin COALESCE().
Ejemplo: Encontrar el primer valor no nulo en una serie de expresiones.
SELECT COALESCE( 3 + NULL, 2 * NULL, 5*2, 7);
La funcin now().
La funcin FORMAT().
La funcin FORMAT() se utiliza para dar formato a un campo que ser desplegado como resultado.
Sintaxis FORMAT().
SELECT FORMAT(nombre_columna, formato)
FROM nombre_tabla
nombre_columna: el campo que ser formateado.
formato: El formato a aplicar sobre nombre_columna.
Ejemplo: De la tabla producto desplegar los nombre de los productos y precios con la fecha actual
del sistema.
SELECT ProductID, ProductName, UnitPrice,
format(GETDATE(),'YYYY-MM-DD') AS Fecha
FROM Products;
33
34
35