Story Transcript
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
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, que permite 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 de la 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 tabla fuente.
formando una extensión de la
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ácter Char: 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 Enteros Int: Números enteros desde -2 31 (-2 147 483 648) a 2 31-1 (2 147 483 647). Tipos de Datos Fecha Date: Tipo de dato que muestra la fecha en el siguiente formato 07-07-2014. Tipo de Datos Decimal Decimal: Tipo de datos que se utiliza para almacenar números decimales que pueden tener hasta 38 dígitos. Tipo de Datos Monetario Money: Cantidad monetaria positiva o negativa. Propiedades de Datos Propiedad 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.
Relaciones El modo de relacionar registros entre tablas es por tanto mediante referencias, para lo cual se usan los identificadores definidos como claves primarias y 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 las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las 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ánea En 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 relacionar información. Esto es una parte esencial de la normalización de base de datos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una 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 Diagrama de 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 Datos SENTENCIA 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 implementarla IF DB_ID('DBRESERVAM') IS NOT NULL BEGIN USE MASTER DROP DATABASE DBRESERVAM END --creamos la base de datos CREATE DATABASE DBRESERVAM ON 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 ELLA USE DBRESERVAM GO 6. Tipos de Datos en Sql Server 2014 Tipo de Datos Carácter Char: 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 Enteros Int: Números enteros desde -2 31 (-2 147 483 648) a 2 31-1 (2 147 483 647). Tipos de Datos Fecha Date: Tipo de dato que muestra la fecha en el siguiente formato 07-07-2014. Tipo de Datos Decimal Decimal: Tipo de datos que se utiliza para almacenar números decimales que pueden tener hasta 38 dígitos. Tipo de Datos Monetario Money: Cantidad monetaria positiva o negativa. Propiedades de Datos Propiedad 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 ELLA USE DBRESERVAM GO --IMPLEMENTANDO LAS TABLAS DE LA BASE DATOS --TABLA PAÍS CREATE TABLE pais ( idpais char(4) not null primary key, nombre varchar(30) not null unique ) go
--TABLA PASAJERO CREATE 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 AEROPUERTO CREATE 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ÍNEA CREATE TABLE aerolinea ( idaerolinea int not null primary key, ruc char(11) not null unique, nombre varchar(40) not null unique ) go --TABLA AVIÓN CREATE TABLE avion ( idavion char(5) not null primary key, idaerolinea int not null, fabricante varchar(40) null, tipo varchar(30) null, capacidad int not null ) go
7. Restricciones de los Campos Unique: 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 Dbreserva e implementando las restricciones
--Eliminaré la tabla avión y la creare de nuevo pero dejando un campo menos drop table avion --creando de nuevo la tabla avion CREATE 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 capacidad ALTER TABLE AVION ADD capacidad int not null go --eliminaré nuevamente capacidad --ALTER TABLE avion --drop column capacidad --go --voy a modificar la columna tipo ALTER TABLE avion ALTER COLUMN tipo varchar(30) not null go --TABLA ASIENTO CREATE TABLE asiento ( idasiento int not null primary key, letra char(2) not null, fila int not null ) go --TABLA TARIFA CREATE TABLE tarifa( idtarifa int not null primary key, clase varchar(20) not null unique,
precio money not null, impuesto money not null ) go --TABLA RESERVA CREATE TABLE reserva( idreserva int not null primary key, costo money not null, fecha date NULL, observacion varchar(200) null ) go --AGREGAREMOS UNA 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 VUELO CREATE TABLE vuelo( idasiento int not null, idaeropuerto char(5) not null, idreserva int not null, idavion char(5) not null, idtarifa int not null ) go --IMPLEMENTANDO LAS LLAVES PRIMARIAS DE LA TABLA VUELO ALTER TABLE VUELO ADD PRIMARY KEY NONCLUSTERED (idasiento,idaeropuerto,idreserva,idavion) go --TABLA PAGO CREATE TABLE pago( idpago int not null primary key identity, idreserva int not null, idpasajero char(8) not null, fecha date DEFAULT GETDATE(), monto money not null, tipo_comprobante varchar(20) not null, num_comprobante varchar(15)not null, impuesto decimal (5,2) not null ) go --AGREGARE UNA RESTRICCIÓN CHECK PARA SOLO INGRESAR FECHAS IGUALES O MENORES A LA FECHA ACTUAL
ALTER TABLE pago ADD CONSTRAINT CHK_PAGO_FECHA CHECK (fecha70
go 5. Eliminar los registros de la tabla PAGO, que se han efectuado en el año 2012 ó 2013. Tabla Pago
delete from pago where year(fecha)=2012 or year(fecha)=2013 go 14. Back Up de Base de Datos Una 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 caso de 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áxis SELECT [ALL - DISTINCT] [TOP número – [PERCENT] ] [FROM] tabla [WHERE ]
[] [HAVING ] [ORDER BY columna [ASC-DESC]] Cláusulas Principales ALL: Especifica el conjunto de filas devueltas por la consulta. DISTINCT: Sentencia utilizada para mostrar filas únicas no repetidas. TOP: Para mostrar solo un 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. Ejemplos Ejemplo 1: Mostrar los registros de la tabla PASAJERO , ordenarlos de manera ascendente por su apellido paterno. Tabla Pasajero
--Seleccionando todas las filas y columnas select all * from PASAJERO order by apaterno asc go --Seleccionando sólo algunas columnas --1ra forma select idpasajero as Codigo, apaterno as ApellidoPaterno, amaterno as ApellidoMaterno from PASAJERO go --2da Forma
select idpasajero as [Código], apaterno as [Apellido Paterno], amaterno as [Apellido Materno] from PASAJERO go --Concatenando los Apellidos select idpasajero as [Código], apaterno as ApellidoPaterno, amaterno as ApellidoMaterno from PASAJERO go
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 pasajero order by apaterno asc go
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 pasajero order by apaterno desc, amaterno desc go
Ejemplo 4: Mostrar el 30% de registros de la tabla RESERVA. Tabla Reserva
select top 30 percent * from reserva go
16. Comando Select Cláusula Where Clá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 pasajero where 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 pago where 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 pago where 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 pasajero where telefono is null go
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 asApell idoM,pai.nombre as Pais from pasajero pas, pais pai where pas.idpais=pai.idpais go
17. Operadores en SQL Server Un 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ón Sql 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 Celsius go
Ejemplo 3: Calcular el área de un Círculo, almacenando el valor del radio y de PI en sus variables respectivas.
declare @pi float declare @radio float declare @area float --Asignar valores set @pi=3.1415 set @radio=7 --Encontrar el área del Círculo set @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 pasajero where idpasajero='P0000005' --Mostramo el correo obtenido select 'P0000005' as [Código], @correo as [Email] go
18. Lenguaje de Manipupación de Datos C) Operadores Lógicos Los 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ón OR: 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 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 IF declare @idpais char(4)='0011', @nombre varchar(30)='Argelia' if exists(select * from pais where nombre=@nombre) begin print 'País ya Registrado' end else begin insert into pais values (@idpais,@nombre) print 'País Registrado Correctamente' end go
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 null begin print 'No hay Pasajeros en este País' end else begin 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
end go
print 'El País ' + @nombre + 'Tiene ' + cast(@total as char(2)) + ' Pasajero'
29. Programación Transact SQL Scripts Procedimientos Almacenados Funciones Triggers 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áxis CASE 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 Case select *, 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 reserva go
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 Case select 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 pas on pai.idpais=pas.idpais group by pai.nombre go