Upload
others
View
24
Download
0
Embed Size (px)
Citation preview
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