Microsoft SQL Server 2014docshare01.docshare.tips/files/26757/267576079.pdfhistorial de copias de...

58
Microsoft SQL Server 2014 1. Contenido del Curso de Bases de datos en Microsoft SQLServer 2014 Instalación y Configuración, Seguridad Gestión de Base de Datos o Estructura de Una Base de datos o Archivos y Grupos Físicos de Bases de Datos o Esquemas, Tablas, Campos, Tipos de datos o Relaciones, Llaves primarias y Foráneas o Restricciones Unique, Check, Default o Separar y Adjuntar Base de Datos o Backup y Restauración de Base de Datos LDD Lenguaje de Manipulación de Datos o Create, Alter, Drop DML Lenguaje de Manipulación de Datos o Insert Into, Update, Delete o Select, Group By, Having, Union Programación Transact SQL o Variables, Funciones Cast y Convert o Estructuras de Control Condicionales e Iterativas o repetitivas o Procedimientos Almacenados o Cursores, Triggers, Tablas de Referencia Cruzada ¿Qué es una Base de Datos? Es un conjunto de Información relacionada sobre un tema en particular, organizada de alguna forma tal que suministra una base o fundamento para procedimientos, como la recuperación o consulta de la Información, la elaboración de conclusiones en base a la data y la toma de desiciones de una organización. Se dice que cualquier conjunto de Información que sirva a lo nombrado anteriormente se le calificará como base de Datos, aún cuando la información no esté almacenada en algún medio Informático. Sistemas de Gestión de Base de Datos (SGBD) Son aplicaciones que permiten la administración de los datos almacenados en una o varias Bases de datos. Independencia de los datos y los programas Minimización de la Redundancia Integración y Sincronización de las Bases de Datos Facilidad de Manipulación y Recuperación de la Información Seguridad y Control Centralizado. SQL Server 2014

Transcript of Microsoft SQL Server 2014docshare01.docshare.tips/files/26757/267576079.pdfhistorial de copias de...

Microsoft SQL Server 2014

1. Contenido del Curso de Bases de datos en Microsoft SQLServer 2014

Instalación y Configuración, Seguridad

Gestión de Base de Datos

o Estructura de Una Base de datos

o Archivos y Grupos Físicos de Bases de Datos

o Esquemas, Tablas, Campos, Tipos de datos

o Relaciones, Llaves primarias y Foráneas

o Restricciones Unique, Check, Default

o Separar y Adjuntar Base de Datos

o Backup y Restauración de Base de Datos

LDD Lenguaje de Manipulación de Datos

o Create, Alter, Drop

DML Lenguaje de Manipulación de Datos

o Insert Into, Update, Delete

o Select, Group By, Having, Union

Programación Transact SQL

o Variables, Funciones Cast y Convert

o Estructuras de Control Condicionales e Iterativas o repetitivas

o Procedimientos Almacenados

o Cursores, Triggers, Tablas de Referencia Cruzada

¿Qué es una Base de Datos?

Es un conjunto de Información relacionada sobre un tema en particular, organizada de alguna forma tal que suministra una base o fundamento para procedimientos, como la recuperación o consulta de la Información, la elaboración de conclusiones en base a la data y la toma de desiciones de una organización.

Se dice que cualquier conjunto de Información que sirva a lo nombrado anteriormente se le calificará como base de Datos, aún cuando la información no esté almacenada en algún medioInformático.

Sistemas de Gestión de Base de Datos (SGBD)

Son aplicaciones que permiten la administración de los datos almacenados en una o varias Bases de datos.

Independencia de los datos y los programas

Minimización de la Redundancia

Integración y Sincronización de las Bases de Datos

Facilidad de Manipulación y Recuperación de la Información

Seguridad y Control Centralizado.

SQL Server 2014

Microsoft SQLServer es un Sistema para la Gestión de Base de Datos basado en el Modelo Relacional. Sus lenguajes para consultas son Transact-SQL y Ansi SQL.

Presenta Un entorno gráfico de administración de los Objetos del motor de base de datos, quepermite el uso de comando DDL y DML gráficamente.

2. Base de Datos en Sql Server

Al instalar SQLServer también se registran Bases de datos que administran diferentes aspectos del servidor de Base de Datos.

MASTER: Es el núcleo y contiene Información vital de la Instancia de Sqlserver, información dela administración de las diferentes bases de datos.TEMPDB: Base de datos temporal que brinda espacios para realizar algunas operaciones.MODEL: Es una plantilla para todas las bases de datos creadas en el servidor, se implementa cuando se ejecuta el comando CREATE DATABASE.MSDB: Empleada por SQL Server Agent, guarda información de servicios de automatización, historial de copias de seguridad, tareas, alertas, planes de mantenimiento entre otros registros.

Estructura de Base de Datos en Sql Server

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.

Campos: Representa los Atributos de una entidad o tabla. Campo Clave: Es el campo que representa un valor único e identifica a un registro de

la tabla.

Campo Foráneo: Campo que une a otra entidad formando una extensión de la tabla fuente.

Registro: Representa el Conjunto de valores por cada campo de una misma fila.

Dato: Es un valor que no representa nada mientras no se une a otros datos.

Estructura de una Base de Datos en Sql Server

Estructura de una Tabla en Sql Server

3. 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, además 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 opción 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

Información de Vuelos

Reserva de Vuelos

Compra de Boletos de viaje

Esquema de Archivos en Sql Server

Tipos de Datos en Sql Server 2014

Tipo de Datos CarácterChar: Los datos deben de tener una longitud fija hasta 8Kb. Ejemplo: Si queremos almacenar categorías por ejemplo A, B, C …Utilizaremos Char(1)

Varchar: Puede variar en el número de carácteres, 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”.

Tipo de Datos EnterosInt: Números enteros desde -2 31 (-2 147 483 648) a 2 31-1 (2 147 483 647).

Tipos de Datos FechaDate: Tipo de dato que muestra la fecha en el siguiente formato 07-07-2014.

Tipo de Datos DecimalDecimal: Tipo de datos que se utiliza para almacenar números decimales que pueden tener hasta 38 dígitos.

Tipo de Datos MonetarioMoney: Cantidad monetaria positiva o negativa.

Propiedades de DatosPropiedad NULL: Hay dos formas de expresar el término 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 sólo aplicada a campos numéricos, ya que define un autoincremento automático de valores.

4. RelacionesEl modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los identificadores definidos como claves primarias y foráneas.

Clave primaria

En el diseño de bases de datos relacionales, se llama clave primaria (Primary Key) a un campo o a una combinación 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 lasfilas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque no identifican unívocamente números de teléfono o palabras.

Clave foráneaEn el contexto de bases de datos relacionales, una clave foránea o clave ajena (o Foreign Key FK) es una limitación referencial entre dos tablas. La clave foránea 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 relacionarinformación. Esto es una parte esencial de la normalización de base de datos. Múltiples filas enla tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación 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 opción Diagramade la Base de Datos, que nos permite realizar las relaciones de las tablas en forma Gráfica. Para acceder a esta opción le damos click derecho y crearemos un nuevo Diagrama de Base de Datos.

Imagen 1: Diagrama relacional de la Base de datos del Curso.

5. Lenguaje SQL

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregados. Estos elementos se Combinan en las instrucciones para crear, actualizar y Manipular las base de datos.

Existen 2 tipos de Comandos SQL:Lenguaje de Definición de Datos (DDL), comandos para crear y definir nuevas base de datos, tablas, campos e índices.Lenguaje de Manipulación de Datos (DML), comandos para insertar, modificar y eliminar registros, así como ordenar, filtrar y extraer información de la base de datos.

1. Lenguaje de Definición de DatosSENTENCIA CREATE (Comando de Creación de Objetos de la Base de Datos): Permite crear base de datos, tablas, desencadenadores, procedimientos, funciones, vistas e Índices de una base de Datos.

SENTENCIA ALTER (Comando de Modificación de Objetos de la Base de Datos): Permite la modificación de un objeto asociado a una base de Datos, puede modificar archivos, grupo de archivos, cambiar atributos de un Objeto.

SENTENCIA DROP (Comando de Eliminación de Objetos de la Base de Datos): Permite la eliminación de un objeto asociado a una Base de Datos.

Archivos de Base de Datos

Código para Implementar la Base de Datos y los Archivos .MDF y .LDF

--Verificamos que la base de datos no este implementada para implementarlaIF DB_ID('DBRESERVAM') IS NOT NULLBEGIN USE MASTER DROP DATABASE DBRESERVAMEND--creamos la base de datosCREATE DATABASE DBRESERVAMON PRIMARY ( NAME='DBRESERVA_MDF', FILENAME='C:\Sqlserver-BaseDatos2\DBRESERVA.MDF', SIZE=10MB, MAXSIZE=40MB, FILEGROWTH=5MB ), ( NAME='DBRESERVA2_MDF', FILENAME='C:\Sqlserver-BaseDatos2\DBRESERVA2.MDF', SIZE=5MB, MAXSIZE=30MB, FILEGROWTH=5% )LOG ON ( NAME='DBRESERVA_LOG', FILENAME='C:\Sqlserver-BaseDatos2\DBRESERVA2.LDF', SIZE=4MB, MAXSIZE=20MB,

FILEGROWTH=10% )GO

--ACTIVAMOS LA BASE DE DATOS PARA EMPEZAR A TRABAJAR CON ELLAUSE DBRESERVAMGO

6. Tipos de Datos en Sql Server 2014Tipo de Datos CarácterChar: Los datos deben de tener una longitud fija hasta 8Kb. Ejemplo: Si queremos almacenar categorías por ejemplo A, B, C …Utilizaremos Char(1)

Varchar: Puede variar en el número de carácteres, 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”.

Tipo de Datos EnterosInt: Números enteros desde -2 31 (-2 147 483 648) a 2 31-1 (2 147 483 647).

Tipos de Datos FechaDate: Tipo de dato que muestra la fecha en el siguiente formato 07-07-2014.

Tipo de Datos DecimalDecimal: Tipo de datos que se utiliza para almacenar números decimales que pueden tener hasta 38 dígitos.

Tipo de Datos MonetarioMoney: Cantidad monetaria positiva o negativa.

Propiedades de DatosPropiedad NULL: Hay dos formas de expresar el término 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 sólo aplicada a campos numéricos, ya que define un autoincremento automático de valores.

Implementando las tablas Utilizando Lenguaje de Definición de Datos DDL

--ACTIVAMOS LA BASE DE DATOS PARA EMPEZAR A TRABAJAR CON ELLAUSE DBRESERVAMGO--IMPLEMENTANDO LAS TABLAS DE LA BASE DATOS--TABLA PAÍSCREATE TABLE pais ( idpais char(4) not null primary key, nombre varchar(30) not null unique)go

--TABLA PASAJEROCREATE TABLE pasajero ( idpasajero char(8) not null primary key, nombre varchar(20) not null, apaterno varchar(20) not null, amaterno varchar(20) not null, tipo_documento varchar(30) not null, num_documento varchar (12) not null, fecha_nacimiento date not null, idpais char(4) not null, telefono varchar(15) null, email varchar(50) not null unique, clave varchar(20) not null)go--TABLA AEROPUERTOCREATE TABLE aeropuerto ( idaeropuerto char(5) not null, nombre varchar(50) not null, idpais char(4) not null)go --TAMBIEN SE PUEDE AGREGAR LA LLAVE PRIMARIA DESPUES DE CREAR LA TABLA ALTER TABLE aeropuerto ADD CONSTRAINT pk_aeropuerto_idaeropuerto PRIMARY KEY NONCLUSTERED (IDAEROPUERTO) GO --TAMBIEN VOY A CREAR EL CONSTRAINT DE CAMPO ÚNICO ALTER TABLE aeropuerto ADD CONSTRAINT uq_aeropuerto_nombre UNIQUE(idaeropuerto) GO--TABLA AEROLÍNEACREATE TABLE aerolinea ( idaerolinea int not null primary key, ruc char(11) not null unique, nombre varchar(40) not null unique)go

--TABLA AVIÓNCREATE 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

7. Restricciones de los CamposUnique: Permite determinar que los valores registrados en una misma columna no sean idénticos, es decir se mantengan únicos. Por ejemplo el email de una persona es un campo único.

Check: Permite restringir el rango de valores que pueden estar permitidos ingresar en una o más columnas de una tabla.

Default: Permite registrar un dato en un campo por defecto cuando el usuario no ingresa ningún 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.

Implementado las tablas faltantes de nuestro ejercicio Propuesto Dbreservae implementando las restricciones

--Eliminaré la tabla avión y la creare de nuevo pero dejando un campo menosdrop table avion

--creando de nuevo la tabla avionCREATE TABLE avion ( idavion char(5) not null primary key, idaerolinea int not null, fabricante varchar(40) null, tipo varchar(3) null)go

--voy agregar nuevamente la capacidadALTER TABLE AVIONADD capacidad int not nullgo

--eliminaré nuevamente capacidad--ALTER TABLE avion--drop column capacidad--go

--voy a modificar la columna tipoALTER TABLE avionALTER COLUMN tipo varchar(30) not nullgo

--TABLA ASIENTOCREATE TABLE asiento ( idasiento int not null primary key, letra char(2) not null, fila int not null)go

--TABLA TARIFACREATE TABLE tarifa( idtarifa int not null primary key, clase varchar(20) not null unique,

precio money not null, impuesto money not null)go--TABLA RESERVACREATE TABLE reserva( idreserva int not null primary key, costo money not null, fecha date NULL, observacion varchar(200) null)go

--AGREGAREMOS UNA RESTRICCIÓN 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 VUELOCREATE 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

--IMPLEMENTANDO LAS LLAVES PRIMARIAS DE LA TABLA VUELOALTER TABLE VUELOADD PRIMARY KEY NONCLUSTERED (idasiento,idaeropuerto,idreserva,idavion)go

--TABLA PAGOCREATE 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 RESTRICCIÓN CHECK PARA SOLO INGRESAR FECHAS IGUALES O MENORES A LA FECHA ACTUAL

ALTER TABLE pago ADD CONSTRAINT CHK_PAGO_FECHA CHECK (fecha<=getdate())

Go

8. RelacionesEl modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los identificadores definidos como claves primarias y foráneas.

Clave primariaEn el diseño de bases de datos relacionales, se llama clave primaria (Primary Key) a un campo o a una combinación 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 lasfilas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque no identifican unívocamente números de teléfono o palabras.

Clave foráneaEn el contexto de bases de datos relacionales, una clave foránea o clave ajena (o Foreign Key FK) es una limitación referencial entre dos tablas. La clave foránea 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 relacionarinformación. Esto es una parte esencial de la normalización de base de datos. Múltiples filas enla tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos (tabla hija o referendo).

Diagrama Relacional Base de Datos en Sql Server 2014En el vídeo mostrado a continuación, se describe cómo crear relaciones de clave externa en SQL Server 2014 mediante código Transact-SQL. Cuando se asocian filas de una tabla con filas de otra tabla, se crea una relación entre las dos tablas.

Código que permite crear el diagrama entidad relación de nuestra base de datos Propuesta

--IMPLEMENTADO LAS LLAVES FORÁNEAS--Relación Entre la tabla pasajero y paísALTER TABLE pasajeroADD CONSTRAINT FK_pasajero_paisFOREIGN KEY (idpais) REFERENCES pais (idpais)go

--Relación entre la tabla aeropuerto paísALTER TABLE aeropuertoADD CONSTRAINT FK_aeropuerto_paisFOREIGN KEY(idpais) REFERENCES pais (idpais)go

--Relación entre la tabla pago y pasajeroALTER TABLE pagoADD CONSTRAINT FK_pago_pasajeroFOREIGN KEY (idpasajero) REFERENCES pasajero (idpasajero)go

--Relación entre la tabla pago y reservaALTER TABLE pagoADD CONSTRAINT fk_pago_reservaFOREIGN KEY (idreserva) REFERENCES reserva(idreserva)go

--Relación entre la tabla avión y aerolíneaALTER TABLE avionADD CONSTRAINT FK_avion_aerolineaFOREIGN KEY (idaerolinea) REFERENCES aerolinea(idaerolinea)go

--Relación entre la tabla vuelo y asientoALTER TABLE vueloADD CONSTRAINT FK_vuelo_asientoFOREIGN KEY (idasiento) REFERENCES asiento(idasiento)go

--Relación entre la tabla vuelo y reservaALTER TABLE vueloADD CONSTRAINT FK_vuelo_reservaFOREIGN KEY (idreserva) REFERENCES reserva(idreserva)go

--Relación entre la tabla vuelo y aviónALTER TABLE vueloADD CONSTRAINT FK_vuelo_avionFOREIGN KEY (idavion) REFERENCES avion(idavion)go

--Relación entre la tabla vuelo y tarifaALTER TABLE vueloADD CONSTRAINT FK_vuelo_tarifaFOREIGN KEY (idtarifa) REFERENCES tarifa(idtarifa)go

--Relación entre la tabla vuelo y aeropuertoALTER TABLE vueloADD CONSTRAINT FK_vuelo_aeropuertoFOREIGN KEY (idaeropuerto) REFERENCES aeropuerto(idaeropuerto)go

9. Separar y Adjuntar Base de DatosCuando creamos una base de datos el servidor la protege de gestiones desde el exterior, eso quiere decir que desde el explorador de windows no se podrá eliminar ni cambiar de nombre a la DB.

Para poder cambiar de ubicación física o modificar el nombre de la Base de Datos, el Motor propone algunas políticas de gestión proporcionando funciones, sentencias e intrucciones para dicho control.

Separar Base de Datos DETACHProcedimiento Almacenado SP_DETACH_DB (Permite separar una Base de Datos del ServidorActual):use masterSP_DETACH_DB @DBNAME=‘DBRESERVA’GO

Adjuntar Base de DatosUtilizaremos el Asistente de Microsoft SQL Server Management Studio.Lo veremos en el vídeo mostrado a continuación.

10. Lenguaje SQLEl lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregados. Estos elementos se Combinan en las instrucciones para crear, actualizar y Manipular las base de datos.

Existen 2 tipos de Comandos SQL:Lenguaje de Definición de Datos (DDL), comandos para crear y definir nuevas base de datos, tablas, campos e índices.Lenguaje de Manipulación de Datos (DML), comandos para insertar, modificar y eliminar registros, así como ordenar, filtrar y extraer información de la base de datos.

2. Lenguaje de Manipulación de Datos (DML)El lenguaje de Manipulación de Datos (DML) es un término usado para recuperar y trabajar condatos en Sql Server, incluye instrucciones para agregar, modificar, consultar o quitar datos de una base de Datos en Sql Server.

Las siguientes sentencias son de categoría DML:

INSERT

UPDATE

DELETE

SELECT

MERGE

BULK INSERT

Ejemplos: Insertar Registros en las Tablas Aerolínea

País

Pasajero

Reserva

Pago

Tarifa

Aeropuerto

11. SENTENCIA INSERT (Insertar Registros): Permite agregar una nueva fila a una tabla o vista.

INSERT [INTO] [ESQUEMA] TABLA O VISTA [(Lista de columnas)] [VALUES] ('Lista de valores')

SENTENCIA INSERTEjemplos: Insertar Registros en las TablasAerolíneaPaísPasajeroReservaPagoTarifaAeropuerto

Tabla Aeropuerto

----Insertar registros en la tabla aeropuerto insert into aeropuerto (idaeropuerto,idpais,nombre)values ('AE01','0003','Bariloche'),('AE02','0003','Mar del Plata'),('AE03','0001','Jorge Chávez')go----Verificando los registros insertados en la tabla aeropuertoselect * from AEROPUERTO

Tabla Reserva

--Insertar registros en la tabla reserva insert into RESERVA (idreserva,costo,fecha,observacion)values ('1','140','01-27-2013','')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('2','100','01-01-2013','')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('3','300','03-04-2014','')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('4','800','04-05-2014','')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('5','250',getdate(),'')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('6','1150',getdate(),'')goinsert into RESERVA (idreserva,costo,fecha,observacion)values ('7','700',getdate(),'')go

Tabla Pago

--Insertar registro en la tabla pagoinsert 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 pagoselect * from pago

Tabla Tarifa

--Insertar tarifainsert into tarifavalues ('1','Supervip',1200,12),('2','Vip',1000,12),('3','Nacional',800,12),('4','Económica',500,0)go--Verificando registros insertados en la tabla tarifaselect * from tarifa

12. SENTENCIA UPDATE (Modificación y actualización de Datos): Permite modificar o actualizar un conjunto de registros de una Tabla o vista dependiendo de una condición.

UPDATE TABLA O VISTA [SET] {column name =expresión } [WHERE <Search_Condition>]

Ejemplos

1. Actualizar los Valores de la columna impuesto por el valor 11 a todos los registros de la tabla TARIFA.

Tabla Tarifa

update tarifaset impuesto=11go

2. Actualizar los valores de la columna impuesto aumentado en 2 a todos los registros de la tabla TARIFA.

update tarifaset impuesto=impuesto + 2go

3. Asignar el impuesto a cero sólo a los registros cuya clase sea Económico de la tabla tarifa.

update tarifaset impuesto=0where clase='Económica'go

4. Actualizar los costos de la tabla RESERVA disminuyendo en 50 a los registros cuyo ingreso se realizó el año 2013, utilizar variables.

Tabla Reserva

update reservaset costo=costo - 50where year(fecha)=2013go

4. Asignar el texto ‘SIN FONO’ en el campo teléfono de los pasajeros que sean de Perú

Todo esto deberá ser realizado en la tablaPasajero.

Tabla Pasajero

update pasajeroset telefono = 'Sin Fono'where idpais= (select idpais from pais where nombre='Perú')go

13. SENTENCIA DELETE (Eliminación de Registros de una tabla): Permite eliminar todos los registros específicados en una determinada tabla.

DELETE [TOP { Expresión } ] FROM TABLE [WHERE <Search_Condition>]Ejemplos

1. Eliminar todos los registros de la Tabla AEROLÍNEA.

Tabla Aerolínea

delete from aerolinea

go

2. Eliminar el registro de la tabla Pasajero cuyo idpasajero sea P0000004.

Tabla Pasajero

delete from pasajerowhere idpasajero='P0000004'go

3. Eliminar los registros de la tabla PASAJERO cuyo país sea México, utilizar subconsultas.

delete from pasajerowhere idpais = (select idpais from pais where nombre = 'México')go

4. Eliminar los registros de la tabla RESERVA que sean del año 2013 y que no superen los $ 70.

Tabla Reserva

delete from reservawhere year(fecha)= 2013 and costo>70

go

5. Eliminar los registros de la tabla PAGO, que se han efectuado en el año 2012 ó 2013.

Tabla Pago

delete from pagowhere year(fecha)=2012 or year(fecha)=2013go

14. Back Up de Base de DatosUna copia de seguridad, copia de respaldo en tecnologías de la información es una copia de los datos originales que se realiza con el fin de disponer de un medio para recuperarlos en casode su pérdida. Los Backup son útiles ante distintos eventos y usos:

Recuperar los datos de los sistemas informáticos de una catástrofe informática, natural o ataque.

Restaurar una pequeña cantidad de información que pueden haberse eliminado accidentalmente, corrompido.

Restaurar Base de Datos

El proceso de copia de seguridad se complementa con otro conocido como restauración de los datos (en inglés restore), que es la acción de leer y grabar en la ubicación original u otra alternativa los datos requeridos que han sido respaldados con anterioridad.

15. Lenguaje de Manipulación de Datos

COMANDO SELECT (Recuperación de Registros): Uno de los propósitos de la Gestión de Base de Datos es almacenar información Lógica y ordenada dentro de tablas, usaremos la sentencia SELECT y sus variadas formas de recuperar información desde una tabla en la base de datos activa.

SintáxisSELECT [ALL - DISTINCT] [TOP número – [PERCENT] ] [FROM] tabla [WHERE <Condición> ]

[<GROUP BY>] [HAVING <Condición> ] [ORDER BY columna [ASC-DESC]]

Cláusulas PrincipalesALL: Especifica el conjunto de filas devueltas por la consulta.DISTINCT: Sentencia utilizada para mostrar filas únicas no repetidas.TOP: Para mostrar solo un número o porcentaje indicado de filas obtenidas.FROM: Permite indicar las filas que están involucradas.WHERE: Cláusula 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 después de haber agrupado los registros.ORDER BY: Permite ordenar los registros de acuerdo a una columna espcífica.

EjemplosEjemplo 1:Mostrar los registros de la tabla PASAJERO , ordenarlos de manera ascendente por su apellidopaterno.

Tabla Pasajero

--Seleccionando todas las filas y columnasselect all * from PASAJEROorder by apaterno ascgo

--Seleccionando sólo algunas columnas--1ra formaselect idpasajero as Codigo, apaterno as ApellidoPaterno,amaterno as ApellidoMaternofrom PASAJEROgo

--2da Forma

select idpasajero as [Código], apaterno as [Apellido Paterno],amaterno as [Apellido Materno]from PASAJEROgo

--Concatenando los Apellidosselect idpasajero as [Código], apaterno as ApellidoPaterno,amaterno as ApellidoMaternofrom PASAJEROgo

Cláusula TOP:Específica que el conjunto de filas devueltas por la consulta puede ser controlado en un número y en porcentaje. Considere que la muestra de registros devueltas siempre será el primer conjunto de filas especificadas. Para especificar el porcentaje sólo agregar la palabra PERCENT.

Ejemplo 2:Mostrar los 3 primeros registros de la tabla PASAJERO ordenados por su apellido paterno .

select top 3 idpasajero as ID, nombre as Nombre, apaterno as ApellidoP,amaterno as ApellidoM from pasajeroorder by apaterno ascgo

Ejemplo 3:Mostrar los 3 últimos registros de la tabla PASAJERO ordenados por ambos apellidos.

select top 3 idpasajero as ID, nombre as Nombre, apaterno as ApellidoP,amaterno as ApellidoM from pasajeroorder by apaterno desc, amaterno descgo

Ejemplo 4:Mostrar el 30% de registros de la tabla RESERVA.

Tabla Reserva

select top 30 percent * from reservago

16. Comando Select

Cláusula WhereCláusula 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

select * from pasajerowhere tipo_documento='DNI'go

Ejemplo 2:Mostrar los pagos que se han realizado la fecha “27-01-2013”.

Tabla Pago

select fecha,idpasajero,monto from pagowhere fecha='2013-1-27'

go

Ejemplo 3:Mostrar los pagos realizados en el mes de mayo del año 2014.

select fecha,idpasajero,monto from pagowhere month(fecha)='5'and year(fecha)='2014'go

Ejemplo 4:Mostrar los Pasajeros que no tienen asignado un teléfono.

select nombre,apaterno,amaterno,telefono from pasajerowhere telefono is nullgo

Ejemplo 5:Implementar un Script que permita mostrar los PASAJEROS con su correspondiente país de residencia.

select pas.nombre as Nombre,apaterno as ApellidoP,amaterno asApellidoM,pai.nombre as Paisfrom pasajero pas, pais paiwhere pas.idpais=pai.idpaisgo

17. Operadores en SQL ServerUn Operador es un símbolo que específica una acción que es realizada por una o más expresiones. Categorías de Operadores:

Aritméticos

Asignación

Lógicos

A) Operadores Aritméticos+ Sumar : Operador de Suma Númerica y concatenación de Columnas.- Restar : Operador de resta Númerica y también representa a números negativos. * Multiplicar : Operador de Multiplicación./ Dividir : Operador de División entera y fraccionaria.% Módulo : Operador que Devuelve el resto de una división.

B) Operador de AsignaciónSql server solo cuenta con un operador para la asignación de valores.El operador = se tendrá que colocar en cualquier expresión que necesite asignar un valor de cualquier tipo.

Ejemplos:

Ejemplo 1:Script que permita mostrar el resultado de la expresión 2*(10+15) - (8/3), utilizar la sentencia SELECT para mostrar el resultado.

Select '2*(10+5) - (8/3)' as [Operación],2*(10+5)-(8/3) as [Resultado]go

Ejemplo 2:Script que permita mostrar el resultado de la expresión Celsius=(Fharenheit-32)*5/9, usar la sentencia Select.

select '100' as Fahrenheit,

(100-32)*5/9 as Celsiusgo

Ejemplo 3:

Calcular el área de un Círculo, almacenando el valor del radio y de PI en sus variables respectivas.

declare @pi floatdeclare @radio floatdeclare @area float--Asignar valoresset @pi=3.1415set @radio=7--Encontrar el área del Círculoset @area=@pi * Power(@radio,2)

select @area as [Área]go

Ejemplo 4:Script que permita capturar en una variable el correo electrónico del pasajero con código ”P0000005”, usar variables Transact-SQL y sentencia Select para mostrar el email.

declare @correo varchar(70)

select @correo=email from pasajerowhere idpasajero='P0000005'--Mostramo el correo obtenidoselect 'P0000005' as [Código],@correo as [Email]go

18. Lenguaje de Manipupación de Datos

C) Operadores LógicosLos operadores lógicos tienen por misión comprobar la veracidad de Alguna Condición, estos como los operadores de comparación, devuelven el tipo de datos BOOLEAN (True, False, Unknown).

AND: Representa la Lógica Y, dos expresiones deben ser TRUE para poder devolver TRUE.ANY: Devuelve TRUE si alguna expresión del conjunto de expresiones es TRUE.

BETWEEN: Devuelve TRUE si el valor se encuentra dentro de un rango númerico o cadena.EXISTS: Devuelve TRUE si una determinada subconsulta devuelve por lo menos una fila de registros.IN: Devuelve TRUE si el operando se encuentra dentro de una lista de valores específicos.NOT: Invierte el valor booleano de una expresiónOR: Devuelve FALSE cuando ambas expresiones sean FALSE.SOME: Devuelve TRUE si de un conjunto de comparaciones alguna es TRUE.

Símbolos que representan a los operadores Lógicos, tenemos los siguientes:

= 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 año 2014 y no superen los $ 500.

Tabla Reserva

select * from reservawhere year(fecha)='2014'and costo<500go

Ejemplo 2:Script que permita mostrar las reservas cuyo costo se encuentre desde $400 hasta $700.

select * from reservawhere costo between 400 and 700go

select * from reservawhere costo>=400 and costo<=700go

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 pasajerowhere left(apaterno,1) between 'A' and 'C'order by apaterno asc, amaterno asc, nombre ascgo

Ejemplo 4:Script que permita mostrar los pasajeros cuya letra inicial de su apellido paterno No se encuentre entre A y C.

select apaterno, amaterno, nombre,num_documento from pasajerowhere not left(apaterno,1) between 'A' and 'C'order by apaterno asc, amaterno asc, nombre ascgo

Ejemplo 5:

Script que permita mostrar las reservas cuya fecha se encuentra en el año 2013.

select * from reservawhere fecha between '2013-01-01' and '2013-12-31'go

select * from reservawhere fecha>='2013-01-01' and fecha<='2013-12-31'go

select * from reservawhere year(fecha)=2013go

19. Lenguaje de Manipulación de Datos

C) Operadores Lógicos

Operador LIKE: Devuelve TRUE si el operando coincide a lo más con un patrón específico. El patrón es una cadena de caracteres que se buscará en la expresión. Los comodínes a utilizar son:

%: Representa a uno o más caracteres. Puede ser cualquier tipo de carácter textual o símbolo._: Representa un solo carácter de cualquier tipo.

[ ]: Representa cualquier carácter individual, dentro de un conjunto de caracteres.[^]: Representa cualquier carácter individual fuera del intervalo especificado.IS NOT NULL: Representa que el contenido de una columna no este vacía.

Ejemplos:

Ejemplo 1:

Script que permita verificar si un determinado país fue registrado o no en su tabla origen.

declare @pais varchar(40)set @pais='Perú' --Alt + 39if exists(select idpais from pais where nombre=@pais) print 'País ya se encuentra registrado'else print 'País no se encuentra registrado'go

Ejemplo 2:Script que permita mostrar los pasajeros cuyo nombre inicie con la letra A

Tabla Pasajero

select * from pasajerowhere nombre like 'A%'

go

Ejemplo 3: Mostrar los pasajeros que tienen una cuenta de correo GMAIL

select * from pasajerowhere email like '%gmail%'go

Ejemplo 4:Mostrar los pasajeros cuyo segundo carácter de su nombre sea la letra A, O ó U.

select * from pasajerowhere nombre like '_[AOU]%'go

Ejemplo 5:Mostrar los pasajeros cuyo segundo carácter de su nombre no sea la letra A, O ó U.

select * from pasajerowhere nombre like '_[^AOU]%'go

Ejemplo 6:Mostrar los pagos realizados por un determinado pasajero, filtrar a dicho pasajero por sunúmero de documento. Usar subconsultas Operadores T-SQL.

declare @documento varchar(50)set @documento ='47715777'

select * from pagowhere idpasajero=( select idpasajero from pasajero where num_documento=@documento)go

20. Combinación de Tablas JOINEn determinada ocasión se tendrá que unir más tablas para combinar los valores y poder mostrarlos juntos en una consulta, para esto utilizamos la cláusula JOIN.

Hay que diferenciar dos tipos de combinaciones:Internas: Devuelven todas las filas que cumplen con la condición de las tablas, en caso de no encontrarse coincidencia de valores no muestra nada.

Externas: las filas resultantes no son directamente de la tabla origen, podría ser de la izquierda, derecha o completa.

Combinación de tablas Join

INNER JOINJOINLEFT JOINRIGHT JOINFULL JOINCROSS JOIN

INNER JOINEl INNER JOIN es otro tipo de composición de tablas, permite emparejar filas de distintas tablas de forma más eficiente que con el producto cartesiano cuando una de las columnas de emparejamiento está indexada.

Ejemplo1. Implementar un Script que permita mostrar los pasajeros con su correspondiente país de residencia (Inner Join).

Tabla Pasajero-País

--Utilizando un producto cartesianoselect pas.nombre,pas.apaterno,pas.amaterno,pai.nombre as [País]from pasajero pas, pais paigo

--Utilizando la cláusula Inner Joinselect pas.nombre,pas.apaterno,pas.amaterno,pai.nombre as Paisfrom pasajero pas inner join pais paion pas.idpais=pai.idpaisgo

--Utilizando un producto cartesiano y aplicando un filtro Whereselect pas.nombre,pas.apaterno,pas.amaterno,pai.nombre as Paisfrom pasajero pas, pais paiwhere pas.idpais=pai.idpaisgo

2. Implementar un Script que permita mostrar los pasajeros con las siguientes columnas idpasajero, nombre, apaterno, amaterno, país, fecha de pago, monto de pago (Inner Join).

Tabla País-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 paion pas.idpais=pai.idpaisinner join pago pagon pag.idpasajero=pas.idpasajerogo

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

21. Combinación de Tablas JOIN

INNER JOIN

JOIN

LEFT JOIN

RIGHT JOIN

CROSS JOIN

FULL JOIN

LEFT JOIN

La sentencia LEFT JOIN retorna la pareja de todos los valores de la izquierda con los valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.

El operador de combinación LEFT JOIN, indica que todas las filas de la primera tabla se deben incluir en los resultados, con independencia si hay datos coincidentes en la segunda tabla.

Ejemplos:

1. Implementar un Script que permita mostrar los pasajeros que no han realizado ningún pago (Left Join).

Tabla País-Pasajero-Pago

--Utilizando Left Join

select pas.* from pasajero pas left join pago pag

on pas.idpasajero=pag.idpasajero

where pag.idpasajero is null

go

RIGHT JOINSe devuelven todas las filas de la tabla de la derecha. Cada vez que una fila de la tabla de la derecha no tenga correspondencia en la tabla de la izquierda, se devuelven valores NULL para la tabla de la izquierda.

El operador de combinación RIGHT JOIN, indica que todas las filas de la segunda tabla se deben incluir en los resultados, con independencia si hay datos coincidentes en la primera tabla.

2. Implementar un Script que permita mostrar todos los registros de la tabla pasajero y país (Right Join).

Tabla Pasajero-País

--Utilizando Right Join

select pai.nombre as Pais,pas.* from pasajero pas

right join pais pai

on pas.idpais=pai.idpais

go

FULL JOIN

Una combinación externa completa devuelve todas las filas de las tablas de la izquierda y la derecha. Cada vez que una fila no tenga coincidencia en la otra tabla, las columnas de la lista de selección de la otra tabla contendrán valores NULL. Cuando haya una coincidencia entre lastablas, la fila completa del conjunto de resultados contendrá los valores de datos

de las tablas base.

CROSS JOIN

Las combinaciones cruzadas presentan el producto cartesiano de todos los registros de las dostablas. Se emplea el CROSS JOIN cuando se quiere combinar todos los registros de una tabla con cada registro de otra tabla.

3. Implementar un Script que permita mostrar las registros de la tabla pasajero y pago de tal forma que se aplique un producto cartesiano entre sus filas (Cross Join).

select * from pasajero cross join pago pag

22. Datos Agrupados

GROUP BYAgrupa un conjunto de registros de acuerdo a los valores de una o más columnas de una tabla.

[ROLLUP] [CUBE] <Lista de Columnas>

ROLLUP : Genera filas de agregado a la cláusula Group By más filas de subtotal y también una fila con un total general.

CUBE: Genera filas de agregado a la cláusula Group By más una fila de superagregado y filas de tabulación Cruzada.

Ejemplos:Ejemplo 1:Implementar un Script que permita mostrar las claves primarias de la tabla país agrupadas desde la tabla pasajero. Usar la cláusula Group By.

Tabla Pasajero-País

--Utilizando Group Byselect p.idpais from pasajero pgroup by p.idpaisgo

2. Implementar un Script que permita determiner el total de Aviones que tiene cada aerolínea, y filtrar solo las aerolíneas que tienen más de un avión. Usar la cláusula Group By y Having.

Tabla Aerolínea-Avión

--Utilizando Group BySelect aer.nombre,count(avi.idavion) as Total_Avionesfrom aerolinea aer inner join avion avion avi.idaerolinea=aer.idaerolineagroup by aer.nombrehaving count(avi.idavion)>1go

23. Funciones Agregadas

Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor. Se suelen utilizar con la cláusula GROUP BY de la instrucción SELECT.SUMCOUNTMAXMINAVGSUM

Permite devolver la suma de todos los valores distinguidos en una determinada expresión. Estafunción solo puede utilizarse con columnas de tipo numérico.SUM(Columna o Expresión)

Ejemplos:

Ejemplo 1:Implementar un Script que permita mostrar el acumulado de los montos registrados en la tabla pago (Función SUM).

Tabla Pago

--Utilizando Función SUMselect sum(monto) as [Total Acumulado]from pagogo

Ejemplo 2:Implementar un Script que permita mostrar el acumulado de los montos registrados en la tabla pago por cada año, considere el año de la columna fecha. Use la Función SUM y la cláusula Group By.

--Utilizando SUM y Group Byselect year(fecha) as [Año], sum(monto) as [Total Pago]from pagogroup by year(fecha)go

Ejemplo 3:Implementar un Script que permita mostrar el acumulado de los montos registrados en la tabla pago por cada año, y mes, considere el año de la columna fecha. Use la Función SUM y la cláusula Group By.

--Utilizando SUM y Group Byselect year(fecha) as [Año],month(fecha) as Mes, sum(monto) as [Total Pago] from pagogroup by year(fecha),month(fecha)go

24. Funciones AgregadasSUMCOUNTMAXMINAVG

COUNTFunción que permite devolver el número de elementos de un grupo. Count siempre devolverá un valor numérico.

COUNT(All ó Distinct ó Columna ó *)

All: Al especificarlo todos los valores son contabilizados.

Distinct: Permite definir la no repitencia de valores condicionados de la consulta.

Columna: Se puede especificar el nombre de una columna de la tabla a contar.

Asterisco (*): Representa a todas las filas de la tabla.

Ejemplos

Ejemplo 1:Implementar un Script que permita determinar el total de pasajeros registrados (Función COUNT).

Tabla Pasajero

--Utilizando Función countselect count(idpasajero) as Total_Pasajerosfrom pasajerogo

select count(*) as Total_Pasajerosfrom pasajerogo

Ejemplo 2:Implementar un Script que permita determinar el total de pasajeros registrados agrupados por su país, tener en cuenta las columnas a mostrar Nombre del país, Total Pasajeros. Use la Función agregada COUNT y la cláusula Group By e Inner Join.

Tabla Pasajero-País

T--Usando la Función agregada COUNT y la cláusula Group By e Inner Join.select pai.nombre as [País],count(pas.idpasajero) as[Total Pasajeros] from pasajero pas inner join pais paion pas.idpais=pai.idpaisgroup by pai.nombrego

3. Implementar un Script que permita mostrar el total de pasajeros y el monto acumulado de pagos de sus viajes realizados por un determinado país.

Tabla Pasajero-País-Pago

select pai.nombre as [País],count(distinct pas.num_documento)as [Total Pasajeros], sum(pag.monto) as [Monto Acumulado]from pasajero pas inner join pais paion pai.idpais=pas.idpais inner join pago pagon pag.idpasajero=pas.idpasajerogroup by pai.nombrego

25. Funciones AgregadasSUMCOUNTMAXMINAVG

MAXFunción que permite determinar el valor máximo de una expresión propuesta por el usuario.Solo puede ser usado en columnas o expresiones que tenga como tipo de dato un entero.

MAX(All ó Columna ó Expresión).

MINFunción que permite determinar el valor mínimo de una expresión propuesta por el usuario.Solo puede ser usado en columnas o expresiones que tenga como tipo de dato un entero.MIN(All ó Columna ó Expresión).

MAX Y MINAll: Especifica que todos los valores son evaluados.

Columna: Se puede especificar el nombre de una columna de la tabla a evaluar.

Expresión: Representa a una función SQL o a un juego de operadores aritméticos.

Ejemplos:

Ejemplo 1:Implementar un Script que permita mostrar el monto más alto y más bajo registrado en la tabla PAGO (Función MAX y MIN).

Tabla Pago

--Usando la función MAX y MINselect max(monto) as [Monto Mayor],min(monto) as [Monto Menor]from pagogo

Ejemplo 2:Implementar un Script que permita mostrar los montos más altos y más bajos por año de la tabla pago, ordenados de forma descendente.

--Usando la función MAX y MINselect year(fecha)as [Año],max(monto) as [Monto Mayor],min(monto) as [Monto Menor]from pagogroup by year(fecha)order by year(fecha) descgo

Ejemplo 3:Implementar un Script que permita mostrar los datos del pasajero que registra el mayor monto desde la tabla PAGO.

--Usando la función MAXdeclare @maxPago money

select @maxPago=max(monto) from pago

select pas.*from pasajero paswhere pas.idpasajero=(select idpasajero from pagowhere monto=@maxPago)go

26. Funciones Agregadas

SUMCOUNTMAXMINAVG

AVGFunción que devuelve el promedio de los valores de un determinado grupo, consideremos que dicha columna debe de ser numérica.

AVG(Columna ó Expresión)

Columna: Se puede especificar el nombre de una columna de la tabla para especificar el promedio.

Expresión: Representa a una función SQL o a un juego de operadores aritméticos. 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. (Función AVG).

Tabla Tarifa

--Usando la Función AVGselect avg(precio) as [Tarifa Promedio]from tarifago

Ejemplo 2:Implementar un Script que permita mostrar el monto promedio de pagos agrupado por países. (Función AVG).

Tabla País-Pasajero-Pago

--Usando la Función AVGselect pai.nombre,avg(pag.monto) as [Promedio Pago]from pago pag inner join pasajero pason pag.idpasajero=pas.idpasajeroinner join pais paion pai.idpais=pas.idpaisgroup by pai.nombrego

27. Agregar Conjunto de Resultados: UNION

El operador UNION permite mostrar los resultados de varias consultas SELECT en una sola. Laregla del uso para este operador es que ambas tablas deben de tener las mismas columnas o especificarlas de la misma forma, y que los tipos de datos sean exactamente iguales.

UNION Consulta1 UNION Consulta2

Ejemplos

Ejemplo 1:Implementar un Script que permita mostrar los apellidos paternos de los pasajeros y los nombres de los países en una misma consulta.

Tabla País-Pasajero

--Agregando resultados UNIONselect pas.idpasajero,pas.apaternofrom pasajero pasUNIONselect pai.idpais,pai.nombrefrom pais paigo

Ejemplo 2:Implementar un Script que permita mostrar el total de registros de las tablas Pasajero, País, Pago desde una misma consulta.

Tabla País-Pasajero-Pago

--Agregando resultados UNION select 'pasajero' as [Tabla], count (idpasajero) as [Total Registros] from pasajero

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

28. Programación Transact SQL

Transact SQL es el lenguaje de programación que proporciona Microsoft SQl Server para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los lenguajes de programación ya que esta parte está limitada en SQL.

ScriptsProcedimientos Almacenados Funciones Triggers

Estructuras de Control:

Estructuras Secuenciales: Las instrucciones se ejecutan una a continuación de otra.

Estructuras Selectivas: Las instrucciones se ejecutan según el valor lógico de una variable.

Estructuras Repetitivas: Las instrucciones se ejecutan en forma repetida según una condiciónlógica llamada ciclo ó bucle.

Estructura Selectiva IFLa estructura IF evalúa una condición lógica y en función del resultado booleano (true o false) se realiza una u otra expression.

Estructura Selectiva IF - Sintáxis

IF <Condición_Lógica><BEGIN> <Expresiones_CondiciónTrue><END>ELSE<BEGIN> < Expresiones_CondiciónFalse><END>

Ejemplos:

Ejemplo 1:Implementar un Script que permita insertar un nuevo registro en la tabla país, en caso se registre duplicidad en el nombre de un país mostrar un mensaje de “país ya registrado”, caso contrario insertar dicho registro y mostrar un mensaje de “País registrado Correctamente”.

Tabla País

--Estructura Condicional IFdeclare @idpais char(4)='0011',@nombre varchar(30)='Argelia'

if exists(select * from pais where nombre=@nombre)begin print 'País ya Registrado'endelsebegin insert into pais values (@idpais,@nombre) print 'País Registrado Correctamente' endgo

Ejemplo 2:Implementar un Script que permita Mostrar el mensaje de No hay Pasajeros en este país, solo cuando el total de pasajeros asignados a un determinado País no tenga registros en la tabla pasajero. Caso contrarios determinar cuántos pasajeros tiene dicho país.

Tabla País-Pasajero

declare @nombre char(40)='Bolivia'

if (select count(*) from pasajero pas left join pais pai on pas.idpais=pai.idpais group by pai.nombre having pai.nombre=@nombre) is nullbegin print 'No hay Pasajeros en este País'endelsebegin declare @total int select @total=count(*) from pasajero pas left join pais pai on pas.idpais=pai.idpais group by pai.nombre having pai.nombre=@nombre

print 'El País ' + @nombre + 'Tiene ' + cast(@total as char(2)) + ' Pasajero'endgo

29. Programación Transact SQL

ScriptsProcedimientos AlmacenadosFuncionesTriggers

Estructura Condicional Múltiple CASE

La estructura CASE evalúa una expresión que podrá tomar N valores distintos, según se elija uno de estos valores se tomará N posibles acciones

Estructura Múltiple CASE - SintáxisCASE <Columna>WHEN Expresión THEN Expresión_Resultado[…n][ ELSE Expresión_Falsa]END

Ejemplos:

Ejemplo 1:Implementar un Script que permita mostrar la fecha en texto registrada en la tabla RESERVA.

2014-10-01 = 01 Octubre 2014

Tabla Reserva

--Estructura Múltiple Caseselect *,cast(day(fecha) as char(2)) +case month(fecha) when 1 then ' Enero ' when 2 then ' Febrero ' when 3 then ' Marzo ' when 4 then ' Abril ' when 5 then ' Mayo ' when 6 then ' Junio ' when 7 then ' Julio ' when 8 then ' Agosto ' when 9 then ' Septiembre ' when 10 then ' Octubre ' when 11 then ' Noviembre ' when 12 then ' Diciembre 'end+ cast(year(fecha) as char(4)) as [Fecha]from reservago

Ejemplo 2:Implementar un Script que permita mostrar el número total de pasajeros por país y el mensaje “NO CUENTA” solo a los países cuyo número de pasajeros sea cero.

Tabla País-Pasajero

--Estructura Múltiple Caseselect pai.nombre, count(pas.idpasajero)as [Total Pasajeros],case when count(pas.idpasajero)=0 then 'NO CUENTA' else '' end as [Mensaje]from pais pai left join pasajero pason pai.idpais=pas.idpaisgroup by pai.nombrego