SlideShare una empresa de Scribd logo
1 de 182
Descargar para leer sin conexión
UNIVERSIDAD NACIONAL DE CAJAMARCA
FACULTAD DE INGENIERÍA
ESCUELA ACADÉMICO PROFESIONAL DE
INGENIERÍA DE SISTEMAS
Cajamarca, 2012
Manual de SQL Server 2008
CONCEPTOS Y EJERCICIOS EN SQL
Estrada Aguilar, Karen Johana
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 3 -
INTRODUCCIÓN.............................................................................................................................- 5 -
CAPÍTULO I ....................................................................................................................................- 6 -
CONCEPTOS BÁSICOS DE SQL .........................................................................................................- 6 -
1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS........................................................... - 6 -
1.1.1. REQUERIMIENTOS Y CARACTERÍSTICAS........................................................................... - 6 -
1.2. INICIANDO SQL SERVER 2008 ......................................................................................... - 7 -
1.3. CREAR UNA NUEVA TABLA: ........................................................................................... - 12 -
1.4. HACER CONSULTAS......................................................................................................... - 16 -
CAPITULO II........................................................................................................................................- 18 -
COMANDOS BÁSICOS DE SQL .........................................................................................................- 18 -
2.1. INSTRUCCIONES DE SQL SERVER 2008 .................................................................... - 18 -
2.1.1. SELECT....................................................................................................................................... - 18 -
2.1.2. FROM........................................................................................................................................... - 19 -
A. MODIFICADORES.......................................................................................................................... - 20 -
 Distinct y All: ............................................................................................................................. - 20 -
 TOP n: ......................................................................................................................................... - 21 -
B. FUNCIONES DE AGREGACIÓN ................................................................................................. - 21 -
C. USO DE ALIAS:.............................................................................................................................. - 23 -
2.1.3. WHERE........................................................................................................................................ - 24 -
 OPERADORES LÓGICOS ............................................................................................................ - 24 -
 OPERADORES DE COMPARACIÓN.......................................................................................... - 24 -
 CONCATENACIÓN DE CADENAS............................................................................................. - 26 -
 IN ....................................................................................................................................................... - 27 -
 BETWEEN........................................................................................................................................ - 29 -
 NULL................................................................................................................................................. - 31 -
 LIKE .................................................................................................................................................. - 32 -
 YEAR MONTH DAY ....................................................................................................................... - 33 -
2.1.4. ORDER BY.................................................................................................................................. - 34 -
 TOP ................................................................................................................................................... - 35 -
 WITH TIES ....................................................................................................................................... - 36 -
EJERCICIOS .......................................................................................................................................- 37 -
CAPÍTULO III.......................................................................................................................................- 48 -
COMBINACIÓN DE TABLAS Y AGRUPACIÓN DE DATOS ..............- 48 -
3.1. JOIN....................................................................................................................................... - 48 -
INNER JOIN: .................................................................................................................................................. - 48 -
LEFT JOIN:..................................................................................................................................................... - 48 -
RIGTH JOIN: .................................................................................................................................................. - 48 -
UNION:............................................................................................................................................................ - 48 -
3.2. GROUP BY........................................................................................................................... - 49 -
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 4 -
3.3. HAVING................................................................................................................................. - 50 -
EJERCICIOS .......................................................................................................................................- 54 -
CAPÍTULO IV ......................................................................................................................................- 73 -
MANIPULACIÓN DE TABLAS..............................................................................................................- 73 -
4.1. INSERT INTO....................................................................................................................... - 73 -
4.2. UPDATE................................................................................................................................ - 75 -
4.3. DELETE FROM.................................................................................................................... - 78 -
4.4. SUBCONSULTAS................................................................................................................ - 79 -
4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE) ................................ - 80 -
EJERCICIOS .......................................................................................................................................- 85 -
CAPÍTULO V .......................................................................................................................................- 96 -
OTRAS SENTENCIAS ..........................................................................................................................- 96 -
5.1. SUBSTRING FUNCION...................................................................................................... - 96 -
5.2. TRIM FUNCION ................................................................................................................... - 96 -
5.3. SENTENCIA CAST.............................................................................................................. - 97 -
EJEMPLOS..........................................................................................................................................- 98 -
CAPÍTULO VI .................................................................................................................................... - 100 -
REPORTING SERVICE ......................................................................................................................- 100 -
6.1. INGRESANDO A SQL SERVER BUSINESS INTELLIGENCE DEVELOPMENT
STUDIO ............................................................................................................................................ - 100 -
6.2. CREAR UN NUEVO PROYECTO DE REPORTES ..................................................... - 102 -
6.3. DATA SOURCE (ORIGEN DE DATOS COMPARTIDO) ............................................ - 104 -
6.4. CREAR UN INFORME PARA HACER REPORTES.................................................... - 106 -
6.5. DATA SET........................................................................................................................... - 107 -
EJERCICIOS ................................................................................................................................... - 114 -
PRÁCTICA....................................................................................................................................... - 123 -
AGRUPAR EN REPORTING SERVICE...................................................................................... - 138 -
ENLACES DE INFORMES............................................................................................................ - 141 -
IMPLEMENTACIÓN DE REPORTING SERVICE EN IIS......................................................... - 144 -
INFORMES INTEGRADOS........................................................................................................... - 146 -
EJERCICIOS: .................................................................................................................................. - 148 -
PRACTICA CALIFICADA DE REPORTING SERVICES SQL SERVER 2008...................... - 154 -
ADMINISTRACIÓN DE USUARIOS ............................................................................................ - 163 -
CREACIÓN DE VISTAS ................................................................................................................ - 165 -
CREACIÓN DE UN GRUPO DE INICIOS DE SESIÓN EN UN STORE PROCEDURE ..... - 168 -
CREACIÓN DE UN GRUPO DE USUARIOS EN UN STORE PROCEDURE...................... - 170 -
FUNCIONES.................................................................................................................................... - 172 -
RESTRICCIONES .......................................................................................................................... - 176 -
PROPUESTOS: .............................................................................................................................. - 178 -
TRIGRESS....................................................................................................................................... - 182 -
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 5 -
El presente manual de SQL Server 2008 trata principalmente del manejo de datos a
través de las diferentes sentencias que tiene SQL. En este se considera a las tablas como
contenedores de datos organizados en filas y en columnas. Aquí es posible seleccionar
datos que pertenezcan a diferentes tablas y también es permitido establecer reglas o
condiciones que tengan que cumplir dichos datos para poder ser considerados como
registros resultantes.
La primera encarnación de SQL apareció en 1974, cuando un grupo de IBM desarrolló el
primer prototipo de una base de datos relacional. Relational Software (luego se convirtió
en Oracle) quien lanzó la primera base de datos relacional comercial.
El mayor mérito de SQL está en su posibilidad de combinar las diferentes tablas de una
base de datos en un solo conjunto resultante y por ello ha sido considerado en la mayoría
de los programas administradores de Base de Datos tales como Oracle, Access o FoxPro.
En este manual de SQL se enumera los comandos SQL normalmente utilizados, y se
divide en las siguientes secciones:
 Conceptos básicos de SQL: Que tratará de definir a SQL, cómo iniciar el
programa, creación de tablas, hacer consultas.
 Comandos Básicos de SQL: Las instrucciones SQL básicas para
almacenamiento, recuperación y manipulación de datos en una base de datos
relacional.
 Manipulación de Tabla: Cómo se utilizan las instrucciones SQL para administrar
las tablas dentro de una base de datos.
Para cada comando; primero se definirá, luego se presentará y explicará la sintaxis SQL,
seguida por algún o algunos ejemplos.
Finalmente después de cada capítulo se mostrará los ejercicios desarrollados en la clase
de Base de Datos II.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 6 -
CONCEPTOS BÁSICOS DE SQL
1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS
El Lenguaje de Consulta Estructurado (SQLStructured Query Language) es un
lenguaje de base de datos normalizado, que se basa en el modelo relacional. Sql
está compuesto por comandos, clausulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones para crear, actualizar y
manipular las bases de datos.
1.1.1. REQUERIMIENTOS Y CARACTERÍSTICAS
 SQL Server tiene reservadas determinadas palabras clave para su uso
exclusivo. Por ejemplo, si se usan las palabras clave DUMP o BACKUP
en una sesión de osql o del Analizador de consultas de SQL, se estará
indicando a SQL Server que debe realizar una copia de seguridad total o
parcial de la base de datos, o una copia de seguridad del registro.
 Debe evitar usar una palabra clave reservada como nombre de un
objeto. Si el nombre de un objeto coincide con una palabra clave, cada
vez que se haga referencia al objeto debe aparecer entre identificadores
delimitadores, como dobles comillas (“ ”) o corchetes ([ ]).
 Para hacer un comentario en una línea se puede poner dos guiones
antes de éste (--). Ejm.:-- SQL es un lenguaje de programación
 Para crear bloques de varias líneas de comentarios, se coloca un
carácter de comentario (/*) al comienzo del texto del comentario, escriba
sus anotaciones y, después, se concluye el comentario con un carácter
de cierre de comentario (*/).Ejm.:
/*Los comentarios son cadenas de texto que no se ejecutan,
colocadas en las instrucciones para describir la acción que
la instrucción está realizando*/
SQL Server no distingue las mayúsculas de las minúsculas
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 7 -
1.2. INICIANDO SQL SERVER 2008
Para iniciar el trabajo con SQL Server 2008y poder realizar ejercicios de consultas
con SQL TRANSACT primero ingresaremos al motor de la base de datos para lo
cual seguiremos los siguientes pasos:
 Buscamos el icono de SQL Server Management Studio en el escritorio y
hacemos doble clic.
 Podemos escribir la siguiente dirección en el cuadro Ejecutar: “C:Program Files
Microsoft SQL Server100ToolsBinnVSShellCommon7IDESsms.exe” y
pulsar ENTER.
Es la ruta que adquiere el programa de SQL Server 2008 en la instalación
estándar.
 Si no encontramos éste icono en el escritorio y no podemos ejecutar lo anterior
hacemos lo siguiente:
o Clic en el botón inicio.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 8 -
o Clic en todos los programas.
o Clic en Microsoft SQL Server 2008.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 9 -
o Y finalmente hacemos clic en SQL Server Management Studio
 Esperamos que cargue…
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 10 -
 Luego realizamos la conexión con el servidor.
Como podemos ver; tenemos la opción de elegir:
El Tipo de Servidor Nombre del Servidor (ha sido definido El tipo de Autentificación
al que debemos conectarnos al momento de la instalación)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 11 -
 Después de elegir estos parámetros damos clic en conectar.
 Finalmente vemos que la conexión ha sido realizada.
Los objetos lo podemos ver en las carpetas como Base de Datos, cuando lo
extendemos, entre otros; como también veremos las Bases de Datos existentes
que han sido creadas al momento de la instalación una de ellas con la que
trabajaremos es la Base de Datos Notrhwind.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 12 -
1.3. CREAR UNA NUEVA TABLA:
Las tablas sirven para representar los datos o registros de una Base de
Datos.Cada tabla está compuesta por varias filas y columnas, cadacolumna tiene
un nombre único.
Ejemplo: Crearemos la tabla Alumnos.
El proceso que hay que seguir es el siguiente:
 Expandimos la carpeta Base de Datos.
 Ubicamos la Base de Datos donde vamos a crear nuestra tabla (en este caso
utilizaremos la Base de Datos Notrhwind) expandimos.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 13 -
 Hacemos anticlic (clic derecho) en la palabra Tablas y escogemos la opción
Nueva Tabla.
 Después, iremos dando el nombre a cada campo que formarán las columnas de
la tabla (Código,Paterno, Materno, Nombre, Sexo, Dirección).
 A cada una de las columnas le asignaremos un Tipo de datos predefinido (por
defecto es nchar(10) ) o bien un dominio definido por el usuario. También
podremos definir si se aceptarán valores nulos o no.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 14 -
 En la parte baja al momento de escoger Tipo de datos están las Propiedades
de columna o campo.
 Podemos elegir la Clave principal (PK) haciendo anticlic en el nombre del
campo y eligiendo la opción Establecer clave principal.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 15 -
 Decidimos qué nombre queremos poner a la tabla (Alumnos). Hacemos clic en
guardar Tabla.
 Aparece un cuadro donde pondremos el nombre Alumnos y hacemos clic en
Aceptar.
 Cerramos y en la Base de Datos Northwind, en Tablas hacemos anticlic y
elegimos actualizar; veremos ya la tabla creada en dicha lista.
Cuando se crea una tabla, hay que especificar el nombre de la tabla, los nombres
de las columnas y sus tipos de datos. Se puede utilizar el mismo nombre de
columna en tablas diferentes de la misma base de datos.
Para llenar una tabla ya veremos más adelante los comandos que se deben
utilizar.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 16 -
1.4. HACER CONSULTAS
Una consulta es una instrucción de solicitud para recuperarinformación.Las
consultas pueden involucrar información de másde una tabla. El resultado de una
consulta es otra tabla con los datos requeridos en ella.
Esta consulta encuentra todos los campos del empleado: (utilizando la Northwind)
SELECT *
FROM Employees
La consulta especifica que las filas de (from) la tabla Employees se debe
recuperar, y que se debe mostrar todos sus campos (*).
Para crear esta consulta hacemos:
 Clic derecho sobre la base de datos Northwind y seleccionamos la opción
Nueva Consulta.
 Luego escribimos la consulta:
Como podemos ver SQL nos muestra un listado de tablas que existe dentro de la
base de datos que estamos trabajando.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 17 -
 Cuando ya esté escrita la consulta damos clic en el botón ejecutar o
presionamos la tecla de función F5.
 En la parte baja podemos ver el resultado de la consulta realizada.
 Finalmente para guardar la consulta damos clic en el botón guardar, le
colocamos un nombre y damos un clic en guardar.
Cuando tenemos varios códigos de diferentes consultas en una sola ventana es
necesario seleccionar a la consulta que se desea ver y dar clic en ejecutar o
presionar F5, pues si no hacemos esto se ejecutan todas las consultas que están
dentro de una misma ventana.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 18 -
COMANDOS BÁSICOS DE SQL
2.1. INSTRUCCIONES DE SQL SERVER 2008
SQL está compuesto por comandos, clausulas, operadores y funciones de
agregado. Estos elementos se combinan en las instrucciones o consultas para
crear, actualizar y manipular las bases de datos
Las instrucciones de SQL Server 2008 permiten:
 Realizar el manejo de los datos. Es decir, consultar y actualizar los datos
de las tablas, así como eliminar y agregar registros.
 Administrar la estructura de los campos de datos. En otras palabras crear,
modificar y eliminar las tablas de datos.
Tipos de Comandos:
La escritura y ejecución de instrucciones de Transact-SQL es una de las formas en
que se puede realizar una consulta en SQL Server. Las sentencias SQL se
dividen, principalmente en las siguientes categorías:
 DDL (Instrucciones del Lenguaje de definición de datos) que permiten crear
y definir nuevas bases de datos, campos e índices.
 DCL (Instrucciones del Lenguaje de control de datos) que se utilizan para
determinar quién puede ver o modificar los datos.
 DML (Instrucciones del Lenguaje de tratamiento de datos) que permiten
generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Mediante estas instrucciones puede cambiar o recuperar información.
Este manual se centra, principalmente, en el uso de instrucciones DML
para consultar datos de SQL Server.
2.1.1. SELECT
La sentencia SELECT permite seleccionar registros de una o más
tablas.Se usa para listar los campos deseados del resultado de una
consulta. Es la sentencia básica de SQL.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 19 -
2.1.2. FROM
Esta instrucción se utiliza para obtener información de la base de datos,
nos permite sacar reportes y es el principal comando. La cláusula FROM
especifica la tabla de la que se obtienen las filas y columnas. En la cláusula
FROM podemos utilizar tablas derivadas, combinaciones y alias.
Ambas sentencias SELECT y FROM se utilizan juntas y su sintaxis más
simple es la siguiente:
La cual, traducida al español, significa “SELECCIONAR ciertos campos
DESDE cierta tabla”. Por esta razón es que se denominan consultas de
selección.
Por ejemplo, si se quiere «Obtener toda la información de los Productos»;
se podría escribir cualquiera de las siguientes instrucciones:
 Abreviando, pues se desea obtener todos los campos de la Tabla
Products.
SELECT *
FROM Products
El * después de SELECT indicaque queremos ver todos los campos que aparecen
en la tabla.
 Listando los campos separados por comas:
Select
ProductID,ProductName,SupplierID,CategoryID,QuantityP
erUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLev
el,Discontinued
From Products
 Haciendo explícita, en la lista de campos, la referencia a la tabla:
SELECT Products.*
FROM Products
Es conveniente en muchos casos utilizar necesariamente la referencia explícita a
la tabla desde la cual se desea tomar las columnas en la lista de campos cuando
se extraen datos de más de una tabla.
SINTAXIS
SELECT nombre_ campo
FROM nombre_tabla
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 20 -
Al ejecutar cualquiera de las instrucciones anteriores se muestra la
siguiente tabla resultante de la consulta:
A. MODIFICADORES
 Distinct y All: Devuelve solamente filas únicas, elimina las filas
duplicadas del conjunto de resultados, es preciso poner la palabra
clave DISTINCT inmediatamente después de SELECT. También
podríamos explicitar que lo queremos todo, incluso con repeticiones,
poniendo ALL (opción por defecto) en lugar de DISTINCT.
Por ejemplo, si se quiere obtener todas las filas de la tabla
customers, pero sólo que se muestre el nombre de cada país una
vez. Se escribe la siguiente instrucción:
SELECT DISTINCT country
FROM dbo.Customers
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 21 -
 TOP n: Devuelve solamente las n primeras filas de un conjunto de
registros resultantes.
Por ejemplo, si se quiere obtener los nombres de los empleados
de las tres (3) primeras filas de la tabla employees. Se escribe la
siguiente instrucción:
Select top (3) FirstName
From dbo.Employees
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
B. FUNCIONES DE AGREGACIÓN: Las funciones que calculan
promedios y sumas se llaman funciones de agregado. Cuando se
ejecuta una función de agregado, SQL Server resume los valores de
toda una tabla o de grupos de columnas de una tabla, y produce un
valor por cada conjunto de filas para las columnas especificadas.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 22 -
La sintaxis para el uso de funciones de agregación es:
El SQL nos ofrece las siguientes funciones de agregación para
efectuar varias operaciones sobre los datos de una base de datos:
Por ejemplo, si se quiere obtener el total de empleados que hay de la
tabla employees. Se escribe la siguiente instrucción:
Select COUNT(*)
From Employees
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
Si se quiere obtener el total de órdenes realizadas que hay de la tabla
Orders Details. Se escribe la siguiente instrucción:
Función Descripción
COUNT Nos da el número total de filas seleccionadas de
un determinado campo incluyendo los valores
nulos
COUNT(*) Nos da el número total de filas seleccionadas de
un determinado campo no incluye los valores nulos
SUM Suma los valores de una columna
MIN Nos da el valor mínimo de una columna
MAX Nos da el valor máximo de una columna
AVG Calcula el valor medio de una columna
STDEV Desviación estadística de todos los valores
STDEVP Desviación estadística para la población
VAR Varianza estadística de todos los valores
VARP Varianza estadística de todos los valores para la
población
SINTAXIS
SELECT "tipo de función"("nombre_columna")
FROM "nombre_tabla"
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 23 -
Select sum(Quantity)
From [Order Details]
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
Si se quiere obtener el mayor precio de los productos de la tabla
Products. Se escribe la siguiente instrucción:
Select max(UnitPrice)
From Products
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
En general, las funciones de agregación se aplican a una columna,
excepto la función de agregación COUNT, que normalmente se aplica
a todas las columnas de la tabla o tablas seleccionadas. Por lo tanto,
COUNT (*) contará todas las filas de la tabla o las tablas que cumplan
las condiciones. Si se utilizase COUNT(columna), sólo contaría los
valores que no fuesen nulos.
C. USO DE ALIAS: Hay dos tipos de alias que se utilizan con mayor
frecuencia. Alias de columna y alias de tabla.
Los alias de columna existen para ayudar en la organización del
resultado. En el ejemplo anterior, cualquiera sea el momento en que
vemos el mayor precio de los productos, se enumeran como
MAX(UnitPrice).
El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar
un alias directamente luego del nombre de tabla en la cláusula FROM.
Esto es conveniente cuando desea obtener información de dos tablas
separadas. La ventaja de utiliza un alias de tablas cuando realizamos
uniones es rápidamente aparente cuando hablamos de uniones.
La sintaxis tanto para el alias de columna como de tabla es:
SINTAXIS
SELECT "alias_tabla"."nombre1_columna" "alias_columna"
FROM "nombre_tabla" "alias_tabla"
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 24 -
Brevemente, ambos tipos de alias se colocan directamente después
del elemento por el cual generan el alias, separados por un espacio en
blanco.
Por ejemplo, si se quiere obtener el mínimo precio de los productos
de la tabla Products, utilizando alias. Se escribe la siguiente
instrucción:
Select min(p.UnitPrice) as precio_Minimo
From Products as p
Al ejecutar la instrucción se muestra la siguiente tabla resultante:
2.1.3. WHERE
La sentencia WHERE sirve para filtrar registros lo que no lo hace el
SELECT ni el FROM. Éste permite establecer condiciones que deban
cumplir los registros para ser considerandos dentro del conjunto resultante.
Después de Cláusula WHERE (donde) irá la(s) condición(es) que deben
cumplir los registros. La sintaxis de SQL considerando esta sintaxis es:
Para definir las condiciones en la cláusula WHERE, podemos utilizar
alguno de los operadores de los que dispone el SQL, que son los
siguientes:
 OPERADORES DE COMPARACIÓN
= Igual
< Menor
> Mayor
<= Menor o igual
>= Mayor o igual
<> Diferente
 OPERADORES LÓGICOS
NOT Para la negación de
condiciones
AND Para la conjunción de
condiciones
OR Para la disyunción de
condiciones
SINTAXIS
SELECT "nombre_campo"
FROM "nombre_tabla"
WHERE "Condición_Filtro"
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 25 -
Por ejemplo, “Mostrar los productos de la categoría 2”
La instrucción sería de la siguiente manera; utilizando el operador de
comparación igual (=):
select*
fromProducts
whereCategoryID=2
Resultado de la consulta:
Al comparar valores de tipo INT estos se escriben normalmente, pero al comparar
con valores de tipo texto, éste debe estar entre comillas simples (‘’)
Así como para saber la categoría 5; cambiamos:
select*
fromProducts
whereCategoryID=5
o
select*
from[Order Details]
whereOrderID=10260
Para unir dos condiciones unimos con cualquier operador Lógico:
And/OrSINTAXIS
SELECT "nombre_campo"
FROM "nombre_tabla"
WHERE "condición " {[AND|OR] "condición "}
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 26 -
Ejemplo: Mostrar los Productos de la Categoría 4 y 6.
select*
fromProducts
whereCategoryID=4 orCategoryID=6
Resultado de la consulta:
 CONCATENACIÓN DE CADENAS
El operador de concatenación de cadenas (+) concatena valores de
cadena. El resto de las operaciones con cadenas se controla mediante
las funciones de cadena.
Por ejemplo, queremos mostrar el nombre completo de los empleados
en una sola columna o campo:
select FirstName+(' ')+LastName as nombre_completo
from dbo.Employees
Se mostrará la siguiente tabla como resultado:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 27 -
 IN
Verifica que una determinada expresión se encuentre dentro de una lista
de valores la cual puede ser escrita elemento por elemento o puede ser
el resultado de otra consulta; las reglas que todas las condiciones deben
estar unidas con el OR, deben ser del mismo campo y los operadores
sean “=” .
La sintaxis de esta instrucción es:
Ejemplo:Selecciona todos los campos de la tabla Productscuyos
campos sea de las Categorías 4 o 6 o 8 o 2
SELECT*
FROMProducts
WHERECategoryIDin(4,6,8,2)
El resultado es el siguiente:
SINTAXIS
SELECT "nombre_campo"
FROM "nombre_tabla"
WHERE "nombre_campo" IN ('valor1', 'valor2', ...)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 28 -
Ejemplo: Obtener todos los productos de los proveedores con número
3, 5, 8.
SELECT*
FROMProducts
WHERESupplierIDin(3,5,8)
Resultado de la consulta:
Ejemplos:
o Mostrar el nombre del producto, unidad, código; cuyo precio es mayor que 100.
SELECTProductID,ProductID,UnitPrice
FROMProducts
WHEREUnitPrice>100
o Mostrar el nombre del producto, unidad, código; además los productos que
están entre 30 y 60.
selectProductID,ProductName,UnitPrice
fromProducts
WhereUnitPrice>30 ANDUnitPrice<60
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 29 -
 BETWEEN
Verifica que el resultado de una expresión se encuentre entre otros dos
valores. Debe haber un rango que el campo sea el mismo y además un
operador sea >= y el otro <=.
La sintaxis de este predicado es:
o Ejemplo: Mostrar el nombre del producto, unidad, código; además los
productos que están entre 30 y 60.
selectProductID,ProductName,UnitPrice
fromProducts
WhereUnitPricebetween 30 and 60
SINTAXIS
SELECT "nombre_campo"
FROM "nombre_tabla"
WHERE "nombre_campo" BETWEEN 'valor_mínimo' AND 'valor_máximo'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 30 -
o Mostrar el nombre del producto, unidad de precio, código, stock y la
categoría, solo de aquellos que tienen un stock entre 0 y 10.
selectProductID,ProductName,UnitPrice,UnitsInStock,Cate
goryID
fromProducts
WhereUnitsInStockbetween 0 AND 10
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 31 -
o Mostrar el nombre del producto y su código, donde el nombre del producto
sea Chang.
selectProductID,ProductName
fromProducts
WhereProductName='chang'
 NULL
o Una columna tiene un valor NULL cuando no se ha especificado
ningún valor para ella durante la entrada de datos y no tiene definido
un valor predeterminado. Un valor NULL no es lo mismo que cero
(que es un valor numérico) o blanco (que es un valor de carácter).
o Puede utilizar la condición de búsqueda IS NOT NULL para obtener
las filas con valores conocidos en las columnas especificadas.
Por ejemplo, mostrar a los nombres de las compañías existentes de los
proveedores.
select ContactName
from dbo.Suppliers
where ContactName is not null
Al ejecutar esta consulta da la siguiente tabla como resultado:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 32 -
 LIKE
LIKE es otra palabra clave que se utiliza en la cláusula WHERE.
Básicamente, LIKE le permite hacer una búsqueda basada en un patrón
en vez de especificar exactamente lo que se desea (como en IN) o
determinar un rango (como en BETWEEN). La sintaxis es la siguiente:
Ejemplos de uso de caracteres comodín
La tabla siguiente contiene ejemplos de uso de comodines con la
condición de búsqueda LIKE.
Ejemplo
En este ejemplo se obtienen las compañías de la tabla customers que
contengan la palabra "restaurant" en su nombre.
SELECT companyname
FROM customers
WHERE companyname LIKE '%Restaurant%'
Al ejecutar la instrucción se nos presenta la siguiente tabla resultante:
Expresión Devuelve
LIKE 'BR%' Todos los nombres que comiencen por las letras BR.
LIKE '%een' Todos los nombres que terminen con las letras een.
LIKE '%en%' Todos los nombres que contengan las letras en.
LIKE '_en' Todos los nombres de tres letras que terminen con las
letras en.
LIKE '[CK]%' Todos los nombres que comiencen por C o por K.
LIKE '[S-V]ing' Todos los nombres de cuatro letras que terminen con
las letras ing y comiencen por cualquier letra
comprendida entre S y V.
LIKE 'M[^c]%' Todos los nombres que comiencen por la letra M y
cuya segunda letra no sea c.
SINTAXIS
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 33 -
Ejemplo
En este ejemplo se obtienen los nombres de los productos de la tabla
products que contengan terminen en "s" en su nombre.
selectProductID,ProductName
fromProducts
WhereProductNamelike'%s'
Al ejecutar la instrucción se nos presenta la siguiente tabla resultante
 YEAR MONTH DAY
Estas tres sentencias sirven para trabajar con fechas cómodamente, si
queremos saber los empleados que nacieron en el 1963 sería:
SELECT *
FROM Employees
WHERE YEAR(BirthDate)=1963
Para mes sería Month y para día DAY. Recordar que "fecha" debe ser
un campo de tipo Date, y que el comparador es un entero (no poner
entre comillas)
Resultado de la consulta:
También se puede utilizar la cláusula DATEPART(YYYY,Campo) o
DATEPART(MM,Campo) o DATEPART(DD,Campo)
Para saber las ordenes realizadas en el año de 1996 hacemos:
SELECT *
FROM dbo.Orders
WHERE Datepart(yyyy,OrderDate)='1996'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 34 -
2.1.4. ORDER BY
Es posible ordenar los registros devueltos por la sentencia SELECT
añadiendo a la instrucción la cláusula ORDER BY, por defecto sale
ordenado en forma ascendente. La sintaxis en este caso es el siguiente:
o Mostrar el nombre del producto, unidad de precio, código, stock y la
categoría, solo de aquellos que tienen un stock entre 0 y 10. Ordenado por
el precio en forma descendente.
selectProductID,ProductName,UnitPrice,UnitsInStock,Cat
egoryID
fromProducts
WhereUnitsInStockbetween 0 AND 10
OrderbyCategoryIDDESC
SINTAXIS
SELECT "nombre_campo"
FROM "nombre_tabla"
WHERE "condición"
ORDER BY "nombre_campo" [ASC, DESC]
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 35 -
El campo por el que queremos ordenar debe estar en el SELECT. La palabra ASC
o DESC se pone al final de las columnas de ordenamiento.
 TOP
Devuelve un determinado número de registros. Esta sentencia se guía
por la ordenación.
Donde “n” es la cantidad de registros que se requiere
select top 3*
from Products
o Obtener los 15 primeros registros de detalle de la orden q tengan mayor
cantidad vendida:
Selecttop 15 OrderId,ProductID,Quantity
from[Order Details]
orderbyQuantitydesc
SINTAXIS
Select top n * from tabla
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 36 -
 WITH TIES
Devuelve las filas iguales si se utiliza
SELECT TOP 5 WITH TIES orderid, productid, quantity
FROM [order details]
ORDER BY quantity DESC
Resultado de la consulta:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 37 -
EJERCICIOS
Base de Datos II (20011-1)
Ing. De Sistemas – FI- UNC
EJERCICIOS básicos de SQL TRANSACT
(Microsoft SQL SERVER 2008)
Usando la Base de Datos Northwind, realizar las siguientes consultas:
1. Seleccionar todos los campos de la tabla Clientes, ordenado por nombre del
Contacto de la compañía, alfabéticamente.
select *
from dbo.Customers
order by ContactName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 38 -
2. Seleccionar todos los campos de la tabla Órdenes, ordenados por fecha de la orden,
Descendentemente.
select *
from dbo.Orders
order by OrderDate Desc
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 39 -
3. Seleccionar todos los campos de la tabla Detalle de la Orden, ordenada por
Cantidad Pedida, Ascendentemente.
select *
from [Order Details]
order by Quantity
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 40 -
4. Obtener todos los productos, cuyo nombre comiencen con la letra P y tienen un
precio unitario comprendido entre 10 y 120.
5. Obtener todos los clientes de los Países de: USA, Francia y UK.
select *
from Products
where ProductName like 'P%' AND UnitPrice between 10 AND 120
select *
from dbo.Customers
where Country in ('usa','francia','uk')
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 41 -
6. Obtener todos los productos descontinuados y sin stock, que pertenecen a las
categorías 1, 3, 4 y 7.
7. Obtener todas las órdenes hechas por el empleado con código: 2, 5 y 7 en el año
1996.
select *
from dbo.Products
where (CategoryID in (1,3,4,7)) AND (Discontinued='true'AND
UnitsInStock='0')
select *
from dbo.Orders
where EmployeeID in (2,5,7) AND YEAR(OrderDate)='1996'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 42 -
8. Seleccionar todos los clientes que cuentan con FAX.
9. Seleccionar todos los clientes que no cuentan con FAX, del País de USA.
select *
from dbo.Customers
where Fax is not null
select *
from dbo.Customers
where Fax is null AND Country='usa'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 43 -
10. Seleccionar todos los empleados que cuentan con un jefe.
11. Seleccionar todos los campos del cliente, cuya compañía empiecen con la letra de A
hasta la D y pertenezcan al país de USA, ordenarlos por la dirección.
12. Seleccionar todos los campos del proveedor, cuya compañía no comience con las
letras de la B a la G, y pertenezcan al país de UK, ordenarlos por nombre de la
compañía.
select*
from dbo.Employees
where ReportsTo is not null
select *
from dbo.Customers
where CompanyName like '[a-d]%' and Country='usa'
order by Address
select *
from dbo.Suppliers
where (CompanyName like 'a%' or CompanyName like '[f-z]%') and
Country='uk'
order by CompanyName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 44 -
13. Seleccionar los productos vigentes cuyos precios unitarios están entre 35 y 250, sin
stock en almacén, pertenecientes a las categorías 1, 3, 4, 7 y 8, que son distribuidos
por los proveedores 2, 4, 6, 7 y 9.
14. Seleccionar todos los campos de los productos descontinuados, que pertenezcan a
los proveedores con códigos: 1, 3, 7, 8 y 9, que tengan stock en almacén, y al
mismo tiempo que sus precios unitarios estén entre 39 y 190, ordenados por código
de proveedor y precio unitario de manera ascendente.
select *
from Products
where Discontinued='false' AND UnitPrice between 35 AND 250 AND
UnitsInStock='0' AND CategoryID in (1,3,4,7,8) AND SupplierID in
(2,4,6,7,9)
select *
from Products
where Discontinued='true' AND SupplierID in (1,3,7,8,9) AND
UnitsInStock!='0' AND UnitPrice between 39 AND 190
order by SupplierID,UnitPrice
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 45 -
15. Seleccionar los 7 productos con precios más caros, que cuenten con Stock en
almacén.
16. Seleccionar los 9 productos, con menos stock en almacén, que pertenezcan a la
categoría 3, 5 y 8.
select top 7 *
from dbo.Products
where UnitsInStock!=0
order by UnitPrice desc
select top 9 *
from dbo.Products
where CategoryID in (3,5,8)
order by UnitsInStock
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 46 -
17. Seleccionar las órdenes de compra, realizadas por el empleado con código entre 2 y
el 5, además de los clientes con códigos que comienzan con las letras de la A hasta
la G, del 31 de Julio de cualquier año.
18. Seleccionar las órdenes de compra, realizadas por el empleado con código 3, de
cualquier año pero sólo de los últimos 5 meses (Agosto - Diciembre).
19.
select *
from dbo.Orders
where EmployeeID between 2 AND 5 AND CustomerID like '[a-g]%' AND
DATEPART(MM,OrderDate)='07' AND DATEPART(dd,OrderDate)='31'
select *
from Orders
where EmployeeID=3 and month(OrderDate)in (8,9,10,11,12)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 47 -
20. Seleccionar los detalles de las órdenes de compra, que tengan un monto de
cantidad pedida entre 10 y 250.
select *
from [Order Details]
where Quantity between 10 AND 250
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 48 -
COMBINACIÓN DE TABLAS Y
AGRUPACIÓN DE DATOS
3.1. JOIN
Para realizar uniones en SQL se requieren mucho de los elementos que ya hemos
visto. SQL también proporciona varios mecanismos para reunir relaciones,
incluyendo reuniones condicionales y reuniones naturales, así como varias formas
de reunión externa. Estas operaciones adicionales se usan a menudo como
subconsultas dentro de la cláusula from.
 Selección de columnas específicas de varias tablas
 La palabra clave JOIN especifica qué tablas se van a combinar y cómo
 La palabra clave ON especifica la condición de combinación
 Consultas de dos o más tablas para producir un conjunto de resultados
 Use claves principales y externas como condiciones de combinación
 Para combinar tablas, utilice columnas comunes a las tablas especificadas
INNER JOIN: Devuelve solo los registros de la combinación de ambas tablas de
en los hay coincidencia de acuerdo a la expresión vinculante.
LEFT JOIN: Devuelve los registros de la combinación de ambas tablas en los
cuales hay coincidencia de acuerdo a la expresión vinculante e incluye además a
todos los registros de la primera tabla que no tengan “pareja” en la segunda.
RIGTH JOIN: Devuelve los registros de la combinación de ambas tablas en los
cuales hay coincidencia de acuerdo a la expresión vinculante e incluye además a
todos los registros de la segunda tabla que no tengan “pareja” en la primera.
UNION: Use el operador UNION para crear un conjunto de resultados único a
partir de varias consultas
 Cada consulta debe tener:
 Tipos de datos similares
 El mismo número de columnas
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 49 -
 El mismo orden de columnas en la lista de selección
Por ejemplo:
Queremos saber el total de órdenes realizadas por cada empleado escribimos la
siguiente sentencia:
select COUNT(*) as total, e.LastName
from dbo.Orders as o
inner join dbo.Employees as e on
o.EmployeeID=e.EmployeeID
group by LastName
Al ejecutar lo anterior tenemos:
3.2. GROUP BY
Genera valores de resumen para una sola columna, para esto se utiliza funciones
de agregado con la cláusula GROUP BY. Utilice la cláusula HAVING con la
cláusula GROUP BY para restringir los grupos de filas devueltas en el conjunto de
resultados.
El uso de la cláusula GROUP BY no garantiza que se vaya a usar ningún criterio
de ordenación. Si desea que los resultados se ordenen, debe incluir la cláusula
ORDER BY.
SINTAXIS
SELECT "nombre_columna 1",
SUM("nombre_columna 2")
FROM "nombre_tabla"
GROUP BY "nombre_columna 1"
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 50 -
3.3. HAVING
Esta sentencia se utiliza de similar manera que la sentencia WHERE para filtrar
instrucciones en SQL que incluyen agrupaciones de registros se empleará esta
cláusula HAVING.
Su sintaxis es:
Utilice la cláusula HAVING en columnas o expresiones para establecer
condiciones en los grupos incluidos en un conjunto de resultados. La cláusula
HAVING establece condiciones en la cláusula GROUP BY de una forma muy
similar a como interactúa la cláusula WHERE con la instrucción SELECT.
 Cuando utilice la cláusula HAVING, considere los hechos e instrucciones
siguientes:
 Utilice la cláusula HAVING sólo con la cláusula GROUP BY para restringir
los agrupamientos. El uso de la cláusula HAVING sin la cláusula GROUP
BY no tiene sentido.
 En una cláusula HAVING puede haber hasta 128 condiciones. Cuando
utilice varias condiciones, tiene que combinarlas con operadores lógicos
(AND, OR o NOT).
 Puede hacer referencia a cualquiera de las columnas que aparezcan en la
lista de selección.
 No utilice la palabra clave ALL con la cláusula HAVING, porque la cláusula
HAVING pasa por alto la palabra clave ALL y sólo devuelve los grupos que
cumplen la cláusula HAVING.
Por ejemplo:
Mostrar la cantidad de órdenes hechas por cada empleado pero que sean mayores
que 100.
Se escribirá la siguiente instrucción:
Select COUNT(*) as total,e.FirstName,e.LastName
from dbo.Orders as o
inner join dbo.Employees as e on o.EmployeeID=e.EmployeeID
groupby e.FirstName,e.LastName
having COUNT(*)>100
orderby FirstName,LastName
SINTAXIS
SELECT "nombre_columna 1",
SUM("nombre_columna 2")
FROM "nombre_tabla"
GROUP BY "nombre_columna 1"
HAVING (condición de función aritmética)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 51 -
Ejercicio 1
selectCOUNT(*)astotal,e.EmployeeID,e.LastName
fromdbo.Ordersaso
innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID
groupbye.EmployeeID,e.LastName
Ejercicio 2
selectCOUNT(*)astotal,e.FirstName,e.LastName
fromdbo.Ordersaso
innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID
groupbye.FirstName,e.LastName
havingCOUNT(*)>100
orderbyFirstName,LastName
Ejercicio 3
selectsum(od.Quantity)astotal,c.CompanyName
fromOrdersaso
innerjoin[Order Details]asodono.OrderID=od.OrderID
innerjoinCustomersasconc.CustomerID=o.CustomerID
groupbyc.CompanyName
orderbyc.CompanyName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 52 -
Ejercicio 4
selectsum(Quantity*UnitPrice*2.82)astotal,o.OrderID
from[Order Details]asodinnerjoinOrdersasoono.OrderID=od.OrderID
whereyear(o.OrderDate)=1996 andMONTH(o.OrderDate)=12
groupbyo.OrderID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 53 -
Ejercicio 5
selectcount(*)astotal,s.CompanyName
fromdbo.Productsaspinnerjoindbo.Suppliersass
onp.SupplierID=s.SupplierID
whereUnitsInStock!='0'andDiscontinued='0'
groupbys.CompanyName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 54 -
EJERCICIOS
21. Mostrar el código de categoría, nombre de categoría, código del producto, nombre del
producto y precio.
select
dbo.Categories.CategoryID,dbo.Categories.CategoryName,dbo.Products.Pro
ductID,dbo.Products.ProductName,dbo.Products.UnitPrice
from dbo.Categories
inner join dbo.Products on
dbo.Categories.CategoryID=dbo.Products.CategoryID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 55 -
22. Mostrar el número de la orden fecha de la orden, código del producto, cantidad del precio y
flete de la orden.
23. Mostrar: código, nombre, ciudad y país del proveedor. Código, nombre, precio, stock del
producto.
select o.OrderID,o.OrderDate,od. ProductID,od.Quantity,o.Freight
from [Order Details]as od
inner join Orders as o on od.OrderID=o.OrderID
select s.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID,
p.ProductName,p.UnitPrice,p.UnitsInStock
from Suppliers as s
inner join Products as p on s.SupplierID=p.SupplierID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 56 -
24. Código y nombre de la categoría, código, nombre, precio y stock de los productos, código,
nombre de los proveedores.
select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName,
p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyName
from dbo.Categories as c
inner join dbo.Products as p on c.CategoryID=p.CategoryID
inner join dbo.Suppliers as s on p.SupplierID=s.SupplierID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 57 -
25. Mostrar número de la orden, fecha, nombre del producto, nombre de la categoría, nombre
del producto.
26. Mostrar número de la orden, fecha, nombre y dirección del cliente, nombre y apellido del
empleado, nombre del producto comprado y nombre del proveedor.
select od.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyName
from Orders as o
inner join [Order Details] as od on od.OrderID=o.OrderID
inner join dbo.Products as p on od.ProductID=p.ProductID
inner join dbo.Categories as c on c.CategoryID=p.CategoryID
inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID
select
od.OrderID,o.OrderDate,c.CompanyName,c.Address,e.LastName,e.LastName,
p.ProductName,s.CompanyName
from [Order Details]as od
inner join Orders as o on od.OrderID=o.OrderID
inner join Products as p on od.ProductID=p.ProductID
inner join Customers as c on c.CustomerID=o.CustomerID
inner join Employees as e on e.EmployeeID=o.EmployeeID
inner join Suppliers as s on s.SupplierID=p.SupplierID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 58 -
27. Modificar el ejercicio 1: sólo los productos de las categorías 2, 4, 5 y 7.
select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName,
p.UnitPrice
from Categories as c
inner join dbo.Products as p on c.CategoryID=p.CategoryID
where c.CategoryID in (2,4,5,7)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 59 -
28. Modificar el ejercicio 2: sólo las órdenes del mes de enero de 1997.
select o.OrderID,o.OrderDate,od. ProductID,od.Quantity,o.Freight
from [Order Details]as od
inner join Orders as o on od.OrderID=o.OrderID
where month(o.OrderDate)='01' and year(o.OrderDate)='1997'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 60 -
29. Modificar el ejercicio 3: sólo los productos con stock 0.
30. Modificar el ejercicio 4: sólo con precios entre 50 y 100.
31. Modificar el ejercicio 5: sólo del primer trimestre del año 1996.
select s.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID,
p.ProductName,p.UnitPrice,p.UnitsInStock
from Suppliers as s
inner join Products as p on s.SupplierID=p.SupplierID
where p.UnitsInStock='0'
select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName,
p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyName
from dbo.Categories as c
inner join dbo.Products as p on c.CategoryID=p.CategoryID
inner join dbo.Suppliers as s on p.SupplierID=s.SupplierID
where p.UnitPrice between 50 AND 100
select od.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyName
from Orders as o
inner join [Order Details] as od on od.OrderID=o.OrderID
inner join dbo.Products as p on od.ProductID=p.ProductID
inner join dbo.Categories as c on c.CategoryID=p.CategoryID
inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID
where (month(o.OrderDate)='1' or month(o.OrderDate)='1'or
month(o.OrderDate)='2'or month(o.OrderDate)='3') AND
YEAR(o.OrderDate)='1996'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 61 -
BASE DE DATOS II
EJERCICIOS inner join, group by, having y where SQL
TRANSACT (Microsoft SQL SERVER 2008)
Usando la Base de Datos Northwind, realizar las siguientes consultas:
32. Visualizar el máximo y mínimo precio de los productos por categoría, mostrar el
nombre de la categoría.
33. Visualizar el máximo y mínimo precio de los productos por proveedor, mostrar el
nombre de la compañía proveedora.
select MIN(p.UnitPrice) as prec_min,MAX(p.UnitPrice) as
prec_max,c.CategoryName
from Products as p
inner join Categories as c on p.CategoryID=c.CategoryID
group by c.CategoryName
select MIN(p.UnitPrice) as prec_min,MAX(p.UnitPrice) as
prec_max,s.CompanyName
from Products as p
inner join Suppliers as s on p.SupplierID=s.SupplierID
group by s.CompanyName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 62 -
34. Seleccionar las categorías que tengan más de 5 productos. Mostrar el nombre de la
categoría y número de productos.
select c.CategoryName,count(p.QuantityPerUnit) as total
from Categories as c
inner join dbo.Products as p on c.CategoryID=p.CategoryID
group by CategoryName
having COUNT(p.QuantityPerUnit)>5
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 63 -
35. Calcular cuántos clientes existen en cada País.
36. Calcular cuántos clientes existen en cada Ciudad.
select Country,count(CompanyName) as total_clientes
from Customers
group by Country
select City,count(CompanyName) as total_clientes
from Customers
group by City
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 64 -
37. Calcular cuántos proveedores existen en cada Ciudad y País.
38. Calcular el stock total de los productos por cada categoría. Mostrar el nombre de la
categoría y el stock por categoría.
select Country,count(SupplierID) as
total_proveedores,City,count(SupplierID) as total_proveedores
from dbo.Suppliers
group by Country,city
select c.CategoryName,sum(p.UnitsInStock) as stock
from Categories as c
inner join Products as p
on c.CategoryID=p.CategoryID
group by c.CategoryName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 65 -
39. Calcular el stock total de los productos por categoría. Mostrar el nombre el nombre
de la categoría y el stock por categoría. Solamente las categorías 2,5, y 8.
40. Obtener el Nombre del Cliente, Nombre del Proveedor, Nombre del Empleado y el
nombre de los productos que están en la orden 10250.
41. Mostrar el número de Órdenes realizadas de Cada uno de los Clientes por año.
select c.CategoryName,sum(p.UnitsInStock) as stock
from Categories as c
inner join Products as p
on c.CategoryID=p.CategoryID
where c.CategoryID in (2,5,8)
group by c.CategoryName
select c.CompanyName,
s.CompanyName,e.LastName,p.ProductName,o.OrderID
from Customers as c
inner join orders as o on c.CustomerID=o.CustomerID
inner join Employees as e on e.EmployeeID=o.EmployeeID
inner join [Order Details] as od on od.OrderID=o.OrderID
inner join Products as p on p.ProductID=od.ProductID
inner join Suppliers as s on s.SupplierID=p.supplierID
where o.OrderID='10250'
select distinct c.CompanyName,COUNT(*)as total_ordenes,year(o.OrderDate)
as año
from Orders as o
inner join Customers as c on o.CustomerID=c.CustomerID
group by c.CompanyName, year(o.OrderDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 66 -
42. Mostrar el número de Órdenes realizadas de Cada uno de los Empleados en cada
año.
select distinct e.FirstName,COUNT(*)as
total_ordenes,year(o.OrderDate) as año
from Orders as o
inner join Employees as e on o.EmployeeID=e.EmployeeID
group by e.FirstName, year(o.OrderDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 67 -
43. Mostrar el número de Órdenes realizadas de Cada uno de los Clientes por cada mes
y año.
44. Contar el número de Órdenes que se han realizado por años y meses.
select distinct c.CompanyName,COUNT(*)as
total_ordenes,year(o.OrderDate) as año,MONTH(o.OrderDate) as mes
from Orders as o
inner join Customers as c
on o.CustomerID=c.CustomerID
group by c.CompanyName, year(o.OrderDate), month(o.OrderDate)
select distinct YEAR(o.OrderDate) as año,MONTH(o.OrderDate) as mes,
COUNT(*) as total_ordenes
from dbo.Orders as o
group by YEAR(o.OrderDate), MONTH(o.OrderDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 68 -
45. Seleccionar el nombre de la compañía del cliente, el código de la orden de compra,
la fecha de la orden de compra, código del producto, cantidad pedida del producto,
nombre del producto, el nombre de la compañía Proveedora y la ciudad del
proveedor.
select c.CompanyName, od.OrderID, o.OrderDate, p.ProductID,
od.Quantity, p.ProductName, s.CompanyName, s.City
from [Order Details] as od
inner join dbo.Orders as o on od.OrderID=o.OrderID
inner join dbo.Products as p on p.ProductID=od.ProductID
inner join dbo.Customers as c on c.CustomerID=o.CustomerID
inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 69 -
46. Seleccionar el nombre de la compañía del cliente, nombre del contacto, el código de
la orden de compra, la fecha de la orden de compra, código del producto, cantidad
pedida del producto, nombre del producto y el nombre de la compañía Proveedora,
usar join. Solamente las compañías proveedoras que comienzan con la letra de la A
hasta la letra G, además la cantidad pedida del producto debe estar entre 18 y 190.
select
c.CompanyName,c.ContactName,od.OrderID,o.OrderDate,p.ProductID,od.Q
uantity,p.ProductName,s.CompanyName
from [Order Details] as od
inner join dbo.Orders as o on od.OrderID=o.OrderID
inner join dbo.Products as p on p.ProductID=od.ProductID
inner join dbo.Customers as c on c.CustomerID=o.CustomerID
inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID
where s.CompanyName like '[a-g]%' and Quantity between 18 and 190
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 70 -
47. Seleccionar cuantos proveedores tengo en cada país, considerando solo a los
nombres de los proveedores que comiencen con la letra E hasta la letra P, además
de mostrar sólo los países donde tenga más de 2 proveedores.
48. Obtener el número de productos, por categoría. Mostrando el nombre de la
categoría, el nombre del producto, y el total de productos por categoría, solamente
de las categorías 3, 5 y 8. Ordenar por el nombre de la categoría.
select Country,COUNT(*) as total_proveedores
from dbo.Suppliers
where CompanyName like '[e-p]%'
group by Country
having COUNT(*)>2
select p.CategoryID,COUNT(*) as
total_productos,c.CategoryName,p.ProductName
from dbo.Products as p inner join dbo.Categories as c on
p.CategoryID=c.CategoryID
group by p.CategoryID,c.CategoryName,p.ProductName
having p.CategoryID in(3,5,8)
order by c.CategoryName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 71 -
49. Mostrar el número de la orden, la fecha de la orden y el total en soles de cada
orden.
50. Mostrar el nombre de Producto y en cuántas órdenes de compra se encuentra.1
select OrderID, OrderDate, Freight=Freight*2.87
from dbo.Orders
select distinct p.ProductName, COUNT(od.OrderID) as total_OdC
from Products as p inner join [Order Details] as od on
p.ProductID=od.ProductID
group by p.ProductName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 72 -
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 73 -
MANIPULACIÓN DE TABLAS
4.1. INSERT INTO
En los programas de mantenimiento de base de datos es frecuente requerir
instrucciones que hagan posible la inserción de registros en las tablas. Estas
instrucciones hacen uso de la cláusula INSERT del lenguaje SQL. En su forma
más elemental, la instrucción tendrá la siguiente sintaxis.
 Puede insertar datos mediante una transacción si especifica un conjunto de
valores o inserta los resultados de una instrucción SELECT. Puede crear
una tabla e insertar datos al mismo tiempo. No tiene que insertar valores en
todos los campos de datos de una fila.
 La instrucción INSERT con la cláusula VALUES permite agregar filas a una
tabla. Al insertar filas, tenga en cuenta los siguientes hechos e
instrucciones:
 Debe atenerse a las restricciones de destino o la transacción INSERT
fallará.
 Utilice listaColumnas para especificar las columnas en las que se va a
almacenar cada valor especificado. listaColumnas debe especificarse entre
paréntesis y delimitarse con comas. Si especifica valores para todas las
columnas, listaColumnas es opcional.
 Para especificar los valores que desea insertar, utilice la cláusula VALUES.
Esta cláusula se requiere para cada columna de la tabla o de
listaColumnas. El orden y el tipo de los nuevos datos debe corresponder al
orden y al tipo de las columnas de la tabla. Muchos tipos de datos tienen un
formato de entrada asociado. Por ejemplo, los datos de carácter y las
fechas deben encerrarse entre comillas simples.
SINTAXIS
INSERT INTO "nombre_tabla" ("colonne 1", "colonne 2", ...)
valorS ("valor 1", "valor 2", ...)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 74 -
o Identidad
Insert into articulos(nombre,precio,stock)
values('LaptopHP',1200,10)
insertinto[alumnitos]
values('A001','karen','estrada')
select*
fromalumnitos
Insertinto [alumnitos]
Values ('A002','juan','mendez')
Select *
From alumnitos
insertinto[alumnitos]
values('A003','ana','diaz')
select*
fromalumnitos
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 75 -
4.2. UPDATE
El lenguaje SQL server permite escribir instrucciones que hagan posible que esas
actualizaciones se realicen rápidamente, para ello debe emplear la sentencia
UPDATE. En su forma más elemental Update tendrá la siguiente sintaxis.
La instrucción UPDATE permite cambiar filas individuales, grupos de filas o todas
las filas de una tabla. Al actualizar filas, tenga en cuenta los hechos e instrucciones
siguientes:
 Especifique las filas que desea actualizar con la cláusula WHERE.
 Especifique los nuevos valores con la cláusula SET.
 Compruebe que los valores de entrada tienen los mismos tipos de datos
que los definidos para las columnas.
 SQL Server no hará actualizaciones que infrinjan alguna restricción de
integridad. En ese caso, no se producirán los cambios y la instrucción se
deshará.
 Sólo es posible cambiar los datos de una tabla cada vez.
 Puede establecer una expresión en una o varias columnas o variables. Por
ejemplo, una expresión puede ser un cálculo (como price * 2) o la suma de
dos columnas.
Ejemplo
En el ejemplo siguiente se agrega el 10 por ciento a los precios actuales de todos
los productos de Northwind Traders.
USE northwind
UPDATE products
SET unitprice = (unitprice * 1.1)
Ejemplo 1:
updateProducts
setUnitPrice=UnitPrice*0.5
whereCategoryID='1'
selectcount(*),MIN(UnitPrice)asmini,max(UnitPrice)asmaxi
fromProducts
whereCategoryID=1
SINTAXIS
UPDATE "nombre_tabla"
SET "colonne 1" = [nuevo valor]
WHERE {condition}
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 76 -
Ejemplo 2:
updateSuppliers
setcountry='perusalem'
wherecountry='uk'
select*
fromSuppliers
Ejemplo 3:
updatedbo.Categories
setCategoryName='juguetes'
whereCategoryID=5
select*
fromCategories
Ejemplo 4:
updateSuppliers
setFax='0'
whereFaxisnull
select*
fromSuppliers
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 77 -
Ejemplo 5:
updateEmployees
setFirstName='Karen',LastName='Estrada'
whereEmployeeID=6
select*
fromEmployees
Ejemplo 6:
updateCustomers
setCustomerID=('UNCFNI')
whereCustomerID=('ALFKI')
select*
fromCustomers
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 78 -
4.3. DELETE FROM
Esta sentencia permite eliminar registros de las tablas. La sintaxis más simple de
esta sentencia es la siguiente:
La instrucción DELETE quita una o varias filas de una tabla o una vista mediante
una transacción. Puede especificar las filas que elimina SQL Server si filtra la tabla
de destino o mediante una cláusula JOIN o una subconsulta.
La instrucción DELETE quita filas de las tablas. La instrucción DELETE permite
quitar una o varias filas de una tabla.
Al utilizar la instrucción DELETE, tenga en cuenta los hechos siguientes:
 SQL Server eliminará todas las filas de la tabla si no incluye una cláusula
WHERE en la instrucción DELETE.
 Cada fila eliminada se almacena en el registro de transacciones.
Ejemplo 1:
deletefromProducts
whereDiscontinued=1
SINTAXIS
DELETE FROM "nombre_tabla"
WHERE {condición}
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 79 -
Ejemplo 2:
delete
fromOrders
whereOrderID=10255
select*
fromOrders
whereOrderID=10255
Ejemplo 3:
delete
from[Order Details]
whereProductIDin(selectProductID
fromProducts
whereDiscontinued=1)
4.4. SUBCONSULTAS
Es una consulta dentro de otra más grande.
o Consulta : Seleccionar los productos cuyos precios sean mayores al
promedio de todos los productos
select*
fromProducts
whereUnitPrice>(selectAVG(UnitPrice)fromProducts)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 80 -
o
delete
from[Order Details]
whereProductIDin(selectProductID
fromProducts
whereDiscontinued=1)
4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE)
Un procedimiento almacenado es una colección con nombre de instrucciones de
Transact-SQL que se almacena en el servidor. Los procedimientos almacenados
son un método para encapsular tareas repetitivas. Admiten variables declaradas
por el usuario, ejecución condicional y otras características de programación muy
eficaces.
Para alterar o modificar un procedimiento utilizamos ALTER en reemplazo de
CREATE
EXEC Ejecuta una función definida por el usuario, un procedimiento de sistema, un
procedimiento almacenado definido por el usuario o un procedimiento almacenado
extendido�Controla la ejecución de una cadena de caracteres dentro de un lote de
Transact-SQL
SINTAXIS
Create proc Nombre_Procedimiento
--Declaracion de variables
As
--Cuerpo de la instrucción
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 81 -
Create proc SPQ_PRODUCTS
@CATE int
as
select *
from Products
where CategoryID=@CATE
exec SPQ_PRODUCTS 2
Ejemplo:
ALTER proc SPQ_PRODUCTS
as
select *
from Products
where CategoryID=8
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 82 -
Ejemplo:
Create procedure hola
@cod int
as
select *
from Employees
where EmployeeID=@cod
Exec hola 8
Ejemplo:
Alter procedure hola
@cod int
as
select *
from Customers
where CustomerID=@cod
Create proc todos_produc
as
select ProductID,ProductName,UnitPrice,UnitsInStock
from dbo.Products
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 83 -
Create proc nuevo_escrito
@d char(8),
@n varchar (20),
@a varchar (25),
@e varchar (50),
@s char (1)
as
insert INto inscripciones
values (@d,@n,@a,@e,@s)
exec nuevo_escrito
'26458595','lili','calua','lili@hormail.com','f'
Ejemplo:
Create proc precios
@li money,
@ls money
as
select *
from Products
where UnitPrice between @li and @ls
Exec precios 15,20
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 84 -
Las variables son elementos del lenguaje con valores asignados. En Transact-
SQL se pueden utilizar variables locales.
Una variable local es una variable definida por el usuario en una instrucción
DECLARE; se le asigna un valor inicial en una instrucción SET o SELECT y,
después, se utiliza en la instrucción, programa por lotes o procedimiento en el que
se declaró. Una variable local se identifica mediante un símbolo arroba (@) que
precede a su nombre mientras que una variable global incluye dos símbolos arroba
delante de su nombre.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 85 -
EJERCICIOS
Ejemplo 1:
createprocempleado_unidades
@anioint
as
selectSUM(od.Quantity)astotal,e.LastName,e.FirstName,YEAR(o.OrderDate)asa
ño
fromdbo.EmployeesaseinnerjoinOrdersasoone.EmployeeID=o.EmployeeID
innerjoin[Order Details]asodonod.OrderID=o.OrderID
whereYEAR(o.OrderDate)=@anio
groupbye.LastName,e.FirstName,YEAR(o.OrderDate)
empleado_unidades 1996
2. productos mas vendidos por año
alterprocmas_vendidos
@tint,
@anioint
as
selecttop
(@t)p.ProductName,sum(od.Quantity*od.UnitPrice*2.81)asmonto_total
fromProductsaspinnerjoin[Order
Details]asodonp.ProductID=od.ProductIDinnerjoin
Ordersasoono.OrderID=od.OrderID
whereYEAR(o.OrderDate)=@anio
groupbyp.ProductName
orderbysum(od.Quantity*od.UnitPrice)desc
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 86 -
mas_vendidos 3,1997
3. productos no vendidos por año
alterprocno_vendidos
@anioint
as
selectp.ProductID,p.ProductName,YEAR(o.OrderDate)asanio
fromProductsaspinnerjoin[Order
Details]asodonp.ProductID=od.ProductIDinnerjoin
Ordersasoono.OrderID=od.OrderID
wherep.ProductIDnotin(selectProductIDfrom[Order
Details])andyear(OrderDate)=@anio
no_vendidos 1996
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 87 -
5. Mostrar los productos que tengan la palabra queso dentro de su nombre
alterprocproductos
@palnvarchar(40)
as
selectp.ProductName,e.FirstName
fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID
innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee
ID=o.EmployeeID
wherep.ProductNamelike@pal
productos'%queso%'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 88 -
6. buscar por frase la cantidad total por empleado
alterprocproductos
@palnvarchar(40)
as
selectp.ProductName,e.FirstName,e.LastName,SUM(od.Quantity)astotal_vendid
os
fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID
innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee
ID=o.EmployeeID
wherep.ProductNamelike@pal
groupbyp.ProductName,e.FirstName,e.LastName
orderbySUM(od.Quantity)desc
productos'%queso%'
7. dias trnascurridos
createprocdias_trans
@numint
as
selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd
ias_trans
fromOrders
wheredatediff(day,ShippedDate,RequiredDate)<@num
groupbydatediff(day,ShippedDate,RequiredDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 89 -
dias_trans 10
8. En un año determinado
alterprocdias_trans
@numint,
@anioint
as
selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd
ias_trans
fromOrders
wheredatediff(day,ShippedDate,RequiredDate)<@numandYEAR(RequiredDate)=@an
io
groupbydatediff(day,ShippedDate,RequiredDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 90 -
dias_trans 10,1997
9. para el codigo de un alumno
alterproc codigo
@pat varchar(30),
@mat varchar(30),
@nombre varchar(30)
as
declare @nr as int,@cod as char(4)
select @nr=max(substring(codigo,2,3))
from alumnitos
if @nrisnullset@nr=0;
set @nr=@nr+1;
if @nr<=9 set@cod='A00'+LTRIM(STR(@nr))
else if @nr<=99
set @cod='A0'+STR(@nr)
else if @nr<=999
set @cod='A'+STR(@nr)
;
Insert into alumnitos(codigo,paterno,materno,nombres)
values (@cod,@pat,@mat,@nombre)
exec 'estrada','aguilar','karen johana'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 91 -
Más ejercicios
alter proc insert_cliente
@nom varchar (20),
@ape varchar (30),
@dir varchar (30),
@email varchar (35)
as
declare @cod char(8)
declare @nr int
set @cod=left(@nom,2)+LEFT(@ape,2)
select @nr=COUNT(*)+1
from dbo.clientes
if @nr<=9
set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
else
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
insert into dbo.clientes
values (@cod,@nom,@ape,@dir,@email)
insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com'
insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com'
insert_cliente 'karen','johana','Jose carlos mariategui n°
314','karen_j.e.a@hotmail.com'
-->
alter proc insert_cliente
@nom varchar (20),
@ape varchar (30),
@dir varchar (30),
@email varchar (35)
as
declare @cod char(7)
declare @nr int
set @cod=left(@nom,2)+LEFT(@ape,2)
select @nr=COUNT(*)+1
from dbo.clientes
if @nr<=9
set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr))
if @nr<=99
set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
else
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
insert into dbo.clientes
values (@cod,@nom,@ape,@dir,@email)
insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com'
insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com'
insert_cliente 'karen','johana','Jose carlos mariategui n°
314','karen_j.e.a@hotmail.com'
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 92 -
Para insertar Clientes en la tabla clientes
alter proc insert_cliente
@nom varchar (20),
@ape varchar (30),
@dir varchar (30),
@email varchar (35)
as
declare @cod char(7)
declare @nr int
set @cod=left(@nom,2)+LEFT(@ape,2)
select @nr=COUNT(*)+1
from dbo.clientes
where SUBSTRING(codigo,1,4)=@cod
if @nr<=9
set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr))
if @nr<=99
set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
else
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
insert into dbo.clientes
values (@cod,@nom,@ape,@dir,@email)
insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com'
insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com'
select *
from dbo.clientes
verdadero
alter proc insert_cliente
@nom varchar (20),
@ape varchar (30),
@dir varchar (30),
@email varchar (35)
as
declare @cod char(7)
declare @nr int
set @cod=left(@nom,2)+LEFT(@ape,2)
select @nr=COUNT(*)+1
from dbo.clientes
where SUBSTRING(codigo,1,4)=@cod
if @nr<=9
set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr))
if @nr<=99
set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
else
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
insert into dbo.clientes
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 93 -
values (@cod,@nom,@ape,@dir,@email)
insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com'
insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com'
select *
from dbo.clientes
Insertar participantes
create proc insertpat
@nom varchar(30),
@ape varchar(30),
@sexo char (1)
as
declare @cod char (7)
declare @nr int
select @nr=COUNT(*)
from dbo.participantes
where sexo=@sexo
if @nr<9
set @cod=left(@nom,2)+LEFT(@ape,2)+'00'+LTRIM(STR(@nr+1))
else if @nr<99
set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1))
else
set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1))
insert into dbo.participantes
values (@cod,@nom,@ape,@sexo)
insertpat 'luis','ruiz','m'
Insertar alumnos
alter proc ins_alumnos
@nom varchar(30),
@ape varchar(30),
@fenac datetime
as
declare @cod char (9)
declare @nr int
set @cod=left(@nom,1)+LEFT(@ape,1)+Ltrim(str(YEAR(@fenac)))
select @nr=COUNT(*)+1
from dbo.alumnos
where substring(@cod,1,9)=@cod
if @nr<=9
set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr))
if @nr<=99
set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 94 -
else
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
insert into dbo.alumnos
values (@cod,@nom,@ape,@fenac)
ins_alumnos 'juan','perez','03/04/1991'
Insertar participantes
create proc insertpat
@nom varchar(30),
@ape varchar(30),
@sexo char (1)
as
declare @cod char (7)
declare @nr int
select @nr=COUNT(*)
from dbo.participantes
where sexo=@sexo
if @nr<9
set @cod=left(@nom,2)+LEFT(@ape,2)+'00'+LTRIM(STR(@nr+1))
else if @nr<99
set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1))
else
set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1))
insert into dbo.participantes
values (@cod,@nom,@ape,@sexo)
insertpat 'luis','ruiz','m'
Procedimiento para aumentar el precio a los productos
alter proc prod
@cat int,
@por float
as
update Products
set UnitPrice=UnitPrice+UnitPrice*@por/100
where CategoryID=@cat and Discontinued=0
select *
from Products
where Discontinued=1
order by UnitPrice
prod 1,0.5
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 95 -
0004 para insertar Alumnos
alter proc insertar_alumnos
@n varchar (30),
@a varchar (30)
as
declare @nr int
declare @c char(3)
select @nr=count(*)+1
from alumn
if @nr<=9
set @c='p0'+LTRIM(STR(@nr))
else
set @c='p'+LTRIM(STR(@nr))
insert into alumn
values(@c,@n,@a)
exec insertar_alumnos 'carlos','huaman'
select *
from alumn
Pero con el siguiente ya no sale error:
alter proc insertar_alumnos
@n varchar (30),
@a varchar (30)
as
declare @nr int
declare @c char(3)
select @nr=max(right(cod,2))+1
from alumn
if @nr<=9
set @c='p0'+LTRIM(STR(@nr))
else
set @c='p'+LTRIM(STR(@nr))
insert into alumn
values(@c,@n,@a)
exec insertar_alumnos 'carlos','huaman'
select *
from alumn
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 96 -
OTRAS SENTENCIAS
5.1. SUBSTRING FUNCION
La función de subcadena en SQL se utiliza para tomar una parte de los datos
almacenados. Esta función tiene diferentes nombres según las diferentes bases de
datos:
 MySQL: SUBSTR(), SUBSTRING()
 Oracle: SUBSTR()
 SQL Server: SUBSTRING()
Los usos más frecuentes son los siguientes (utilizaremos SUBSTR() aquí):
SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con
posición <pos>. Note que esta sintaxis no es compatible en SQL Server.
SUBSTR(str,pos,len): Comienza con el carácter <pos> en la cadena <str> y
selecciona los siguientes caracteres <len>.
5.2. TRIM FUNCION
La función TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado de
una cadena. El patrón más común a eliminarse son los espacios en blanco. Esta
función tiene diferentes nombres según las diferentes bases de datos:
 MySQL: TRIM(), RTRIM(), LTRIM()
 Oracle: RTRIM(), LTRIM()
 SQL Server: RTRIM(), LTRIM()
La sintaxis para estas funciones de reducción es:
TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] puede ser LÍDER,
REMANENTE, o AMBAS. Esta función se deshace del patrón [remstr] tanto para el
comienzo de la cadena como para el final, o para ambos. Si no se especifica
ningún [remstr], los espacios en blanco se eliminarán.
LTRIM(str): Elimina todos los espacios en blanco del comienzo de la cadena.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 97 -
RTRIM(str): Elimina todos los espacios en blanco del final de la cadena.
Ejemplo 1 :
SELECT TRIM(' Sample ');
Resultado :
'Sample'
Ejemplo 2 :
SELECT LTRIM(' Sample ');
Resultado :
'Sample '
Ejemplo 3 :
SELECT RTRIM(' Sample ');
Resultado :
' Sample'
5.3. SENTENCIA CAST
Se utiliza para convertir valores de un tipo a otro diferente, la forma de utilizarla es
CAST("CAMPO" as TIPO), por ejemplo, si queremos recuperar un Integer en
formato de texto, la consulta sql sería así:
Select CAST(goles as varchar(30))
from jugadores
where id = 100
Este resultado nos devolveria los goleadores de menor a mayor, pero lo logico es
que nos interese al reves, por lo que se sería:
Select Jugador,goles
from jugadores
order by goles desc
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 98 -
EJEMPLOS
CLIENTES ALEATORIOS
alter proc aleatorio
as
declare @azar int
declare @num int
set @num=(select count(EmployeeID)
from dbo.Employees)
set @azar=cast(rand()*@num +1 as int)
select *
from Employees
where EmployeeID=@azar
CUSTOMER AZAR
create proc azar
as
select top 1 CustomerID,CompanyName,NEWID()
from Customers
order by NEWID()
o
alter proc azar
@num int
as
select top (@num) CustomerID,CompanyName,NEWID()
from Customers
order by NEWID()
azar 3
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 99 -
POR 5 (*5)
SELECT randomNumber, COUNT(1) countOfRandomNumber
FROM (
SELECT ABS(CAST(NEWID() AS binary(6)) %1000) + 1 randomNumber
FROM sysobjects) sample
GROUP BY randomNumber
ORDER BY randomNumber
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 100 -
REPORTING SERVICE
6.1. INGRESANDO A SQL SERVER BUSINESS INTELLIGENCE DEVELOPMENT
STUDIO
Para realizar Reporting Service y poder realizar informes; primero ingresaremos a
Microsoft Visual Studio 2008 de SQL (que ha sido instalado en el mismo
momento junto con SQL Server 2008) para lo cual seguiremos los siguientes
pasos:
 Buscamos el icono de SQL Server Business Intelligence Development Studio
en el escritorio y hacemos doble clic.
 Podemos escribir la siguiente dirección en el cuadro Ejecutar: “C:Program
FilesMicrosoft Visual Studio 9.0Common7IDEdevenv.exe” y pulsar ENTER.
Es la ruta que adquiere el programa de SQL Server Business Intelligence
Development Studio en la instalación estándar.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 101 -
 Si no encontramos éste icono en el escritorio y no podemos ejecutar lo anterior
hacemos lo siguiente:
o Clic en el botón inicio.
o Clic en todos los programas.
o Clic en Microsoft SQL Server 2008.
o Y finalmente hacemos clic en SQL Server Business Intelligence Development
Studio
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 102 -
 Esperamos que cargue…
 Podemos observar la página de inicio de Microsoft Visual Studio 2008.
6.2. CREAR UN NUEVO PROYECTO DE REPORTES
 Hacemos clic en Archivo luego en Nuevo, finalmente Proyecto.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 103 -
 Se abre el cuadro de diálogo Nuevo proyecto, hacemos clic en Proyecto de Servidor de
Informes.
 Ponemos el nombre del nuevo proyecto a crear y luego aceptamos.
 Se creó el Proyecto Karen.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 104 -
6.3. DATA SOURCE (ORIGEN DE DATOS COMPARTIDO)
 Para crear un origen de Datos compartido hacemos clic derecho sobre origen de datos
compartidos, luego hacemos clic en Agregar nuevo origen de datos.
 Se abre el cuadro de diálogo Propiedades de origen de datos compartidos y para crear
una cadena de conexión hacemos clic en editar.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 105 -
 En el cuadro propiedades de la conexión, en el nombre del servidor escribimos “.”
(punto), escogemos la base de datos northwind; finalmente aceptamos.
 En la siguiente ventana también elegimos aceptar.
 Se creó el origen de datos compartidos
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 106 -
6.4. CREAR UN INFORME PARA HACER REPORTES
 Hacemos un anti clic en Informes, clic en Agregar, luego hacemos clic en nuevo
elemento.
 Seleccionamos en Planillas instaladas de Visual Studio, Informe; podemos ponerle un
nombre y luego aceptamos.
 Aparece la siguiente ventana donde se creará el reporte.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 107 -
6.5. DATA SET
 Para traer la consulta que se va a mostrar se inserta un conjunto de datos. Hacemos clic
en Nuevo y luego en Conjunto de datos…
 En el cuadro de diálogo Propiedades del conjunto de datos, en origen de datos
hacemos clic en Nueva.
 Se abre el cuadro del origen de datos, como ya habíamos creado un origen de datos
compartido, seleccionamos la opción Utilizar referencia de origen de datos
compartidos; en este caso seleccionamos DataSource1. Finalmente aceptamos.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 108 -
 En Propiedades del conjunto de datos, podemos seleccionar el tipo de consulta que
podemos hacer por ejemplo el de Texto y en Consulta pues escribimos la consulta y
aceptamos.
 Otro caso es el de seleccionar en el tipo de consulta Procedimiento Almacenado,
seleccionando así el procedimiento que deseamos y luego aceptamos.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 109 -
 Finalmente observamos que el DataSet1 se creó con éxito.
 El Cuadro de Herramientas:
 Para elaborar el informe debemos arrastrar un elemento del Cuadro de Herramientas
hasta la superficie del diseño
 Por ejemplo el elemento Matriz.
 Por ejemplo el elemento Gráfico, donde se puede elegir el gráfico del cuadro
Selección tipo de gráfico y aceptamos, logrando ver el gráfico.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 110 -
 También podemos utilizar el elemento Informe integrado para poder visualizar
más de un reporte.
 Otro elemento es Tabla muy utilizado en muchos reportes.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 111 -
 y, a continuación, arrastramos campos de conjunto de datos al elemento; que puede
ser de tres maneras:
 Arrastrando desde Datos de Informe al área de diseño.
 Eligiendo en las filas los datos:
 Si ya no hay más columnas arrastramos los datos junto a la última columna.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 112 -
 Observamos el reporte en manera de diseño con todos los datos pedidos.
 En el mismo modo de diseño Podemos cambiar el color de relleno seleccionando las
celdas de las filas o columnas.
 De igual manera se puede hacer para cambiar el color de texto.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 113 -
 Hacemos clic en Vista Previa, esperamos hasta que se genere el informe.
 Después que se haya generado el informe Podemos presentar ya el informe.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 114 -
EJERCICIOS
 CREAR UN ORIGEN DE DATOS COMPARTIDO. Crear una sola vez la conexión
para todos los informes.
1. Crear el informe (En Visual Studio):
Mostrar en un informe que contenga: ProductName, UnitPrice, UnitsInStock,
CategoryName
Código en SQL:
Reporting services:
 En modo de diseño:
 En modo de vista previa (Informe final):
create proc Report1
as
select p.ProductName, p.UnitPrice, p.UnitsInStock, c.CategoryName
from Products as p inner join Categories as c on
p.CategoryID=c.CategoryID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 115 -
2. Crear un reporte para mostrar el Nombre del producto, el precio del producto, el
stock y la categoría; deberá ser filtrado por categoría.
Código en SQL:
Reporting Service:
 Para dar los valores a la categoría debemos agregar un nuevo conjunto de datos
(dataset2). En esta ocasión hacemos una consulta de tipo Texto.
 Para darle los valores de al parámetros damos anti clic en el parámetro y
escogemos Propiedades del parámetro.
create proc cat_prod
@cate int
as
select ProductName,UnitPrice,UnitsInStock,CategoryID
from Products
where CategoryID=@cate
select categoryID, categoryname
from categories
order by categoryname
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 116 -
 En Propiedades de parámetro de informe, en la parte general llenamos lo que se
nos pide: Pedir datos, Tipo de datos, etc.
 En valores disponibles: Seleccionamos la opción Obtener valores de una consulta,
en conjunto de datos elegimos DataSet2.
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 117 -
 En Campo de valor seleccionamos CategoryId y en Campo de etiqueta
seleccionamos Categorianame.
 En modo de diseño:
 En modo de vista previa:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 118 -
Informe final de la categoría 1:
3. Crear un reporte usando reporting service que muestre el nombre del producto, el
nombre de la compañía del proveedor, precio, seleccionar el nombre de la
empresa y mostrar los productos del proveedor seleccionado.
Código en SQL:
create proc informe02
@s int
as
select p.ProductName,s.CompanyName,p.UnitPrice
from Products as p inner join Suppliers as s on
p.SupplierID=s.SupplierID
where s.SupplierID=@s
select SupplierID,CompanyName
from Suppliers
order by SupplierID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 119 -
Reporting Services:
 En modo de diseño:
 En modo de vista previa:
Informe final:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 120 -
4. Mostrar el número de productos vendidos en cada mes por cada empleado.
Código en SQL:
Reporting Services:
 En modo de diseño:
 En modo de vista previa:
create proc Prod_vendidOS
@e int
as
select LastName+' '+FirstName AS EMPLEADO
,MONTH(o.OrderDate) as MES,sum(od.Quantity) as Total
from Employees as e inner join Orders as o
on e.EmployeeID=o.EmployeeID inner join [Order
Details] as od on o.OrderID=od.OrderID
where E.EmployeeID=@e
group by LastName+' '+FirstName,MONTH(o.OrderDate)
ORDER BY MONTH(o.OrderDate)
create proc empleados
as
SELECT EmployeeID,FirstName+' '+FirstName
FROM Employees
ORDER BY EmployeeID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 121 -
Informe final:
5. Mostrar el nombre del cliente, nombre del empleado, número de la orden, fecha de
la orden, nombre del proveedor, filtrar por el empleado que hizo la orden.
Código en SQL:
create proc ordeNES_empleado
@e INT
as
select c.ContactName, lastname+' '+firstname as Empleado, o.OrderID,
OrderDate, s.ContactName
from Orders as o inner join [Order Details] as od on o.OrderID=od.OrderID
inner join Products as p on p.ProductID=od.ProductID inner join
Customers as c on c.CustomerID=o.CustomerID inner join Employees
as e on e.EmployeeID=o.EmployeeID inner join Suppliers as s on
s.SupplierID=p.SupplierID
where E.EmployeeID=@e
create proc empleados
as
SELECT EmployeeID,FirstName+' '+FirstName
FROM Employees
ORDER BY EmployeeID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 122 -
Reporting Services:
 En modo de diseño:
 En modo de vista previa:
Informe final:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 123 -
PRÁCTICA
Crear los siguientes informes: en SQL SERVER.
1. Mostrar en un objeto table, el nombre del cliente, la n° de la orden, el nombre del
producto, precio, cantidad comprada, además el nombre del proveedor.
Mostrar el nombre del cliente en un Combo box e DROP DOWN para filtrar la información.
Código en SQL:
Reporting Services:
 En modo de diseño:
create proc Tab01
@nom nvarchar (40)
as
select c.CompanyName,
o.OrderID,p.ProductName,od.UnitPrice,od.Quantity,s.CompanyName
from orders as o inner join [Order Details] as od on o.OrderID=od.OrderID
inner join Products as p on od.ProductID=p.ProductID inner join
Customers as c on c.CustomerID=o.CustomerID inner join Suppliers as s
on s.SupplierID=p.SupplierID
where c.CompanyName=@nom
create proc T01
as
select CustomerID, CompanyName
from Customers
order by CompanyName
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 124 -
 En modo de vista previa:
Informe final:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 125 -
2.
Precio 10 y 30
Código en SQL:
Reporting Services:
 En modo de diseño:
Productoname Unitprice Categoryname companyname
Proveedor
create proc Productos_entre
@li money,
@ls money
as
select ProductName,UnitPrice,CategoryName,s.CompanyName
from Products as p inner join Categories as c on
c.CategoryID=p.CategoryID inner join Suppliers as s on
s.SupplierID=p.SupplierID
where UnitPrice between @li and @ls
create proc li_ls
as
select ProductID,UnitPrice
from Products
order by UnitPrice
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 126 -
 En modo de vista previa:
Informe final:
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 127 -
3. Proveedores (mostrar
companyname)
Categoría (mostrar categoryname)
Productname Categoryname Companyname unitsinstock
Código en SQL:
Reporting Services:
 En modo de diseño:
CREATE proc PROV_CAT
@prov nvarchar (40),
@cat NVARCHAR (15)
as
select p.ProductName,c.CategoryName,s.CompanyName,p.UnitsInStock
from Products as p inner join Categories as c on
p.CategoryID=c.CategoryID inner join Suppliers as s on
s.SupplierID=p.SupplierID
where c.CategoryName=@cat and s.CompanyName=@prov
CREATE proc proveedores
as
select SupplierID,CompanyName
from Suppliers
order by SupplierID
create proc categorias
as
select CategoryID,CategoryName
from Categories
order by CategoryID
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 128 -
 En modo de vista previa:
Informe final:
4. Mostar en un gráfico y en una tabla el número de productos por categorías
2 2
3
5
0
1
2
3
4
5
6
Categoría A Categoría B Categoría C Categoría D …
Productos
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 129 -
Código en SQL:
Reporting Services:
 En modo de diseño:
 En modo de vista previa (Informe final):
create proc TOT_PROD
as
select CategoryID,count(QuantityPerUnit) as total
from Products
group by CategoryIDwhere E.EmployeeID=@e
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 130 -
5. Año (consulta de años a la bd) (distint)(matriz) (employ,orde)
Meses
1 2 3 4 … 12
Juan Torres
Pedro León
Ana Díaz
María Huamán
Empleados (Nombre y apellidos)
Numero de órdenes realizadas en un mes del año seleccionado
Código en SQL:
Reporting Services:
 En modo de diseño:
create proc Emp_orde
@anio datetime
as
select FirstName+' '+LastName as name,count(OrderID) as
total_ordenes,MONTH(OrderDate)
from Employees as e inner join Orders as o on
o.EmployeeID=e.EmployeeID
where year(OrderDate)=@anio
group by FirstName+' '+LastName,MONTH(OrderDate)where
E.EmployeeID=@e
create proc anios
as
select distinct YEAR(OrderDate)
from Orders
order by YEAR(OrderDate)
Manual de SQL Server 2008 2012
Estrada Aguilar, Karen Johana | BASE DE DATOS II. .
- 131 -
 En modo de vista previa:
Informe final:
6. Mes Año
0
1
2
3
4
5
6
Emp 1 Emp 2 Emp 3 Emp 4 …
Númerodeórdenes
realizadas
Total de Órdenes
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service
Youblisher.com 368313-manual de-sql_server_2008_reporting_service

Más contenido relacionado

La actualidad más candente

Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacionalAlex Javier
 
Trabajo final uml_200609_19
Trabajo final uml_200609_19Trabajo final uml_200609_19
Trabajo final uml_200609_19Yenny González
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en javaLuis Miguel De Bello
 
Ventajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosVentajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosIsabel
 
Informe en cisco de configuracion de servidores jose daniel
Informe en cisco de configuracion de servidores   jose danielInforme en cisco de configuracion de servidores   jose daniel
Informe en cisco de configuracion de servidores jose danielJosé Daniel Castañeda Arias
 
Guia básica Packet Tracer
Guia básica Packet TracerGuia básica Packet Tracer
Guia básica Packet TracerErick Calderin
 
Tema3 modelo relacional - normalización
Tema3   modelo relacional - normalizaciónTema3   modelo relacional - normalización
Tema3 modelo relacional - normalizaciónAlvaro Loustau
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2Velmuz Buzz
 
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosHerramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosYazmin Ibarra
 
Controladores de dominio_de_redes_windows
Controladores de dominio_de_redes_windowsControladores de dominio_de_redes_windows
Controladores de dominio_de_redes_windowsPedro Hernandez
 
Taller modelo entidad relacion
Taller modelo entidad relacionTaller modelo entidad relacion
Taller modelo entidad relacionBrayan Vega Diaz
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosEsteban Andres Diaz Mina
 
Bases de datos distribuidas heterogéneas
Bases de datos distribuidas heterogéneasBases de datos distribuidas heterogéneas
Bases de datos distribuidas heterogéneasJuan Anaya
 
Diccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónDiccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónYaskelly Yedra
 

La actualidad más candente (20)

Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacional
 
Trabajo final uml_200609_19
Trabajo final uml_200609_19Trabajo final uml_200609_19
Trabajo final uml_200609_19
 
Programacion en sockets informe
Programacion en sockets informeProgramacion en sockets informe
Programacion en sockets informe
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Ventajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivosVentajas y desventajas de las bases de datos frente a los archivos
Ventajas y desventajas de las bases de datos frente a los archivos
 
Informe en cisco de configuracion de servidores jose daniel
Informe en cisco de configuracion de servidores   jose danielInforme en cisco de configuracion de servidores   jose daniel
Informe en cisco de configuracion de servidores jose daniel
 
Guia básica Packet Tracer
Guia básica Packet TracerGuia básica Packet Tracer
Guia básica Packet Tracer
 
Tema3 modelo relacional - normalización
Tema3   modelo relacional - normalizaciónTema3   modelo relacional - normalización
Tema3 modelo relacional - normalización
 
Mcvs mn-01 casos de uso de negocio
Mcvs mn-01 casos de uso de negocioMcvs mn-01 casos de uso de negocio
Mcvs mn-01 casos de uso de negocio
 
Transaccion
TransaccionTransaccion
Transaccion
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2
 
Ejemplos acid
Ejemplos acidEjemplos acid
Ejemplos acid
 
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosHerramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
 
Controladores de dominio_de_redes_windows
Controladores de dominio_de_redes_windowsControladores de dominio_de_redes_windows
Controladores de dominio_de_redes_windows
 
Examen complexivo sql resuelto
Examen complexivo sql resueltoExamen complexivo sql resuelto
Examen complexivo sql resuelto
 
Taller modelo entidad relacion
Taller modelo entidad relacionTaller modelo entidad relacion
Taller modelo entidad relacion
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de Datos
 
Bases de datos distribuidas heterogéneas
Bases de datos distribuidas heterogéneasBases de datos distribuidas heterogéneas
Bases de datos distribuidas heterogéneas
 
Diccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de informaciónDiccionario de datos en los sistemas de información
Diccionario de datos en los sistemas de información
 
Diagrama de contexto
Diagrama de contextoDiagrama de contexto
Diagrama de contexto
 

Similar a Youblisher.com 368313-manual de-sql_server_2008_reporting_service

Servis desk ejemplo con ITIL
Servis desk  ejemplo con ITILServis desk  ejemplo con ITIL
Servis desk ejemplo con ITILCésar Ocampo
 
Cuaderno tecnico i_monitorizacionserviciossistemas
Cuaderno tecnico i_monitorizacionserviciossistemasCuaderno tecnico i_monitorizacionserviciossistemas
Cuaderno tecnico i_monitorizacionserviciossistemasAiiscyl Asocio
 
Administracion+de+empresas
Administracion+de+empresasAdministracion+de+empresas
Administracion+de+empresaschichumeka
 
Sistema de control, secuencia y termino
Sistema de control, secuencia y terminoSistema de control, secuencia y termino
Sistema de control, secuencia y terminoYadira Fuentes
 
Guia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioGuia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioCesar Espinoza
 
Mcvs ad-05 documento de analisis y diseño de cus
Mcvs ad-05 documento de analisis y diseño de cusMcvs ad-05 documento de analisis y diseño de cus
Mcvs ad-05 documento de analisis y diseño de cusgiancarlo Aguirre Campos
 
Vista 48 esp
Vista 48 espVista 48 esp
Vista 48 espIo Lk
 
Archi_NlayerApp
Archi_NlayerAppArchi_NlayerApp
Archi_NlayerAppzinousss
 
Auditoria de sistemas
Auditoria de sistemas Auditoria de sistemas
Auditoria de sistemas Kery Maeda
 
Apuntes prac
Apuntes pracApuntes prac
Apuntes pracJusto Lux
 
Universidad de chimbote
Universidad de chimboteUniversidad de chimbote
Universidad de chimboteJesus Alvarez
 
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...Saul Mamani
 
Software user guide_spanish
Software user guide_spanishSoftware user guide_spanish
Software user guide_spanishqwqwqwqeee
 

Similar a Youblisher.com 368313-manual de-sql_server_2008_reporting_service (20)

Servis desk ejemplo con ITIL
Servis desk  ejemplo con ITILServis desk  ejemplo con ITIL
Servis desk ejemplo con ITIL
 
Curso java y j2 EE
Curso java y j2 EECurso java y j2 EE
Curso java y j2 EE
 
Cuaderno tecnico i_monitorizacionserviciossistemas
Cuaderno tecnico i_monitorizacionserviciossistemasCuaderno tecnico i_monitorizacionserviciossistemas
Cuaderno tecnico i_monitorizacionserviciossistemas
 
Administracion+de+empresas
Administracion+de+empresasAdministracion+de+empresas
Administracion+de+empresas
 
Sistema de control, secuencia y termino
Sistema de control, secuencia y terminoSistema de control, secuencia y termino
Sistema de control, secuencia y termino
 
Guia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioGuia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocio
 
Mcvs ad-05 documento de analisis y diseño de cus
Mcvs ad-05 documento de analisis y diseño de cusMcvs ad-05 documento de analisis y diseño de cus
Mcvs ad-05 documento de analisis y diseño de cus
 
Vista 48 esp
Vista 48 espVista 48 esp
Vista 48 esp
 
Sp023 anexo 8 plan estrategico institucional
Sp023 anexo 8 plan estrategico institucionalSp023 anexo 8 plan estrategico institucional
Sp023 anexo 8 plan estrategico institucional
 
Archi_NlayerApp
Archi_NlayerAppArchi_NlayerApp
Archi_NlayerApp
 
Auditoria de sistemas
Auditoria de sistemas Auditoria de sistemas
Auditoria de sistemas
 
Apuntes prac
Apuntes pracApuntes prac
Apuntes prac
 
Sesion 3. inteligencia de negocios
Sesion 3. inteligencia de negociosSesion 3. inteligencia de negocios
Sesion 3. inteligencia de negocios
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Universidad de chimbote
Universidad de chimboteUniversidad de chimbote
Universidad de chimbote
 
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
 
Software user guide_spanish
Software user guide_spanishSoftware user guide_spanish
Software user guide_spanish
 
Tfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plazaTfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plaza
 
Informe emcali
Informe emcaliInforme emcali
Informe emcali
 

Último

actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.imejia2411
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxRodriguezLucero
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellajuancamilo3111391
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 

Último (13)

actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ella
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 

Youblisher.com 368313-manual de-sql_server_2008_reporting_service

  • 1. UNIVERSIDAD NACIONAL DE CAJAMARCA FACULTAD DE INGENIERÍA ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA DE SISTEMAS Cajamarca, 2012 Manual de SQL Server 2008 CONCEPTOS Y EJERCICIOS EN SQL Estrada Aguilar, Karen Johana
  • 2. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 3 - INTRODUCCIÓN.............................................................................................................................- 5 - CAPÍTULO I ....................................................................................................................................- 6 - CONCEPTOS BÁSICOS DE SQL .........................................................................................................- 6 - 1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS........................................................... - 6 - 1.1.1. REQUERIMIENTOS Y CARACTERÍSTICAS........................................................................... - 6 - 1.2. INICIANDO SQL SERVER 2008 ......................................................................................... - 7 - 1.3. CREAR UNA NUEVA TABLA: ........................................................................................... - 12 - 1.4. HACER CONSULTAS......................................................................................................... - 16 - CAPITULO II........................................................................................................................................- 18 - COMANDOS BÁSICOS DE SQL .........................................................................................................- 18 - 2.1. INSTRUCCIONES DE SQL SERVER 2008 .................................................................... - 18 - 2.1.1. SELECT....................................................................................................................................... - 18 - 2.1.2. FROM........................................................................................................................................... - 19 - A. MODIFICADORES.......................................................................................................................... - 20 -  Distinct y All: ............................................................................................................................. - 20 -  TOP n: ......................................................................................................................................... - 21 - B. FUNCIONES DE AGREGACIÓN ................................................................................................. - 21 - C. USO DE ALIAS:.............................................................................................................................. - 23 - 2.1.3. WHERE........................................................................................................................................ - 24 -  OPERADORES LÓGICOS ............................................................................................................ - 24 -  OPERADORES DE COMPARACIÓN.......................................................................................... - 24 -  CONCATENACIÓN DE CADENAS............................................................................................. - 26 -  IN ....................................................................................................................................................... - 27 -  BETWEEN........................................................................................................................................ - 29 -  NULL................................................................................................................................................. - 31 -  LIKE .................................................................................................................................................. - 32 -  YEAR MONTH DAY ....................................................................................................................... - 33 - 2.1.4. ORDER BY.................................................................................................................................. - 34 -  TOP ................................................................................................................................................... - 35 -  WITH TIES ....................................................................................................................................... - 36 - EJERCICIOS .......................................................................................................................................- 37 - CAPÍTULO III.......................................................................................................................................- 48 - COMBINACIÓN DE TABLAS Y AGRUPACIÓN DE DATOS ..............- 48 - 3.1. JOIN....................................................................................................................................... - 48 - INNER JOIN: .................................................................................................................................................. - 48 - LEFT JOIN:..................................................................................................................................................... - 48 - RIGTH JOIN: .................................................................................................................................................. - 48 - UNION:............................................................................................................................................................ - 48 - 3.2. GROUP BY........................................................................................................................... - 49 -
  • 3. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 4 - 3.3. HAVING................................................................................................................................. - 50 - EJERCICIOS .......................................................................................................................................- 54 - CAPÍTULO IV ......................................................................................................................................- 73 - MANIPULACIÓN DE TABLAS..............................................................................................................- 73 - 4.1. INSERT INTO....................................................................................................................... - 73 - 4.2. UPDATE................................................................................................................................ - 75 - 4.3. DELETE FROM.................................................................................................................... - 78 - 4.4. SUBCONSULTAS................................................................................................................ - 79 - 4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE) ................................ - 80 - EJERCICIOS .......................................................................................................................................- 85 - CAPÍTULO V .......................................................................................................................................- 96 - OTRAS SENTENCIAS ..........................................................................................................................- 96 - 5.1. SUBSTRING FUNCION...................................................................................................... - 96 - 5.2. TRIM FUNCION ................................................................................................................... - 96 - 5.3. SENTENCIA CAST.............................................................................................................. - 97 - EJEMPLOS..........................................................................................................................................- 98 - CAPÍTULO VI .................................................................................................................................... - 100 - REPORTING SERVICE ......................................................................................................................- 100 - 6.1. INGRESANDO A SQL SERVER BUSINESS INTELLIGENCE DEVELOPMENT STUDIO ............................................................................................................................................ - 100 - 6.2. CREAR UN NUEVO PROYECTO DE REPORTES ..................................................... - 102 - 6.3. DATA SOURCE (ORIGEN DE DATOS COMPARTIDO) ............................................ - 104 - 6.4. CREAR UN INFORME PARA HACER REPORTES.................................................... - 106 - 6.5. DATA SET........................................................................................................................... - 107 - EJERCICIOS ................................................................................................................................... - 114 - PRÁCTICA....................................................................................................................................... - 123 - AGRUPAR EN REPORTING SERVICE...................................................................................... - 138 - ENLACES DE INFORMES............................................................................................................ - 141 - IMPLEMENTACIÓN DE REPORTING SERVICE EN IIS......................................................... - 144 - INFORMES INTEGRADOS........................................................................................................... - 146 - EJERCICIOS: .................................................................................................................................. - 148 - PRACTICA CALIFICADA DE REPORTING SERVICES SQL SERVER 2008...................... - 154 - ADMINISTRACIÓN DE USUARIOS ............................................................................................ - 163 - CREACIÓN DE VISTAS ................................................................................................................ - 165 - CREACIÓN DE UN GRUPO DE INICIOS DE SESIÓN EN UN STORE PROCEDURE ..... - 168 - CREACIÓN DE UN GRUPO DE USUARIOS EN UN STORE PROCEDURE...................... - 170 - FUNCIONES.................................................................................................................................... - 172 - RESTRICCIONES .......................................................................................................................... - 176 - PROPUESTOS: .............................................................................................................................. - 178 - TRIGRESS....................................................................................................................................... - 182 -
  • 4. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 5 - El presente manual de SQL Server 2008 trata principalmente del manejo de datos a través de las diferentes sentencias que tiene SQL. En este se considera a las tablas como contenedores de datos organizados en filas y en columnas. Aquí es posible seleccionar datos que pertenezcan a diferentes tablas y también es permitido establecer reglas o condiciones que tengan que cumplir dichos datos para poder ser considerados como registros resultantes. La primera encarnación de SQL apareció en 1974, cuando un grupo de IBM desarrolló el primer prototipo de una base de datos relacional. Relational Software (luego se convirtió en Oracle) quien lanzó la primera base de datos relacional comercial. El mayor mérito de SQL está en su posibilidad de combinar las diferentes tablas de una base de datos en un solo conjunto resultante y por ello ha sido considerado en la mayoría de los programas administradores de Base de Datos tales como Oracle, Access o FoxPro. En este manual de SQL se enumera los comandos SQL normalmente utilizados, y se divide en las siguientes secciones:  Conceptos básicos de SQL: Que tratará de definir a SQL, cómo iniciar el programa, creación de tablas, hacer consultas.  Comandos Básicos de SQL: Las instrucciones SQL básicas para almacenamiento, recuperación y manipulación de datos en una base de datos relacional.  Manipulación de Tabla: Cómo se utilizan las instrucciones SQL para administrar las tablas dentro de una base de datos. Para cada comando; primero se definirá, luego se presentará y explicará la sintaxis SQL, seguida por algún o algunos ejemplos. Finalmente después de cada capítulo se mostrará los ejercicios desarrollados en la clase de Base de Datos II.
  • 5. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 6 - CONCEPTOS BÁSICOS DE SQL 1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS El Lenguaje de Consulta Estructurado (SQLStructured Query Language) es un lenguaje de base de datos normalizado, que se basa en el modelo relacional. Sql está compuesto por comandos, clausulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. 1.1.1. REQUERIMIENTOS Y CARACTERÍSTICAS  SQL Server tiene reservadas determinadas palabras clave para su uso exclusivo. Por ejemplo, si se usan las palabras clave DUMP o BACKUP en una sesión de osql o del Analizador de consultas de SQL, se estará indicando a SQL Server que debe realizar una copia de seguridad total o parcial de la base de datos, o una copia de seguridad del registro.  Debe evitar usar una palabra clave reservada como nombre de un objeto. Si el nombre de un objeto coincide con una palabra clave, cada vez que se haga referencia al objeto debe aparecer entre identificadores delimitadores, como dobles comillas (“ ”) o corchetes ([ ]).  Para hacer un comentario en una línea se puede poner dos guiones antes de éste (--). Ejm.:-- SQL es un lenguaje de programación  Para crear bloques de varias líneas de comentarios, se coloca un carácter de comentario (/*) al comienzo del texto del comentario, escriba sus anotaciones y, después, se concluye el comentario con un carácter de cierre de comentario (*/).Ejm.: /*Los comentarios son cadenas de texto que no se ejecutan, colocadas en las instrucciones para describir la acción que la instrucción está realizando*/ SQL Server no distingue las mayúsculas de las minúsculas
  • 6. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 7 - 1.2. INICIANDO SQL SERVER 2008 Para iniciar el trabajo con SQL Server 2008y poder realizar ejercicios de consultas con SQL TRANSACT primero ingresaremos al motor de la base de datos para lo cual seguiremos los siguientes pasos:  Buscamos el icono de SQL Server Management Studio en el escritorio y hacemos doble clic.  Podemos escribir la siguiente dirección en el cuadro Ejecutar: “C:Program Files Microsoft SQL Server100ToolsBinnVSShellCommon7IDESsms.exe” y pulsar ENTER. Es la ruta que adquiere el programa de SQL Server 2008 en la instalación estándar.  Si no encontramos éste icono en el escritorio y no podemos ejecutar lo anterior hacemos lo siguiente: o Clic en el botón inicio.
  • 7. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 8 - o Clic en todos los programas. o Clic en Microsoft SQL Server 2008.
  • 8. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 9 - o Y finalmente hacemos clic en SQL Server Management Studio  Esperamos que cargue…
  • 9. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 10 -  Luego realizamos la conexión con el servidor. Como podemos ver; tenemos la opción de elegir: El Tipo de Servidor Nombre del Servidor (ha sido definido El tipo de Autentificación al que debemos conectarnos al momento de la instalación)
  • 10. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 11 -  Después de elegir estos parámetros damos clic en conectar.  Finalmente vemos que la conexión ha sido realizada. Los objetos lo podemos ver en las carpetas como Base de Datos, cuando lo extendemos, entre otros; como también veremos las Bases de Datos existentes que han sido creadas al momento de la instalación una de ellas con la que trabajaremos es la Base de Datos Notrhwind.
  • 11. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 12 - 1.3. CREAR UNA NUEVA TABLA: Las tablas sirven para representar los datos o registros de una Base de Datos.Cada tabla está compuesta por varias filas y columnas, cadacolumna tiene un nombre único. Ejemplo: Crearemos la tabla Alumnos. El proceso que hay que seguir es el siguiente:  Expandimos la carpeta Base de Datos.  Ubicamos la Base de Datos donde vamos a crear nuestra tabla (en este caso utilizaremos la Base de Datos Notrhwind) expandimos.
  • 12. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 13 -  Hacemos anticlic (clic derecho) en la palabra Tablas y escogemos la opción Nueva Tabla.  Después, iremos dando el nombre a cada campo que formarán las columnas de la tabla (Código,Paterno, Materno, Nombre, Sexo, Dirección).  A cada una de las columnas le asignaremos un Tipo de datos predefinido (por defecto es nchar(10) ) o bien un dominio definido por el usuario. También podremos definir si se aceptarán valores nulos o no.
  • 13. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 14 -  En la parte baja al momento de escoger Tipo de datos están las Propiedades de columna o campo.  Podemos elegir la Clave principal (PK) haciendo anticlic en el nombre del campo y eligiendo la opción Establecer clave principal.
  • 14. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 15 -  Decidimos qué nombre queremos poner a la tabla (Alumnos). Hacemos clic en guardar Tabla.  Aparece un cuadro donde pondremos el nombre Alumnos y hacemos clic en Aceptar.  Cerramos y en la Base de Datos Northwind, en Tablas hacemos anticlic y elegimos actualizar; veremos ya la tabla creada en dicha lista. Cuando se crea una tabla, hay que especificar el nombre de la tabla, los nombres de las columnas y sus tipos de datos. Se puede utilizar el mismo nombre de columna en tablas diferentes de la misma base de datos. Para llenar una tabla ya veremos más adelante los comandos que se deben utilizar.
  • 15. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 16 - 1.4. HACER CONSULTAS Una consulta es una instrucción de solicitud para recuperarinformación.Las consultas pueden involucrar información de másde una tabla. El resultado de una consulta es otra tabla con los datos requeridos en ella. Esta consulta encuentra todos los campos del empleado: (utilizando la Northwind) SELECT * FROM Employees La consulta especifica que las filas de (from) la tabla Employees se debe recuperar, y que se debe mostrar todos sus campos (*). Para crear esta consulta hacemos:  Clic derecho sobre la base de datos Northwind y seleccionamos la opción Nueva Consulta.  Luego escribimos la consulta: Como podemos ver SQL nos muestra un listado de tablas que existe dentro de la base de datos que estamos trabajando.
  • 16. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 17 -  Cuando ya esté escrita la consulta damos clic en el botón ejecutar o presionamos la tecla de función F5.  En la parte baja podemos ver el resultado de la consulta realizada.  Finalmente para guardar la consulta damos clic en el botón guardar, le colocamos un nombre y damos un clic en guardar. Cuando tenemos varios códigos de diferentes consultas en una sola ventana es necesario seleccionar a la consulta que se desea ver y dar clic en ejecutar o presionar F5, pues si no hacemos esto se ejecutan todas las consultas que están dentro de una misma ventana.
  • 17. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 18 - COMANDOS BÁSICOS DE SQL 2.1. INSTRUCCIONES DE SQL SERVER 2008 SQL está compuesto por comandos, clausulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones o consultas para crear, actualizar y manipular las bases de datos Las instrucciones de SQL Server 2008 permiten:  Realizar el manejo de los datos. Es decir, consultar y actualizar los datos de las tablas, así como eliminar y agregar registros.  Administrar la estructura de los campos de datos. En otras palabras crear, modificar y eliminar las tablas de datos. Tipos de Comandos: La escritura y ejecución de instrucciones de Transact-SQL es una de las formas en que se puede realizar una consulta en SQL Server. Las sentencias SQL se dividen, principalmente en las siguientes categorías:  DDL (Instrucciones del Lenguaje de definición de datos) que permiten crear y definir nuevas bases de datos, campos e índices.  DCL (Instrucciones del Lenguaje de control de datos) que se utilizan para determinar quién puede ver o modificar los datos.  DML (Instrucciones del Lenguaje de tratamiento de datos) que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Mediante estas instrucciones puede cambiar o recuperar información. Este manual se centra, principalmente, en el uso de instrucciones DML para consultar datos de SQL Server. 2.1.1. SELECT La sentencia SELECT permite seleccionar registros de una o más tablas.Se usa para listar los campos deseados del resultado de una consulta. Es la sentencia básica de SQL.
  • 18. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 19 - 2.1.2. FROM Esta instrucción se utiliza para obtener información de la base de datos, nos permite sacar reportes y es el principal comando. La cláusula FROM especifica la tabla de la que se obtienen las filas y columnas. En la cláusula FROM podemos utilizar tablas derivadas, combinaciones y alias. Ambas sentencias SELECT y FROM se utilizan juntas y su sintaxis más simple es la siguiente: La cual, traducida al español, significa “SELECCIONAR ciertos campos DESDE cierta tabla”. Por esta razón es que se denominan consultas de selección. Por ejemplo, si se quiere «Obtener toda la información de los Productos»; se podría escribir cualquiera de las siguientes instrucciones:  Abreviando, pues se desea obtener todos los campos de la Tabla Products. SELECT * FROM Products El * después de SELECT indicaque queremos ver todos los campos que aparecen en la tabla.  Listando los campos separados por comas: Select ProductID,ProductName,SupplierID,CategoryID,QuantityP erUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLev el,Discontinued From Products  Haciendo explícita, en la lista de campos, la referencia a la tabla: SELECT Products.* FROM Products Es conveniente en muchos casos utilizar necesariamente la referencia explícita a la tabla desde la cual se desea tomar las columnas en la lista de campos cuando se extraen datos de más de una tabla. SINTAXIS SELECT nombre_ campo FROM nombre_tabla
  • 19. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 20 - Al ejecutar cualquiera de las instrucciones anteriores se muestra la siguiente tabla resultante de la consulta: A. MODIFICADORES  Distinct y All: Devuelve solamente filas únicas, elimina las filas duplicadas del conjunto de resultados, es preciso poner la palabra clave DISTINCT inmediatamente después de SELECT. También podríamos explicitar que lo queremos todo, incluso con repeticiones, poniendo ALL (opción por defecto) en lugar de DISTINCT. Por ejemplo, si se quiere obtener todas las filas de la tabla customers, pero sólo que se muestre el nombre de cada país una vez. Se escribe la siguiente instrucción: SELECT DISTINCT country FROM dbo.Customers Al ejecutar la instrucción se muestra la siguiente tabla resultante:
  • 20. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 21 -  TOP n: Devuelve solamente las n primeras filas de un conjunto de registros resultantes. Por ejemplo, si se quiere obtener los nombres de los empleados de las tres (3) primeras filas de la tabla employees. Se escribe la siguiente instrucción: Select top (3) FirstName From dbo.Employees Al ejecutar la instrucción se muestra la siguiente tabla resultante: B. FUNCIONES DE AGREGACIÓN: Las funciones que calculan promedios y sumas se llaman funciones de agregado. Cuando se ejecuta una función de agregado, SQL Server resume los valores de toda una tabla o de grupos de columnas de una tabla, y produce un valor por cada conjunto de filas para las columnas especificadas.
  • 21. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 22 - La sintaxis para el uso de funciones de agregación es: El SQL nos ofrece las siguientes funciones de agregación para efectuar varias operaciones sobre los datos de una base de datos: Por ejemplo, si se quiere obtener el total de empleados que hay de la tabla employees. Se escribe la siguiente instrucción: Select COUNT(*) From Employees Al ejecutar la instrucción se muestra la siguiente tabla resultante: Si se quiere obtener el total de órdenes realizadas que hay de la tabla Orders Details. Se escribe la siguiente instrucción: Función Descripción COUNT Nos da el número total de filas seleccionadas de un determinado campo incluyendo los valores nulos COUNT(*) Nos da el número total de filas seleccionadas de un determinado campo no incluye los valores nulos SUM Suma los valores de una columna MIN Nos da el valor mínimo de una columna MAX Nos da el valor máximo de una columna AVG Calcula el valor medio de una columna STDEV Desviación estadística de todos los valores STDEVP Desviación estadística para la población VAR Varianza estadística de todos los valores VARP Varianza estadística de todos los valores para la población SINTAXIS SELECT "tipo de función"("nombre_columna") FROM "nombre_tabla"
  • 22. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 23 - Select sum(Quantity) From [Order Details] Al ejecutar la instrucción se muestra la siguiente tabla resultante: Si se quiere obtener el mayor precio de los productos de la tabla Products. Se escribe la siguiente instrucción: Select max(UnitPrice) From Products Al ejecutar la instrucción se muestra la siguiente tabla resultante: En general, las funciones de agregación se aplican a una columna, excepto la función de agregación COUNT, que normalmente se aplica a todas las columnas de la tabla o tablas seleccionadas. Por lo tanto, COUNT (*) contará todas las filas de la tabla o las tablas que cumplan las condiciones. Si se utilizase COUNT(columna), sólo contaría los valores que no fuesen nulos. C. USO DE ALIAS: Hay dos tipos de alias que se utilizan con mayor frecuencia. Alias de columna y alias de tabla. Los alias de columna existen para ayudar en la organización del resultado. En el ejemplo anterior, cualquiera sea el momento en que vemos el mayor precio de los productos, se enumeran como MAX(UnitPrice). El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar un alias directamente luego del nombre de tabla en la cláusula FROM. Esto es conveniente cuando desea obtener información de dos tablas separadas. La ventaja de utiliza un alias de tablas cuando realizamos uniones es rápidamente aparente cuando hablamos de uniones. La sintaxis tanto para el alias de columna como de tabla es: SINTAXIS SELECT "alias_tabla"."nombre1_columna" "alias_columna" FROM "nombre_tabla" "alias_tabla"
  • 23. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 24 - Brevemente, ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados por un espacio en blanco. Por ejemplo, si se quiere obtener el mínimo precio de los productos de la tabla Products, utilizando alias. Se escribe la siguiente instrucción: Select min(p.UnitPrice) as precio_Minimo From Products as p Al ejecutar la instrucción se muestra la siguiente tabla resultante: 2.1.3. WHERE La sentencia WHERE sirve para filtrar registros lo que no lo hace el SELECT ni el FROM. Éste permite establecer condiciones que deban cumplir los registros para ser considerandos dentro del conjunto resultante. Después de Cláusula WHERE (donde) irá la(s) condición(es) que deben cumplir los registros. La sintaxis de SQL considerando esta sintaxis es: Para definir las condiciones en la cláusula WHERE, podemos utilizar alguno de los operadores de los que dispone el SQL, que son los siguientes:  OPERADORES DE COMPARACIÓN = Igual < Menor > Mayor <= Menor o igual >= Mayor o igual <> Diferente  OPERADORES LÓGICOS NOT Para la negación de condiciones AND Para la conjunción de condiciones OR Para la disyunción de condiciones SINTAXIS SELECT "nombre_campo" FROM "nombre_tabla" WHERE "Condición_Filtro"
  • 24. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 25 - Por ejemplo, “Mostrar los productos de la categoría 2” La instrucción sería de la siguiente manera; utilizando el operador de comparación igual (=): select* fromProducts whereCategoryID=2 Resultado de la consulta: Al comparar valores de tipo INT estos se escriben normalmente, pero al comparar con valores de tipo texto, éste debe estar entre comillas simples (‘’) Así como para saber la categoría 5; cambiamos: select* fromProducts whereCategoryID=5 o select* from[Order Details] whereOrderID=10260 Para unir dos condiciones unimos con cualquier operador Lógico: And/OrSINTAXIS SELECT "nombre_campo" FROM "nombre_tabla" WHERE "condición " {[AND|OR] "condición "}
  • 25. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 26 - Ejemplo: Mostrar los Productos de la Categoría 4 y 6. select* fromProducts whereCategoryID=4 orCategoryID=6 Resultado de la consulta:  CONCATENACIÓN DE CADENAS El operador de concatenación de cadenas (+) concatena valores de cadena. El resto de las operaciones con cadenas se controla mediante las funciones de cadena. Por ejemplo, queremos mostrar el nombre completo de los empleados en una sola columna o campo: select FirstName+(' ')+LastName as nombre_completo from dbo.Employees Se mostrará la siguiente tabla como resultado:
  • 26. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 27 -  IN Verifica que una determinada expresión se encuentre dentro de una lista de valores la cual puede ser escrita elemento por elemento o puede ser el resultado de otra consulta; las reglas que todas las condiciones deben estar unidas con el OR, deben ser del mismo campo y los operadores sean “=” . La sintaxis de esta instrucción es: Ejemplo:Selecciona todos los campos de la tabla Productscuyos campos sea de las Categorías 4 o 6 o 8 o 2 SELECT* FROMProducts WHERECategoryIDin(4,6,8,2) El resultado es el siguiente: SINTAXIS SELECT "nombre_campo" FROM "nombre_tabla" WHERE "nombre_campo" IN ('valor1', 'valor2', ...)
  • 27. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 28 - Ejemplo: Obtener todos los productos de los proveedores con número 3, 5, 8. SELECT* FROMProducts WHERESupplierIDin(3,5,8) Resultado de la consulta: Ejemplos: o Mostrar el nombre del producto, unidad, código; cuyo precio es mayor que 100. SELECTProductID,ProductID,UnitPrice FROMProducts WHEREUnitPrice>100 o Mostrar el nombre del producto, unidad, código; además los productos que están entre 30 y 60. selectProductID,ProductName,UnitPrice fromProducts WhereUnitPrice>30 ANDUnitPrice<60
  • 28. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 29 -  BETWEEN Verifica que el resultado de una expresión se encuentre entre otros dos valores. Debe haber un rango que el campo sea el mismo y además un operador sea >= y el otro <=. La sintaxis de este predicado es: o Ejemplo: Mostrar el nombre del producto, unidad, código; además los productos que están entre 30 y 60. selectProductID,ProductName,UnitPrice fromProducts WhereUnitPricebetween 30 and 60 SINTAXIS SELECT "nombre_campo" FROM "nombre_tabla" WHERE "nombre_campo" BETWEEN 'valor_mínimo' AND 'valor_máximo'
  • 29. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 30 - o Mostrar el nombre del producto, unidad de precio, código, stock y la categoría, solo de aquellos que tienen un stock entre 0 y 10. selectProductID,ProductName,UnitPrice,UnitsInStock,Cate goryID fromProducts WhereUnitsInStockbetween 0 AND 10
  • 30. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 31 - o Mostrar el nombre del producto y su código, donde el nombre del producto sea Chang. selectProductID,ProductName fromProducts WhereProductName='chang'  NULL o Una columna tiene un valor NULL cuando no se ha especificado ningún valor para ella durante la entrada de datos y no tiene definido un valor predeterminado. Un valor NULL no es lo mismo que cero (que es un valor numérico) o blanco (que es un valor de carácter). o Puede utilizar la condición de búsqueda IS NOT NULL para obtener las filas con valores conocidos en las columnas especificadas. Por ejemplo, mostrar a los nombres de las compañías existentes de los proveedores. select ContactName from dbo.Suppliers where ContactName is not null Al ejecutar esta consulta da la siguiente tabla como resultado:
  • 31. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 32 -  LIKE LIKE es otra palabra clave que se utiliza en la cláusula WHERE. Básicamente, LIKE le permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo que se desea (como en IN) o determinar un rango (como en BETWEEN). La sintaxis es la siguiente: Ejemplos de uso de caracteres comodín La tabla siguiente contiene ejemplos de uso de comodines con la condición de búsqueda LIKE. Ejemplo En este ejemplo se obtienen las compañías de la tabla customers que contengan la palabra "restaurant" en su nombre. SELECT companyname FROM customers WHERE companyname LIKE '%Restaurant%' Al ejecutar la instrucción se nos presenta la siguiente tabla resultante: Expresión Devuelve LIKE 'BR%' Todos los nombres que comiencen por las letras BR. LIKE '%een' Todos los nombres que terminen con las letras een. LIKE '%en%' Todos los nombres que contengan las letras en. LIKE '_en' Todos los nombres de tres letras que terminen con las letras en. LIKE '[CK]%' Todos los nombres que comiencen por C o por K. LIKE '[S-V]ing' Todos los nombres de cuatro letras que terminen con las letras ing y comiencen por cualquier letra comprendida entre S y V. LIKE 'M[^c]%' Todos los nombres que comiencen por la letra M y cuya segunda letra no sea c. SINTAXIS SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" LIKE {patrón}
  • 32. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 33 - Ejemplo En este ejemplo se obtienen los nombres de los productos de la tabla products que contengan terminen en "s" en su nombre. selectProductID,ProductName fromProducts WhereProductNamelike'%s' Al ejecutar la instrucción se nos presenta la siguiente tabla resultante  YEAR MONTH DAY Estas tres sentencias sirven para trabajar con fechas cómodamente, si queremos saber los empleados que nacieron en el 1963 sería: SELECT * FROM Employees WHERE YEAR(BirthDate)=1963 Para mes sería Month y para día DAY. Recordar que "fecha" debe ser un campo de tipo Date, y que el comparador es un entero (no poner entre comillas) Resultado de la consulta: También se puede utilizar la cláusula DATEPART(YYYY,Campo) o DATEPART(MM,Campo) o DATEPART(DD,Campo) Para saber las ordenes realizadas en el año de 1996 hacemos: SELECT * FROM dbo.Orders WHERE Datepart(yyyy,OrderDate)='1996'
  • 33. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 34 - 2.1.4. ORDER BY Es posible ordenar los registros devueltos por la sentencia SELECT añadiendo a la instrucción la cláusula ORDER BY, por defecto sale ordenado en forma ascendente. La sintaxis en este caso es el siguiente: o Mostrar el nombre del producto, unidad de precio, código, stock y la categoría, solo de aquellos que tienen un stock entre 0 y 10. Ordenado por el precio en forma descendente. selectProductID,ProductName,UnitPrice,UnitsInStock,Cat egoryID fromProducts WhereUnitsInStockbetween 0 AND 10 OrderbyCategoryIDDESC SINTAXIS SELECT "nombre_campo" FROM "nombre_tabla" WHERE "condición" ORDER BY "nombre_campo" [ASC, DESC]
  • 34. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 35 - El campo por el que queremos ordenar debe estar en el SELECT. La palabra ASC o DESC se pone al final de las columnas de ordenamiento.  TOP Devuelve un determinado número de registros. Esta sentencia se guía por la ordenación. Donde “n” es la cantidad de registros que se requiere select top 3* from Products o Obtener los 15 primeros registros de detalle de la orden q tengan mayor cantidad vendida: Selecttop 15 OrderId,ProductID,Quantity from[Order Details] orderbyQuantitydesc SINTAXIS Select top n * from tabla
  • 35. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 36 -  WITH TIES Devuelve las filas iguales si se utiliza SELECT TOP 5 WITH TIES orderid, productid, quantity FROM [order details] ORDER BY quantity DESC Resultado de la consulta:
  • 36. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 37 - EJERCICIOS Base de Datos II (20011-1) Ing. De Sistemas – FI- UNC EJERCICIOS básicos de SQL TRANSACT (Microsoft SQL SERVER 2008) Usando la Base de Datos Northwind, realizar las siguientes consultas: 1. Seleccionar todos los campos de la tabla Clientes, ordenado por nombre del Contacto de la compañía, alfabéticamente. select * from dbo.Customers order by ContactName
  • 37. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 38 - 2. Seleccionar todos los campos de la tabla Órdenes, ordenados por fecha de la orden, Descendentemente. select * from dbo.Orders order by OrderDate Desc
  • 38. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 39 - 3. Seleccionar todos los campos de la tabla Detalle de la Orden, ordenada por Cantidad Pedida, Ascendentemente. select * from [Order Details] order by Quantity
  • 39. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 40 - 4. Obtener todos los productos, cuyo nombre comiencen con la letra P y tienen un precio unitario comprendido entre 10 y 120. 5. Obtener todos los clientes de los Países de: USA, Francia y UK. select * from Products where ProductName like 'P%' AND UnitPrice between 10 AND 120 select * from dbo.Customers where Country in ('usa','francia','uk')
  • 40. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 41 - 6. Obtener todos los productos descontinuados y sin stock, que pertenecen a las categorías 1, 3, 4 y 7. 7. Obtener todas las órdenes hechas por el empleado con código: 2, 5 y 7 en el año 1996. select * from dbo.Products where (CategoryID in (1,3,4,7)) AND (Discontinued='true'AND UnitsInStock='0') select * from dbo.Orders where EmployeeID in (2,5,7) AND YEAR(OrderDate)='1996'
  • 41. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 42 - 8. Seleccionar todos los clientes que cuentan con FAX. 9. Seleccionar todos los clientes que no cuentan con FAX, del País de USA. select * from dbo.Customers where Fax is not null select * from dbo.Customers where Fax is null AND Country='usa'
  • 42. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 43 - 10. Seleccionar todos los empleados que cuentan con un jefe. 11. Seleccionar todos los campos del cliente, cuya compañía empiecen con la letra de A hasta la D y pertenezcan al país de USA, ordenarlos por la dirección. 12. Seleccionar todos los campos del proveedor, cuya compañía no comience con las letras de la B a la G, y pertenezcan al país de UK, ordenarlos por nombre de la compañía. select* from dbo.Employees where ReportsTo is not null select * from dbo.Customers where CompanyName like '[a-d]%' and Country='usa' order by Address select * from dbo.Suppliers where (CompanyName like 'a%' or CompanyName like '[f-z]%') and Country='uk' order by CompanyName
  • 43. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 44 - 13. Seleccionar los productos vigentes cuyos precios unitarios están entre 35 y 250, sin stock en almacén, pertenecientes a las categorías 1, 3, 4, 7 y 8, que son distribuidos por los proveedores 2, 4, 6, 7 y 9. 14. Seleccionar todos los campos de los productos descontinuados, que pertenezcan a los proveedores con códigos: 1, 3, 7, 8 y 9, que tengan stock en almacén, y al mismo tiempo que sus precios unitarios estén entre 39 y 190, ordenados por código de proveedor y precio unitario de manera ascendente. select * from Products where Discontinued='false' AND UnitPrice between 35 AND 250 AND UnitsInStock='0' AND CategoryID in (1,3,4,7,8) AND SupplierID in (2,4,6,7,9) select * from Products where Discontinued='true' AND SupplierID in (1,3,7,8,9) AND UnitsInStock!='0' AND UnitPrice between 39 AND 190 order by SupplierID,UnitPrice
  • 44. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 45 - 15. Seleccionar los 7 productos con precios más caros, que cuenten con Stock en almacén. 16. Seleccionar los 9 productos, con menos stock en almacén, que pertenezcan a la categoría 3, 5 y 8. select top 7 * from dbo.Products where UnitsInStock!=0 order by UnitPrice desc select top 9 * from dbo.Products where CategoryID in (3,5,8) order by UnitsInStock
  • 45. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 46 - 17. Seleccionar las órdenes de compra, realizadas por el empleado con código entre 2 y el 5, además de los clientes con códigos que comienzan con las letras de la A hasta la G, del 31 de Julio de cualquier año. 18. Seleccionar las órdenes de compra, realizadas por el empleado con código 3, de cualquier año pero sólo de los últimos 5 meses (Agosto - Diciembre). 19. select * from dbo.Orders where EmployeeID between 2 AND 5 AND CustomerID like '[a-g]%' AND DATEPART(MM,OrderDate)='07' AND DATEPART(dd,OrderDate)='31' select * from Orders where EmployeeID=3 and month(OrderDate)in (8,9,10,11,12)
  • 46. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 47 - 20. Seleccionar los detalles de las órdenes de compra, que tengan un monto de cantidad pedida entre 10 y 250. select * from [Order Details] where Quantity between 10 AND 250
  • 47. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 48 - COMBINACIÓN DE TABLAS Y AGRUPACIÓN DE DATOS 3.1. JOIN Para realizar uniones en SQL se requieren mucho de los elementos que ya hemos visto. SQL también proporciona varios mecanismos para reunir relaciones, incluyendo reuniones condicionales y reuniones naturales, así como varias formas de reunión externa. Estas operaciones adicionales se usan a menudo como subconsultas dentro de la cláusula from.  Selección de columnas específicas de varias tablas  La palabra clave JOIN especifica qué tablas se van a combinar y cómo  La palabra clave ON especifica la condición de combinación  Consultas de dos o más tablas para producir un conjunto de resultados  Use claves principales y externas como condiciones de combinación  Para combinar tablas, utilice columnas comunes a las tablas especificadas INNER JOIN: Devuelve solo los registros de la combinación de ambas tablas de en los hay coincidencia de acuerdo a la expresión vinculante. LEFT JOIN: Devuelve los registros de la combinación de ambas tablas en los cuales hay coincidencia de acuerdo a la expresión vinculante e incluye además a todos los registros de la primera tabla que no tengan “pareja” en la segunda. RIGTH JOIN: Devuelve los registros de la combinación de ambas tablas en los cuales hay coincidencia de acuerdo a la expresión vinculante e incluye además a todos los registros de la segunda tabla que no tengan “pareja” en la primera. UNION: Use el operador UNION para crear un conjunto de resultados único a partir de varias consultas  Cada consulta debe tener:  Tipos de datos similares  El mismo número de columnas
  • 48. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 49 -  El mismo orden de columnas en la lista de selección Por ejemplo: Queremos saber el total de órdenes realizadas por cada empleado escribimos la siguiente sentencia: select COUNT(*) as total, e.LastName from dbo.Orders as o inner join dbo.Employees as e on o.EmployeeID=e.EmployeeID group by LastName Al ejecutar lo anterior tenemos: 3.2. GROUP BY Genera valores de resumen para una sola columna, para esto se utiliza funciones de agregado con la cláusula GROUP BY. Utilice la cláusula HAVING con la cláusula GROUP BY para restringir los grupos de filas devueltas en el conjunto de resultados. El uso de la cláusula GROUP BY no garantiza que se vaya a usar ningún criterio de ordenación. Si desea que los resultados se ordenen, debe incluir la cláusula ORDER BY. SINTAXIS SELECT "nombre_columna 1", SUM("nombre_columna 2") FROM "nombre_tabla" GROUP BY "nombre_columna 1"
  • 49. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 50 - 3.3. HAVING Esta sentencia se utiliza de similar manera que la sentencia WHERE para filtrar instrucciones en SQL que incluyen agrupaciones de registros se empleará esta cláusula HAVING. Su sintaxis es: Utilice la cláusula HAVING en columnas o expresiones para establecer condiciones en los grupos incluidos en un conjunto de resultados. La cláusula HAVING establece condiciones en la cláusula GROUP BY de una forma muy similar a como interactúa la cláusula WHERE con la instrucción SELECT.  Cuando utilice la cláusula HAVING, considere los hechos e instrucciones siguientes:  Utilice la cláusula HAVING sólo con la cláusula GROUP BY para restringir los agrupamientos. El uso de la cláusula HAVING sin la cláusula GROUP BY no tiene sentido.  En una cláusula HAVING puede haber hasta 128 condiciones. Cuando utilice varias condiciones, tiene que combinarlas con operadores lógicos (AND, OR o NOT).  Puede hacer referencia a cualquiera de las columnas que aparezcan en la lista de selección.  No utilice la palabra clave ALL con la cláusula HAVING, porque la cláusula HAVING pasa por alto la palabra clave ALL y sólo devuelve los grupos que cumplen la cláusula HAVING. Por ejemplo: Mostrar la cantidad de órdenes hechas por cada empleado pero que sean mayores que 100. Se escribirá la siguiente instrucción: Select COUNT(*) as total,e.FirstName,e.LastName from dbo.Orders as o inner join dbo.Employees as e on o.EmployeeID=e.EmployeeID groupby e.FirstName,e.LastName having COUNT(*)>100 orderby FirstName,LastName SINTAXIS SELECT "nombre_columna 1", SUM("nombre_columna 2") FROM "nombre_tabla" GROUP BY "nombre_columna 1" HAVING (condición de función aritmética)
  • 50. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 51 - Ejercicio 1 selectCOUNT(*)astotal,e.EmployeeID,e.LastName fromdbo.Ordersaso innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID groupbye.EmployeeID,e.LastName Ejercicio 2 selectCOUNT(*)astotal,e.FirstName,e.LastName fromdbo.Ordersaso innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID groupbye.FirstName,e.LastName havingCOUNT(*)>100 orderbyFirstName,LastName Ejercicio 3 selectsum(od.Quantity)astotal,c.CompanyName fromOrdersaso innerjoin[Order Details]asodono.OrderID=od.OrderID innerjoinCustomersasconc.CustomerID=o.CustomerID groupbyc.CompanyName orderbyc.CompanyName
  • 51. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 52 - Ejercicio 4 selectsum(Quantity*UnitPrice*2.82)astotal,o.OrderID from[Order Details]asodinnerjoinOrdersasoono.OrderID=od.OrderID whereyear(o.OrderDate)=1996 andMONTH(o.OrderDate)=12 groupbyo.OrderID
  • 52. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 53 - Ejercicio 5 selectcount(*)astotal,s.CompanyName fromdbo.Productsaspinnerjoindbo.Suppliersass onp.SupplierID=s.SupplierID whereUnitsInStock!='0'andDiscontinued='0' groupbys.CompanyName
  • 53. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 54 - EJERCICIOS 21. Mostrar el código de categoría, nombre de categoría, código del producto, nombre del producto y precio. select dbo.Categories.CategoryID,dbo.Categories.CategoryName,dbo.Products.Pro ductID,dbo.Products.ProductName,dbo.Products.UnitPrice from dbo.Categories inner join dbo.Products on dbo.Categories.CategoryID=dbo.Products.CategoryID
  • 54. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 55 - 22. Mostrar el número de la orden fecha de la orden, código del producto, cantidad del precio y flete de la orden. 23. Mostrar: código, nombre, ciudad y país del proveedor. Código, nombre, precio, stock del producto. select o.OrderID,o.OrderDate,od. ProductID,od.Quantity,o.Freight from [Order Details]as od inner join Orders as o on od.OrderID=o.OrderID select s.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID, p.ProductName,p.UnitPrice,p.UnitsInStock from Suppliers as s inner join Products as p on s.SupplierID=p.SupplierID
  • 55. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 56 - 24. Código y nombre de la categoría, código, nombre, precio y stock de los productos, código, nombre de los proveedores. select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName, p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyName from dbo.Categories as c inner join dbo.Products as p on c.CategoryID=p.CategoryID inner join dbo.Suppliers as s on p.SupplierID=s.SupplierID
  • 56. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 57 - 25. Mostrar número de la orden, fecha, nombre del producto, nombre de la categoría, nombre del producto. 26. Mostrar número de la orden, fecha, nombre y dirección del cliente, nombre y apellido del empleado, nombre del producto comprado y nombre del proveedor. select od.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyName from Orders as o inner join [Order Details] as od on od.OrderID=o.OrderID inner join dbo.Products as p on od.ProductID=p.ProductID inner join dbo.Categories as c on c.CategoryID=p.CategoryID inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID select od.OrderID,o.OrderDate,c.CompanyName,c.Address,e.LastName,e.LastName, p.ProductName,s.CompanyName from [Order Details]as od inner join Orders as o on od.OrderID=o.OrderID inner join Products as p on od.ProductID=p.ProductID inner join Customers as c on c.CustomerID=o.CustomerID inner join Employees as e on e.EmployeeID=o.EmployeeID inner join Suppliers as s on s.SupplierID=p.SupplierID
  • 57. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 58 - 27. Modificar el ejercicio 1: sólo los productos de las categorías 2, 4, 5 y 7. select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName, p.UnitPrice from Categories as c inner join dbo.Products as p on c.CategoryID=p.CategoryID where c.CategoryID in (2,4,5,7)
  • 58. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 59 - 28. Modificar el ejercicio 2: sólo las órdenes del mes de enero de 1997. select o.OrderID,o.OrderDate,od. ProductID,od.Quantity,o.Freight from [Order Details]as od inner join Orders as o on od.OrderID=o.OrderID where month(o.OrderDate)='01' and year(o.OrderDate)='1997'
  • 59. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 60 - 29. Modificar el ejercicio 3: sólo los productos con stock 0. 30. Modificar el ejercicio 4: sólo con precios entre 50 y 100. 31. Modificar el ejercicio 5: sólo del primer trimestre del año 1996. select s.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID, p.ProductName,p.UnitPrice,p.UnitsInStock from Suppliers as s inner join Products as p on s.SupplierID=p.SupplierID where p.UnitsInStock='0' select c.CategoryID,c.CategoryName,p.ProductID,p.ProductName, p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyName from dbo.Categories as c inner join dbo.Products as p on c.CategoryID=p.CategoryID inner join dbo.Suppliers as s on p.SupplierID=s.SupplierID where p.UnitPrice between 50 AND 100 select od.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyName from Orders as o inner join [Order Details] as od on od.OrderID=o.OrderID inner join dbo.Products as p on od.ProductID=p.ProductID inner join dbo.Categories as c on c.CategoryID=p.CategoryID inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID where (month(o.OrderDate)='1' or month(o.OrderDate)='1'or month(o.OrderDate)='2'or month(o.OrderDate)='3') AND YEAR(o.OrderDate)='1996'
  • 60. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 61 - BASE DE DATOS II EJERCICIOS inner join, group by, having y where SQL TRANSACT (Microsoft SQL SERVER 2008) Usando la Base de Datos Northwind, realizar las siguientes consultas: 32. Visualizar el máximo y mínimo precio de los productos por categoría, mostrar el nombre de la categoría. 33. Visualizar el máximo y mínimo precio de los productos por proveedor, mostrar el nombre de la compañía proveedora. select MIN(p.UnitPrice) as prec_min,MAX(p.UnitPrice) as prec_max,c.CategoryName from Products as p inner join Categories as c on p.CategoryID=c.CategoryID group by c.CategoryName select MIN(p.UnitPrice) as prec_min,MAX(p.UnitPrice) as prec_max,s.CompanyName from Products as p inner join Suppliers as s on p.SupplierID=s.SupplierID group by s.CompanyName
  • 61. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 62 - 34. Seleccionar las categorías que tengan más de 5 productos. Mostrar el nombre de la categoría y número de productos. select c.CategoryName,count(p.QuantityPerUnit) as total from Categories as c inner join dbo.Products as p on c.CategoryID=p.CategoryID group by CategoryName having COUNT(p.QuantityPerUnit)>5
  • 62. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 63 - 35. Calcular cuántos clientes existen en cada País. 36. Calcular cuántos clientes existen en cada Ciudad. select Country,count(CompanyName) as total_clientes from Customers group by Country select City,count(CompanyName) as total_clientes from Customers group by City
  • 63. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 64 - 37. Calcular cuántos proveedores existen en cada Ciudad y País. 38. Calcular el stock total de los productos por cada categoría. Mostrar el nombre de la categoría y el stock por categoría. select Country,count(SupplierID) as total_proveedores,City,count(SupplierID) as total_proveedores from dbo.Suppliers group by Country,city select c.CategoryName,sum(p.UnitsInStock) as stock from Categories as c inner join Products as p on c.CategoryID=p.CategoryID group by c.CategoryName
  • 64. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 65 - 39. Calcular el stock total de los productos por categoría. Mostrar el nombre el nombre de la categoría y el stock por categoría. Solamente las categorías 2,5, y 8. 40. Obtener el Nombre del Cliente, Nombre del Proveedor, Nombre del Empleado y el nombre de los productos que están en la orden 10250. 41. Mostrar el número de Órdenes realizadas de Cada uno de los Clientes por año. select c.CategoryName,sum(p.UnitsInStock) as stock from Categories as c inner join Products as p on c.CategoryID=p.CategoryID where c.CategoryID in (2,5,8) group by c.CategoryName select c.CompanyName, s.CompanyName,e.LastName,p.ProductName,o.OrderID from Customers as c inner join orders as o on c.CustomerID=o.CustomerID inner join Employees as e on e.EmployeeID=o.EmployeeID inner join [Order Details] as od on od.OrderID=o.OrderID inner join Products as p on p.ProductID=od.ProductID inner join Suppliers as s on s.SupplierID=p.supplierID where o.OrderID='10250' select distinct c.CompanyName,COUNT(*)as total_ordenes,year(o.OrderDate) as año from Orders as o inner join Customers as c on o.CustomerID=c.CustomerID group by c.CompanyName, year(o.OrderDate)
  • 65. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 66 - 42. Mostrar el número de Órdenes realizadas de Cada uno de los Empleados en cada año. select distinct e.FirstName,COUNT(*)as total_ordenes,year(o.OrderDate) as año from Orders as o inner join Employees as e on o.EmployeeID=e.EmployeeID group by e.FirstName, year(o.OrderDate)
  • 66. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 67 - 43. Mostrar el número de Órdenes realizadas de Cada uno de los Clientes por cada mes y año. 44. Contar el número de Órdenes que se han realizado por años y meses. select distinct c.CompanyName,COUNT(*)as total_ordenes,year(o.OrderDate) as año,MONTH(o.OrderDate) as mes from Orders as o inner join Customers as c on o.CustomerID=c.CustomerID group by c.CompanyName, year(o.OrderDate), month(o.OrderDate) select distinct YEAR(o.OrderDate) as año,MONTH(o.OrderDate) as mes, COUNT(*) as total_ordenes from dbo.Orders as o group by YEAR(o.OrderDate), MONTH(o.OrderDate)
  • 67. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 68 - 45. Seleccionar el nombre de la compañía del cliente, el código de la orden de compra, la fecha de la orden de compra, código del producto, cantidad pedida del producto, nombre del producto, el nombre de la compañía Proveedora y la ciudad del proveedor. select c.CompanyName, od.OrderID, o.OrderDate, p.ProductID, od.Quantity, p.ProductName, s.CompanyName, s.City from [Order Details] as od inner join dbo.Orders as o on od.OrderID=o.OrderID inner join dbo.Products as p on p.ProductID=od.ProductID inner join dbo.Customers as c on c.CustomerID=o.CustomerID inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID
  • 68. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 69 - 46. Seleccionar el nombre de la compañía del cliente, nombre del contacto, el código de la orden de compra, la fecha de la orden de compra, código del producto, cantidad pedida del producto, nombre del producto y el nombre de la compañía Proveedora, usar join. Solamente las compañías proveedoras que comienzan con la letra de la A hasta la letra G, además la cantidad pedida del producto debe estar entre 18 y 190. select c.CompanyName,c.ContactName,od.OrderID,o.OrderDate,p.ProductID,od.Q uantity,p.ProductName,s.CompanyName from [Order Details] as od inner join dbo.Orders as o on od.OrderID=o.OrderID inner join dbo.Products as p on p.ProductID=od.ProductID inner join dbo.Customers as c on c.CustomerID=o.CustomerID inner join dbo.Suppliers as s on s.SupplierID=p.SupplierID where s.CompanyName like '[a-g]%' and Quantity between 18 and 190
  • 69. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 70 - 47. Seleccionar cuantos proveedores tengo en cada país, considerando solo a los nombres de los proveedores que comiencen con la letra E hasta la letra P, además de mostrar sólo los países donde tenga más de 2 proveedores. 48. Obtener el número de productos, por categoría. Mostrando el nombre de la categoría, el nombre del producto, y el total de productos por categoría, solamente de las categorías 3, 5 y 8. Ordenar por el nombre de la categoría. select Country,COUNT(*) as total_proveedores from dbo.Suppliers where CompanyName like '[e-p]%' group by Country having COUNT(*)>2 select p.CategoryID,COUNT(*) as total_productos,c.CategoryName,p.ProductName from dbo.Products as p inner join dbo.Categories as c on p.CategoryID=c.CategoryID group by p.CategoryID,c.CategoryName,p.ProductName having p.CategoryID in(3,5,8) order by c.CategoryName
  • 70. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 71 - 49. Mostrar el número de la orden, la fecha de la orden y el total en soles de cada orden. 50. Mostrar el nombre de Producto y en cuántas órdenes de compra se encuentra.1 select OrderID, OrderDate, Freight=Freight*2.87 from dbo.Orders select distinct p.ProductName, COUNT(od.OrderID) as total_OdC from Products as p inner join [Order Details] as od on p.ProductID=od.ProductID group by p.ProductName
  • 71. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 72 -
  • 72. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 73 - MANIPULACIÓN DE TABLAS 4.1. INSERT INTO En los programas de mantenimiento de base de datos es frecuente requerir instrucciones que hagan posible la inserción de registros en las tablas. Estas instrucciones hacen uso de la cláusula INSERT del lenguaje SQL. En su forma más elemental, la instrucción tendrá la siguiente sintaxis.  Puede insertar datos mediante una transacción si especifica un conjunto de valores o inserta los resultados de una instrucción SELECT. Puede crear una tabla e insertar datos al mismo tiempo. No tiene que insertar valores en todos los campos de datos de una fila.  La instrucción INSERT con la cláusula VALUES permite agregar filas a una tabla. Al insertar filas, tenga en cuenta los siguientes hechos e instrucciones:  Debe atenerse a las restricciones de destino o la transacción INSERT fallará.  Utilice listaColumnas para especificar las columnas en las que se va a almacenar cada valor especificado. listaColumnas debe especificarse entre paréntesis y delimitarse con comas. Si especifica valores para todas las columnas, listaColumnas es opcional.  Para especificar los valores que desea insertar, utilice la cláusula VALUES. Esta cláusula se requiere para cada columna de la tabla o de listaColumnas. El orden y el tipo de los nuevos datos debe corresponder al orden y al tipo de las columnas de la tabla. Muchos tipos de datos tienen un formato de entrada asociado. Por ejemplo, los datos de carácter y las fechas deben encerrarse entre comillas simples. SINTAXIS INSERT INTO "nombre_tabla" ("colonne 1", "colonne 2", ...) valorS ("valor 1", "valor 2", ...)
  • 73. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 74 - o Identidad Insert into articulos(nombre,precio,stock) values('LaptopHP',1200,10) insertinto[alumnitos] values('A001','karen','estrada') select* fromalumnitos Insertinto [alumnitos] Values ('A002','juan','mendez') Select * From alumnitos insertinto[alumnitos] values('A003','ana','diaz') select* fromalumnitos
  • 74. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 75 - 4.2. UPDATE El lenguaje SQL server permite escribir instrucciones que hagan posible que esas actualizaciones se realicen rápidamente, para ello debe emplear la sentencia UPDATE. En su forma más elemental Update tendrá la siguiente sintaxis. La instrucción UPDATE permite cambiar filas individuales, grupos de filas o todas las filas de una tabla. Al actualizar filas, tenga en cuenta los hechos e instrucciones siguientes:  Especifique las filas que desea actualizar con la cláusula WHERE.  Especifique los nuevos valores con la cláusula SET.  Compruebe que los valores de entrada tienen los mismos tipos de datos que los definidos para las columnas.  SQL Server no hará actualizaciones que infrinjan alguna restricción de integridad. En ese caso, no se producirán los cambios y la instrucción se deshará.  Sólo es posible cambiar los datos de una tabla cada vez.  Puede establecer una expresión en una o varias columnas o variables. Por ejemplo, una expresión puede ser un cálculo (como price * 2) o la suma de dos columnas. Ejemplo En el ejemplo siguiente se agrega el 10 por ciento a los precios actuales de todos los productos de Northwind Traders. USE northwind UPDATE products SET unitprice = (unitprice * 1.1) Ejemplo 1: updateProducts setUnitPrice=UnitPrice*0.5 whereCategoryID='1' selectcount(*),MIN(UnitPrice)asmini,max(UnitPrice)asmaxi fromProducts whereCategoryID=1 SINTAXIS UPDATE "nombre_tabla" SET "colonne 1" = [nuevo valor] WHERE {condition}
  • 75. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 76 - Ejemplo 2: updateSuppliers setcountry='perusalem' wherecountry='uk' select* fromSuppliers Ejemplo 3: updatedbo.Categories setCategoryName='juguetes' whereCategoryID=5 select* fromCategories Ejemplo 4: updateSuppliers setFax='0' whereFaxisnull select* fromSuppliers
  • 76. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 77 - Ejemplo 5: updateEmployees setFirstName='Karen',LastName='Estrada' whereEmployeeID=6 select* fromEmployees Ejemplo 6: updateCustomers setCustomerID=('UNCFNI') whereCustomerID=('ALFKI') select* fromCustomers
  • 77. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 78 - 4.3. DELETE FROM Esta sentencia permite eliminar registros de las tablas. La sintaxis más simple de esta sentencia es la siguiente: La instrucción DELETE quita una o varias filas de una tabla o una vista mediante una transacción. Puede especificar las filas que elimina SQL Server si filtra la tabla de destino o mediante una cláusula JOIN o una subconsulta. La instrucción DELETE quita filas de las tablas. La instrucción DELETE permite quitar una o varias filas de una tabla. Al utilizar la instrucción DELETE, tenga en cuenta los hechos siguientes:  SQL Server eliminará todas las filas de la tabla si no incluye una cláusula WHERE en la instrucción DELETE.  Cada fila eliminada se almacena en el registro de transacciones. Ejemplo 1: deletefromProducts whereDiscontinued=1 SINTAXIS DELETE FROM "nombre_tabla" WHERE {condición}
  • 78. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 79 - Ejemplo 2: delete fromOrders whereOrderID=10255 select* fromOrders whereOrderID=10255 Ejemplo 3: delete from[Order Details] whereProductIDin(selectProductID fromProducts whereDiscontinued=1) 4.4. SUBCONSULTAS Es una consulta dentro de otra más grande. o Consulta : Seleccionar los productos cuyos precios sean mayores al promedio de todos los productos select* fromProducts whereUnitPrice>(selectAVG(UnitPrice)fromProducts)
  • 79. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 80 - o delete from[Order Details] whereProductIDin(selectProductID fromProducts whereDiscontinued=1) 4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE) Un procedimiento almacenado es una colección con nombre de instrucciones de Transact-SQL que se almacena en el servidor. Los procedimientos almacenados son un método para encapsular tareas repetitivas. Admiten variables declaradas por el usuario, ejecución condicional y otras características de programación muy eficaces. Para alterar o modificar un procedimiento utilizamos ALTER en reemplazo de CREATE EXEC Ejecuta una función definida por el usuario, un procedimiento de sistema, un procedimiento almacenado definido por el usuario o un procedimiento almacenado extendido�Controla la ejecución de una cadena de caracteres dentro de un lote de Transact-SQL SINTAXIS Create proc Nombre_Procedimiento --Declaracion de variables As --Cuerpo de la instrucción
  • 80. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 81 - Create proc SPQ_PRODUCTS @CATE int as select * from Products where CategoryID=@CATE exec SPQ_PRODUCTS 2 Ejemplo: ALTER proc SPQ_PRODUCTS as select * from Products where CategoryID=8
  • 81. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 82 - Ejemplo: Create procedure hola @cod int as select * from Employees where EmployeeID=@cod Exec hola 8 Ejemplo: Alter procedure hola @cod int as select * from Customers where CustomerID=@cod Create proc todos_produc as select ProductID,ProductName,UnitPrice,UnitsInStock from dbo.Products
  • 82. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 83 - Create proc nuevo_escrito @d char(8), @n varchar (20), @a varchar (25), @e varchar (50), @s char (1) as insert INto inscripciones values (@d,@n,@a,@e,@s) exec nuevo_escrito '26458595','lili','calua','lili@hormail.com','f' Ejemplo: Create proc precios @li money, @ls money as select * from Products where UnitPrice between @li and @ls Exec precios 15,20
  • 83. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 84 - Las variables son elementos del lenguaje con valores asignados. En Transact- SQL se pueden utilizar variables locales. Una variable local es una variable definida por el usuario en una instrucción DECLARE; se le asigna un valor inicial en una instrucción SET o SELECT y, después, se utiliza en la instrucción, programa por lotes o procedimiento en el que se declaró. Una variable local se identifica mediante un símbolo arroba (@) que precede a su nombre mientras que una variable global incluye dos símbolos arroba delante de su nombre.
  • 84. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 85 - EJERCICIOS Ejemplo 1: createprocempleado_unidades @anioint as selectSUM(od.Quantity)astotal,e.LastName,e.FirstName,YEAR(o.OrderDate)asa ño fromdbo.EmployeesaseinnerjoinOrdersasoone.EmployeeID=o.EmployeeID innerjoin[Order Details]asodonod.OrderID=o.OrderID whereYEAR(o.OrderDate)=@anio groupbye.LastName,e.FirstName,YEAR(o.OrderDate) empleado_unidades 1996 2. productos mas vendidos por año alterprocmas_vendidos @tint, @anioint as selecttop (@t)p.ProductName,sum(od.Quantity*od.UnitPrice*2.81)asmonto_total fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductIDinnerjoin Ordersasoono.OrderID=od.OrderID whereYEAR(o.OrderDate)=@anio groupbyp.ProductName orderbysum(od.Quantity*od.UnitPrice)desc
  • 85. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 86 - mas_vendidos 3,1997 3. productos no vendidos por año alterprocno_vendidos @anioint as selectp.ProductID,p.ProductName,YEAR(o.OrderDate)asanio fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductIDinnerjoin Ordersasoono.OrderID=od.OrderID wherep.ProductIDnotin(selectProductIDfrom[Order Details])andyear(OrderDate)=@anio no_vendidos 1996
  • 86. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 87 - 5. Mostrar los productos que tengan la palabra queso dentro de su nombre alterprocproductos @palnvarchar(40) as selectp.ProductName,e.FirstName fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee ID=o.EmployeeID wherep.ProductNamelike@pal productos'%queso%'
  • 87. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 88 - 6. buscar por frase la cantidad total por empleado alterprocproductos @palnvarchar(40) as selectp.ProductName,e.FirstName,e.LastName,SUM(od.Quantity)astotal_vendid os fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee ID=o.EmployeeID wherep.ProductNamelike@pal groupbyp.ProductName,e.FirstName,e.LastName orderbySUM(od.Quantity)desc productos'%queso%' 7. dias trnascurridos createprocdias_trans @numint as selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd ias_trans fromOrders wheredatediff(day,ShippedDate,RequiredDate)<@num groupbydatediff(day,ShippedDate,RequiredDate)
  • 88. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 89 - dias_trans 10 8. En un año determinado alterprocdias_trans @numint, @anioint as selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd ias_trans fromOrders wheredatediff(day,ShippedDate,RequiredDate)<@numandYEAR(RequiredDate)=@an io groupbydatediff(day,ShippedDate,RequiredDate)
  • 89. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 90 - dias_trans 10,1997 9. para el codigo de un alumno alterproc codigo @pat varchar(30), @mat varchar(30), @nombre varchar(30) as declare @nr as int,@cod as char(4) select @nr=max(substring(codigo,2,3)) from alumnitos if @nrisnullset@nr=0; set @nr=@nr+1; if @nr<=9 set@cod='A00'+LTRIM(STR(@nr)) else if @nr<=99 set @cod='A0'+STR(@nr) else if @nr<=999 set @cod='A'+STR(@nr) ; Insert into alumnitos(codigo,paterno,materno,nombres) values (@cod,@pat,@mat,@nombre) exec 'estrada','aguilar','karen johana'
  • 90. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 91 - Más ejercicios alter proc insert_cliente @nom varchar (20), @ape varchar (30), @dir varchar (30), @email varchar (35) as declare @cod char(8) declare @nr int set @cod=left(@nom,2)+LEFT(@ape,2) select @nr=COUNT(*)+1 from dbo.clientes if @nr<=9 set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr)) else set @cod=rtrim(@cod)+LTRIM(STR(@nr)) insert into dbo.clientes values (@cod,@nom,@ape,@dir,@email) insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com' insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com' insert_cliente 'karen','johana','Jose carlos mariategui n° 314','karen_j.e.a@hotmail.com' --> alter proc insert_cliente @nom varchar (20), @ape varchar (30), @dir varchar (30), @email varchar (35) as declare @cod char(7) declare @nr int set @cod=left(@nom,2)+LEFT(@ape,2) select @nr=COUNT(*)+1 from dbo.clientes if @nr<=9 set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr)) if @nr<=99 set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr)) else set @cod=rtrim(@cod)+LTRIM(STR(@nr)) insert into dbo.clientes values (@cod,@nom,@ape,@dir,@email) insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com' insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com' insert_cliente 'karen','johana','Jose carlos mariategui n° 314','karen_j.e.a@hotmail.com'
  • 91. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 92 - Para insertar Clientes en la tabla clientes alter proc insert_cliente @nom varchar (20), @ape varchar (30), @dir varchar (30), @email varchar (35) as declare @cod char(7) declare @nr int set @cod=left(@nom,2)+LEFT(@ape,2) select @nr=COUNT(*)+1 from dbo.clientes where SUBSTRING(codigo,1,4)=@cod if @nr<=9 set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr)) if @nr<=99 set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr)) else set @cod=rtrim(@cod)+LTRIM(STR(@nr)) insert into dbo.clientes values (@cod,@nom,@ape,@dir,@email) insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com' insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com' select * from dbo.clientes verdadero alter proc insert_cliente @nom varchar (20), @ape varchar (30), @dir varchar (30), @email varchar (35) as declare @cod char(7) declare @nr int set @cod=left(@nom,2)+LEFT(@ape,2) select @nr=COUNT(*)+1 from dbo.clientes where SUBSTRING(codigo,1,4)=@cod if @nr<=9 set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr)) if @nr<=99 set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr)) else set @cod=rtrim(@cod)+LTRIM(STR(@nr)) insert into dbo.clientes
  • 92. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 93 - values (@cod,@nom,@ape,@dir,@email) insert_cliente 'juan','perez','dos de mayo','juan@hotmail.com' insert_cliente 'ana','diaz','dos de mayo','ana@hotmail.com' select * from dbo.clientes Insertar participantes create proc insertpat @nom varchar(30), @ape varchar(30), @sexo char (1) as declare @cod char (7) declare @nr int select @nr=COUNT(*) from dbo.participantes where sexo=@sexo if @nr<9 set @cod=left(@nom,2)+LEFT(@ape,2)+'00'+LTRIM(STR(@nr+1)) else if @nr<99 set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1)) else set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1)) insert into dbo.participantes values (@cod,@nom,@ape,@sexo) insertpat 'luis','ruiz','m' Insertar alumnos alter proc ins_alumnos @nom varchar(30), @ape varchar(30), @fenac datetime as declare @cod char (9) declare @nr int set @cod=left(@nom,1)+LEFT(@ape,1)+Ltrim(str(YEAR(@fenac))) select @nr=COUNT(*)+1 from dbo.alumnos where substring(@cod,1,9)=@cod if @nr<=9 set @cod=Rtrim(@cod)+'00'+LTRIM(STR(@nr)) if @nr<=99 set @cod=Rtrim(@cod)+'0'+LTRIM(STR(@nr))
  • 93. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 94 - else set @cod=rtrim(@cod)+LTRIM(STR(@nr)) insert into dbo.alumnos values (@cod,@nom,@ape,@fenac) ins_alumnos 'juan','perez','03/04/1991' Insertar participantes create proc insertpat @nom varchar(30), @ape varchar(30), @sexo char (1) as declare @cod char (7) declare @nr int select @nr=COUNT(*) from dbo.participantes where sexo=@sexo if @nr<9 set @cod=left(@nom,2)+LEFT(@ape,2)+'00'+LTRIM(STR(@nr+1)) else if @nr<99 set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1)) else set @cod=left(@nom,2)+LEFT(@ape,2)+'0'+LTRIM(STR(@nr+1)) insert into dbo.participantes values (@cod,@nom,@ape,@sexo) insertpat 'luis','ruiz','m' Procedimiento para aumentar el precio a los productos alter proc prod @cat int, @por float as update Products set UnitPrice=UnitPrice+UnitPrice*@por/100 where CategoryID=@cat and Discontinued=0 select * from Products where Discontinued=1 order by UnitPrice prod 1,0.5
  • 94. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 95 - 0004 para insertar Alumnos alter proc insertar_alumnos @n varchar (30), @a varchar (30) as declare @nr int declare @c char(3) select @nr=count(*)+1 from alumn if @nr<=9 set @c='p0'+LTRIM(STR(@nr)) else set @c='p'+LTRIM(STR(@nr)) insert into alumn values(@c,@n,@a) exec insertar_alumnos 'carlos','huaman' select * from alumn Pero con el siguiente ya no sale error: alter proc insertar_alumnos @n varchar (30), @a varchar (30) as declare @nr int declare @c char(3) select @nr=max(right(cod,2))+1 from alumn if @nr<=9 set @c='p0'+LTRIM(STR(@nr)) else set @c='p'+LTRIM(STR(@nr)) insert into alumn values(@c,@n,@a) exec insertar_alumnos 'carlos','huaman' select * from alumn
  • 95. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 96 - OTRAS SENTENCIAS 5.1. SUBSTRING FUNCION La función de subcadena en SQL se utiliza para tomar una parte de los datos almacenados. Esta función tiene diferentes nombres según las diferentes bases de datos:  MySQL: SUBSTR(), SUBSTRING()  Oracle: SUBSTR()  SQL Server: SUBSTRING() Los usos más frecuentes son los siguientes (utilizaremos SUBSTR() aquí): SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con posición <pos>. Note que esta sintaxis no es compatible en SQL Server. SUBSTR(str,pos,len): Comienza con el carácter <pos> en la cadena <str> y selecciona los siguientes caracteres <len>. 5.2. TRIM FUNCION La función TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado de una cadena. El patrón más común a eliminarse son los espacios en blanco. Esta función tiene diferentes nombres según las diferentes bases de datos:  MySQL: TRIM(), RTRIM(), LTRIM()  Oracle: RTRIM(), LTRIM()  SQL Server: RTRIM(), LTRIM() La sintaxis para estas funciones de reducción es: TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] puede ser LÍDER, REMANENTE, o AMBAS. Esta función se deshace del patrón [remstr] tanto para el comienzo de la cadena como para el final, o para ambos. Si no se especifica ningún [remstr], los espacios en blanco se eliminarán. LTRIM(str): Elimina todos los espacios en blanco del comienzo de la cadena.
  • 96. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 97 - RTRIM(str): Elimina todos los espacios en blanco del final de la cadena. Ejemplo 1 : SELECT TRIM(' Sample '); Resultado : 'Sample' Ejemplo 2 : SELECT LTRIM(' Sample '); Resultado : 'Sample ' Ejemplo 3 : SELECT RTRIM(' Sample '); Resultado : ' Sample' 5.3. SENTENCIA CAST Se utiliza para convertir valores de un tipo a otro diferente, la forma de utilizarla es CAST("CAMPO" as TIPO), por ejemplo, si queremos recuperar un Integer en formato de texto, la consulta sql sería así: Select CAST(goles as varchar(30)) from jugadores where id = 100 Este resultado nos devolveria los goleadores de menor a mayor, pero lo logico es que nos interese al reves, por lo que se sería: Select Jugador,goles from jugadores order by goles desc
  • 97. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 98 - EJEMPLOS CLIENTES ALEATORIOS alter proc aleatorio as declare @azar int declare @num int set @num=(select count(EmployeeID) from dbo.Employees) set @azar=cast(rand()*@num +1 as int) select * from Employees where EmployeeID=@azar CUSTOMER AZAR create proc azar as select top 1 CustomerID,CompanyName,NEWID() from Customers order by NEWID() o alter proc azar @num int as select top (@num) CustomerID,CompanyName,NEWID() from Customers order by NEWID() azar 3
  • 98. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 99 - POR 5 (*5) SELECT randomNumber, COUNT(1) countOfRandomNumber FROM ( SELECT ABS(CAST(NEWID() AS binary(6)) %1000) + 1 randomNumber FROM sysobjects) sample GROUP BY randomNumber ORDER BY randomNumber
  • 99. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 100 - REPORTING SERVICE 6.1. INGRESANDO A SQL SERVER BUSINESS INTELLIGENCE DEVELOPMENT STUDIO Para realizar Reporting Service y poder realizar informes; primero ingresaremos a Microsoft Visual Studio 2008 de SQL (que ha sido instalado en el mismo momento junto con SQL Server 2008) para lo cual seguiremos los siguientes pasos:  Buscamos el icono de SQL Server Business Intelligence Development Studio en el escritorio y hacemos doble clic.  Podemos escribir la siguiente dirección en el cuadro Ejecutar: “C:Program FilesMicrosoft Visual Studio 9.0Common7IDEdevenv.exe” y pulsar ENTER. Es la ruta que adquiere el programa de SQL Server Business Intelligence Development Studio en la instalación estándar.
  • 100. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 101 -  Si no encontramos éste icono en el escritorio y no podemos ejecutar lo anterior hacemos lo siguiente: o Clic en el botón inicio. o Clic en todos los programas. o Clic en Microsoft SQL Server 2008. o Y finalmente hacemos clic en SQL Server Business Intelligence Development Studio
  • 101. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 102 -  Esperamos que cargue…  Podemos observar la página de inicio de Microsoft Visual Studio 2008. 6.2. CREAR UN NUEVO PROYECTO DE REPORTES  Hacemos clic en Archivo luego en Nuevo, finalmente Proyecto.
  • 102. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 103 -  Se abre el cuadro de diálogo Nuevo proyecto, hacemos clic en Proyecto de Servidor de Informes.  Ponemos el nombre del nuevo proyecto a crear y luego aceptamos.  Se creó el Proyecto Karen.
  • 103. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 104 - 6.3. DATA SOURCE (ORIGEN DE DATOS COMPARTIDO)  Para crear un origen de Datos compartido hacemos clic derecho sobre origen de datos compartidos, luego hacemos clic en Agregar nuevo origen de datos.  Se abre el cuadro de diálogo Propiedades de origen de datos compartidos y para crear una cadena de conexión hacemos clic en editar.
  • 104. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 105 -  En el cuadro propiedades de la conexión, en el nombre del servidor escribimos “.” (punto), escogemos la base de datos northwind; finalmente aceptamos.  En la siguiente ventana también elegimos aceptar.  Se creó el origen de datos compartidos
  • 105. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 106 - 6.4. CREAR UN INFORME PARA HACER REPORTES  Hacemos un anti clic en Informes, clic en Agregar, luego hacemos clic en nuevo elemento.  Seleccionamos en Planillas instaladas de Visual Studio, Informe; podemos ponerle un nombre y luego aceptamos.  Aparece la siguiente ventana donde se creará el reporte.
  • 106. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 107 - 6.5. DATA SET  Para traer la consulta que se va a mostrar se inserta un conjunto de datos. Hacemos clic en Nuevo y luego en Conjunto de datos…  En el cuadro de diálogo Propiedades del conjunto de datos, en origen de datos hacemos clic en Nueva.  Se abre el cuadro del origen de datos, como ya habíamos creado un origen de datos compartido, seleccionamos la opción Utilizar referencia de origen de datos compartidos; en este caso seleccionamos DataSource1. Finalmente aceptamos.
  • 107. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 108 -  En Propiedades del conjunto de datos, podemos seleccionar el tipo de consulta que podemos hacer por ejemplo el de Texto y en Consulta pues escribimos la consulta y aceptamos.  Otro caso es el de seleccionar en el tipo de consulta Procedimiento Almacenado, seleccionando así el procedimiento que deseamos y luego aceptamos.
  • 108. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 109 -  Finalmente observamos que el DataSet1 se creó con éxito.  El Cuadro de Herramientas:  Para elaborar el informe debemos arrastrar un elemento del Cuadro de Herramientas hasta la superficie del diseño  Por ejemplo el elemento Matriz.  Por ejemplo el elemento Gráfico, donde se puede elegir el gráfico del cuadro Selección tipo de gráfico y aceptamos, logrando ver el gráfico.
  • 109. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 110 -  También podemos utilizar el elemento Informe integrado para poder visualizar más de un reporte.  Otro elemento es Tabla muy utilizado en muchos reportes.
  • 110. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 111 -  y, a continuación, arrastramos campos de conjunto de datos al elemento; que puede ser de tres maneras:  Arrastrando desde Datos de Informe al área de diseño.  Eligiendo en las filas los datos:  Si ya no hay más columnas arrastramos los datos junto a la última columna.
  • 111. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 112 -  Observamos el reporte en manera de diseño con todos los datos pedidos.  En el mismo modo de diseño Podemos cambiar el color de relleno seleccionando las celdas de las filas o columnas.  De igual manera se puede hacer para cambiar el color de texto.
  • 112. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 113 -  Hacemos clic en Vista Previa, esperamos hasta que se genere el informe.  Después que se haya generado el informe Podemos presentar ya el informe.
  • 113. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 114 - EJERCICIOS  CREAR UN ORIGEN DE DATOS COMPARTIDO. Crear una sola vez la conexión para todos los informes. 1. Crear el informe (En Visual Studio): Mostrar en un informe que contenga: ProductName, UnitPrice, UnitsInStock, CategoryName Código en SQL: Reporting services:  En modo de diseño:  En modo de vista previa (Informe final): create proc Report1 as select p.ProductName, p.UnitPrice, p.UnitsInStock, c.CategoryName from Products as p inner join Categories as c on p.CategoryID=c.CategoryID
  • 114. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 115 - 2. Crear un reporte para mostrar el Nombre del producto, el precio del producto, el stock y la categoría; deberá ser filtrado por categoría. Código en SQL: Reporting Service:  Para dar los valores a la categoría debemos agregar un nuevo conjunto de datos (dataset2). En esta ocasión hacemos una consulta de tipo Texto.  Para darle los valores de al parámetros damos anti clic en el parámetro y escogemos Propiedades del parámetro. create proc cat_prod @cate int as select ProductName,UnitPrice,UnitsInStock,CategoryID from Products where CategoryID=@cate select categoryID, categoryname from categories order by categoryname
  • 115. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 116 -  En Propiedades de parámetro de informe, en la parte general llenamos lo que se nos pide: Pedir datos, Tipo de datos, etc.  En valores disponibles: Seleccionamos la opción Obtener valores de una consulta, en conjunto de datos elegimos DataSet2.
  • 116. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 117 -  En Campo de valor seleccionamos CategoryId y en Campo de etiqueta seleccionamos Categorianame.  En modo de diseño:  En modo de vista previa:
  • 117. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 118 - Informe final de la categoría 1: 3. Crear un reporte usando reporting service que muestre el nombre del producto, el nombre de la compañía del proveedor, precio, seleccionar el nombre de la empresa y mostrar los productos del proveedor seleccionado. Código en SQL: create proc informe02 @s int as select p.ProductName,s.CompanyName,p.UnitPrice from Products as p inner join Suppliers as s on p.SupplierID=s.SupplierID where s.SupplierID=@s select SupplierID,CompanyName from Suppliers order by SupplierID
  • 118. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 119 - Reporting Services:  En modo de diseño:  En modo de vista previa: Informe final:
  • 119. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 120 - 4. Mostrar el número de productos vendidos en cada mes por cada empleado. Código en SQL: Reporting Services:  En modo de diseño:  En modo de vista previa: create proc Prod_vendidOS @e int as select LastName+' '+FirstName AS EMPLEADO ,MONTH(o.OrderDate) as MES,sum(od.Quantity) as Total from Employees as e inner join Orders as o on e.EmployeeID=o.EmployeeID inner join [Order Details] as od on o.OrderID=od.OrderID where E.EmployeeID=@e group by LastName+' '+FirstName,MONTH(o.OrderDate) ORDER BY MONTH(o.OrderDate) create proc empleados as SELECT EmployeeID,FirstName+' '+FirstName FROM Employees ORDER BY EmployeeID
  • 120. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 121 - Informe final: 5. Mostrar el nombre del cliente, nombre del empleado, número de la orden, fecha de la orden, nombre del proveedor, filtrar por el empleado que hizo la orden. Código en SQL: create proc ordeNES_empleado @e INT as select c.ContactName, lastname+' '+firstname as Empleado, o.OrderID, OrderDate, s.ContactName from Orders as o inner join [Order Details] as od on o.OrderID=od.OrderID inner join Products as p on p.ProductID=od.ProductID inner join Customers as c on c.CustomerID=o.CustomerID inner join Employees as e on e.EmployeeID=o.EmployeeID inner join Suppliers as s on s.SupplierID=p.SupplierID where E.EmployeeID=@e create proc empleados as SELECT EmployeeID,FirstName+' '+FirstName FROM Employees ORDER BY EmployeeID
  • 121. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 122 - Reporting Services:  En modo de diseño:  En modo de vista previa: Informe final:
  • 122. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 123 - PRÁCTICA Crear los siguientes informes: en SQL SERVER. 1. Mostrar en un objeto table, el nombre del cliente, la n° de la orden, el nombre del producto, precio, cantidad comprada, además el nombre del proveedor. Mostrar el nombre del cliente en un Combo box e DROP DOWN para filtrar la información. Código en SQL: Reporting Services:  En modo de diseño: create proc Tab01 @nom nvarchar (40) as select c.CompanyName, o.OrderID,p.ProductName,od.UnitPrice,od.Quantity,s.CompanyName from orders as o inner join [Order Details] as od on o.OrderID=od.OrderID inner join Products as p on od.ProductID=p.ProductID inner join Customers as c on c.CustomerID=o.CustomerID inner join Suppliers as s on s.SupplierID=p.SupplierID where c.CompanyName=@nom create proc T01 as select CustomerID, CompanyName from Customers order by CompanyName
  • 123. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 124 -  En modo de vista previa: Informe final:
  • 124. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 125 - 2. Precio 10 y 30 Código en SQL: Reporting Services:  En modo de diseño: Productoname Unitprice Categoryname companyname Proveedor create proc Productos_entre @li money, @ls money as select ProductName,UnitPrice,CategoryName,s.CompanyName from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join Suppliers as s on s.SupplierID=p.SupplierID where UnitPrice between @li and @ls create proc li_ls as select ProductID,UnitPrice from Products order by UnitPrice
  • 125. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 126 -  En modo de vista previa: Informe final:
  • 126. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 127 - 3. Proveedores (mostrar companyname) Categoría (mostrar categoryname) Productname Categoryname Companyname unitsinstock Código en SQL: Reporting Services:  En modo de diseño: CREATE proc PROV_CAT @prov nvarchar (40), @cat NVARCHAR (15) as select p.ProductName,c.CategoryName,s.CompanyName,p.UnitsInStock from Products as p inner join Categories as c on p.CategoryID=c.CategoryID inner join Suppliers as s on s.SupplierID=p.SupplierID where c.CategoryName=@cat and s.CompanyName=@prov CREATE proc proveedores as select SupplierID,CompanyName from Suppliers order by SupplierID create proc categorias as select CategoryID,CategoryName from Categories order by CategoryID
  • 127. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 128 -  En modo de vista previa: Informe final: 4. Mostar en un gráfico y en una tabla el número de productos por categorías 2 2 3 5 0 1 2 3 4 5 6 Categoría A Categoría B Categoría C Categoría D … Productos
  • 128. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 129 - Código en SQL: Reporting Services:  En modo de diseño:  En modo de vista previa (Informe final): create proc TOT_PROD as select CategoryID,count(QuantityPerUnit) as total from Products group by CategoryIDwhere E.EmployeeID=@e
  • 129. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 130 - 5. Año (consulta de años a la bd) (distint)(matriz) (employ,orde) Meses 1 2 3 4 … 12 Juan Torres Pedro León Ana Díaz María Huamán Empleados (Nombre y apellidos) Numero de órdenes realizadas en un mes del año seleccionado Código en SQL: Reporting Services:  En modo de diseño: create proc Emp_orde @anio datetime as select FirstName+' '+LastName as name,count(OrderID) as total_ordenes,MONTH(OrderDate) from Employees as e inner join Orders as o on o.EmployeeID=e.EmployeeID where year(OrderDate)=@anio group by FirstName+' '+LastName,MONTH(OrderDate)where E.EmployeeID=@e create proc anios as select distinct YEAR(OrderDate) from Orders order by YEAR(OrderDate)
  • 130. Manual de SQL Server 2008 2012 Estrada Aguilar, Karen Johana | BASE DE DATOS II. . - 131 -  En modo de vista previa: Informe final: 6. Mes Año 0 1 2 3 4 5 6 Emp 1 Emp 2 Emp 3 Emp 4 … Númerodeórdenes realizadas Total de Órdenes