Anda di halaman 1dari 35

Material Didctico Tpicos

Avanzados de BD

versin 1.0
Autor/compilador ISC Ral Oramas Bustillos, 2011.

Material didctico de Tpicos Avanzados BD

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

Material didctico Tpicos Avanzados de BD -

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

Material didctico de Tpicos Avanzados BD

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

Material didctico Tpicos Avanzados de BD -SQL Bsico.

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 Base de Datos contiene una o ms tablas.

Cada tabla se identifica por un nombre.

Las tablas mantienen registros (renglones).

Una sentencia o instruccin SQL es la accin que indica como se va a manipular la Base de
Datos.

Algunos SMBD requieren un punto y coma al final de la sentencia.

En el lenguaje SQL no importan si las instrucciones se escriben en maysculas o


minsculas.

DML: Data Manipulation Language.

Select

Insert

Delete

Update

DDL: Data Definition Language.

Create Database

Alter Database

Create Table

Alter Table

Drop Table

Create Index, etc.

Material didctico de Tpicos Avanzados BD

Instalacin de la Base de Datos NorthWind


Northwind es una Base de Datos de ejemplo que Microsoft utiliza para ilustrar todo tipo de conceptos
de acceso a datos. Esta Base de Datos simula la informacin acumulada del da a da en una
empresa ficticia llamada "NorthWind Traders". Incluye tablas para clientes, proveedores, facturas,
lneas de factura, regiones comerciales, etc.
El paquete de instalacin de la Base de Datos se puede obtener gratuitamente desde la pgina Web
de Microsoft:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23654
En la pgina correspondiente tenemos que buscar el botn Download para descargar el archivo .msi
que contiene la Base de Datos NorthWind.
Una vez que hemos decargado el archivo, lo ejecutamos. En el directorio raz se crear una carpeta
con el nombre "SQL server 2000 Sample Databases".
Nota: La Base de Datos NorthWind funciona perfectamente en SQL Server 2000, 2005, 2008.

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

Material didctico Tpicos Avanzados de BD -SQL Bsico.

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

Ejemplo: Mostrar la tabla Empleados.


SELECT *
FROM Employees
Ejemplo: Mostrar la tabla Clientes.
SELECT *
FROM Customers
Ejemplo: Mostrar la tabla Regiones.
SELECT *
FROM Region

Eliminar renglones duplicados


La instruccin DISTINCT en un SELECT elimina renglones duplicados en la salida.
Sintaxis instruccin DISTINCT.
SELECT DISTINCT nombre_columna(s)
FROM nombre_tabla
Ejemplo: Mostrar las ciudades de los empleados.
SELECT DISTINCT City
FROM Employees
Ejemplo: Mostrar las ciudades de los clientes.
SELECT DISTINCT City
FROM Customers
Ejemplo: Mostrar los paises de los proveedores.
SELECT DISTINCT Country
FROM Suppliers

Material didctico de Tpicos Avanzados BD

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.

Tipos de condiciones de bsqueda.

Operadores de comparacin (>,<,=,>=,<=,<>)

Rangos (BETWEEN, NOT BETWEEN)

Listas (IN, NOT IN)

Comparacin de cadenas (LIKE, NOT LIKE)

Valores desconocidos (IS NULL, IS NOT NULL)

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';

Material didctico Tpicos Avanzados de BD -SQL Bsico.

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'

Material didctico de Tpicos Avanzados BD

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.

Ordenando resultados con ORDER BY


Se puede utilizar la instruccin ORDER BY en un enunciado SELECT para ordenar en orden
ascendente (ASC) o descendente (DESC) los resultados de la consulta. El orden de los resultados
es ascendente por defecto.
Sintaxis instruccin ORDER BY.
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC | DESC
Ejemplo: Seleccionar todos los empleados ordenados por apellido.
SELECT *
FROM Employees
ORDER BY LastName
Ejemplo: Seleccionar todos los empleados ordenados por apellido en orden descendente.
SELECT *
FROM Employees
ORDER BY LastName DESC
Nota: Los campos nombrados en la clusula ORDER BY no necesita estar en a lista de SELECT.

10

Material didctico Tpicos Avanzados de BD -SQL Bsico.

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

Material didctico de Tpicos Avanzados BD

Agregar varios registros al mismo tiempo.


La instruccin SQL tambin nos permite agregar mltiples registros al mismo tiempo.
Sintaxis instruccin INSERT (3).
INSERT INTO nombre_tabla(columna1,columna2,...,columnaN)
VALUES(valor1,valor2,...,valorN)
(valor1,valor2,...,valorN)
Ejemplo: Agregar mltiples registros a la tabla Proveedores.
INSERT INTO Shippers(CompanyName,Phone)
VALUES('UPS', '1-800-782-7892')
('FEDEX', '1-800-225-5345')

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

Material didctico Tpicos Avanzados de BD -SQL Bsico.

Ejemplo: Borrar el servicio de mensajera DHL.


DELETE FROM Shippers
WHERE ShipperID = 5
Ejemplo: Borrar al empleado 'Nathaniel'
DELETE FROM Employees
WHERE FirstName = 'Nathaniel';

Borrar todos los renglones.


Es posible borrar todos los renglones de una tabla sin borrar la tabla omitiendo la instruccin
WHERE. En tablas que tienen muchos miles de registros es ms eficiente utilizar la instruccin
TRUNCATE.
Ejemplo: Borrar a todos los servicios de mensajeria.
DELETE FROM Shippers
Ejemplo: Borrar a todos los proveedores.
DELETE FROM Customers

13

Material didctico de Tpicos Avanzados BD

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

El Operador SQL LIKE


Utilizada para seleccionar renglones cuyos campos son iguales a la cadena de caracteres
especificada. Utilizada con datos de tipo caracter.
Sintaxis instruccin LIKE.
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna LIKE patron

14

Material didctico Tpicos Avanzados de BD -SQL intermedio.

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 cadena de cero o muchos caracteres.

Cualquier caracter.

[charlist]

Cualquier caracter del conjunto.

[^charlist]

Cualquier caracter que no este dentro del rango espeficado.

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

Material didctico de Tpicos Avanzados BD

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]%'

El Operador SQL IN.


Permite seleccionar renglones con columnas cuyo contenido corresponde a alguno de los valores de
la lista.
Sintaxis instruccin IN.
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna IN (valor1,valor2,...)
Ejemplo: Mostrar los clientes que sean del pas de Mxico o Francia o Canad.
SELECT * FROM customers
WHERE Country IN('Mexico','France','Canada')
Ejemplo: Mostrar el titulo de cortesa, el nombre y apellidos de todos aquellos empleados que tienen
el titulo de 'Mrs.' o 'Ms.'.
SELECT TitleOfCourtesy, FirstName, LastName
FROM Employees
WHERE TitleOfCourtesy IN ('Ms.','Mrs.')
Ejemplo: Mostrar el titulo de cortesa, el nombre y apellidos de todos aquellos empleados que no
tienen el titulo de 'Mrs.' o 'Ms.'.
SELECT TitleOfCourtesy, FirstName, LastName
FROM Employees
WHERE NOT TitleOfCourtesy IN ('Ms.','Mrs.');

16

Material didctico Tpicos Avanzados de BD -SQL intermedio.

El Operador SQL BETWEEN


El operador BETWEEN selecciona un rango de datos entre dos valores. Esos valores pueden ser
nmeros, texto o fechas.
Sintaxis instruccin BETWEEN.
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna BETWEEN valor1 AND valor2
Ejemplo: Mostrar los productos que cuesten entre 10 y 20.
SELECT * FROM PRODUCTS
WHERE UNITPRICE BETWEEN 10 AND 20
Ejemplo: Mostrar el nombre y apellidos de todos los empleados en donde sus apellidos inician con
una letra entre 'J' y 'M'.
SELECT FirstName, LastName
FROM Employees
WHERE LastName BETWEEN 'J' AND 'M'
Nota: El operador BETWEEN es tratado diferente en diferentes bases de datos.
Ejemplo: Mostrar el nombre y apellidos de todos los empleados en donde sus apellidos excluyendo
a los que inician con una letra entre 'J' y 'M'.
SELECT FirstName, LastName
FROM Employees
WHERE LastName NOT BETWEEN 'J' AND 'M'

Renombrar el nombre de una tabla o columna


Un alias es un nombre que le podemos dar a una tabla o columna. Los alias nos ayudan a organizar
o formatear el resultado de una consulta SQL. Tambin ayudan a disminuir la complejidad de las
consultas cuando intervienen muchas tablas. SQL admite dos tipos de alias que se conocen como
alias de columna y alias de la tabla.
Sintaxis instruccin ALIAS.
SELECT nombre_columna(s)
FROM nombre_tabla AS nombre_alias
SELECT nombre_columna AS nombre_alias
FROM nombre_tabla
Ejemplo: Mostrar el nombre y precio de los productos con un precio unitario mayor a 50. Utiliza un
alias para cada una de las columnas.
SELECT productName AS product, unitPrice AS price
FROM products
WHERE unitPrice >50

17

Material didctico de Tpicos Avanzados BD

SELECT productName product, unitPrice [Precio unitario]


FROM products
WHERE unitPrice >50
SELECT productName product, unitPrice "Precio unitario"
FROM products
WHERE unitPrice >50
Ejemplo: Mostrar el nombre y precio de los productos con un precio unitario mayor a 50. Utiliza un
alias para la tabla productos.
SELECT p.productName, p.unitPrice
FROM products p
WHERE p.unitPrice >50
Nota: Los alias son tiles cuando trabajamos con subconsultas, e instrucciones join.

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.

LEFT JOIN: Devuelve los renglones de la tabla de la izquierda, incluso si no hay


coincidencias en la tabla de la derecha.

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

Material didctico Tpicos Avanzados de BD -SQL intermedio.

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

Material didctico de Tpicos Avanzados BD

Nota:Si utilizamos UNION ALL obtenemos valores duplicados en la salida.


Ejemplo: Mostrar las regiones de los empleados, clientes y proveedores.
SELECT Region FROM Employees
UNION
SELECT Region FROM Customers
UNION
SELECT Region FROM Suppliers
ORDER BY Region

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

Material didctico Tpicos Avanzados de BD -SQL intermedio.

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;

Crear una tabla.


La instruccin CREATE TABLE se utiliza para crear una tabla en la base de datos.
Sintaxis instruccin CREATE TABLE.
CREATE TABLE nombre_tabla
(
nombre_columna1, tipo_dato,
nombre_columna2, tipo_dato,
nombre_columna3, tipo_dato,
...
)
Nota: El tipo de dato especifica el valor que la columna almacenar.
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.
CREATE TABLE Personas
(
P_Id int,
Apellido varchar(255),
Nombre varchar(255),
Direccion varchar(255),
Ciudad varchar(255)
)

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

Material didctico de Tpicos Avanzados BD

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

Material didctico Tpicos Avanzados de BD -SQL intermedio.

Unique con ALTER TABLE.


Una vez creada la tabla tambin se puede crear un constraint UNIQUE.
Ejemplo: Crear un constraint UNIQUE en la columna 'P_Id'.
ALTER TABLE Personas
ADD CONSTRAINT uc_PersonaID UNIQUE (P_Id)

Borrar un constraint UNIQUE.


Para borrar un constraint unique utilizamos la instruccin DROP.
Ejemplo: Borrar el constraint UNIQUE en la columna 'P_Id'.
ALTER TABLE Personas
DROP CONSTRAINT uc_PersonaID

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)
)

Primary Key con ALTER TABLE.


Cuando una tabla ya est creada y queremos agregarle una llave primaria utilizamos la instruccin
ALTER TABLE.
Ejemplo: Hacer de la columna P_Id una llave primaria.

23

Material didctico de Tpicos Avanzados BD

ALTER TABLE Personas


ADD CONSTRAINT pk_ID PRIMARY KEY(P_Id)

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

Material didctico Tpicos Avanzados de BD -SQL intermedio.

WHERE YEAR(hiredate)<> 1993;


Ejemplo: Mostrar los empleados cuya fecha de nacimiento sea mayor al 22 de Mayo de 1960.
--No funciona, revisar el formato de fecha del sistema
SELECT *
FROM Employees
WHERE BirthDate > '05/22/1960'
Ejemplo: Mostrar los empleados cuya fecha de nacimiento este entre el 22 de Mayo de 1955 y el 22
de Mayo de 1962.
--No funciona, revisar el formato de fecha del sistema
SELECT *
FROM Employees
WHERE BirthDate > '1955/05/22' AND BirthDate < '1962/05/22';

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

Material didctico de Tpicos Avanzados BD

Tipos de datos en SQL Server.


Cadena de caracteres.
Tipo de dato

Descripcin

char(n)

Cadena de caracteres de longitud fija. 8,000 caracteres mximo

varchar(n)

Cadena de caracteres de longitud variable. 8,000 caracteres mximo.

varchar(max)

Cadena de caracteres de longitud variable. 1,073,741,824 caracteres mximo.

text

Cadena de caracteres de longitud variable. 2GB de datos como mximo

Cadenas Unicode.
Tipo de dato

Descripcin

nchar(n)

Cadena Unicode de caracteres de longitud fija. 4,000 caracteres mximo

nvarchar(n)

Cadena Unicode de caracteres de longitud variable. 4,000 caracteres mximo.

nvarchar(max)

Cadena Unicode de caracteres de longitud variable. 536,870,912 caracteres


mximo.

ntext

Cadena Unicode de caracteres de longitud variable.


mximo

2GB de datos como

Tipos binarios.
Tipo de dato

Descripcin

bit

Permite 0,1 o NULL

binary(n)

Datos binarios de longitud fija. 8,000 bytes mximo.

varbinary(n)

Datos binarios de longitud variable. 8,000 bytes mximo

varbinary(max)

Datos binarios de longitud variable. 2GB mximo

image

Datos binarios de longitud variable. 2GB mximo

Tipos nmericos.
Tipo de dato

Descripcin

Almacenamiento

tinyint

Permite nmeros de 0 a 255

1 byte

smallint

Permite nmeros entre -32,768 a 32,767

2 bytes

int

Permite nmeros entre -2,147,483,648 a 2,147,483,647

4 bytes

bigint

Permite nmeros entre -9,223,372,036,854,775,808


9,223,372,036,854,775,807

decimal(p,s)

Nmeros de precisin fija y escala.

Permite nmeros desde -10^38 +1 a 10^38 1.


El parmetro p indica el nmero maximo total de digitos que
pueden ser almacenados (ambos a la izquierda y a la
derecha del punto decimal). p debe ser un valor desde 1 a
38. Por default es 38.
26

8 bytes
5-17 bytes

Material didctico Tpicos Avanzados de BD -SQL intermedio.

El parmetro s indica el nmero mximo de digitos


almacenados a la derecha del punto decimal. s debe ser un
valor desde 0 a p. El valor por default es 0.
numeric(p,s)

Nmeros de precisin fija y escala.

5-17 bytes

Permite nmeros desde -10^38 +1 a 10^38 1.


El parmetro p indica el nmero maximo total de digitos que
pueden ser almacenados (ambos a la izquierda y a la
derecha del punto decimal). p debe ser un valor desde 1 a
38. Por default es 38.
El parmetro s indica el nmero mximo de digitos
almacenados a la derecha del punto decimal. s debe ser un
valor desde 0 a p. El valor por default es 0.
smallmoney

Datos monetarios desde -214,748.3648 a 214,748.3647

money

Datos monetarios desde


992,337,203,685,477.5807

float(n)

Nmeros de precisin de punto flotante desde -1.79E + 308 a


1.79E + 308.

-922,337,203,685,477.5808

4 bytes
a

8 bytes
4 o 8 bytes

El parmetro n indica que el campo puede almacenar 4 u 8


bytes. float(24) almacena un campo de 4 bytes y float(53)
almacena 8 bytes. El valor por default n es 53.
real

Nmeros de precisin de punto flotante desde -3-40E + 38 a


3.40E + 38

4 bytes

Tipos de datos:
Tipo de dato

Descripcin

Almacenamiento

datetime

Desde Enero 1, 1753 a Diciembre 31, 9999 con una


precisin de 3.33 milisengundos

8 bytes

datetime2

Desde Enero 1, 0001 a Diciembre 31, 9999 con una


precisin de 100 nanosegundos

6-8 bytes

smalldatetime

Desde Enero 1, 1900 hasta Junio 6, 2079 con una precisin


de 1 minuto

4 bytes

date

Almacena una fecha solamente. Desde Enero 1, 0001 hasta


Diciembre 31, 9999

3 bytes

time

Almacena una hora solamente con una precisin de 100


nanosegundos

3-5 bytes

datetimeoffset

Lo mismo que el datetime2 pero con time zone offset

8-10 bytes

timestamp

Almacena un nico nmero que se obtiene cada vez que un


rengln es creado o modificado. El valor timestamp est
basado en el reloj interno y no corresponde al tiempo real.
Cada table puede tener solo una variable timestamp.

Otros tipos de datos:

27

Material didctico de Tpicos Avanzados BD

Tipo de dato

Descripcin

sql_variant

Almacena arriba de 8,000 bytes de datos de diferentes tipos de datos excepto


text, ntext y timestamp

uniqueidentifier

Almacena un identificador global unico (GUID)

xml

Almacena datos formateados en XML. 2GM Mximo

cursor

Almacena una referencia a un cursor utilizado por operaciones de la base de


datos

table

Almacena un conjunto de resultados para un procesamiento posterior.

28

Material didctico Tpicos Avanzados de BD -Consultas resumen.

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

Material didctico de Tpicos Avanzados BD

4 - Funciones de agregado en la lista de seleccin.


Las funciones de agregado (SUM, AVG, STD, COUNT, COUNT(*), MAX, MIN, etc.) generan valores
de resumen en los conjuntos de resultados de las consultas. Una funcin de agregado procesa
todos los valores seleccionados en una nica columna para generar un nico resultado. Las
funciones de agregado se pueden aplicar a todas las filas de una tabla, a un subconjunto de la tabla
especificado por una clusula WHERE, o a uno o varios grupos de filas de la tabla. Cuando se
aplica una funcin de agregado, se genera un valor individual por cada conjunto de filas.

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

Material didctico Tpicos Avanzados de BD -Funciones de agregado en la lista de seleccin.

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

Material didctico de Tpicos Avanzados BD

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

Material didctico Tpicos Avanzados de BD -Funciones de agregado en la lista de seleccin.

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

Material didctico de Tpicos Avanzados BD

5 - Proyecto: la Base de Datos PUBs.


An interview was conducted with the libraries at West Overshoe Municipal Library. The purpose of
the interview was to understand what the librarians business needs where in order to implement a
database strategy that worked for the librarians and the library members.
The West Overshoe Municipal Library has aproximately 10,000 member, 1000 titles and 10000
volumes. About twenty percent of the volumens are out on loan at one time.
The librarians are primarily responsable for the book supply. They must try to ensure that the books
member want to borrow are available when the members want to borrow them. Also, the librarians
must know how many copies on each book are in the library or out on loan at any given time.
The librarians also keep track of the demand of the books. If a members want a book that is not
currently in the library, the book is placed in reserve for them. When the book arrives, a librarian must
notify the member who has been waiting the longest.
Members can have as many as four books on reserve at one time.
If a book becomes overdue, the libraries must know which member has which copy of the book.
Members are allowed to have only four books out at a time.
Members usually return books within twenty days. Most members know that they have a one week
grace period ends. Approximately five percent of the members will have to be remainded to return a
book. Most overdue books are returned within three months. Approximately one percent of the
members will either keep the book for over three months or never return it.
The librarians are interested in who is borrowing books and who is not. One percent of the
membership does ten percent of the borrowing, and ten percent of the membership does forty percent
of borrowing. Another ten percent of the membership never borrows a book. This ratio seems to be
the same for both adults and for children.
In order to become a member of the library, members must give the librarians their mailing addresses
and telephone numbers. The librarians then issue the members a numbered, machine-readable car
with their photo on it. This card is valid for one year, A month before the cards expire, the librarian
must sent a notice to the members reminding then to renew their membership.
Juveniles are also considered members, but they must have an adult sign for them when they
become a member of the library. Therefore, a juveniles card is good only until the adult's card
expires. At West Overshoe Municipal Library, approximately one-half of the members are juveniles.
The only information the library keeps on juveniles are their names and dates of birth. If the library
has any problems with a juveniles membership, the librarian contacts that juvenile through the
responsible adult.
The library needs a system that can detect when juveniles become of age, and then automatically
convert their juvenile memberships to adult memberships.
The library does not lend some books -such as reference books an rare books. The librarians must
differentiate between books that are lent and those that are not lent. In addition, the librarians have a
list of some books they are interested in acquiring but cannot obtain, such area rare or out-of-print
books and books that were lost or destroyed but have not yet been replaced. The librarians must
have a system that keep track of books that are not lent, as well as books that they are interested in
acquiring.

34

Material didctico Tpicos Avanzados de BD -Proyecto: la Base de Datos PUBs.

35

Anda mungkin juga menyukai