Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manualsqlserver2008final 130128113826 Phpapp02 PDF
Manualsqlserver2008final 130128113826 Phpapp02 PDF
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Contenido
INTRODUCCIN. ..................................................................................................................3
INSTALACIN DEL SQL SERVER 2008.....................................................................................4
INGRESAR AL SQL SERVER 2008 .......................................................................................... 19
CONSULTAS EN LA BASE DATOS NORTHWIND .................................................................... 22
1. Crear una consulta ..................................................................................................... 22
2. Ejecutar consulta ........................................................................................................ 23
3. SELECT ....................................................................................................................... 24
4. FROM ........................................................................................................................ 24
5. WHERE....................................................................................................................... 24
6. ORDERDATE: .............................................................................................................. 26
7. DATEPART.................................................................................................................. 26
8. ORDER BY .................................................................................................................. 27
9. LIKE............................................................................................................................ 28
10. TOP ........................................................................................................................ 28
Ejercicios ........................................................................................................................... 30
11. INSERT ................................................................................................................... 33
12. UPDATE .................................................................................................................. 34
13. DELETE ................................................................................................................... 36
14. DISTINCT ................................................................................................................ 37
15. INNER JOIN............................................................................................................. 37
16. UNION ................................................................................................................... 40
17. SELECT INTO ........................................................................................................... 41
18. SUBCONSULTAS ...................................................................................................... 41
19. GROUP BY .............................................................................................................. 41
Ejercicios ........................................................................................................................... 43
PROCEDIMIENTOS ALMACENADOS .................................................................................... 46
REPORTING SERVICES ........................................................................................................ 60
RESTRICCIONES EN SQL .................................................................................................... 127
FUNCIONES ..................................................................................................................... 140
BASE DE DATOS II
2
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
SQL son las siglas de Structured Query Language que quiere decir Lenguajes de
Solicitud Estructurado. SQL SERVER es un Gestor de Base Datos de Microsoft, esta
versin 2008, muestra grandes avances con respecto a sus predecesora (SQL Server
2005); comienza ser un serio competidor para sistemas como ORACLE, orientados a
base de datos de gran tamao.
SQL Server 2008 incluye una gran cantidad de nuevas caractersticas que permiten una
gestin ms racional y eficaz del mismo, aumentan el rendimiento, la escalabilidad y la
estabilidad del servidor y, permiten una configuracin avanzada a nivel de servicios,
seguridad del servidor, etc.
Todas estas caractersticas se agrupan dentro de SQL Server 2008 clasificadas segn
sus distintas ediciones:
Express: Esta edicin es la evolucin del antiguo MSDE, la versin gratuita de SQL
Server 2000. Sigue siendo gratuita y, aunque limitada, incorpora un pequeo
entorno grfico de administracin y permite un mximo de 50 conexiones
concurrentes (suficiente para cualquier entorno pequeo).
BASE DE DATOS II
3
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Developer: Esta versin contiene todas las opciones, pero al ser una versin
destinada a entornos de prueba y laboratorio, contiene limitaciones en cuanto a
CPUs soportadas y a licencias.
4
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
Ahora, vaya al tab Installation, y all seleccione la opcin New SQL Server
stand alone installation or add features to an existing installation
5
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
6
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
7
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ahora, deber seleccionar las caractersticas de SQL server 2008 que desea
BASE DE DATOS II
8
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
9
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ahora, usted deber configurar las cuentas con las cuales se ejecutar el
servicio; la recomendacin es utilizar diferentes cuentas, sin embargo, en la
imagen de la derecha usted puede observar cmo una cuenta es utilizada para
ejecutar ms de un servicio, en la parte inferior podra seleccionar la opcin
para utilizar la misma cuenta para todos los servicios, en cuyo caso solamente
tendr que escribir credenciales una vez, pero no estar cumpliendo con
buenas prcticas de seguridad. Despus de configurar las cuentas, haga
clic en el tab Collation
BASE DE DATOS II
10
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
11
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
12
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ahora revise las ubicaciones fsicas donde va a quedar instalado SQL Server y
cada uno de sus componentes, Haga clic en Next
BASE DE DATOS II
13
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
14
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ahora, seleccione las opciones para que se enven reportes de errores y de uso
de caractersticas hacia Microsoft y haga clic en Next
BASE DE DATOS II
15
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
16
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
17
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
18
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Nota: El SQL no distingue las maysculas de minsculas as que para este programa es
lo mismo hola que HOLA
1. Botn inicio
19
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
20
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
5. Ingresando
Cuando ingresas por Autenticacin de Windows se refiere al usuario que tiene por
BASE DE DATOS II
21
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
En ella veras las base datos que se instalan con el SQL Server y la base datos que
vas creando.
Nosotros trabajaremos con la base datos Northwind
Para crear una nueva consulta, primero debes seleccionar la base datos que vas a
trabajar en este caso es Northwind, luego haces clic derecho y nueva consulta; o
despus de seleccionar la base datos haces clic en el icono nueva consulta.
BASE DE DATOS II
22
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
2. Ejecutar consulta
BASE DE DATOS II
23
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
3. SELECT
4. FROM
Ejemplos:
5. WHERE
Esta sentencia filtra registros que cumplan la condicin dada, verdadera o falsa.
BASE DE DATOS II
Si quisiera unir ms condiciones utilizare los operadores lgicos AND u OR, esto
ser de acuerdo a la informacin de lo que se desea obtener.
24
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplos:
a) Una condicin
select * from Products
where CategoryID = 2
Debe tener dos condiciones, que uno sea mayor igual (>=) y el otro menos
igual (<=)
Tiene que estar unidas con AND
Que el campo sea el mismo
Ejemplo 1:
Ejemplo 2:
25
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplos 1:
Ejemplo 2:
Ejemplo 3:
Ejemplo 4:
6. ORDERDATE:
Ejemplo 1:
select *
from dbo.Orders
WHERE YEAR (OrderDate)='1996'
7. DATEPART
Ejemplo 1:
select *
from Orders
26
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
DATEPART (DD,OrderDate)='31'
8. ORDER BY
Forma ascendente
Ejemplo 1:
Ejemplo 2:
Forma descendente
Ejemplo 1:
Ejemplo 2:
BASE DE DATOS II
27
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 1:
9. LIKE
Si queremos buscar por una palabra, letra o frase; entra a tallar un comodn que es
el signo de porcentaje (%)
10. TOP
BASE DE DATOS II
28
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 1:
select top 3*
from Products
BASE DE DATOS II
29
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicios
Para hacer comentarios en el SQL SERVER es con dos guiones (--) para una lnea, si
queremos comentar ms de una lnea utilizaremos (/* comentario */) para abrir y
cerrar el comentario. Usando la Base Datos Northwind, realizar las siguientes
consultas:
==================================
==================================
==================================
Ejercicio 1: Seleccionar todos los campos de la tabla clientes, ordenado por nombre del
contacto de la compaa, alfabticamente.
Ejercicio 2: Seleccionar todos los campos de la tabla rdenes, ordenados por fecha de
la orden, descendentemente.
Ejercicio 3: Seleccionar todos los campos de la tabla detalle de la orden, ordenada por
cantidad pedida, ascendentemente.
Ejercicio 4: Obtener todos los productos, cuyo nombre comienzan con la letra P y
tienen un precio unitario comprendido entre 10 y 120.
30
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 5: Obtener todos los clientes de los pases de: USA, Francia y UK.
Ejercicio 6: Obtener todos los productos descontinuados y sin stock, que pertenecen a
las categoras 1, 3, 4 y 7.
Ejercicio 7: Obtener todas las ordenes hechas por el empleado con cdigo: 2, 5 y 7 en
el ao 1996
--otra forma
Ejercicio 9: Seleccionar todos los clientes que no cuenten con FAX, del pas de USA
(Country='USA')
Ejercicio 10: Seleccionar todos los empleados que cuentan con un jefe.
31
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 11: Seleccionar todos los campos del cliente, cuya compaa empiece con la
letra de A hasta la D y pertenezcan al pas de USA, ordenarlos por la direccin.
Ejercicio 12: Seleccionar todos los campos del proveedor, cuya compaa no comience
con las letras de la B a la G, y pertenezca al pas de UK, ordenarlos por nombre de la
compaa.
Ejercicio 13: Seleccionar los productos vigentes cuyos precios unitarios estn entre 35
y 250, sin stock en almacn. Pertenecientes a las categoras 1, 3, 4, 7 y 8, que son
distribuidos por los proveedores 2, 4, 6, 7 y 9.
Ejercicio 14: Seleccionar todos los campos de los productos descontinuados, que
pertenezcan a los proveedores con cdigos: 1, 3, 7, 8 y 9, que tengan stock en
almacn, y al mismo tiempo que sus precios unitarios estn entre 39 y 190, ordenados
por cdigo de proveedor y precio unitario de manera ascendente.
Ejercicio 15: Seleccionar los 7 productos con precios ms caros, que cuenten con stock
en almacn.
32
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 16: Seleccionar los 9 productos, con menos stock en almacn, que
pertenezcan a la categora 3, 5 y 8.
SELECT TOP 9
*FROM Products
where CategoryID in (3,5,8)
ORDER BY UnitsInStock
Ejercicio 17: Seleccionar las rdenes de compra, realizadas por el empleado con cdigo
entre el 2 y el 5, adems de los clientes con cdigos que comienzan con las letras de la
A hasta la G, del 31 de Julio de cualquier ao.
Ejercicio 18: Seleccionar las rdenes de compra, realizadas por el empleado con cdigo
3, de cualquier ao pero solo de los ltimos 5 meses (agosto - Diciembre).
Ejercicio 19: Seleccionar los detalles de las rdenes de compra, que tengan un monto
de cantidad pedida entre 10 y 250.
11. INSERT
33
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 1: Se cre la tabla alumno, con los siguientes campos: cdigo, nombre,
apellido.
SELECT *
FROM ALUMNO
Ejemplo 2: Crear una tabla artculos, crala con identidad (es decir el cdigo se
genera solo a partir de una determinada cantidad y no acepta valores nulos):
SELECT *
FROM ARTICULOS
12. UPDATE
Ejemplo 1:
34
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
update Products
set UnitsInStock=50
where ProductID=1
update Customers
set Country='Peru'
where Country='UK'
update Suppliers
set Country='Peru'
where Country='UK'
update Categories
set CategoryName='juguetes'
where CategoryId=5
Ejemplo 4: Cambiar y colocar el nmero de fax 'o' a los que son nulos
update Suppliers
set fax='0'
where Fax is null
update Employees
set LastName='Vasquez',FirstName='Alex'
where EmployeeID=6
35
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
update Customers
set CustomerID='UNCFI'
where CustomerID='ALFKI'
13. DELETE
Esta sentencia sirve para eliminar los campos de una tabla especfica.
Ejemplo 1:
delete
from Customers
delete
from [Order Details]
where OrderID=10255
delete
from Orders
where OrderID=10255
delete
from [Order Details]
where ProductID in (5,9,17,24,28,29,42,53)
delete
from Products
BASE DE DATOS II
where Discontinued=1
Otra forma:
delete
36
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
delete
from Products
where Discontinued=1
14. DISTINCT
Sirve para que no se repitan los campos, es decir, omite los registros cuyos campos
seleccionados coincidan totalmente
Sintaxis:
Select * from nombre_tabla_1
Inner join nombre_tabla_2
On campo.nombre_tabla_1=campo.nombre_tabla_2
Pero para la combinacin de tablas se puede hacer de dos formas una es con alias
y otra sin ella.
37
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
38
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
from Suppliers as s
inner join Products as p on s.SupplierID = p.SupplierID
Ejercicio 9: Modificar el ejercicio 3 solo las rdenes del mes de enero de 1997
39
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 10: Modificar el ejercicio 4 solo las productos con stock cero
Ejercicio 12: Modificar el ejercicio 6 solo del primer trimestre del ao 1996
16. UNION
Esta sentencia sirve para unir varias consultas, pero para esto debe cumplir:
BASE DE DATOS II
Ejemplo:
40
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Esta sentencia nos permite crear una nueva tabla a partir de un conjunto de
resultados.
Ejemplo:
18. SUBCONSULTAS
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia
SELECT, que llamaremos consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal
exceptuando que aparece encerrada entre parntesis, no puede contener la
clusula ORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems
tiene algunas restricciones en cuando a nmero de columnas segn lugar donde
aparece en la consulta principal. Se aconseja no utilizar campos calculados en las
subconsultas.
Ejemplo 2: Mostrar los productos cuyo precio es mayor al promedio de todos los
productos
BASE DE DATOS II
19. GROUP BY
41
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Esta sentencia agrupa todos los registros iguales en uno solo y los nicos campos
que existen son los que sobreviven y van en el SELECT; tambin pueden sumar,
sacar promedio, desviacin estndar, mnimo, mximo.
Ejemplos:
42
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicios
43
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 7: Calcular el stock total de los productos por cada categora. Mostrar el
nombre de la categora y el stock por categora.
Ejercicio 8: Calcular el stock total de los productos por cada categora. Mostrar el
nombre de la categora y el stock por categora. Solamente las categoras 2, 5 y 8.
Ejercicio 9: Obtener el nombre del cliente, nombre del proveedor, nombre del
empleado y el nombre de los productos que estn en la orden 10250.
Ejercicio 10: Mostrar el nmero de rdenes realizadas de cada uno de los clientes por
ao.
Ejercicio 11: Mostrar el nmero de rdenes realizadas de cada uno de los empleados
en cada ao.
44
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicio 12: Mostrar el nmero de rdenes realizadas de cada uno de los clientes por
cada mes y ao.
Ejercicio 13: Contar el nmero de rdenes que se han realizado por aos y meses.
BASE DE DATOS II
45
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
PROCEDIMIENTOS ALMACENADOS
Para crear un procedimiento iniciara con CREATE luego ira PROC o PROCEDUTE y al
final darle el nombre del procedimiento.
Sintaxis:
create proc hol
Si se desea modifica se reemplazara CREATE por ALTER, este ltimo nos permitir
guardar las modificacin en cuerpo del procedimiento.
Sintaxis:
alter proc hol
Parmetros: es una variable que establece el mbito de los datos especficos devueltos
cuando se ejecuta un informe. Puede proporcionar un valor predeterminado, o la
persona que ejecuta el informe puede seleccionar un valor o un conjunto de valores.
Para agregar un parmetro al informe.
Primero va el signo arroba (@), luego el nombre del parmetro y luego el tipo.
Sintaxis:
@hola int
AS: La clusula AS se puede usar para cambiar el nombre de una columna de conjunto
de resultados o para asignar un nombre a una columna derivada.
Cuando se define una columna del conjunto de resultados mediante una referencia a
la columna de una tabla o vista, el nombre de la columna del conjunto de resultados es
el mismo que el nombre de la columna a la que se hace referencia. La clusula AS se
puede usar para asignar un nombre distinto, o alias, a la columna del conjunto de
resultados. Esto se puede hacer para mejorar la comprensin.
as
Despus si se desea se declara o no variables. Para declarar una variable se tiene que
anteponer DECLARE, el signo arroba (@), nombre de la variable y el tipo.
Ejemplo 1:
create proc hol
@hola int
as
46
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 3: Crear una tabla CLIENTES con los siguientes campos: cdigo (7), nombre
BASE DE DATOS II
(30), apellidos (30), direccin (30) y correo (30). Crear un SP que inserte a los clientes, y
el cdigo se generar con las dos primeras letras de su nombre y apellido, y un nmero
correlativo.
47
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Select @nr=count(*)+1
From 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 clientes(codigo,nombre,apellidos,direccion,correo)
Values (@cod,@n,@a,@d,@c)
@ape varchar(50),
@dir varchar(50),
@core varchar(50)
as
declare @nr as int,
48
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
@cod as char(7)
set @cod=LEFT(@nom,2)+LEFT(@ape,2)
select @nr=COUNT(*)+1
from persona
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))
if @nr<=999
set @cod=rtrim(@cod)+LTRIM(STR(@nr))
execute prod_prov 5
exec prod_prov 5
49
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Llamamos:
select OrderID from [Order Details]
where OrderID=10570
union select OrderID from Orders
where OrderID=10570
Observacin: Tiene que seguir el orden de los parmetros, caso contrario saldr un
error.
50
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
51
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
52
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 12: Generar un SP que genere un numero al azar y al comparar con los
empleados, y muestre al ganador.
53
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
SELECT LastName
FROM Employees
WHERE EmployeeID = @AZAR
Ejemplo 14: Crear un SP que actualice los precios de los productos, solo de los
productos de la categora ingresada (ingresar el porcentaje de aumento de los precios)
solamente se actualizan los productos vigentes.
Despues de ejecutar el SP
54
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 16: Crear una tabla con los siguientes campos: cdigo (7), nombre, apellidos,
gnero. El cdigo se generara con los dos primeros caracteres del nombre, con los dos
primeros caracteres del apellido; y el resto ser completado por un contador, segn el
gnero.
Muestra:
CDIGO NOMBRE APELLIDO GENERO
JUEPE001 JUAN PREZ M
VIRA002 VCTOR RAMREZ M
BASE DE DATOS II
55
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
@ape varchar(30),
@SX CHAR(1)
as
declare @nr int,
@cod char(7)
select @nr=COUNT(*)+1
from PERSONA
WHERE genero=@SX
if @nr<=9
set @cod=LEFT(@nom,2)+left(@ape,2)+'00'+LTRIM(STR(@nr))
else if @nr<=99
set @cod=LEFT(@nom,2)+left(@ape,2)+'0'+LTRIM(STR(@nr))
else
set @cod=LEFT(@nom,2)+left(@ape,2)+LTRIM(STR(@nr))
Ejemplo 17: Crear una tabla con los siguientes campos: cdigo (9), nombre, apellidos,
fecha nacimiento. El cdigo se generara con el primer carcter del nombre, del
apellido, el ao de nacimiento; y el resto ser completado por un contador.
select @nr=COUNT(*)+1
from alum
if @nr<=9
set @cod=LEFT(@nom,1)+left(@ape,1)+LTRIM(str(YEAR(@fn)))+'00'+LTRIM(STR(@nr))
else if @nr<=99
set @cod=LEFT(@nom,1)+left(@ape,1)+LTRIM(str(YEAR(@fn)))+'0'+LTRIM(STR(@nr))
else
set @cod=LEFT(@nom,1)+left(@ape,1)+LTRIM(str(YEAR(@fn)))+LTRIM(STR(@nr))
56
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 18: Crear un Stored Procedure que muestre los productos de la misma
categora que tiene el producto ms caro (ir modificando el producto ms caro para
realizar las pruebas)
--Pruebas
Update Products
Set UnitPrice=9642
Where ProductName='Tofu'
Update Products
Set UnitPrice=10000
Where ProductName='Geitost
Createproc gane
as
select top 10 CustomerID as codigo, CompanyName as compaia, ContactName as contacto,Address
as direccion, City as ciudad, Country as pais
into ganador
57
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
from Customers
orderby NEWID()
select *from ganador
drop table ganador
Ejemplo 21: Crear un procedimiento almacenado que copie los registros de productos
a la tabla ProductosNuevos (cdigo, nombre, precio, stock) colocando el stock a cero a
todos los productos y el precio actualizarlo segn:
Menor o igual a 10 --> 200%
Mayor que 10 y menor o igual a 23 --> 100%
Mayor a 23 y menor o igual a 110 --> 80%
Mayor a 110 --> 70%
Alterproc nuevo
as
select ProductID as codigo,
ProductName as nombre,
UnitPrice as precio,
UnitsInStock as stock
Into productonuevo
From Products
Update productonuevo
Set stock=0
Update productonuevo
Set precio=precio+precio*0.7
Where precio>110
Update productonuevo
Set precio=precio+precio*0.8
Where precio>23 and precio<=110
Update productonuevo
Set precio=precio+precio
Where precio>10 and precio<=23
Update productonuevo
Set precio=precio+precio*2
Where precio<=10
-- Pruebas
Select ProductID,ProductName,UnitPrice,UnitsInStock
BASE DE DATOS II
From Products
Update Products
Set UnitPrice=20
Where ProductName='Chang'
58
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 22: Crear una tabla personas, con los campos: DNI, nombres, apellidos, sexo.
Ingresar por lo menos 10 registros.
Implementar un Stored Procedure que permita seleccionar una pareja de personas,
conformada por una mujer y un hombre de manera aleatoria.
Ejemplo 23: Crear un Stored Procedure que nos permita insertar un registro a la tabla
postulantes (cdigo, nombres, apellidos, fecha de nacimiento, sexo), internamente se
debe autogenerar el cdigo para posteriormente ingresar el registro completo, el
cdigo se genera de la siguiente forma:
59
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
REPORTING SERVICES
Para crear un reporte vamos utilizar una herramienta del SQL Server que es el Visual
Studio 2008.
60
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
61
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
62
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
63
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Donde est la opcin Nombre del servidor buscara el servidor que est
trabajando, en nuestro caso estamos con Autentificacin de Windows y all
vamos a colocar el punto (.)
64
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Aceptar
65
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
5.6. Luego en la parte izquierda Datos de Informe hacemos clic Nuevo > Origen
de Datos
BASE DE DATOS II
66
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
Aceptar
67
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
68
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
69
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
70
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
71
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
72
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Cuando estamos en la pestaa vista previa, aparece una caja por el cual vamos a
filtrar, este es el parmetro creado en procedimiento. En este caso es por CategoryID.
73
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
74
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 2:
BASE DE DATOS II
75
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 3:
76
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 4: Crear un reporte usando reporting services, que muestre el nombre del
producto, nombre de la empresa proveedor, precio seleccionar el nombre de la
empresa y mostrar los productos del proveedor seleccionado
77
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
78
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
La primera opcin Ninguno, sale la opcin dela caja, donde tenemos que escribir
el valor
La segunda opcin Especificar valores, es cuando conocemos los valores, vamos
agregando uno a uno. Lo cual no es tan recomendable si son varias.
La tercera opcin Obtener valores de una consulta, esta es cuando usamos una
BASE DE DATOS II
consulta, esta puede ser creada como procedimiento en el SQL o tambin directo.
Lo que vimos al inicio cuando hacamos la consulta.
79
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
O tambin
BASE DE DATOS II
80
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Luego vamos a Propiedades del parmetro, dndole doble clic, elegimos Valores
disponibles y checkamos la tercera opcin.
81
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
82
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 5: Mostrar el nmero de productos vendidos en cada mes por cada empleado
Creamos el procedimiento
83
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 6: Mostrar el nombre del cliente, nombre del empleado, filtrar por el
BASE DE DATOS II
Creamos el procedimiento
84
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
@EMP INT
AS
SELECT CompanyName,(LastName+' '+FirstName)as nombre
FROM Customers as c
inner join Orders as o
on o.CustomerID=c.CustomerID
inner join Employees as e
on e.EmployeeID=o.EmployeeID
where e.EmployeeID=@EMP
BASE DE DATOS II
85
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Creando el procedimiento
86
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Creando el procedimiento
87
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
Ejemplo 9: Mostrar: nombre del producto, unitprice, category name nombre del
proveedor del producto entre dos precios.
88
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Creando el procedimiento
BASE DE DATOS II
89
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 10: Mostrar: productname stock del producto, categoryname, company name
del proveedor. Filtrar por proveedor y nombre de la categora.
Creando el procedimiento
90
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
from Suppliers
BASE DE DATOS II
91
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Creando el procedimiento
BASE DE DATOS II
92
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Creamos el procedimiento.
Procedimiento para el ao
93
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
94
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 13: Parmetros mes, tener en cuenta el nombre de los empleados, numero
de ordenes realizadas, mostrar en un grfico.
95
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
96
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 14: Parmetro empleado, ver el ao y el monto total vendido por el empleado
mostrar en un grfico.
97
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
98
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 15: Vamos a crear un grupo en el Visual 2008, para la cual vamos utilizar la
siguiente consulta:
Directamente
BASE DE DATOS II
99
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
100
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Se abre una ventana en el cual vamos agrupar en nuestro caso por categoryname. A la
vez checamos las dos casillas: Agregar encabezado de grupo, Agregar pie de
grupo
BASE DE DATOS II
101
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Aceptamos
Vemos que han aparecido dos filas ms, una encima y otra debajo eso es debido a las
casillas checkadas, mencionadas anteriormente. En la fila de encima puedes tomarla
como para un ttulo por el estilo depender de tu trabajo; mientras que la fila que est
debajo podras utilizarlo para una operacin, repito todo ser cuestin de tu trabajo.
Nosotros vamos a utilizar para la suma total del precio.
BASE DE DATOS II
102
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Al hacer clic en esta Visibilidad de fila. Se habre una ventana en la cual vamos checkar
la opcin de ocultar y en la casilla La visualizacin se puede activar o desactivar
vamos a buscar el nombre del grupo por el cual se quiere ocultar.
103
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
Al lado de cada grupo ha aparecido el signo ms (+), esto quiere decir que estn
ocultos ciertos datos y para verlos solo hay que darle clic.
104
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Pero si nos damos cuenta no se han ocultado las dos filas creadas anteriormente como
encabezado y pie de grupo. Pero haciendo el mismo procedimiento podemos
ocultarlo.
BASE DE DATOS II
105
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Aparece la misma ventana en el cual vamos a ocultar y elegir el grupo por el cual se
quiere ocultar.
106
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
Ejemplo 16: Vamos a generar un informe integrado, pero para esto no debe tener
ningn parmetro.
107
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
En este caso vamos utilizar la consulta del ejemplo anterior (ejemplo 16) y esta
consulta.
Hacemos los mismos pasos para crear el informe, nos detenemos cuando queremos
jalar una herramienta del cuadro de herramientas. Porque all vamos elegir la
herramienta informe integrado.
Es decir los dos reportes tienen que existir por si solas ya que la herramienta solo las
va juntar. Eso lo vemos en el explorador de soluciones.
108
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
109
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
110
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
111
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
La consulta es:
select ProductName,UnitPrice,CategoryID
from Products
BASE DE DATOS II
112
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
=iif(Fields!CategoryID.Value=1,10%,
iif(Fields!CategoryID.Value=2,15%,
iif(Fields!CategoryID.Value=3,23%,
iif(Fields!CategoryID.Value=4,30%,0%))))
BASE DE DATOS II
113
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
114
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
115
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
=iif(Fields!CategoryID.Value=1,Fields!UnitPrice.Value*0.10,
iif(Fields!CategoryID.Value=2,Fields!UnitPrice.Value*0.15,
iif(Fields!CategoryID.Value=3,Fields!UnitPrice.Value*0.23,
iif(Fields!CategoryID.Value=4,Fields!UnitPrice.Value*0.30,
Fields!UnitPrice.Value*0))))
116
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
117
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
=iif(Fields!CategoryID.Value=1,"Yellow",
iif(Fields!CategoryID.Value=2,"Yellow",
iif(Fields!CategoryID.Value=3,"Green",
iif(Fields!CategoryID.Value=4,"Green",
iif(Fields!CategoryID.Value=5,"Blue",
iif(Fields!CategoryID.Value=6,"Blue","Red"))))))
BASE DE DATOS II
118
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Y se ve as:
BASE DE DATOS II
119
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Condicin.
=iif(Fields!Discontinued.Value=False,"Discontinuado","Vigene")
BASE DE DATOS II
120
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Sale:
BASE DE DATOS II
121
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 20: Mostrar el cdigo y nombre de los empleados, luego enlazar los informes
de tal manera que al dar click en el nombre del empleado, se abra otro informe en el
cual se pueda visualizar una grfica con las ventas del empleado por ao, mostrndose
el nombre del empleado.
122
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ahora bien queremos que cuando hagamos clic en empleado nos lleve a una segunda
consulta, pero antes debemos crearla. Usamos la segunda consulta.
BASE DE DATOS II
123
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Seleccionamos la celda donde dice [Empleado], le damos clic derecho y hacemos clic
en Propiedades de cuadro de texto, luego vamos a Acciones y elegimos la opcin Ir a
informe.
BASE DE DATOS II
124
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
125
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
126
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
RESTRICCIONES EN SQL
En nuestro caso vamos a crear una nueva tabla llamada pruebas_restricciones, con los
siguientes campos:
127
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
restriccin.
128
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Vamos a restringir al sueldo que sea mayor a 650, si cumple se podr ingresar el
dato caso contrario no.
Nombre de la restriccin: CK_sueldo
Nos vamos a la opcin expresin y condicionamos.
BASE DE DATOS II
129
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Acepamos todos los cambios guardamos los cambios, para que haga efecto en la
tabla. Y luego insertamos algunos datos.
BASE DE DATOS II
130
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
131
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
132
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
133
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Nos genera un error por lo que est restringido el campo seso. Y en cambio s
colocamos segn la restriccin, si nos acepta.
134
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
135
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
136
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
137
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Vamos a restringir al campo celular para que tenga los 11 caracteres, aunque los
puedo llenar de espacios en blanco el cual no se le permitir.
138
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
No nos permite porque hay espacios en blando en el campo celular y solo hay 7
caracteres. Lo cual no es permitido.
BASE DE DATOS II
139
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
FUNCIONES
(1) UPPER
Convierte a maysculas
select UPPER(CompanyName)
from Suppliers
(2) LOWER
Convierte a minsculas
BASE DE DATOS II
140
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(3) LTRIM
Borra los espacios de la izquierda
(4) RTRIM
Borra los espacios de la derecha
141
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(5) LEN
Cuenta la cantidad de caracteres
(6) SUBSTRING
Substrae un subcadena de una cadena a partir de una posicin,
(7) CHARINDEX
Muestra la primera posicin donde se encuentra ubicado el carcter dentro
BASE DE DATOS II
CHARINDEX (lo que busca, cadena donde buscar, desde que posicin)
142
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(8) GETDATE
Muestra la fecha actual del sistema
select GETDATE()
(9) DATEADD
Aade o disminuye cierta cantidad al ao (yy), mes (mm), da (dd)
select DATEADD(YY,1,GETDATE())
select DATEADD(YY,1,GETDATE())
BASE DE DATOS II
143
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(10) DATEPART
Saca parte de la fecha ya sea el da, mes, ao.
select DATEPART(YY,GETDATE())
select DATEPART(MM,GETDATE())
select DATEPART(MM,DATEADD(mm,-3,getdate()))
(11) DATEDIFF
Devuelve la diferencia entre dos fechas como das, meses, aos.
144
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(12) DATENAME
Devuelve el nombre de un mes, da.
(13) ISDATE
Devuelve uno (1) cuando se trata de una fecha y cero (0) cuando no lo es.
select ISDATE('hhhh')
select ISDATE('10/10/1998')
BASE DE DATOS II
145
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(14) ISNUMERIC
Devuelve uno (1) cuando se trata de un nmero y cero (0) cuando no lo es.
(15) @@ROWCOUNT
Devuelve la cantidad de campos afectados con la ltima accin. Es decir
guarda temporalmente hasta que se ejecute una siguiente instruccin.
Vamos actualizar el stock de los productos de la categora 1
update Products
set UnitsInStock=200
where CategoryID=1
BASE DE DATOS II
select @@ROWCOUNT
146
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Resulta
Ahora si ejecutamos
select @@ROWCOUNT
Obtenemos.
147
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
as
begin
declare @igv money
set @igv=@monto * 0.19
return @igv
148
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
end
--probamos la funcion
select UnitPrice, dbo.fn_igv(UnitPrice)as IGV
from Products
Ejemplo 2: Crear una funcin el cual borre los espacios tanto de la derecha
como de la izquierda.
--probamos la funcion
select dbo.fn_espacios(' Alex ')as cadena
BASE DE DATOS II
149
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 4: Crear una funcin que verifique dentro de una tabla si los usuarios
son correctos o no. De tal modo que me devuelva uno (1) cuando sea correcto
y cero (0) se no lo es.
returns int
begin
declare @nr int
select @nr=count(*)
from usuarios
150
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
return @nr
end
---probamos
select dbo.fn_usuarios('david','alex')
select dbo.fn_usuarios('alex','alex')
if @@ROWCOUNT=1
BASE DE DATOS II
151
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
---probamos
exec usuarios_cambi_clave 'alex','david','123'
exec usuarios_cambi_clave 'alex','alex','123'
Seguidamente la funcin
152
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
-- FUNCION
select @reg=companyname
from suppliers
where supplierid=cast((@rnd*@nreg+1) as int)
return @reg
end
Y probamos
select dbo.fn_aleatorio()
Ejemplo 1: Crear una funcin que ingrese C (corto) si se desea visualizar solo
el ID y apellido del Empleado, y L (Largo) si se desea visualizar id, nombre y
apellido del Empleado.
153
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
(@tipo char(1))
--es la tabla temporal
RETURNS @fn_empleados TABLE
--son los campos de la tabla temporal @fn_empleados
(ID int PRIMARY KEY NOT NULL,
nombre nvarchar(61) NOT NULL)
AS
BEGIN
--convierte a mayuscula
-- condiciona
IF upper(@tipo) = 'C'
--se inserta datos en la tabla temporal
INSERT @fn_Empleados
--utiliza la tabla empleados, es decir
--pasa datos a la tabla temporal
SELECT EmployeeID, LastName
FROM Employees
ELSE IF upper(@tipo) = 'L'
INSERT @fn_Empleados
--utiliza la tabla empleados, es decir
--pasa datos a la tabla temporal
SELECT EmployeeID,
(FirstName + ' ' + LastName) as Nombre
FROM Employees
RETURN
END
154
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Luego la funcin
begin
set @i=@i+1
INSERT @prod
SELECT productid,productname
from products
155
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
where productid=@reg_azar
end
end
RETURN
END
Probamos
Ejemplo 1: Crear una funcin que me muestre el ID, cliente. Filtradas por la
regin.
Probamos.
156
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
TRIGGERS
Creamos el trigger
Probamos
Nos muestra
157
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
select *
from [Order Details]
where OrderID = 10529
El trigger nos condiciona que debemos borrar uno por uno, y no en conjunto.
Creamos el trigger
select productid,productname,unitprice,unitsinstock
from products
where productid=11
values (10260,11,14,5,0)
158
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
select productid,productname,unitprice,unitsinstock
from products
where productid=11
Creamos el trigger
select ProductID,ProductName,Discontinued
from products
WHERE PRODUCTID = 11
BASE DE DATOS II
159
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
select ProductID,ProductName,Discontinued
from products
WHERE PRODUCTID = 11
Creamos el trigger
Probamos
UPDATE SUPPLIERS
SET COMPANYNAME ='JUAN'
BASE DE DATOS II
WHERE SUPPLIERID = 2
160
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejemplo 5: Crear una tabla histrico que vaya guardando el nombre de la compaa
(actual nombre y nuevo nombre) de los proveedores. Tabla: histrico (id, actual,
nuevo) el id es identity.
Creamos el triggers
Probamos
UPDATE SUPPLIERS
SET COMPANYNAME ='JUAN'
WHERE SUPPLIERID = 2
BASE DE DATOS II
161
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Verificamos
SELECT *
FROM HISTORICO
BASE DE DATOS II
162
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Ejercicios
1. Crear una funcin que permita cambiar el primer carcter de cada nombre y
apellido ingresado a maysculas y el resto en minsculas.
Ejemplo:
Ingresa: JUAN PABLO DAZ TORRES
Sale: Juan Pablo Daz Torres
SOLUCIN
set @i=len(@texto)
set @tx=substring(@texto,1,1)
set @frase=upper(@tx)
set @c=2
while @c<=@i
begin
set @tx=substring(@texto,@c,1)
if @tx=' '
begin
set @frase=@frase+' '+upper(substring(@texto,@c+1,1))
set @c=@c+2
end
else
begin
set @frase=@frase+LOWER(@tx)
set @c=@c+1
end
end
BASE DE DATOS II
return @frase
end
--PROBAMOS
163
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
SOLUCIN
2 Creamos el Reporting
BASE DE DATOS II
164
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
165
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
166
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
167
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
168
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
Del mismo modo para el ao, esto para no generar que se muestre doble vez esas
BASE DE DATOS II
dos columnas.
169
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
170
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
BASE DE DATOS II
171
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
3. Crear un Trigger que cada vez que cambie un precio del producto, el antiguo
precio (el que se va a reemplazar, el precio anterior al cambio es el quese va a
guardar). Se almacene en una tabla histrico precio.
TABLA: Historico_Precio
ID: Int Identi Primary Key
FECHA_CAMBIO
COD_PRODUCT
PRECIO
Update product
Set unitprice=100
Where productid=5
HISTORICO_PRECIO
ID FECHA_CAMBIO COD_PRODUCT PRECIO
1 20/07/11 5 80
BASE DE DATOS II
SOLUCIN
172
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
2 Creamos el Triggers
173
MANUAL SQL SERVER 2008
INGENIERA DE SISTEMAS
ALEX DAVID VSQUEZ SAMN
INSERT INTO
HISTORICO_PRECIO(FECHA_CAMBIO,COD_PRODUCT,PRECIO)
VALUES (@FECHA,@PROD,@PRE_ACT)
END
-- PROBAMOS
DELETE HISTORICO_PRECIO
-- 1 ACTUALIZAMOS
Update products
Set unitprice=258
Where productid=2
-- 2 MOSTRAMOS LA TABLA
SELECT *
FROM HISTORICO_PRECIO
-- 3 VERIFICAMOS
SELECT ProductID,UNITPRICE
FROM PRODUCTS
Where productid=2
BASE DE DATOS II
174
UNIVERSIDAD NACIONAL DE CAJAMARCA
VSQUEZ SAMN, ALEX DAVID
1
2 011
Universidad Nacional de
Cajamarca
Google APPS
Alumno
INGENIERA DE SISTEMAS
UNIVERSIDAD NACIONAL DE CAJAMARCA
UNIVERSIDAD NACIONAL DE CAJAMARCA
VSQUEZ SAMN, ALEX DAVID
2
SQL Server permite la creacin de inicios de sesin de usuario. Cada persona que
necesita tener acceso a SQL Server se puede administrar su propia cuenta de
usuario.
a) Autenticacin de Windows.
4. Haga clic en Funciones del servidor ficha si es necesario aplicar los privilegios
de seguridad a nivel de servidor.
Tenga en cuenta que estas funciones son la base de datos Funciones y son
diferentes a las funciones de servidor en la ficha anterior. Las funciones de
servidor son para la administracin de SQL Server. Funciones de base de datos
se crean dentro de cada base de datos y especificar lo que la entrada se puede
hacer dentro de esa base de datos.
6. En la opcin Elementos que puede proteger podr elegir los elementos que
desea proteger
2. ROLES Y PRIVILEGIOS(PERMISOS)
Los roles son agrupaciones de usuarios en SQL Server donde se puede asignar
permisos (y negar permisos tambin).
SQL server tiene un grupo de roles que son creados en el momento de la instalacin
que corresponden a funciones comunes de administradores.
Los roles de SQL Server cumplen la misma funcin que un rol de Windows, esto es,
agrupar usuarios que comparten los mismos permisos. Dichos permisos son otorgados
al rol y los usuarios heredan los permisos de los roles.
Roles de Servidor
Cada base de datos tiene un conjunto definido de roles de base de datos, al cual los
usuarios de base de datos pueden ser adicionados. Estos roles de base de datos son
nicos dentro de la base de datos. Mientras los permisos de los roles de base de datos
no pueden ser alterados, nuevos roles de base de datos pueden ser creados.
Nota:
Roles
sp_addrolemember hola,davidd
Ejemplo:
Ejemplo:
Ejercicio (*).
Contrasea: 987
Lo comn seria:
6. Vamos hacer una primera prueba vamos acceder con el nuevo usuario. Nos
desconectamos y volvemos a conectarnos pero con Autentificacin de SQL Server,
en las casillas digitamos el inicio de sesin y la contrasea.
Clic en buscar, checamos la opcin Todos los objetos de los tipos y acepamos
Al aceptar aparecern todas las tablas en el cual podr restringir o no, lo que Ud.
prefiera:
La consulta:
select *
from Products
El mensaje:
Consulta 1:
select CustomerID
from Customers
Consulta 2:
select *
from Customers
El mensaje:
Mens. 229, Nivel 14, Estado 5, Lnea 1
Se deneg el permiso SELECT en el objeto 'Customers', base de datos
'Northwind', esquema 'dbo'.
Inicio > Panel de Control > Cuentas de Usuario > Agregar o quitar cuentas de
usuario > Crear una nueva cuenta
Se le da un nombre cualesquiera
Ahora no aparece ninguna tabla porque an falta dar los permisos eso se hace del
mismo modo que para la AUTENTICACIN DE SQL SERVER.
En mi caso la cuenta recin creada es alex. Le doy clic y me lleva a una ventana,
donde me muestra.
Se podra dar lmites de tiempo, es decir que solo tenga acceso por horas, das.
4. Google Apps
La integracin con Google Apps implicar que los mails no sern administrados por
nosotros sino por Google, por lo que resulta fundamental decidir si desean utilizar
el servicio.
Fallas
Por qu?
Google usa la misma interfaz de e-mail para Gmail y para hospedar las cuentas de
Google Apps. As que es fcil confundirse si no ests atento.
"Los usuarios tienen que sentirse cmodos usando aplicaciones basadas en la Web.
Eso no vale slo para Google, sino para todo tipo de buscadores. Cuando se usa la
cloud computing se necesita cambiar ciertas cosas de la conducta laboral, pero las
ventajas son enormes" apunta Matt Glotzbach, director de productos en Google
Apps.
Estoy iniciando en esto as que les pido disculpas por algunos errores que se
presenten en este manual.