Curso de Transact SQL Server 2014 PDF
Curso de Transact SQL Server 2014 PDF
Curso de Transact SQL Server 2014 PDF
Es un conjunto de Informacin relacionada sobre un tema en particular, organizada de alguna forma tal que
suministra una base o fundamento para procedimientos, como la recuperacin o consulta de la Informacin, la
elaboracin de conclusiones en base a la data y la toma de decisiones de una organizacin.
Se dice que cualquier conjunto de Informacin que sirva a lo nombrado anteriormente se le calificar como base de
Datos, aun cuando la informacin no est almacenada en algn medio Informtico.
Son aplicaciones que permiten la administracin de los datos almacenados en una o varias Bases de datos.
Independencia de los datos y los programas
Minimizacin de la Redundancia
Integracin y Sincronizacin de las Bases de Datos
Facilidad de Manipulacin y Recuperacin de la Informacin
Seguridad y Control Centralizado.
SQL Server 2014
Microsoft SQLServer es un Sistema para la Gestin de Base de Datos basado en el Modelo Relacional. Sus lenguajes
para consultas son Transact-SQL y Ansi SQL.
Presenta Un entorno grfico de administracin de los Objetos del motor de base de datos, que permite el uso de
comando DDL y DML grficamente.
Al instalar SQLServer tambin se registran Bases de datos que administran diferentes aspectos del servidor de Base
de Datos.
Tablas: La tabla es el primer objeto de una base de datos y se organiza en filas y columnas, una fila equivale a un
registro y las columnas definen los campos del registro, los campos se definen sobre un tipo de datos.
Ejercicio Propuesto
Se desea implementar un sistema web para gestionar la reserva de vuelos; que permita al usuario registrar sus
reservas de vuelos y hacer consultas, adems de poder comprar los boletos de viaje de manera remota, sin la
necesidad de recurrir a una agencia de viaje.
El sistema web debe de mostrar una interfaz describiendo los servicios ofrecidos junto con la opcin para registrarse
si es la primera vez que accede a ella, o si ya se encuentra registrado acceder por medio de su usuario (email) y su
clave.
Una vez registrado el usuario este podr acceder a los siguientes procesos:
Consulta de Vuelos
Por Horarios de Vuelos
Por Tarifas de Vuelos
Informacin de Vuelos
Reserva de Vuelos
Compra de Boletos de viaje
Esquema de Archivos en Sql Server
Char: Los datos deben de tener una longitud fija hasta 8Kb. Ejemplo: Si queremos almacenar categoras por ejemplo
A, B, C Utilizaremos Char(1)
Varchar: Puede variar en el nmero de caracteres, es decir el valor asignado no es fijo, aqu SQL administra los
espacios en blanco y los optimiza.
Ejemplo en un Varchar(15) ocupar menos espacio el dato Ana que Juan Carlos.
Propiedades de Datos
Propiedad NULL: Hay dos formas de expresar el trmino NULL, al implementarlo como NULL estamos indicando que
el contenido de dicha columna no es obligatorio, si se necesita especificar que el campo es obligatorio se
implementar con NOT NULL.
Propiedad IDENTITY: Propiedad slo aplicada a campos numricos, ya que define un autoincremento automtico
de valores.
Relaciones
El modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los
identificadores definidos como claves primarias y forneas.
Clave primaria
En el diseo de bases de datos relacionales, se llama clave primaria (Primary Key) a un campo o a una combinacin
de campos que identifica de forma nica a cada fila de una tabla. Una clave primaria comprende de esta manera una
columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
Una clave primaria debe identificar a todas las posibles filas de una tabla y no nicamente a las filas que se
encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN
(asociado a un libro). Las guas telefnicas y diccionarios no pueden usar nombres o palabras o nmeros del sistema
decimal de Dewey como claves candidatas, porque no identifican unvocamente nmeros de telfono o palabras.
Clave fornea
En el contexto de bases de datos relacionales, una clave fornea o clave ajena (o Foreign Key FK) es una limitacin
referencial entre dos tablas. La clave fornea identifica una columna o grupo de columnas en una tabla (tabla hija o
referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las
columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada.
Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. As, una fila
en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las
referencias pueden ser creadas para vincular o relacionar informacin. Esto es una parte esencial de la normalizacin
de base de datos. Mltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma
fila en la tabla referenciada. Mayormente esto se ve reflejado en una relacin uno (tabla maestra o referenciada) a
muchos (tabla hija o referendo).
Diagrama Relacional Base de Datos en Sql Server 2014
Dentro de las opciones que nos ofrece nuestra base de datos, encontramos la opcin Diagrama de la Base de Datos,
que nos permite realizar las relaciones de las tablas en forma Grfica. Para acceder a esta opcin le damos click
derecho y crearemos un nuevo Diagrama de Base de Datos.
Lenguaje SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregados. Estos elementos se
Combinan en las instrucciones para crear, actualizar y Manipular las base de datos.
SENTENCIA ALTER (Comando de Modificacin de Objetos de la Base de Datos): Permite la modificacin de un objeto
asociado a una base de Datos, puede modificar archivos, grupo de archivos, cambiar atributos de un Objeto.
SENTENCIA DROP (Comando de Eliminacin de Objetos de la Base de Datos): Permite la eliminacin de un objeto
asociado a una Base de Datos.
Varchar: Puede variar en el nmero de carcteres, es decir el valor asignado no es fijo, aqu SQL administra los
espacios en blanco y los optimiza.
Ejemplo en un Varchar(15) ocupar menos espacio el dato Ana que Juan Carlos.
Propiedades de Datos
Propiedad NULL: Hay dos formas de expresar el trmino NULL, al implementarlo como NULL estamos indicando que
el contenido de dicha columna no es obligatorio, si se necesita especificar que el campo es obligatorio se
implementar con NOT NULL.
Propiedad IDENTITY: Propiedad slo aplicada a campos numricos, ya que define un autoincremento automtico
de valores.
Implementando las tablas Utilizando Lenguaje de Definicin de Datos DDL
--TABLA AVIN
CREATE TABLE avion (
idavion char(5) not null primary key,
idaerolinea int not null,
fabricante varchar(40) null,
tipo varchar(30) null,
capacidad int not null
)
go
Check: Permite restringir el rango de valores que pueden estar permitidos ingresar en una o ms columnas de una
tabla.
Default: Permite registrar un dato en un campo por defecto cuando el usuario no ingresa ningn valor, la propiedad
del campo de la tabla necesariamente tiene que ser Null.
Ejemplo se puede Utilizar para los campos de tipo Date (fecha), cuando el usuario no ingresa ninguna fecha que se
asigne la fecha actual.
--TABLA ASIENTO
CREATE TABLE asiento (
idasiento int not null primary key,
letra char(2) not null,
fila int not null
)
go
--TABLA TARIFA
CREATE TABLE tarifa(
idtarifa int not null primary key,
clase varchar(20) not null unique,
precio money not null,
impuesto money not null
)
go
--TABLA RESERVA
CREATE TABLE reserva(
idreserva int not null primary key,
costo money not null,
fecha date NULL,
observacion varchar(200) null
)
go
--AGREGAREMOS UNA RESTRICCIN DEFAULT A LA FECHA PARA QUE LA FECHA POR DEFECTO SEA LA FECHA ACTUAL
ALTER TABLE reserva
ADD CONSTRAINT DFL_RESERVA_FECHA
DEFAULT GETDATE() FOR fecha
go
--TABLA VUELO
CREATE TABLE vuelo(
idasiento int not null,
idaeropuerto char(5) not null,
idreserva int not null,
idavion char(5) not null,
idtarifa int not null
)
go
--TABLA PAGO
CREATE TABLE pago(
idpago int not null primary key identity,
idreserva int not null,
idpasajero char(8) not null,
fecha date DEFAULT GETDATE(),
monto money not null,
tipo_comprobante varchar(20) not null,
num_comprobante varchar(15)not null,
impuesto decimal (5,2) not null
)
go
--AGREGARE UNA RESTRICCIN CHECK PARA SOLO INGRESAR FECHAS IGUALES O MENORES A LA FECHA ACTUAL
ALTER TABLE pago
ADD CONSTRAINT CHK_PAGO_FECHA
CHECK (fecha<=getdate())
go
Relaciones
El modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los
identificadores definidos como claves primarias y forneas.
Clave primaria
En el diseo de bases de datos relacionales, se llama clave primaria (Primary Key) a un campo o a una combinacin
de campos que identifica de forma nica a cada fila de una tabla. Una clave primaria comprende de esta manera una
columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
Una clave primaria debe identificar a todas las posibles filas de una tabla y no nicamente a las filas que se
encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN
(asociado a un libro). Las guas telefnicas y diccionarios no pueden usar nombres o palabras o nmeros del sistema
decimal de Dewey como claves candidatas, porque no identifican unvocamente nmeros de telfono o palabras.
Clave fornea
En el contexto de bases de datos relacionales, una clave fornea o clave ajena (o Foreign Key FK) es una limitacin
referencial entre dos tablas. La clave fornea identifica una columna o grupo de columnas en una tabla (tabla hija o
referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las
columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada.
Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. As, una fila
en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las
referencias pueden ser creadas para vincular o relacionar informacin. Esto es una parte esencial de la normalizacin
de base de datos. Mltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma
fila en la tabla referenciada. Mayormente esto se ve reflejado en una relacin uno (tabla maestra o referenciada) a
muchos (tabla hija o referendo).
Cdigo que permite crear el diagrama entidad relacin de nuestra base de datos Propuesta
Para poder cambiar de ubicacin fsica o modificar el nombre de la Base de Datos, el Motor propone algunas polticas
de gestin proporcionando funciones, sentencias e intrucciones para dicho control.
Lenguaje SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregados. Estos elementos se
Combinan en las instrucciones para crear, actualizar y Manipular las base de datos.
Aerolnea
Pas
Pasajero
Reserva
Pago
Tarifa
Aeropuerto
INSERT [INTO]
[ESQUEMA] TABLA O VISTA [(Lista de columnas)]
[VALUES] ('Lista de valores')
SENTENCIA INSERT
Ejemplos: Insertar Registros en las Tablas
Aerolnea
Pas
Pasajero
Reserva
Pago
Tarifa
Aeropuerto
Tabla Aeropuerto
Tabla Pago
--Insertar registro en la tabla pago
insert into pago(idreserva,fecha,idpasajero,monto,tipo_comprobante,num_comprobante,impuesto)
values ('1','01-27-2013','P0000001',40,'Ticket','0010007',0.18),
('5','05-05-2014','P0000002',250,'Factura','001-0002',0.18),
('7',getdate(),'P0000007',700,'Factura','001-0003',0.18)
go
--Verificando registros insertados en la tabla pago
select * from pago
Tabla Tarifa
--Insertar tarifa
insert into tarifa
values ('1','Supervip',1200,12),
('2','Vip',1000,12),
('3','Nacional',800,12),
('4','Econmica',500,0)
go
--Verificando registros insertados en la tabla tarifa
select * from tarifa
SENTENCIA UPDATE (Modificacin y actualizacin de Datos): Permite modificar o actualizar un conjunto de registros
de una Tabla o vista dependiendo de una condicin.
Ejemplos
1. Actualizar los Valores de la columna impuesto por el valor 11 a todos los registros de la tabla TARIFA.
Tabla Tarifa
update tarifa
set impuesto=11
go
2. Actualizar los valores de la columna impuesto aumentado en 2 a todos los registros de la tabla TARIFA.
update tarifa
set impuesto=impuesto + 2
go
3. Asignar el impuesto a cero slo a los registros cuya clase sea Econmico de la tabla tarifa.
update tarifa
set impuesto=0
where clase='Econmica'
go
4. Actualizar los costos de la tabla RESERVA disminuyendo en 50 a los registros cuyo ingreso se realiz el ao 2013,
utilizar variables.
Tabla Reserva
update reserva
set costo=costo - 50
where year(fecha)=2013
go
4. Asignar el texto SIN FONO en el campo telfono de los pasajeros que sean de Per
Todo esto deber ser realizado en la tabla
Pasajero.
Tabla Pasajero
update pasajero
set telefono = 'Sin Fono'
where idpais= (select idpais from pais where nombre='Per')
go
SENTENCIA DELETE (Eliminacin de Registros de una tabla): Permite eliminar todos los registros especficados en una
determinada tabla.
DELETE
[TOP { Expresin } ]
FROM TABLE
[WHERE <Search_Condition>]
Ejemplos
Tabla Aerolnea
Tabla Pasajero
delete from pasajero
where idpasajero='P0000004'
go
3. Eliminar los registros de la tabla PASAJERO cuyo pas sea Mxico, utilizar subconsultas.
4. Eliminar los registros de la tabla RESERVA que sean del ao 2013 y que no superen los $ 70.
Tabla Reserva
Tabla Pago
Recuperar los datos de los sistemas informticos de una catstrofe informtica, natural o ataque.
Restaurar una pequea cantidad de informacin que pueden haberse eliminado accidentalmente,
corrompido.
Restaurar Base de Datos
El proceso de copia de seguridad se complementa con otro conocido como restauracin de los datos (en ingls
restore), que es la accin de leer y grabar en la ubicacin original u otra alternativa los datos requeridos que han
sido respaldados con anterioridad.
COMANDO SELECT (Recuperacin de Registros): Uno de los propsitos de la Gestin de Base de Datos es almacenar
informacin Lgica y ordenada dentro de tablas, usaremos la sentencia SELECT y sus variadas formas de recuperar
informacin desde una tabla en la base de datos activa.
Sintxis
SELECT [ALL - DISTINCT]
[TOP nmero [PERCENT] ]
[FROM] tabla
[WHERE <Condicin> ]
[<GROUP BY>]
[HAVING <Condicin> ]
[ORDER BY columna [ASC-DESC]]
Clusulas Principales
ALL: Especifica el conjunto de filas devueltas por la consulta.
DISTINCT: Sentencia utilizada para mostrar filas nicas no repetidas.
TOP: Para mostrar solo un nmero o porcentaje indicado de filas obtenidas.
FROM: Permite indicar las filas que estn involucradas.
WHERE: Clusula que permite condicionar el resultado de una consulta.
GROUP BY: Permite agrupar un conjunto de registros en forma de resumen.
HAVING: Permite condicionar el resultado despus de haber agrupado los registros.
ORDER BY: Permite ordenar los registros de acuerdo a una columna espcfica.
Ejemplos
Ejemplo 1:
Mostrar los registros de la tabla PASAJERO, ordenarlos de manera ascendente por su apellido paterno.
Tabla Pasajero
Clusula TOP:
Especfica que el conjunto de filas devueltas por la consulta puede ser controlado en un nmero y en porcentaje.
Considere que la muestra de registros devueltas siempre ser el primer conjunto de filas especificadas. Para
especificar el porcentaje slo agregar la palabra PERCENT.
Ejemplo 2:
Mostrar los 3 primeros registros de la tabla PASAJERO ordenados por su apellido paterno.
Ejemplo 4:
Mostrar el 30% de registros de la tabla RESERVA.
Tabla Reserva
Comando Select
Clusula Where
Clusula que permite condicionar el resultado de una consulta.
Ejemplos
Ejemplo 1:
Script que permita mostrar los PASAJEROS cuyo tipo de documento sea DNI.
Tabla Pasajero
Ejemplo 2:
Mostrar los pagos que se han realizado la fecha 27-01-2013.
Tabla Pago
select fecha,idpasajero,monto from pago
where fecha='2013-1-27'
go
Ejemplo 3:
Mostrar los pagos realizados en el mes de mayo del ao 2014.
Ejemplo 4:
Mostrar los Pasajeros que no tienen asignado un telfono.
B) Operador de Asignacin
Sql server solo cuenta con un operador para la asignacin de valores.
El operador = se tendr que colocar en cualquier expresin que necesite asignar un valor de cualquier tipo.
Ejemplos:
Ejemplo 1:
Script que permita mostrar el resultado de la expresin 2*(10+15) - (8/3), utilizar la sentencia SELECT para mostrar
el resultado.
Select '2*(10+5) - (8/3)' as [Operacin],
2*(10+5)-(8/3) as [Resultado]
go
Ejemplo 2:
Script que permita mostrar el resultado de la expresin Celsius=(Fharenheit-32)*5/9, usar la sentencia Select.
Ejemplo 3:
Calcular el rea de un Crculo, almacenando el valor del radio y de PI en sus variables respectivas.
Ejemplo 4:
Script que permita capturar en una variable el correo electrnico del pasajero con cdigo P0000005, usar variables
Transact-SQL y sentencia Select para mostrar el email.
C) Operadores Lgicos
Los operadores lgicos tienen por misin comprobar la veracidad de Alguna Condicin, estos como los operadores
de comparacin, devuelven el tipo de datos BOOLEAN (True, False, Unknown).
AND: Representa la Lgica Y, dos expresiones deben ser TRUE para poder devolver TRUE.
ANY: Devuelve TRUE si alguna expresin del conjunto de expresiones es TRUE.
= Igualdad de Expresiones
<> != Diferencia de Expresiones
> >= Mayor / Mayor o Igual
< <= Menor / Menor o Igual
Ejemplos
Ejemplo 1:
Script para Mostrar las reservas que sean del ao 2014 y no superen los $ 500.
Tabla Reserva
Ejemplo 3:
Script que permita mostrar los pasajeros cuya letra inicial de su apellido paterno se encuentre entre A y C.
Tabla Pasajero
select apaterno, amaterno, nombre,num_documento from pasajero
where left(apaterno,1) between 'A' and 'C'
order by apaterno asc, amaterno asc, nombre asc
go
Ejemplo 4:
Script que permita mostrar los pasajeros cuya letra inicial de su apellido paterno No se encuentre entre A y C.
Ejemplo 5:
Script que permita mostrar las reservas cuya fecha se encuentra en el ao 2013.
C) Operadores Lgicos
Operador LIKE: Devuelve TRUE si el operando coincide a lo ms con un patrn especfico. El patrn es una cadena de
caracteres que se buscar en la expresin. Los comodines a utilizar son:
%: Representa a uno o ms caracteres. Puede ser cualquier tipo de carcter textual o smbolo.
_: Representa un solo carcter de cualquier tipo.
Ejemplos:
Ejemplo 1:
Script que permita verificar si un determinado pas fue registrado o no en su tabla origen.
Ejemplo 2:
Script que permita mostrar los pasajeros cuyo nombre inicie con la letra A
Tabla Pasajero
select * from pasajero
where nombre like 'A%'
go
Ejemplo 3:
Mostrar los pasajeros que tienen una cuenta de correo GMAIL
Ejemplo 4:
Mostrar los pasajeros cuyo segundo carcter de su nombre sea la letra A, O U.
Ejemplo 5:
Mostrar los pasajeros cuyo segundo carcter de su nombre no sea la letra A, O U.
Externas: las filas resultantes no son directamente de la tabla origen, podra ser de la izquierda, derecha o
completa.
Ejemplo
1. Implementar un Script que permita mostrar los pasajeros con su correspondiente pas de residencia (Inner Join).
Tabla Pasajero-Pas
--Utilizando un producto cartesiano
select pas.nombre,pas.apaterno,pas.amaterno,pai.nombre as [Pas]
from pasajero pas, pais pai
go
2. Implementar un Script que permita mostrar los pasajeros con las siguientes columnas idpasajero, nombre,
apaterno, amaterno, pas, fecha de pago, monto de pago (Inner Join).
Tabla Pas-Pasajero-Pago
select pas.idpasajero,pas.nombre,pas.apaterno, pas.amaterno,pai.nombre as Pais,pag.fecha, pag.monto
from pasajero pas inner join pais pai
on pas.idpais=pai.idpais
inner join pago pag
on pag.idpasajero=pas.idpasajero
go
3. Implementar un Script que permita mostrar las reservas de un determinado PASAJERO especificado por su nombre.
Finalmente, debe ordenar la fecha de reserva de forma descendente.
Tabla Reserva
declare @num_documento varchar(12)='47715777'
select res.*
from pago pag inner join pasajero pas
on pag.idpasajero=pas.idpasajero
inner join reserva res
on pag.idreserva=res.idreserva
where pas.num_documento=@num_documento
go
Funciones Agregadas
Las funciones de agregado realizan un clculo sobre un conjunto de valores y devuelven un solo valor. Se suelen
utilizar con la clusula GROUP BY de la instruccin SELECT.
SUM
COUNT
MAX
MIN
AVG
SUM
Permite devolver la suma de todos los valores distinguidos en una determinada expresin. Esta funcin solo puede
utilizarse con columnas de tipo numrico.
SUM(Columna o Expresin)
Ejemplos:
Ejemplo 1:
Implementar un Script que permita mostrar el acumulado de los montos registrados en la tabla pago (Funcin
SUM).
Tabla Pago
Ejemplo 2:
Implementar un Script que permita mostrar el acumulado de los montos registrados en la tabla pago por cada ao,
considere el ao de la columna fecha. Use la Funcin SUM y la clusula Group By.
Funciones Agregadas
SUM
COUNT
MAX
MIN
AVG
COUNT
Funcin que permite devolver el nmero de elementos de un grupo. Count siempre devolver un valor numrico.
Ejemplos
Ejemplo 1:
Implementar un Script que permita determinar el total de pasajeros registrados (Funcin COUNT).
Tabla Pasajero
--Utilizando Funcin count
select count(idpasajero) as Total_Pasajeros
from pasajero
go
Ejemplo 2:
Implementar un Script que permita determinar el total de pasajeros registrados agrupados por su pas, tener en
cuenta las columnas a mostrar Nombre del pas, Total Pasajeros. Use la Funcin agregada COUNT y la clusula
Group By e Inner Join.
Tabla Pasajero-Pas
--Usando la Funcin agregada COUNT y la clusula Group By e Inner Join.
select pai.nombre as [Pas],count(pas.idpasajero) as
[Total Pasajeros] from pasajero pas inner join pais pai
on pas.idpais=pai.idpais
group by pai.nombre
go
3. Implementar un Script que permita mostrar el total de pasajeros y el monto acumulado de pagos de sus viajes
realizados por un determinado pas.
Tabla Pasajero-Pas-Pago
select pai.nombre as [Pas],count(distinct pas.num_documento)
as [Total Pasajeros], sum(pag.monto) as [Monto Acumulado]
from pasajero pas inner join pais pai
on pai.idpais=pas.idpais inner join pago pag
on pag.idpasajero=pas.idpasajero
group by pai.nombre
go
Funciones Agregadas
SUM
COUNT
MAX
MIN
AVG
MAX
Funcin que permite determinar el valor mximo de una expresin propuesta por el usuario.
Solo puede ser usado en columnas o expresiones que tenga como tipo de dato un entero.
MIN
Funcin que permite determinar el valor mnimo de una expresin propuesta por el usuario.
Solo puede ser usado en columnas o expresiones que tenga como tipo de dato un entero.
MIN(All Columna Expresin).
MAX Y MIN
All: Especifica que todos los valores son evaluados.
Ejemplos:
Ejemplo 1:
Implementar un Script que permita mostrar el monto ms alto y ms bajo registrado en la tabla PAGO (Funcin
MAX y MIN).
Tabla Pago
Ejemplo 3:
Implementar un Script que permita mostrar los datos del pasajero que registra el mayor monto desde la tabla
PAGO.
select pas.*
from pasajero pas
where pas.idpasajero=(select idpasajero from pago
where monto=@maxPago)
go
Funciones Agregadas
SUM
COUNT
MAX
MIN
AVG
AVG
Funcin que devuelve el promedio de los valores de un determinado grupo, consideremos que dicha columna debe
de ser numrica.
AVG(Columna Expresin)
Columna: Se puede especificar el nombre de una columna de la tabla para especificar el promedio.
Expresin: Representa a una funcin SQL o a un juego de operadores aritmticos. No se permite las funciones de
agregado ni subconsultas.
Ejemplos:
Ejemplo 1:
Implementar un Script que permita mostrar el precio promedio de las tarifas asignadas a los diferentes vuelos.
(Funcin AVG).
Tabla Tarifa
Ejemplo 2:
Implementar un Script que permita mostrar el monto promedio de pagos agrupado por pases. (Funcin AVG).
Tabla Pas-Pasajero-Pago
UNION
Consulta1
UNION
Consulta2
Ejemplos
Ejemplo 1:
Implementar un Script que permita mostrar los apellidos paternos de los pasajeros y los nombres de los pases en
una misma consulta.
Tabla Pas-Pasajero
Tabla Pas-Pasajero-Pago
UNION
select 'pais' as [tabla], count (idpais) as [Total Registros]
from pais
UNION
select 'pago' as [tabla], count (idpago) as [Total Registros]
from pago
go
Programacin Transact SQL
Transact SQL es el lenguaje de programacin que proporciona Microsoft SQl Server para extender el SQL estndar
con otro tipo de instrucciones y elementos propios de los lenguajes de programacin ya que esta parte est limitada
en SQL.
Scripts
Procedimientos Almacenados
Funciones
Triggers
Estructuras de Control:
Estructuras Selectivas: Las instrucciones se ejecutan segn el valor lgico de una variable.
Estructuras Repetitivas: Las instrucciones se ejecutan en forma repetida segn una condicin lgica llamada ciclo
bucle.
Estructura Selectiva IF
La estructura IF evala una condicin lgica y en funcin del resultado booleano (true o false) se realiza una u otra
expression.
IF <Condicin_Lgica>
<BEGIN>
<Expresiones_CondicinTrue>
<END>
ELSE
<BEGIN>
< Expresiones_CondicinFalse>
<END>
Ejemplos:
Ejemplo 1:
Implementar un Script que permita insertar un nuevo registro en la tabla pas, en caso se registre duplicidad en el
nombre de un pas mostrar un mensaje de pas ya registrado, caso contrario insertar dicho registro y mostrar un
mensaje de Pas registrado Correctamente.
Tabla Pas
--Estructura Condicional IF
declare @idpais char(4)='0011',
@nombre varchar(30)='Argelia'
Ejemplo 2:
Implementar un Script que permita Mostrar el mensaje de No hay Pasajeros en este pas, solo cuando el total de
pasajeros asignados a un determinado Pas no tenga registros en la tabla pasajero. Caso contrarios determinar
cuntos pasajeros tiene dicho pas.
Tabla Pas-Pasajero
Scripts
Procedimientos Almacenados
Funciones
Triggers
La estructura CASE evala una expresin que podr tomar N valores distintos, segn se elija uno de estos valores se
tomar N posibles acciones
Ejemplos:
Ejemplo 1:
Implementar un Script que permita mostrar la fecha en texto registrada en la tabla RESERVA.
Tabla Reserva
Ejemplo 2:
Implementar un Script que permita mostrar el nmero total de pasajeros por pas y el mensaje NO CUENTA solo
a los pases cuyo nmero de pasajeros sea cero.
Tabla Pas-Pasajero
Scripts
Procedimientos Almacenados
Funciones
Triggers
Procedimientos Almacenados
Son un conjunto de instrucciones de Transact-SQL que pueden aceptar y devolver parmetros proporcionados por
el usuario.
Ejemplos
Ejemplos:
Ejemplo 1:
Implementar un procedimiento almacenado que muestre el listado de los pases y su total de pasajeros.
begin
end
go
--Implementamos nuestro procedimiento almacenado
create procedure pasajerosxpais
as
select pai.nombre,count(*) as [Total]
from pasajero pas join pais pai
on pas.idpais=pai.idpais
group by pai.nombre
go
--Ejecutamos el procedimiento almacenado
exec pasajerosxpais
Ejemplo 2:
Implementar un procedimiento almacenado que permita mostrar los pagos de un determinado pasajero,
considerar para este caso como parmetro de bsqueda el nmero de documento del pasajero.
begin
end
go
--Implementamos nuestro procedimiento almacenado
alter procedure pagosxpasajero
@num_documento varchar(12)
as
select fecha,monto,tipo_comprobante,num_comprobante
from pago where idpasajero=
(select idpasajero from pasajero
where num_documento=@num_documento)
go
--Ejecutamos el procedimiento almacenado y le enviamos el parmetro de entrada
exec pagosxpasajero '47715777'
Ejemplo 3:
Implementar un procedimiento almacenado que permita registrar un Nuevo pas, para este caso definir como
parmetro de entrada todos los campos referentes a la tabla pas.
Tabla Pas
begin
Tabla Pago
Scripts
Procedimientos Almacenados
Funciones
Triggers
Funciones
Rutina almacenada que recibe unos parmetros escalares de entrada, luego los procesa segn el cuerpo definido de
la funcin y por ltimo retorna un resultado de un tipo especfico que permitir cumplir un objetivo.
SQL Server proporciona numerosas funciones integradas y permite crear funciones definidas por el usuario.
Tipos de Funciones
Funciones - Sintxis
Ejemplos:
Ejemplo 1:
Implementar una funcin que devuelva el promedio de dos nmeros ingresados por el usuario.
BEGIN
END
go
--Implementamos la funcin con dos parmetros de entrada
CREATE FUNCTION calcularpromedio
(@valor1 as decimal(10,2),@valor2 decimal(10,2))
RETURNS decimal(10,2)
AS
BEGIN
DECLARE @resultado decimal(10,2)
SET @resultado=(@valor1+@valor2)/2
RETURN @resultado
END
GO
--Ejecutamos la funcin con un select y le enviamos
--los dos parmetros de entrada (DBO es el nombre del propietario)
select dbo.calcularpromedio(12,13) as Promedio
--Ejecutamos la funcin con un print y le enviamos
--los dos parmetros de entrada
print 'Promedio: ' + cast(dbo.calcularpromedio(12,13) as Char(10))
Ejemplo 2:
Implementar una funcin que devuelva el nombre de un mes en letras segn una fecha ingresada por el usuario.
BEGIN
END
go
--Implementamos la funcin con un solo parmetro de entrada
CREATE FUNCTION fechaletras (@fecha as DATE)
RETURNS varchar(20)
AS
BEGIN
DECLARE @resultado varchar(20)
SET @resultado=concat(day(@fecha),' de ',datename(month,@fecha),
' del ',year(@fecha))
RETURN @resultado
END
GO
--Ejecutamos la funcin con un select y le enviamos
--el parmetro de entrada
select dbo.fechaletras('2015-08-08') as [Fecha Actual]
Ejemplo 3:
Implementar una funcin de tabla en lnea que muestre los registros de la tabla pasajero dependiendo del pas de
proveniencia.
BEGIN
END
go
--Implementamos la funcin con un solo parmetro de entrada
CREATE FUNCTION pasajeroxpais (@pais as varchar(30))
RETURNS TABLE
AS
RETURN (SELECT pas.idpasajero,(pas.nombre + ' ' +
pas.apaterno) as Pasajero,pai.nombre as Pais
from pasajero pas inner join pais pai
on pai.idpais=pas.idpais
where pai.nombre=@pais)
GO
--Ejecutamos la funcin con un select,
--Mostraremos los pasajeros del pas Per
select * from dbo.pasajeroxpais('Per')
go
Cursores
Los cursores son una herramienta de SQL que nos permite recorrer el resultado de una consulta SQL y realizar
operaciones en cada paso de esta. Es as como nos ayuda a realizar operaciones que de otro modo seran ms
complejas o imposibles.
Declare Nombre_Cursor
[INSENSITIVE][SCROLL] CURSOR
FOR EXPRESSION_SELECT
[FOR READ ONLY
| UPDATE [OF column_name[,n]]]
Ejemplos:
Ejemplo 1:
Implementar un cursos bsico donde se imprima el primer registro de la table PASAJERO.
Tabla Pasajero
Ejemplo 2:
Implementar un cursor donde se imprima en forma de reporte a los registros de la tabla PASAJERO.
--Cerramos el cursor
close micursor
--liberamos el cursor con el operador deallocate
deallocate micursor
PIVOT gira una expresin con valores de tabla convirtiendo los valores nicos de una columna de la expresin en
varias columnas en la salida y realiza agregaciones donde son necesarias en cualquier valor de columna restante que
se desee en la salida final.
Ejemplos:
Ejemplo 1:
Mostrar los pagos realizados por los pasajeros, pero ordenar los pagos por meses.
Pasajero Enero Febrero Marzo Abril
Pasajero 01 100 0 154 0
Pasajero 02 0 300 0 170
Pasajero 03 150 0 500 0
Tabla Pasajero - Pas - Pago
select
Pasajero,
case when Enero Is not null then Enero else 0 end as Enero,
case when Febrero Is not null then Febrero else 0 end as Febrero,
case when Marzo Is not null then Marzo else 0 end as Marzo,
case when Abril Is not null then Abril else 0 end as Abril,
case when Mayo Is not null then Mayo else 0 end as Mayo,
case when Junio Is not null then Junio else 0 end as Junio,
case when Julio Is not null then Julio else 0 end as Julio,
case when Agosto Is not null then Agosto else 0 end as Agosto,
case when Setiembre Is not null then Setiembre else 0 end asSetiembre,
case when Octubre Is not null then Octubre else 0 end as Octubre,
case when Noviembre Is not null then Noviembre else 0 end asNoviembre,
case when Diciembre Is not null then Diciembre else 0 end asDiciembre
from
(
select pas.apaterno as Pasajero,
datename(month,pag.fecha) as Mes
,SUM(pag.monto) as Total
from pago pag inner join pasajero pas
on pag.idpasajero=pas.idpasajero
group by pas.apaterno,
datename(month,pag.fecha)
)T
PIVOT (SUM(T.Total) FOR T.Mes IN ([Enero],[Febrero],[Marzo]
,[Abril],[Mayo],[Junio],[Julio],[Agosto],[Setiembre],
[Octubre],[Noviembre],[Diciembre]))PVT
go