Documente Academic
Documente Profesional
Documente Cultură
CAPITULO 01
Objetivos.- aprender a ingresar a SQL Server
2008. Adems de manipular los archivos de
una base de datos y creacin de tablas
Propuesto Practico 01
10
Pgina 1 de 101
Docentes:
C.-Autenticacin:
En estas primeras sesiones haremos uso de
Autenticacin de Windows.
D.- Presionar el botn CONECTAR
EL NOMBRE QUE RECIBE UN SERVIDOR SQL SERVER ES
DIFERENTE EN CADA COMPUTADORA. COMO ES EL
CASO DE MI SERVIDOR QUE RECIBE EL NOMBRE DE
PC-315E4BA698B1\MANCHESTER
Pgina 2 de 101
Docentes:
Resolver:
Qu tipo de autenticacin est configurado en tu servidor
Pgina 3 de 101
Docentes:
Pgina 4 de 101
Docentes:
e) Presionar el botn guardar de la barra de herramientas. Y asignar el nombre CLIENTES a la tabla creada
Pgina 5 de 101
Docentes:
d) Para GUARDAR los cambios realizados debes presionar el botn EJECUTAR SQL
Pgina 6 de 101
Docentes:
Cada vez que uno crea una base de datos a travs de un asistente o
herramientas visuales de SQL server 2008.
Una base de datos creada genera sus archivos en algn lugar fsico dentro de
un disco.
En una carpeta que fue configurado en el momento de instalacin. Los archivos
que genera son:
1 archivo MDF (solo uno)
1 o ms archivos NDF
Archivos de la base de
datos LONDRES
1 o ms archivos LDF
EN CONCLUSION cada vez que Ud. crea una base de datos.Automticamente
cada Generar 2 archivos.
DEMOSTRACION:
A. Crear una base de datos de nombre JPANDAL
B. Verificar la ruta de donde se ha creado los archivos de la base de datos creada
C. Buscar en la carpeta DATA los archivos de la base de datos creada
Estos
2
archivos
generados
sern
manipulados
por
los
usuarios. Es decir que si
Ud. Desea transportar su
base de datos de una
computadora
a
otra.
Deber realizar la accin
SEPARAR COPIAR ADJUNTAR
Pgina 7 de 101
Docentes:
c) Presionar ACEPTAR
Una vez separado la base de datos UD.
Podr copiar los archivos que pertenecen a
la base de datos a un disco extrable como
USB u otro. Para poder HACER USO la base
de datos en otra computadora.
Copiar los archivos en C:\BASE DE DATOS\
Pgina 8 de 101
Docentes:
Clic en ACEPTAR
Pgina 9 de 101
Docentes:
Propuesto Practico 01
1 Crear las siguientes bases de datos:
TRILCE, PAMER, UPC, UPCI, JHONNYPANDAL
2 Separar las bases de datos TRILCE Y PAMER
3 Copiar y Guardar los archivos de cada base de datos separada en una carpeta con su mismo nombre en DISCO C
4 Adjuntar las bases de datos TRILCE Y PAMER desde su nueva ubicacin fsica
5 Crear las siguientes tablas en la base de datos TRILCE e Ingresar 10 registros en cada tabla respetando la
Calidad de informacin que se almacena.
8 ingresar el nombre de los INICIOS DE SESION que existen en el servidor SQL SERVER
Pgina 10 de 101
Docentes:
CAPITULO 02
Objetivos.- aprender a trabajar con TransactSQL adems de crear programas haciendo
uso de elementos de la programacin en SQL
server 2008
1 Transact SQL
12
12
13
16
19
20
7 Desarrollo de Ejemplos
25
Propuesto Practico 02
27
Pgina 11 de 101
Docentes:
1 Transact SQL
Transact SQL es el lenguaje de programacin que proporciona SQL Server para ampliar SQL con los elementos
caractersticos de los lenguajes de programacin: variables, sentencias de control de flujo, bucles, ...
Herramienta de Programacin TRANSACT-SQL
Para acceder a esta herramienta solo debe hacer clic en el botn NUEVA CONSULTA
Pgina 12 de 101
Docentes:
Scripts y lotes.
Un script de Transact SQL es un conjunto de sentencias de Transact SQL en formato de texto plano que se
ejecutan en un servidor de SQL Server.
Un script est compuesto por uno o varios lotes. Un lote delimita el alcance de las variables y sentencias del script.
Dentro de un mismo script se diferencian los diferentes lotes a travs de la instruccin GO.
En ocasiones es necesario separar las sentencias en varios lotes, porque Transact SQL no permite la ejecucin de
ciertos comandos en el mismo lote, si bien normalmente tambin se utilizan los lotes para realizar separaciones
lgicas dentro del script.
Pgina 13 de 101
Docentes:
Int. Una columna o variable de tipo int puede almacenar el rango de valores -2
31
a 2 -1 .
63
63
BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -2 a 2 -1 .
Decimal(p,s). Una columna de tipo decimal puede almacenar datos nmericos decimales sin redondear. Donde p es
la precision (nmero total del dgitos) y s la escala (nmero de valores decimales)
308
Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10
con el valor mxmo de precisin. La precisin puede variar entre 1 y 53.
38
308,
a 1,79x-10
, si la definimos
38,
a 3,4x-10
63
SmallMoney. Almacena valores nmericos monetarios de -214.748,3647 a 214.748,3647, con una precisin de hasta
diez milesimas de la unidad monetaria.
Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos autonumricos.
Pgina 14 de 101
Docentes:
Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 2 -1 bytes.
Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo
de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este
tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
31
Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 2 -1 bytes.
<row nombre="SVR01"/>
Pgina 15 de 101
Docentes:
Pgina 16 de 101
Docentes:
SELECT @nombre=nombre ,
@apellido1=Apellido1,
@apellido2=Apellido2
FROM CLIENTES
WHERE ID = 1
PRINT @nombre
PRINT @apellido1
PRINT @apellido2
Pgina 17 de 101
Docentes:
OPEN CDATOS
FETCH CDATOS INTO @nombre, @apellido1, @apellido2
WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @nombre
PRINT @apellido1
PRINT @apellido2
FETCH CDATOS INTO @nombre, @apellido1, @apellido2
END
CLOSE CDATOS
DEALLOCATE CDATOS
Veremos los cursores con ms detalle ms adelante en este tutorial.
Pgina 18 de 101
Docentes:
Operadores
=
Operador de
concatenacin
AND (y lgico)
NOT (negacion)
OR (o lgico)
& (AND a nivel de bit)
|
(OR a nivel de bit)
^
(OR exclusivo a nivel de bit)
Otros
TRUE)
ANY(Devuelve TRUE si cualquier elemento del conjunto de
comparaciones es TRUE)
BETWEEN (Devuelve TRUE si el operando est dentro del intervalo)
EXISTS (TRUE si una subconsulta contiene filas)
IN (TRUE si el operando est en la lista)
LIKE (TRUE si el operando coincide con un patron)
NOT (Invierte el valor de cualquier operador booleano)
SOME(Devuelve TRUE si alguna de las comparaciones de
un conjunto es TRUE)
Pgina 19 de 101
Docentes:
IF (<expresion>)
BEGIN
...
END
ELSEIF (<expresion>)
BEGIN
...
END
ELSE
BEGIN
...
END
@diminutivo = 'DJK'
BEGIN
PRINT 'www.pandalsoft.com'
END
ELSE
BEGIN
PRINT 'Otra Web (peor!)'
END
Pgina 20 de 101
Docentes:
CASE<expresion>
WHEN<valor_expresion>THEN<valor_devuelto>
WHEN<valor_expresion>THEN<valor_devuelto>
ELSE<valor_devuelto> -- Valor por defecto
END
Ejemplo de CASE.
Pgina 21 de 101
Docentes:
CASE
WHEN<expresion> = <valor_expresion>THEN<valor_devuelto>
WHEN<expresion> = <valor_expresion>THEN<valor_devuelto>
ELSE<valor_devuelto> -- Valor por defecto
END
El mismo ejemplo aplicando esta sintaxis:
Pgina 22 de 101
Docentes:
WHILE<expresion>
BEGIN
...
END
Un ejemplo del bucle WHILE.
Pgina 23 de 101
Docentes:
Estructura GOTO
La sentencia goto nos permite desviar el flujo de ejecucin hacia una etiqueta. Fu muy utilizada en versiones
anteriores de SQL Server conjuntamente con la variable de sistema @@ERROR para el control de errores.
Actualmente, se desaconseja el uso GOTO, recomendandose el uso de TRY - CATCH para la gestion de errores.
Pgina 24 de 101
Docentes:
7 Desarrollo de Ejemplos
A.- Programa que ingresa dos nmeros y muestra la suma
Declare @Num1 Int ,@Num2 Int,@Total Int
Set @Num1 =250
Set @Num2 =550
Set @Total =@Num1 + @Num2
Print @Total
B.- Programa que ingrese Nombre De Producto, Precio, Cantidad Y Mostrar Pago Total, IGV Y Pago Neto
Declare @NomProd Varchar(50) ,@Precio Money,@Cant Int,@TOTAL Money,
@IGV Money,@NETO Money
Set @NomProd ='Camiseta Oficial del Manchester United 2011'
Set @Precio =250
Set @Cant =10
Set @TOTAL =@Precio * @Cant
Set @IGV =@TOTAL * 0.19
Set @NETO =@TOTAL + @IGV
Print @TOTAl
Print @IGV
Print @NETO
C.- Programa que ingrese la edad de un alumno y determine si es mayor o menos de edad
Declare @Nombre Varchar(50), @Mensaje Varchar(50), @Edad Int
Set @Nombre ='Mabel'
Set @Edad =12
IF @Edad >=18
Begin
Set @Mensaje='MAYOR DE EDAD'
End
Else
Begin
Set @Mensaje='MENOR DE EDAD'
End
Print @Mensaje
D.- Programa que permita ingresar el nombre del empleado y la venta del mes. Si las ventas superan los 5000
soles. Recibir un pago de 800 soles. Caso contrario solo 400 soles.
Declare @Nombre Varchar(50), @Ventas Money, @Pago Money
Set @Nombre ='Fabio Da Silva'
Set @Ventas=5580.25
IF @Ventas >5000
Begin
Set @Pago =800
End
Else
Begin
Set @Pago =400
End
Print @Pago
Pgina 25 de 101
Docentes:
Pgina 26 de 101
Docentes:
Propuesto Practico 02
1.
EDAD.VB Desarrollar un programa que ingrese el nombre y la edad de un alumno y le muestre como mensaje. Si dicho alumno es
MAYOR DE EDAD o MENOR DE EDAD
2.
AULA.VB Desarrollar un programa que ingrese el numero de aula, fecha inicio, fecha termino, turno y cantidad de alumno
matriculados. Si el aula programada tiene mas de 15 alumnos el programa debe mostrar un mensaje de ACTIVO caso contrario
INACTIVO.
3.
VENTAS.VB Desarrolla un programa que ingrese las ventas de un empleado. Si sus ventas superan los 10000 mensuales. Se
mostrara un mensaje de EMPLEADO DEL MES caso contrario EMPLEADO NORMAL.
4.
ALUMNO.VB Desarrolle un programa que ingrese el nombre y el promedio de un alumno. El programa debe mostrar un mensajes
indicando si el alumno esta APROBADO o DESAPROBADO
5.
TIPO.VB Desarrollar un programa que ingrese el nombre, precio y tipo (NACIONAL o IMPORTADO) del producto. Los productos
nacionales reciben un incremento de S/.100 y los importados S/. 300 soles. El programa debe mostrar: Descuento y pago neto.
6.
CARGO.VB Desarrollar un programa que ingrese el nombre, apellido, edad, sexo y cargo de un empleado. Su sueldo depende del
cargo que ocupe. Detalles:(GERENTE gana S/. 2500), (OBRERO gana S/. 500), (VENTAS gana S/. 2500) otro cargo diferente a los
anteriores ganara S/. 350.00
7.
PROMEDIO.VB Desarrolla un Programa que ingrese el nombre y las 4 notas de un alumno. El programa debe mostrar el promedio y
el acumulado de notas. ADEMAS El alumno mostrara un mensaje segn el promedio que haya sacado. (PROM > 20 promedio
invalido), (PROM > 14 alumno excelente),
(PROM > 10 alumno aprobado), CASO CONTRARIO Desaprobado.
8.
BUSCADOR.VB Desarrolla un programa que ingrese el cdigo de un alumno y te muestre su nombre, telfono y direccin.
DETALLE: (A001, Juan Perez, 450-9600, Jr.Ica 1200) , (A002, Nadia Ivette, 478-9655, Jr.puno 478), (A003, Joce Ramirez, 987-989955, Calle Bahia 175), (A004, Diana Robles, 785-9655, Calle Los Pinos 125), Si ingresaras un cdigo incorrecto mostrara una
mensaje de ERROR DE INGRESO
Fecha de ENTREGA:
Pgina 27 de 101
Docentes:
CAPITULO 03
Objetivos.- administrar y ampliar el tamao
de una base de datos. Adems de normalizar
la misma. Haciendo uso de restricciones que
permiten datos correctos
29
29
30
4 Creacin de Tablas
31
31
33
34
35
9 Creacin de Diagrama
36
Propuesto Practico 03
37
Pgina 28 de 101
Docentes:
Archivos de registro
Los archivos de registro almacenan toda la informacin de registro que se utiliza para recuperar la base de
datos. Como mnimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber
varios. La extensin de nombre de archivo recomendada para los archivos de registro es .ldf.
Pgina 29 de 101
Docentes:
Pgina 30 de 101
Docentes:
4 Creacion de Tablas
Una de las primeras restrcciones que uno aplica dentro de una tabla son los tipos de datos. Al crear una tabla uno
debe especificar un tipo de dato relacionado con lo que almacenara dicho campo. Ej. NOMBRE debe almacenar un
varchar.
Imposible ingresar
2 productos con
mismo cdigo.
ERROR DE
USUARIO
Pgina 31 de 101
Docentes:
Restricciones Unique.-Solo admit5e valores nicos dentro de un campo. Una tabla puede contar con muchos
campos con restriccin UNIQUE.
Restricciones Check.- Nos permite aplicar una regla de validacin dentro de un campos. Es decir una regla de datos
que podran ingresar dentro de un campo. Ej. Campo EDAD solo admite valores >=18 debido a que los clientes
deben ser mayores de edad..
Pgina 32 de 101
Docentes:
Agregar registros a una tabla relacionada si no hay registros asociados en la correspondiente tabla primaria.
Cambiar valores en la tabla primaria que resulten en registros hurfanos en las tablas relacionadas.
Borrar registros desde una tabla primaria si existen registros relacionados en la tabla ajena.
EJEMPLO:
Para este ejemplo crearemos una tabla cursos y la tabla Instructor.Estas tablas estn relacionadas por un campo
comn CODIGO de la tabla cursos y CURSO de la tabla Instructor.
Pgina 33 de 101
Docentes:
Pgina 34 de 101
Docentes:
Pgina 35 de 101
Docentes:
Luego debes ingresar estos registros en la tabla EMPLEADO. De tal manera que quede al final de esta manera:
9 Creacin de Diagrama
a) Seleccionar Diagramas de base de datos
Pgina 36 de 101
Docentes:
Propuesto Practico 03
Desarrollo de la base de datos UNIVERSIDAD
Fecha de Entrega:
Pgina 37 de 101
Docentes:
CAPITULO 04
Objetivos.- aprender hacer uso de las
funciones de SQL server. Para obtener un
mejor resultado con nuestros datos.
Importante saber usar estas funciones
No olvidarse
39
2 Funciones de Fecha
40
3 Funciones Matemticas
41
4 Funciones de Agregado
41
42
Propuesto Practico 04
43
Pgina 38 de 101
Docentes:
Funcin RIGHT
- Descripcin: Retorna la parte derecha de una cadena con el nmero
Especfico de caracteres.
- Sintaxis: RIGHT( string , integer)
- Ejemplo:
-- Resultado = alsoft
SELECT RIGHT('JhonnyPandal',6)
-- Resultado = Pandal
Funcin SPACE.
_ Descripcin: Retorna los espacios en SQL Query
(Puedes especificar el tamao del especio).
- Sintaxis: SPACE ( integer)
- Ejemplos:
SELECT ('Manchester') + SPACE(10) + ('United')
Funcin REPLICATE
- Descripcin: Repite una cadena por un nmero especfico de veces.
- Sintaxis: REPLICATE (string, integer)
- Ejemplo:
SELECT REPLICATE('JPP', 2)
-- Resultado = JPPJPP
Funcin SUBSTRING
- Descripcin: Retorna parte de una cadena.
- Sintaxis: SUBSTRING ( string, startindex , length )
- Ejemplo:
SELECT SUBSTRING('SQLServer', 4, 3)
-- Resultado = ManchesterUnited
-- Resultado = Ser
Funcin REPLACE
- Descripcin: Reemplaza todas las ocurrencias de la
cadena 2 y la cadena 1 con la cadena 3.
- Sintaxis: REPLACE ( 'string1' , 'string2' , 'string3' )
- Ejemplos:
Funcin LEN
- Descripcin: Retorna el nmero de caracteres de una cadena.
-Sintaxis: LEN( string)
- Ejemplo:
Funcin STUFF
- Descripcin: Elimina una longitud especfica de caracteres e
Inserta una cadena en un ndice de inicio especifico.
- Sintaxis: STUFF ( string1 , startindex , length , string2 )
- Ejemplo:
SELECT LEN('DIOSTEAMA')
-- Resultado = 9
Funcin REVERSE
- Descripcin: Convierte a una cadena invertida.
- Sintaxis: REVERSE( string)
- Ejemplo:
SELECT REVERSE('Pandal')
Funcin LEFT
- Descripcin: Retorna la parte izquierda de una
- cadena con el nmero especfico de caracteres.
- Sintaxis: LEFT ( string , integer)
Ejemplo:
-- Resultado = ladnaP
Funcin UNICODE
- Descripcin: Retorna el valor entero del estndar unicode.
- Sintaxis: UNICODE( char)
- Ejemplo:
SELECT UNICODE('SqlServer')
-- Resultado = 83 (it take first character)
SELECT UNICODE('S')
-- Resultado = 83
SELECT LEFT('ManchesterCampeon', 6)
-- Resultado = Manche
SELECT LEFT('Megadeth',6)
-- Resultado = Megade
Pgina 39 de 101
Docentes:
FuncinLOWER
- Descripcin: Convierte una cadena a minscula.
- Sintaxis: LOWER( string )
- Ejemplo
Funcin LTRIM
- Descripcin: Retorna una cadena despus de eliminar los espacios de la
izquierda.
- Sintaxis: LTRIM( string )
- Ejemplo:
SELECT LOWER('PandalSoft')
-- Resultado =pandalsoft
Funcin UPPER
- Descripcin: Convierte una cadena a mayscula.
- Sintaxis: UPPER( string )
- Ejemplo:
Funcin RTRIM
- Descripcin: Retorna una cadena despus de eliminar los espacios de la
derecha.
- Sintaxis: RTRIM( string )
- Ejemplo:
- SELECT UPPER('sistemasjhonny')
-- Resultado = SISTEMASJHONNY
SELECT RTRIM('Prof.Pandal
')
-- Resultado = 'Prof.Pandal'
-- (Remove right side space or blanks)
2 Funciones de Fecha
DATEADD
Devuelve un valor datetime nuevo que se basa en la suma
de un intervalo a la fecha especificada.
Ejemplo
DATEPART
Devuelve un entero que representa la parte de la fecha
Especificada de la fecha indicada..
Ejemplo
DATEDIFF
Devuelve el nmero de lmites de fecha y hora que hay entre
dos fechas especificadas.
SELECT
SELECT
SELECT
SELECT
SELECT
Ejemplos
DAY
Devuelve un entero que representa la parte del da de la
fecha especificada.
Ejemplo
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
DATENAME
Devuelve una cadena de caracteres que representa la parte
De la fecha especificada de la fecha especificada.
Ejemplos
SELECT DATENAME(month, GETDATE())
GETDATE
Devuelve la fecha y hora actuales del sistema en el formato
Interno estndar de Microsoft SQL Server para los valores
datetime.
Ejemplo
SELECT GETDATE() as "HOY ES"
MONTH
Devuelve un entero que representa el mes de una fecha
Especificada.
Ejemplo
YEAR
Devuelve un entero que representa la parte de ao de la fecha
Especificada.
Ejemplo
SELECT YEAR('02/12/2004') AS "AO"
Pgina 40 de 101
Docentes:
3 Funciones Matematicas
RAND (Transact-SQL)
Es una expresin de tipo entero (tinyint, smallint o int) que proporciona
El valor de inicializacin. Si no se especifica seed, SQL Server Database
Engine (Motor de base de datos de SQL Server) asigna un valor de
Inicializacin de forma aleatoria. Para un valor de inicializacin
especificado,
El resultado devuelto es siempre el mismo.
ACOS (Transact-SQL)
Funcin matemtica que devuelve el ngulo, en radianes, cuyo coseno es
la expresin float especificada; tambin se denomina arco coseno.
Ejemplos
En el siguiente ejemplo se producen cuatro nmeros aleatorios diferentes,
Generados con la funcin RAND.
Ejemplos
En el ejemplo siguiente se devuelve el valor ACOS del nmero
especificado.
SQRT (Transact-SQL)
Devuelve la raz cuadrada del valor de tipo flotante especificado.
Ejemplos
En el ejemplo siguiente se devuelve la raz cuadrada de los nmeros
Comprendidos entre 1.00 y 10.00.
DECLARE @myvalue float;
SET @myvalue = 1.00;
WHILE @myvalue < 10.00
BEGIN
SELECT SQRT(@myvalue);
SET @myvalue = @myvalue + 1
END
GO
4 Funciones de Agregado
Las funciones de agregado realizan un clculo sobre un conjunto de valores y devuelven un solo valor. Si exceptuamos la funcin COUNT, todas las funciones
de agregado ignoran los valores NULL. Las funciones de agregado se suelen utilizar con la clusula GROUP BY de la instruccin SELECT.
Las funciones de agregado slo se pueden utilizar como expresiones en:
La lista de seleccin de una instruccin SELECT (en una subconsulta o en la consulta externa).
Clusulas COMPUTE o COMPUTE BY.
Clusulas HAVING.
Pgina 41 de 101
Docentes:
COUNT (Transact-SQL)
Permite contar el nmero de elementos de un grupo. Normalmente
Usamos esta funcin para obtener un valor entero
Ejemplo
Mostrar en promedio de ventas de los vendedores estables
Ejemplo
Mostrar la mayor y menor venta de los vendedores
VAR (Transact-SQL)
Devuelve la varianza estadstica de todos los valores de la expresin
Especificada.
Ejemplo
Este ejemplo devuelve la varianza para todos los valores de Visitas
De la tabla Vendedores
Pgina 42 de 101
Docentes:
Propuesto Practico 04
Segn lo aprendido ahora debe resolver las siguientes consultas N-100
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m) Consulta que muestre a los vendedores que hayan tengan ventas superiores al promedio
Fecha de Entrega:
Pgina 43 de 101
Docentes:
CAPITULO 05
Objetivos.- es importante saber gestionar los
datos de un DB. En esta seccin debemos
aprender consultas que nos permitan hacer
uso de los datos
45
45
47
4 Consulta de Datos I
49
51
6 Consultas de Actualizacin II
52
53
55
Propuesto Practico 05
61
Pgina 44 de 101
Docentes:
LUEGO
Debes ingresar los registros restantes
SELECT
ALL
DISTINCT
FROM
WHERE
GROUP BY
Significado
Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de seleccin.
Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi
nunca.
Indica que queremos seleccionar slo los valores distintos.
Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista ms
de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas
es necesario aplicar una condicin de combinacin a travs de una clusula WHERE.
Especifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta.
Admiten los operadores lgicos AND y OR.
Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin con funciones
agregadas.
Pgina 45 de 101
Docentes:
ORDER BY
Especifica una condicin que debe cumplirse para los datosEspecfica una condicin que debe
cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de
WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre
junto a GROUP BY y la condicin debe estar referida a los campos contenidos en ella.
Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC
(orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.
Ejemplo
La clusula WHERE
La clusula WHERE es la instruccin que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente
no deseamos obtener toda la informacin existente en la tabla, sino que queremos obtener slo la informacin que
nos resulte til es ese momento. La clusula WHERE filtra los datos antes de ser devueltos por la consulta.
MOSTRAR TODOS LOS REGISTROS
FILTRAR CAMPOS
Select id_Empleado,Nombre
From Empleado
Select id_Empleado,Nombre
From Empleado Order By Nombre
Pgina 46 de 101
Docentes:
3 Consultas N-100
Para aprender a realizar estas consultas se requiere de la
base de datos WardsSupermarket. La cual ser facilitado
por tu Instructor.
Mr. Pandal Poma JHONNY
Ahora debes Adjuntar o Restaurar a tu servidor y a
practicar sin dudarlo =)
Pgina 47 de 101
Docentes:
Tabla: COMPAIASDEENVIOS
Tabla: PEDIDOS
Pgina 48 de 101
Docentes:
Tabla: PRODUCTOS
Tabla: PROVEEDORES
4 Consulta de Datos I
01 Mostrar los productos que inicien su nombre con la letra A
Resultado:
Resultado:
Pgina 49 de 101
Docentes:
Pgina 50 de 101
Docentes:
5 Consultas de Actualizacion I
El comando UPDATE puede ser utilizado para modificar informacin contenida dentro de una tabla.
Cada ao, la compaa les da a todos los empleados un incremento del 3% sobre el salario. El siguiente
comando SQL podra ser utilizado para aplicar esto a todos los empleados de la base de datos:
UPDATE dbo.CompaasDeEnvos
SET NomCompaa='United International'
Where IdCEnvos=2
CASO 2
La empresa Wester Junior Tambin cambia de razn social a London Union
UPDATE dbo.CompaasDeEnvos
SET NomCompaa='London Union'
Where IdCEnvos=5
CASO 3
La Empresa Speedy Express Cambia de numero telefonico a 0808-8025-852
UPDATE dbo.CompaasDeEnvos
SET Telefono='0808-8025-852'
Where IdCEnvos=1
CASO 4
La empresa Federal Shipping decide cambiar de razn social a Federal Peruana y de nmero telefnico a 330-1012
UPDATE dbo.CompaasDeEnvos
SET NomCompaa='Federal Peruana',
Telefono='330-1012'
Where IdCEnvos=3
Pgina 51 de 101
Docentes:
6 Consultas de Actualizacion II
Mostrar lo siguientes datos:
Select IdEmpleado,Apellidos,Nombre,TelDomicilio
From dbo.Empleados
04 Mostrar cdigo, nombres y telfono de empleados. Agrupado por el segundo campo calculado
Select IdEmpleado,Nombre+SPACE(3)+Apellidos AS
[Nombres y Apellidos],FechaContratacion,TelDomicilio
From dbo.Empleados
05 Mostrar cdigo, nombres, fecha contratacin, telfono de empleados.
Agrupado por el segundo campo calculado
Select IdEmpleado,Nombre+SPACE(3)+Apellidos AS [Nombres y Apellidos],TelDomicilio
From dbo.Empleados Order By 2
Pgina 52 de 101
Docentes:
dbo.Productos
Segundo:
La empresa Wards Supermarket decide subir los precios de los productos que pertenezcan a la categoria1. Este
incremente ser del 50% del mismo.
UPDATE dbo.Productos
SET PrecioUnidad=PrecioUnidad+(PrecioUnidad*0.50)
WHERE IdCategoria =1
El resultado si te das cuenta sera 12 filas afectadas. Ya que hay 12 productos de la categoria1 que fueron
modificadas en grupo. Verifica los cambios
CASO 5
La empresa decide reducir el precio de los productos a un 50% pero que pertenezcan a la categora de condimentos (2) y que
tengan un stock mayor igual a 50 unidades en almacn.
Mostrando datos Antes:
Select IdProducto,NomProducto,PrecioUnidad,Stock,IdCategoria
From dbo.Productos
where IdCategoria=2 AND Stock >=50
Pgina 53 de 101
Docentes:
UPDATE dbo.Productos
SET PrecioUnidad=PrecioUnidad-(PrecioUnidad*0.50)
WHERE IdCategoria =2 AND Stock >=50
La empresa decide poner un precio de 15 soles a todas las marcas de las cervezas que vende. Debes
modificar dichos precios.
Mostrando datos Antes:
dbo.Productos
UPDATE dbo.Productos
SET PrecioUnidad=15
WHERE NomProducto LIKE 'Cerveza%'
Una consulta de actualizacin depende de los criterios que deben de cumplir dicha modificacin. Es importante tener
en cuenta que para poder modificar registros primero debes tener un respaldo. Pues los datos modificados no
pueden ser restaurados.
Una sentencia que NO DEBES EJECUTAR NUNCA
UPDATE dbo.Productos
SET NomProducto='Impresora Canon'
Pgina 54 de 101
Docentes:
8 Consulta de Eliminacin
Utilizado para eliminar datos dentro de una tabla. Desafortunadamente, los ltimos ingresos de la
corporacin reportan disminucin en el desempeo, esto ha causado que Juan Prez sea despedido. El
comando DELETE con la clusula WHERE puede ser utilizado para eliminar su registro de la tabla de personal:
Consulta de Datos II
Consulta a Dos Tablas
01.- Mostrar codigo y nombre del producto. ademas el pais y telefono
de los proveedores de dichos productos
Select P.IdProducto,P.NomProducto,PR.Pais,PR.Telefono
From Productos AS P INNER JOIN Proveedores AS PR
ON P.IdProveedor =PR.IdProveedor
Resultado
Pgina 55 de 101
Docentes:
DESCRIPCION:
a)
b)
c)
Una consulta multitablas requiere de los campos de cada tabla en la seccin SELECT.
Luego la unin de las tablas que intervienen en dicha consultas. Las cuales estn unidas con la unin INNER JOIN
estas tablas deben estas relacionadas por un campo comn.
La instruccin ON en la cual comparamos los dos campos comunes de dichas tablas.
03.- Adems podemos filtrar este resultado acompaando a esta consulta con la instruccin WHERE
Select P.IdProducto AS [COD PRODUCTO],P.NomProducto AS [NOMBRE DEL PRODUCTO],
PR.NomEmpresa AS [EMPRESA],PR.NomEmpleado AS [NOMBRE DE EMPLEADO]
From Productos AS P INNER JOIN Proveedores AS PR
ON P.IdProveedor =PR.IdProveedor
Where PR.NomEmpleado ='Wendy Mackenzie'
Resultado:
WHERE
04.- Mostrar El nombre de la categoria. ademas nombre y precio del producto de dicha categoria
Select C.NomCategoria,PD.NomProducto,PD.PrecioUnidad
From Categorias AS C INNER JOIN Productos AS PD
ON C.IdCategoria =PD.IdCategoria
Resultado:
Pgina 56 de 101
Docentes:
06.- Mostrar los detalles del pdido 10250. mostrando: codigo y nombre del producto en pedido. ademas de
precio unitario y la cantidad a comprar de dicho producto.ademas nos piden que mostremos un campo
CALCULADO que es SUBTOTAL que se genera a partir de la multiplicacion de 2 campos
Select DT.IdProducto,P.NomProducto,DT.PrecioUnidad,DT.Cantidad,
(DT.PrecioUnidad*DT.Cantidad) AS SUBTOTAL
From DetallesDePedidos AS DT INNER JOIN Productos AS P
ON DT.IdProducto =P.IdProducto
Where DT.IdPedido ='10250'
Resultado:
06.- Mostrar los detalles del pdido 10258. mostrando: codigo y nombre del producto en pedido. ademas de
precio unitario y la cantidad a comprar de dicho producto.ademas nos piden que mostremos un campo
CALCULADO que es SUBTOTAL,DESCUENTO Y NETO haciendo uso de 2 campos calculados
Select DT.IdProducto,P.NomProducto,DT.PrecioUnidad,DT.Cantidad,
(DT.PrecioUnidad*DT.Cantidad) AS SUBTOTAL,
(DT.PrecioUnidad*DT.Cantidad)*DT.Descuento AS DESCUENTO,
((DT.PrecioUnidad*DT.Cantidad)-(DT.PrecioUnidad*DT.Cantidad)*DT.Descuento) AS NETO
Para este ejemplo hemos usado 3 campos de la tabla DetallesDePedidos, 1 Campo de la tabla Productos y 3 campos
calculados (SUBTOTAL, DESCUENTO, NETO) haciendo uso de la multiplicacin de PrecioUnidad*Cantidad
Pgina 57 de 101
Docentes:
08.- Mostrar la cantidad de productos vendidos. Clasificado por el nombre del proveedor. Para obtener este
resultado debemos hacer el recorrido desde la tabla detallesdepedido hacia la tabla productos y de la tabla
productos hacia la tabla proveddores y as obtener los datos para los campos seleccionados
Select PR.NomEmpresa AS CATEGORIA,COUNT(DT.IdProducto) AS CANTIDAD
From DetallesDePedidos AS DT INNER JOIN Productos AS P
ON DT.IdProducto = P.IdProducto
INNER JOIN Proveedores AS PR
ON PR.IdProveedor =P.IdProveedor
Group By PR.NomEmpresa
Resultado:
Pgina 58 de 101
Docentes:
Analizando La Consulta
Pgina 59 de 101
Docentes:
FROM Pedidos
Pgina 60 de 101
Docentes:
Propuesto Practico 05
1. mostrar la cantidad de categorias existentes(numero entero)
2. mostrar el nombre de la categoria con el encabezado 'nombre de categoria'
3. mostrar nombre de empresa y nombre de empleado de la tabla clientes. donde el nombre de la empresa
inicie con la letra a y c
4. mostrar la cantidad de clientes de la ciudad de mexico
5. mostra a los clientes que no tienen fax
6. mostrar codigo de pedido,nombre de producto, precio, cantidad de la tabla detalles de pedido ademas de
los campos calculados subtotal, descuento 10% y pago neto
7. mostrar el promedio de precios de la tabla detalles de pedido
8. mostrar los detalles de pedido donde la cantidad este entre 50 a 100 y el porcentaje del descuento sea
superior a 20%
9. mostrar codigo, nombre y apellido de los empleados. ademas el tiempo de servicio que tiene cada
empleado
10. mostra la cantidad de empleados por tratamiento. ej. cuantas seoras,seores, doctores existen. etc.
11. mostrar el nombre y apellido de los empleados en una sola columna de titulo 'datos'
12. mostrar los empleados donde su edad este entre 50 a 60. usar funciones
13. mostra los empleados que no tengan jefe
14. mostrar el promedio del monto de la tabla pedidos
15. mostrar los pedidos donde el monto sea mayor la promedio
16. mostrar el mes de la fecha de pedido,el ao de la fecha de entrega y el dia de la fecha de envio. de la
tabla pedidos. usar funciones
17. mostrar la cantidad de pedidos que realizo cada cliente
18. mostrar los productos donde el stock este en el intervalo de 40 a 50
19. mostrar los productos de la categoria sea 1 y 3
20. mostrar los productos donde el nombre inicie con a y el precio sea superior a 50
21. mostrar la cantidad de proveedores por cargo de contacto
22. mostrar cargo de contacto de la tabla proveedores. no deben repetirse los datos
23. mostrar la cantidad de proveedores por pais
24. mostrar codigo, nombre y precio de producto. ademas de nombre y descripcion de su categoria
25. mostrar los productos donde el nombre de la categoria sea bebidas
26. mostrar precio, stock y cantidad por unidad de la tabla productos donde el cargo de contacto del proveedor
sea 'representante de ventas'
Pgina 61 de 101
Docentes:
Fecha de
Entrega:
Pgina 62 de 101
Docentes:
CAPITULO 06
Objetivos.- aprender a aplicarle rendimientos
a nuestras tablas. Cuando estas tengan un
gran cantidad de registros.
Recuerda que la lentitud es un factor negativo
en sistemas de la inf.
64
2 CREATE INDEX
65
66
68
69
70
7 Creacin de Sinnimos
71
Propuesto Practico 06
71
Pgina 63 de 101
Docentes:
La palabra clave UNIQUE especfica que no pueden existir claves duplicadas en el ndice.
ASC | DESC especifican el criterio de ordenacin elegido, ascendente o descendente, por defecto es ascendente.
Ejemplo
En el apartado dedicado a la definicin de tablas usaremos la tabla Clientes de la base de datos Wards Supermarket,
este ejemplo crea un ndice nico en el campo NOMBREEMPLEADO. Esto nos permitir buscar mucho ms rpido
por el campo NOMBREEMPLEADO y nos asegurar que no tengamos dos NOMBREEMPLEADO iguales.
Pgina 64 de 101
Docentes:
2 CREATE INDEX
La sentencia CREATE INDEX sirve para crear un ndice sobre una o varias columnas de una tabla.
ASC: la clusula ASC es la que se asume por defecto e indica que el orden elegido para el ndice es ascendente
(en orden alfabtico si la columna es de tipo texto, de menor a mayor si es de tipo numrico, en orden cronolgico
si es de tipo fecha). DESC: indica orden descendente, es decir el orden inverso al ascendente.
Ejemplo:
Crea un ndice llamado ind1 sobre la tabla empleados formado por las columnas ciudad, regin y fecha de
nacimiento. Este ndice permite tener ordenadas las filas de la tabla empleados de forma que aparezcan los
empleados ordenados por ciudad, dentro de la misma ciudad por regin y dentro de la misma regin por edad y del
ms joven al ms mayor.
CREATE INDEX ind1
ON Empleados (Ciudad, Region ASC, FechaNacimiento DESC)
Create Index Ux_Cargo_Emp
ON Clientes(CargoEmpleado)
Create Index Ux_Nom_Cat
ON Categorias(NomCategoria)
VELOCIDAD DE DATOS
DROP INDEX
La sentencia DROP INDEX sirve para eliminar un ndice de una tabla. Se elimina el ndice pero no las columnas
que lo forman.
La sintaxis es la siguiente:
Ejemplo:
DROP INDEX Empleados.Ux_Nom_Cat_Unico
Elimina el ndice que habamos creado en el ejemplo anterior.
Ejercicio 01
A.- Vamos a crear una tabla de nombre un usuario y le vamos a agregar 100.000 registros de una sola ejecucin con
la ayuda del procedimiento almacenado
dbo.Usp_CrearUsuarios
B.- Ahora desde el Analizador de consultas ejecutas el procedimiento almacenado dbo.Usp_CrearUsuarios que se
encuentra en tu DB Wards Supermarket.
C.-
Pgina 66 de 101
Docentes:
Sin lugar a dudas, el desempeo de una aplicacin est directamente relacionado al buen o mal diseo de los ndices
de la base de datos.
Esta tabla no tiene ningn ndice creado, por lo cual SQL Server tratar la tabla como un HEAP. Un heap es una
estructura de datos que almacena la posicin fsica en la que se almacen cada nueva fila dentro de las pginas
asignadas a la tabla.
Puesto que esta tabla no tiene ningn tipo de ndice, es bastante eficiente para agregar nuevas filas a la tabla pero
muy ineficiente para encontrar una fila especfica, esto se debe a que es necesario leer toda la tabla para obtener el
resultado deseado.
Para ilustrar esto, realicemos el siguiente experimento: utilizando el procedimiento almacenado
Usp_CrearUsuarioscrearemos 100.000 usuarios de los cuales el 10.000 no estn activos y su fecha de creacin
esta en los ltimos 600 das.
D.- Ahora realicemos
Pgina 67 de 101
Docentes:
Pgina 68 de 101
Docentes:
Ejemplos
Pgina 69 de 101
Docentes:
Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la informacin que hay en
una tabla, pero no a toda la tabla.
Comodidad, como hemos dicho el modelo relacional no es el ms cmodo para visualizar los datos, lo que
nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea.
Las vistas no tienen una copia fsica de los datos, son consultas a los datos que hay en las tablas, por lo que si
actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos
cambios sern visibles desde la vista.
Creacin de vistas.
Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una
sentencia SQL SELECT vlida.
CREATE VIEW<nombre_vista>
AS
(<sentencia_select>);
Ejemplo 01
Crear una vista sobre nuestra tabla Empleados, en la que se nos muestre el nombre y apellidos del empleado en lugar
de su cdigo.
CREATE VIEW vEmpleados
AS
(SELECT nombre,apellidos FROM Empleados)
GO
Mostrando el contenido de la
Select*From vEmpleados
Modificar una Vista Existente.
ALTER VIEW vEmpleados
AS
(SELECT nombre,apellidos,Pais FROM Empleados
WHERE Pais='EE.UU.')
GO
Mostrando el contenido de la
Select*From vEmpleados
Por ltimo podemos eliminar la vista a travs de la sentencia DROP VIEW. Para eliminar la vista que hemos creado
anteriormente se utilizara:
DROP VIEWvEmpleados
Una vista se consulta como si fuese una tabla.
Pgina 70 de 101
Docentes:
7 Creacin de Sinnimos
Un sinnimo es un nombre alternativo que identifica una tabla en la base de datos. Con un sinnimo se pretende
normalmente simplicar el nombre original de la tabla, aunque tambin se suelen utilizar para evitar tener que escribir
el nombre del propietario de la tabla.
No todas las bases de datos soportan los sinnimos.
Para crear un sinnimo hay que utilizar la sentencia CREATE SYNONYM especificando el nombre que deseamos
utilizar como sinnimo y la tabla para la que estamos creando el sinnimo.
CREATE SYNONYM<nombre_sinonimo>
FOR<nombre_tabla>;
Ejemplo 01El siguiente ejemplo crea el sinnimo Coches para la tabla tCoches.
CREATE SYNONYM MisEmpleados
FOR Empleados
ejecutar
Select * From MisEmpleados
Para eliminar el sinnimo creado debemos emplear la sentencia DROP SYNONYM.
DROP SYNONYM MisEmpleados
Propuesto Practico 06
Crear una Base de datos de 3 tablas AGENCIA DE VIAJES con ndices
Crear 3 ndices a las tablas (Clientes, Empleados, Pedidos, Productos) de Wards Super...
Crear 5 Vistas Simples
Crear 5 Vistas con Consultas de ms de 1 tabla
Crear 2 Vistas Con Tablas Particionada
Crear Sinnimos para cada tabla
Pgina 71 de 101
Docentes:
CAPITULO 07
Objetivos.- aprender a administrar la
informacin de una base de datos haciendo
uso de objetos los cuales no permiten una
programacin por lado del servidor.
Ademas de generar copias de seguridad
73
2 Funciones Escalares.-
73
74
4 Procedimientos Almacenados
75
76
79
79
8 Desencadenadores o TRIGGERS
83
86
10 Copia de Seguridad
86
89
12 Propuesto
91
Pgina 72 de 101
Docentes:
2 Funciones Escalares.Las funciones escalares vuelven un tipo de los datos tal como int, money, varchar, real, etc. Pueden ser utilizadas
en cualquier lugar incluso incorporado dentro de sentencias SQL. La sintaxis para una funcin escalar es la siguiente:
Ejemplo 01
CREATE FUNCTION Ufn_VolumenCubico
(@CuboLargo decimal(4,1),
@CuboAncho decimal(4,1),
@CuboAlto decimal(4,1))
RETURNS decimal(12,3)
WITH SCHEMABINDING
AS
BEGIN
RETURN (@CuboLargo * @CuboAncho * @CuboAlto)
END
GO
Ejecutar la funcion
DECLARE @MyResultado decimal(12,3)
EXEC @MyResultado = Ufn_VolumenCubico @CuboLargo = 12.3,
@CuboAlto = 4.5, @CuboAncho = 4.5
SELECT @MyResultado
GO
Ejemplo 02
CREATE FUNCTION Ufn_Promedio
(@Nota1 Int,
@Nota2 Int,
@Nota3 Int)
RETURNS Int
WITH SCHEMABINDING
AS
BEGIN
RETURN ( @Nota1 + @Nota2 + @Nota3 )/3
END
GO
Ejecutar la funcion
DECLARE @MyPromedio Int
EXEC @MyPromedio = Ufn_Promedio @Nota1
= 12.3, @Nota2
= 11, @Nota3
= 17
SELECT @MyPromedio
GO
Pgina 73 de 101
Docentes:
Pgina 74 de 101
Docentes:
4 Procedimientos Almacenados
Un procedimiento es un programa dentro de la base de datos que ejecuta una accin o conjunto de
acciones especficas. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un bloque de
cdigo.
En Transact SQL los procedimientos almacenados pueden devolver valores (numrico entero) o conjuntos de
resultados. Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE.
Ejemplo 01.- este USP hace uso de un parmetro de entrada que permite una resultado dinmico. Es decir que
depende del valor que se le asigne al parmetro para que se muestre un resultado deseado. La ejecucin ahora debe
estar acompaada de un dato de entrada. En este caso el nombre del pas
Create Procedure Usp_PedidosXPais
@PaisDest nvarchar(15)
AS
Select IdPedido,Monto,FecEntrega,PaisDest
From Pedidos
Where PaisDest=@PaisDest
GO
Ejecucin de USP
Exec Usp_PedidosXPais 'Brasil'
Ejecucin de USP
Exec Usp_PedidosXPais 'Finlandia'
Pgina 76 de 101
Docentes:
Ejemplo 04.- este USP nos permite mostrar los productos por categoria
Create Procedure Usp_ProductoXCategoria
@IdCategoria Int
AS
Select IdProducto,NomProducto,IdCategoria
From Productos
Where IdCategoria =@IdCategoria
GO
Ejecucin de USP
Exec Usp_ProductoXCategoria 1
Ejemplo 05.- este USP nos permite mostrar los productos por un rango del stock y adems clasificarlos por
categora. Tenemos 3 parmetros de entrada
Create Procedure Usp_ProductoDinamic1
@Stock1 smallint,
@Stock2 smallint,
@IdCategoria int
AS
Select IdProducto,NomProducto,Stock,IdCategoria
From Productos
Where Stock Between @Stock1 and @Stock2 AND IdCategoria =@IdCategoria
GO
Pgina 77 de 101
Docentes:
Ejemplo 06.- este USP tiene 2 parmetros con valores por defecto NULL. Adems de usar LIKE para una bsqueda
ms efectiva
Create Procedure Usp_ClientesDinamicos01
@Pais nvarchar(15)
= Null,
@CargoEmpleado nvarchar(30) = NUll
AS
Select IdCliente,Pais,CargoEmpleado
From Clientes
Where Pais LIKE @Pais+'%' AND CargoEmpleado LIKE @CargoEmpleado+'%'
Go
Ejecucin de USP
Exec Usp_ClientesDinamicos01 'A','G'
Ejecucin de USP
Exec Usp_ClientesDinamicos01
Ejemplo 07.- este USP tiene como finalidad elevar el precio de los productos por cdigo de proveedor. Este USP
usa 2 parmetros de entrada para conseguir este objetivo. Y verifica los datos antes de ejecutar el USP
Create Procedure Usp_ModificarPrecioMAS
@PrecioUnidad money,
@IdProveedor int
AS
Update Productos
Set PrecioUnidad = PrecioUnidad+@PrecioUnidad
Where IdProveedor=@IdProveedor
GO
Ejecutar Consulta
select IdProveedor,PrecioUnidad from Productos
Ejecutar USP
Exec Usp_ModificarPrecioMAS 50,1
Verificar Cambios
select IdProveedor,PrecioUnidad from Productos
Pgina 78 de 101
Docentes:
Pgina 79 de 101
Docentes:
Usp_ModificarCategoria
Este USP nos permite modificar registros existentes dentro de la tabla categora. Para el ejemplo modificaremos la
categora de cdigo 12.
Create Proc Usp_ModificarCategoria
@IdCategoria Int,
@NomCategoria nvarchar(15),
@Descripcion nvarchar(max)
AS
UPDATE Categorias
SET NomCategoria=@NomCategoria,
Descripcion=@Descripcion
Where IdCategoria=@IdCategoria
GO
Ejecutar el USP con los Nuevos datos
Exec Usp_ModificarCategoria
12,'Mascotas Favoritas','Bao, paseo y productos para mascotas'
Verificamos
Select * From Categorias
Usp_EliminarCategoria
Este USP nos permite eliminar un registro
Create Proc Usp_EliminarCategoria
@IdCategoria Int
AS
Delete From Categorias
Where IdCategoria=@IdCategoria
GO
Ejecutar el USP y Eliminar datos
Exec Usp_EliminarCategoria 12
Pgina 80 de 101
Docentes:
WITH ENCRYPTION
Una funcionalidad utilizada algunas veces para proteger la propiedad intelectual es la encriptacin. En SQL Server
podemos crear funciones, vistas, procedimientos almacenados aadiendo la opcin "WITH ENCRYPTION" para que
no se muestre el texto claro de su definicin. Si leemos la explicacin sobre dicha opcin en los BOL vemos que ha
cambiado desde SQL 2000 a 2005/2008 pero su esencia es la misma:
SET NOCOUNT ON
Si se establece SET NOCOUNT en ON, no se devuelve el recuento. Cuando SET NOCOUNT es OFF, s se devuelve
ese nmero
Pgina 81 de 101
Docentes:
@NomCompaa=NomCompaa,
@Telefono=Telefono
FROM CompaasDeEnvos
WHERE IdCEnvos=@IdCEnvos
SET NOCOUNT ON
GO
Pgina 82 de 101
Docentes:
8 Desencadenadores o TRIGGERS
Un trigger( o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automticamente
cuando se produce un evento en el servidor de bases de datos.
SQL Server proporciona los siguientes tipos de triggers:
Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de
manipulacin de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla
o vista.
Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de datos (DDL).
Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a
determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.
Trigger DML. Los trigger DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje
de manipulacin de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o
vista.
Pgina 83 de 101
Docentes:
Ejemplo 03
Trigger de Eliminacion
ANALIZANDO
Ud. creo un trigger que emitir un mensaje
'Usted Acaba de Ingresar Eliminar
Datos'
Que se mostrara cada vez que un cliente
ejecute la instruccin DELETE sobre la
tabla que apunta.
Una vez creado el Trigger lo ejecutamos
con una consulta de Eliminacion
Pgina 84 de 101
Docentes:
Ejemplo 05
Permite mostrar un mensaje. Cuando se elimina una tabla en la base de datos
Los desencadenadores DDL pueden activarse en respuesta a un evento de Transact-SQL procesado en la base de
datos actual o en el servidor actual. El mbito del desencadenador depende del evento. Por ejemplo, un
desencadenador DDL creado para activarse como respuesta a un evento CREATE_TABLE se activar siempre que
se produzca un evento CREATE_TABLE en la base de datos o en la instancia de servidor. Un desencadenador DDL
creado para activarse como respuesta a un evento CREATE_LOGIN se activar nicamente cuando que se produzca
un evento CREATE_LOGIN en el servidor.
Pgina 85 de 101
Docentes:
10 Copia de Seguridad
Para el ejemplo vamos a crear una base de datos de nombre PANDAL
Imaginemos que esta base de datos contiene. Tablas, USPs, Funciones etc. Y deseamos generar una copia de
seguridad. Para luego restaurar nuestra base de datos.
Esta prctica es usada para tener una copia de datos si ocurriera algn desastre que con lleve a la perdida de la
informacin. Tambin algunos estudiantes lo usan para transportas sus bases de datos.
PASOS
A.- Seleccionar la base de datos Clic en TAREAS + COPIAS DE SEGURIDAD como podemos ver en la imagen
Pgina 86 de 101
Docentes:
Nombre y Descripcin
Pgina 87 de 101
Docentes:
I.- Verificar los datos y verificar la copia de seguridad Por generada. Clic en Aceptar
Pgina 88 de 101
Docentes:
Selecciona
Pgina 89 de 101
Docentes:
Pgina 90 de 101
Docentes:
Propuesto 07
1) Crear una funcin que me permita Mostrar el sueldo de un profesor sabiendo sus pago hora y sus horas
trabajadas
2) Crear una funcin que me permita ingresar un nmero y mostrar el nmero elevado al cuadra
3) Crear un funcin que permita ingresar la edad de la persona y muestre un mensaje por si es Nio, Joven,
Adulto y Adulto mayor
4) Crear una funcin que muestre el nombre, precio y stock de los productos de la tabla productos
5) Crear una funcin que me muestre las ventas totales que realizo un empleado. Debes ingresar su cdigo
6) Crear una funcin que me permita crear cdigo autogenerados ej. P0001, P0002, P0003
7) USP que me permita generar cdigo auto generados. Que depender de la categora. Ej. BEBIDAS B0001,
B0002, B0003 - REPORTERIA ser R0001, R0002, etc. Y si se agregara una nueva categora. esa nueva
categora tendr su nuevo cdigo auto generado.
9) USP Para Mostrar los productos donde el precio sea mayor a un precio ingresado
10) USP Para Mostrar los productos donde el precio sea menor a un precio ingresado
11) USP Para Mostrar los productos donde sea ingresado el nombre del proveedor el proveedor
12) USP Para Mostrar los productos donde depende del pas y regin del proveedor
14) USP Para restaurar el stock de un producto cuando un cliente cancela dicho pedido
15) USP de mantenimiento de todas las tablas de Wards Supermarket
16) Como Restaurar una base de dato con cdigo Transact-SQL - Ejemplos
Fecha de entrega:
Pgina 91 de 101
Docentes:
CAPITULO 08
Objetivos.-Conocer el manejo de
transacciones dentro de un servidor. Los tipos
de transacciones. Y por ltimo aprender a
gestionar permisos y restricciones de todos
los objetos que aprendi en este material
93
98
3 Modificar Usuario SA
99
100
101
Pgina 92 de 101
Docentes:
Pgina 93 de 101
Docentes:
Pgina 94 de 101
Docentes:
SETIMPLICIT_TRANSACTIONSON
DECLARE @importe DECIMAL(18,2),
@CuentaOrigen VARCHAR(12),
@CuentaDestino VARCHAR(12)
/* Asignamos el importe de la transferencia
* y las cuentas de origen y destino
*/
SET @importe = 50
SET @CuentaOrigen = '200700000002'
SET @CuentaDestino = '200700000001'
BEGINTRY
/* Descontamos el importe de la cuenta origen */
UPDATE CUENTAS
SET SALDO = SALDO - @importe
WHERE NUMCUENTA = @CuentaOrigen
/* Registramos el movimiento */
INSERTINTO MOVIMIENTOS
(IDCUENTA, SALDO_ANTERIOR, SALDO_POSTERIOR,
IMPORTE, FXMOVIMIENTO)
SELECT
IDCUENTA, SALDO + @importe, SALDO, @importe, getdate()
FROM CUENTAS
WHERE NUMCUENTA = @CuentaOrigen
Pgina 95 de 101
Docentes:
La transaccin sigue activa hasta que emita una instruccin COMMIT o ROLLBACK. Una vez que la primera
transaccin se ha confirmado o revertido, se inicia automticamente una nueva transaccin la siguiente vez que la
conexin ejecuta una instruccion para modificar datos.
La conexin contina generando transacciones implcitas hasta que se desactiva el modo de transacciones
implcitas.Podemos verificar el nmero de transacciones activas a travs de @@TRANCOUNT.
SETIMPLICIT_TRANSACTIONSON
BEGINTRY
UPDATE CUENTAS SET FXALTA = FXALTA - 1
PRINT @@TRANCOUNT
COMMIT
ENDTRY
BEGINCATCH
ROLLBACK
PRINT 'Error'
ENDCATCH
Pgina 96 de 101
Docentes:
BEGINTRAN
UPDATE EMPLEADOS
SET NOMBRE = 'Jhonny Huber'
WHERE ID=101
BEGINTRAN
UPDATE EMPLEADOS
SET APELLIDO1 = 'Pandal'
WHERE ID=101
-- Este COMMIT solo afecta a la segunda transaccion.
COMMIT
-- Este ROLLBACK afecta a las dos transacciones.
ROLLBACK
Una consideracin a tener en cuanta cuando trabajamos con transacciones anidadas es la posibilidad de utilizar
puntos de guardado o SAVEPOINTs.
Puntos de recuperacin (SavePoint).
Los puntos de recuperacin (SavePoints) permiten manejar las transacciones por pasos, pudiendo hacer rollbacks
hasta un punto marcado por el savepoint y no por toda la transaccin.
BEGINTRAN
UPDATE EMPLEADOS
SET NOMBRE = 'Devjoker'
WHERE ID=101
UPDATE EMPLEADOS
SET APELLIDO1 = 'Devjoker.COM'
WHERE ID=101
SAVETRANSACTION P1 -- Guardamos la transaccion (Savepoint)
UPDATE EMPLEADOS
SET APELLIDO1 = 'Otra cosa!'
WHERE ID=101
-- Este ROLLBACK afecta solo a las instrucciones
-- posteriores al savepoint P1.
ROLLBACKTRANSACTION P1
-- Confirmamos la transaccion
COMMIT
Pgina 97 de 101
Docentes:
Ingresar Usuario SA
A.- Clic ARCHIVO + DESCONECTAR EXPLORADOR DE OBJETOS
B.- Clic ARCHIVO + CONECTAR EXPLORADOR DE OBJETOS
Pgina 98 de 101
Docentes:
Pandalsoft
SA es un inicio de sesin que tiene todos los permisos para administrar las herramientas y todas las bases de datos
de SQL Server 2008. Es un Sper Usuario.
El siguiente paso es crear un Nuevo Usuario con Permisos Limitados
3 ModificarUsuario SA
A.- Expandir la carpeta Seguridad y luego Inicios de Sesin
B.- Clic en Nuevo Inicio de sesin
C.- Ingresar Nombre de Inicio de sesin y su contrasea
Pgina 99 de 101
Docentes:
CONSULTAS
Abrimos el analizador de consultas y agregamos y ejecutamos lo siguiente
Use Pandalsoft
Go
Select * From Planilla
GO
Como Puede Ver El Usuario Jhonny No Tiene Acceso A Ninguna Base De Datos Ni Tampoco Puede Crear Bases
De Datos. Este Usuario Es Un Usuario Sin Permisos. Quin Administra Los Permisos? Un Usuario Que Tiene El
Rol De Sysadmin En Nuestro Caso El Usuario
SA
Pgina 100 de 101
Docentes: