You are on page 1of 67

Base de Datos

UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PARTE I: MICROSOFT SQL SERVER 2012

SQL (Lenguaje de consulta estructurado): Es un tipo de lenguaje vinculado con


la gestin de bases de datos de carcter relacional que permite la especificacin de distintas
clases de operaciones. Gracias a la utilizacin del lgebra y del clculo relacional, el
lenguaje SQL brinda la posibilidad de realizar consultas que ayuden a recuperar
informacin de las bases de datos de manera sencilla.

Caractersticas
Algunas de las caractersticas de este lenguaje son:
Compatible con todos los sistemas de bases de datos comerciales importantes.
Estandarizada - nuevas caractersticas en el tiempo.
Interactiva a travs de interfaz grfica de usuario o del sistema.
Declarativa, basada en lgebra relacional.

1
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Lenguaje de descripcin de datos (DDL)


DDL (Lenguaje de descripcin de datos) es un lenguaje que permite definir la base de datos
(su estructura o schemas), tiene una sintaxis similar a los lenguajes de programacin.

Ejemplos de DDL:
CREATE TABLE nombre_tabla;
DROP TABLE nombre_tabla;
ALTER TABLE nombre_tabla ADD id INTEGER;

Descripcin de los comandos


CREATE:
Para crear una nueva base de datos, ndice o almacenamiento de consultas.
Un argumento CREATE en SQL crea un objeto dentro del sistema de administracin de la
base de datos relacional (RDBMS).
El tipo de objetos que se pueden crear depende de qu RDBMS est siendo utilizado, pero
la mayora soporta la creacin de tablas, ndices, usuarios y bases de datos.
Algunos sistemas (tales como PostgreSQL) permiten CREATE y otros comandos DDL,
dentro de transacciones, y por lo tanto pueden ser revertidos.
DROP:
Para destruir una base de datos, tabla, ndice o vista existente.
Un argumento DROP en SQL remueve un objeto dentro del sistema de administracin de
la base de datos relacional (RDBMS).
El tipo de objetos que se pueden eliminar depende de que RDBMS est siendo utilizado,
pero la mayora soporta la eliminacin de tablas, ndices, usuarios y bases de datos.
Algunos sistemas (tales como PostgreSQL) permiten DROP y otros comandos DDL,
dentro de transacciones, y por lo tanto pueden ser revertidos.
ALTER:
Se utiliza para modificar la estructura de la tabla, como en los casos siguientes:

o Aadir una columna.


o Eliminar una columna.
o Cambiar el nombre de una columna.
o Cambiar el tipo de datos para una columna.

2
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Lenguaje de manipulacin de datos (DML)


DML (Lenguaje de manipulacin de datos) se refiere a los comandos que permiten a un
usuario manipular los datos de las tablas, es decir, consultar tablas, aadir filas, borrar filas
y actualizar columnas.

Ejemplos de DML
SELECT atributo FROM nombre_tabla;
INSERT INTO nombre_tabla (atributo_1,..., atributo_n) VALUES (dato_1,..., dato_n);
DELETE FROM nombre_tabla WHERE condicion;
UPDATE nombre_tabla SET atributo = nuevo dato WHERE condicion;

Descripcin de comandos
SELECT

Devuelve el resultado de un conjunto de registros de una o ms tablas.


Un argumento SELECT devuelve cero o ms filas de una o ms tablas de una base de
datos o vistas de base de datos.
En la mayora de las aplicaciones SELECT es el comando DML ms usado.
Como SQL es un lenguaje de programacin declarativo, consultas SELECT especifican el
conjunto de resultado, pero no como calcularlo.
La base de datos traduce la consulta a un plan de consulta, que puede variar dependiendo
de la ejecucin, la versin de la base de datos y el software de base de datos.
Esta funcionalidad es llamada optimizador de consulta, puesto que es responsable de
buscar el mejor plan de ejecucin para la consulta, tomando en cuenta las restricciones
aplicables.
Instruccin SELECT bsica
SELECT A1, ..., An FROM R1, ..., Rm WHERE condicin
Significado:
SELECT A1,,An
Atributos que retorna
FROM R1,,Rm
Relaciones o tablas
WHERE condicin

3
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Combinar, filtrar: Lo que busca esta consulta es mostrar las columnas A1,,An de las
tablas o relaciones R1,,Rm, siguiendo alguna condicin.
lgebra relacional:
A1,, An (condicin (R1Rm))
Comandos SQL
INSERT : agrega uno o ms registros a una tabla de una base de datos relacional.
DELETE : elimina uno o ms registros de una tabla. Un subconjunto de datos
puede ser eliminado si existe una condicin, de lo contrario todos los registros sern
eliminados.
UPDATE : cambia los datos de uno o ms registros de una tabla. Una fila o un
subconjunto de filas puede ser actualizadas utilizando una condicin.

Lenguaje de descripcin de datos (DDL)

1. SENTENCIA CREATE: Comando de creacin de objetos de una base de datos.

Estructura:
CREATE OBJETO NOMBREOBJETO (
--ESTRUCTURA DEL OBJETO
)

CASO I.1.1: Implementar una consulta que permita crear la base de datos
METROPILITANO con valores estndar. As mismo generar un backup de la base de datos
creada.
CREATE DATABASE METROPOLITANO

Si en caso deseamos usar la base de datos METROPOLITANO, ejecutar el siguiente


comando.
USE METROPOLITANO
GO

4
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Para verificar los parmetros de creacin de la base de datos METROPOLITANO, servicio


local, se tiene que ejecutar el siguiente comando.

SP_HELPDB METROPOLITANO

Ahora veremos cuatro maneras de crear un backup de una base de datos en SQL SERVER.

A. La primera forma de generar una copia de seguridad de la base de datos es copiando


los archivos con el nombre de la base de datos con extensin .mdf y LDF, en
nuestro caso METROPOLITANO.mdf y METROPOLITANO_log.LDF, los
mismos que se encuentran en la siguiente direccin:

C:\Program Files\Microsoft SQL Server\ MSSQL10_50.MSSQLSERVER\


MSSQL\DATA

Como podemos ver no nos permite realizar la copia de la base de datos


METROPOLITANO, mostrando el siguiente mensaje.

5
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Esto es debido a que la base de datos METROPOLITANO est siendo usada, para
esto debemos ir al panel de control > herramientas administrativas > servicios, o
simplemente ejecutar Inicio + R y escribir services.msn, como se muestra a
continuacin:

Ahora bien lo que haremos es detener el servicio SQL SERVER, ubicaremos el


servicio de nombre SQL Server (MSSQLSERVER).

6
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Luego podremos copiar los archivos de la base de datos METROPOLITANO, y


poder usarla en otras mquinas, con servicio local SQL Server.

Para restaurar la base de datos METROPOLITANO, copiamos los archivos de la


base de datos que queremos restaurar en la siguiente direccin:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\


MSSQL\DATA

7
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Ahora bien iremos a la herramienta SQL SERVER y realizaremos lo siguiente.

Como podemos ver la base de datos METROPOLITANO se encuentra lista para ser
usada.

8
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

B. La segunda forma de generar una copia de seguridad de una base de datos


cualquiera en SQL Server es la siguiente:

En nuestro caso trabajaremos con la base de datos METROPOLITANO.

Ahora bien lo que haremos es cerrar el servicio solo de la base de datos que
queremos salvar, para esto escribimos el siguiente comando SQL:

USE master
GO
SP_DETACH_DB 'METROPOLITANO'
GO

Luego para restaurar la base de datos que queremos copiar en nuestro caso
METROPOLITANO, lo que haremos es copiar a la siguiente direccin

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\


MSSQL\DATA

Para restaurar la base de datos desde el SQL Server ejecutaremos los mismos pasos
del mtodo anterior de restauracin o en su defecto levantar el servicio de la base de
datos con el siguiente comando:

USE master
GO
SP_ATTACH_DB 'METROPOLITANO', 'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\
METROPOLITADNO.mdf'
GO

9
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

C. Para obtener un backup de la base de datos es generando un archivo de tipo .bak, de


la siguiente forma, as mismo el backup generado tendr la siguiente direccin:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\


MSSQL\Backup

10
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Para restaurar el backup creado lo que haremos es ir a la siguiente opcin y listo:

D. La otra forma de generar un backup es a nivel script:

11
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Luego pasaremos a restaurar la base de datos METROPOLITANO seleccionando el


archivo donde se encuentra el script de la base de datos la misma que lo abriremos
desde SQL Server y pasaremos a ejecutar el script.

12
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Caso I.1.2: Implementar un script que permita crear la tabla BOLETA dentro de la
base de datos METROPOLITANO con las siguientes caractersticas:

BOLETA N 000000011515452
FECHA DE EMISION: 06/08/2012
MONTO: 10.00

USE METROPOLITANO
GO

CREATE TABLE BOLETA (


numeroBoleta CHAR(15) NOT NULL,
fechaEmision DATE NOT NULL,
monto MONEY NOT NULL
)
GO
------------ LLENADO DE REGISTROS A LA TABLA BOLETA ------------

INSERT INTO BOLETA VALUES ('00000001','22/04/2008', 200)


INSERT INTO BOLETA VALUES ('00000002','02/01/2008', 350)
INSERT INTO BOLETA VALUES ('00000003','03/10/2008', 250)
INSERT INTO BOLETA VALUES ('00000004','01/05/2007', 150)
INSERT INTO BOLETA VALUES ('00000005','07/12/2008', 200)
INSERT INTO BOLETA VALUES ('00000006','16/08/2008', 120)
INSERT INTO BOLETA VALUES ('00000007','03/01/2007', 50)
INSERT INTO BOLETA VALUES ('00000008','05/03/2007', 200)
INSERT INTO BOLETA VALUES ('00000009','14/09/2008', 10)
INSERT INTO BOLETA VALUES ('00000010','18/12/2008', 50)
INSERT INTO BOLETA VALUES ('00000011','09/11/2007', 100)
INSERT INTO BOLETA VALUES ('00000012','06/10/2007', 80)

13
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Caso I.1.3: Implementar un script que permita crear el TRIGGER TX_MENSAJE


que muestre un mensaje al usuario cuando se realice una insercin o actualizacin
a la tabla BOLETA.

CREATE TRIGGER TX_MENSAJE


ON BOLETA
FOR INSERT, UPDATE
AS
PRINT 'LA BOLETA SE ACTUALIZO CORRECTAMENTE'
GO
PROBAR EL TRIGGER
Insertando un nuevo registro
INSERT INTO BOLETA VALUES ('00000013','07/08/2012', 20.50)
GO
UPDATE BOLETA
SET FECHAEMISION='07/08/2012',
MONTO=20
WHERE NUMEROBOLETA=00000013
GO
Caso I.1.4: Implementar un script que permita crear el procedimiento almacenado
SP_TOTALBOLETAS de la tabla BOLETA.

CREATE PROCEDURE SP_TOTALBOLETAS


AS
BEGIN
SELECT
YEAR (FECHAEMISION) AS [AO],
COUNT (*) AS [TOTAL]
FROM BOLETA
GROUP BY YEAR (FECHAEMISION)
END
GO

14
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Probar el Procedimiento Almacenado


EXEC SP_TOTALBOLETAS

Caso I.1.5: Implementar un script que permita crear la funcin


FN_TOTALBOLETAS de un determinado ao ingresado por el usuario a la tabla
BOLETA.
CREATE FUNCTION FN_TOTALBOLETAS (@AO INT)
RETURNS INT
AS
BEGIN
DECLARE @TOTAL INT
SELECT @TOTAL=COUNT (*)
FROM BOLETA
WHERE YEAR (FECHAEMISION)=@AO
GROUP BY YEAR (FECHAEMISION)
RETURN @TOTAL
END
Probando la funcin usando una consulta:
SELECT DBO.FN_TOTALBOLETAS (2007) AS [TOTAL DE BOLETAS]

O usando el comando Print:


PRINT 'EL TOTAL DE BOLETAS ES:+STR (DBO.FN_TOTALBOLETAS (2007))

Caso I.1.6: Implementar un script que permita crear la vista VBOLETAS donde
muestre los registros contenidos en la tabla BOLETAS.

CREATE VIEW VBOLETA


AS
SELECT B.NUMEROBOLETA, B.FECHAEMISION, B.MONTO
FROM BOLETA B
GO

15
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Probar la Vista
SELECT * FROM VBOLETA

2. SENTENCIA ALTER: Comando de modificacin de objetos de una base de


datos.

Estructura:

ALTER OBJETO NOMBREOBJETO (


--DATOS MODIFICADOS
)

Caso I.2.1: Implementar un script que permita agregar un archivo secundario a la


base de datos METROPOLITANO llamado METROPOLITANO_SEC2 de tamao
inicial 5MB y un tamao mximo de 10MB con un factor de crecimiento de 2%.

SP_HELPDB METROPOLITANO
ALTER DATABASE METROPOLITANO
ADD FILE (
NAME='METROPOLITANO_SEC2',
FILENAME='C:\Program Files\Microsoft SQL Server\ MSSQL10_50.
MSSQLSERVER\MSSQL\DATA\METROPOLITANO_SEC2.NDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=2%
)

16
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Caso I.2.2: Implementar un script que permita modificar la precisin de la columna


Nmero de Boleta asignada inicialmente con el valor 20 modificarlo por 25 de la
tabla Boleta:

SP_COLUMNS BOLETA
ALTER TABLE BOLETA
ALTER COLUMN NUMEROBOLETA CHAR (25) NOT NULL
GO

Caso I.2.3: Implementar una consulta que permita modificar el TRIGGER


TX_MENSAJE que adicione al mensaje anterior la fecha de insercin o
actualizacin en la tabla Boleta.

ALTER TRIGGER TX_MENSAJE


ON BOLETA
FOR INSERT, UPDATE
AS
PRINT 'LA BOLETA SE ACTUALIZO CORRECTAMENTE'
PRINT 'FECHA: '+CAST (GETDATE () AS VARCHAR (25))
GO

INSERT INTO BOLETA VALUES ('00000014','01/07/2016', 36.56)

UPDATE BOLETA SET monto=40


WHERE numeroBoleta='00000014'

17
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Caso I.2.4: Implementar un script que permita modificar el procedimiento


almacenado SP_TOTALBOLETAS de la tabla BOLETA donde muestre la columna
MES agrupando el nmero de boletas por cada mes y al final mostrar el total de
boletas registradas.

ALTER PROCEDURE SP_TOTALBOLETAS


AS
BEGIN
SELECT
YEAR (FECHAEMISION) AS [AO],
MONTH (FECHAEMISION) AS [MES],
COUNT (*) AS [TOTAL]
FROM BOLETA
GROUP BY
ROLLUP (YEAR (FECHAEMISION), MONTH (FECHAEMISION))
END
GO

Caso I.2.5: Implementar una consulta que permita modificar la funcin


FN_TOTALBOLETAS de un determinado ao y un mes ingresado por el usuario a
la tabla BOLETAS.

ALTER FUNCTION FN_TOTALBOLETAS (@AO INT,@MES INT)


RETURNS INT
AS
BEGIN
DECLARE @TOTAL INT
SELECT @TOTAL=COUNT (*)
FROM BOLETA
WHERE YEAR (FECHAEMISION)=@AO

18
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

AND MONTH (fechaEmision)=@MES


GROUP BY YEAR (FECHAEMISION)
RETURN @TOTAL
END
GO

SELECT DBO.FN_TOTALBOLETAS (2007,5) AS [TOTAL BOLETAS]


SELECT *FROM BOLETA

DECLARE @AO INT=2012,@MES INT=8


PRINT 'EN EL MES: '+CAST (@MES AS CHAR (2))+
' DEL AO: '+ CAST(@AO AS CHAR (4))+
' EXISTEN: '+ CAST(DBO.FN_TOTALBOLETAS(@AO,@MES) AS
VARCHAR (10))+' BOLETA(S)'

Caso I.2.6: Implementar una consulta que permita modificar la vista VBOLETAS
donde muestre solo las columnas Numero de Boleta y Fecha de Emisin de la tabla
BOLETAS, adems de encriptar la informacin de la implementacin.

ALTER VIEW VBOLETA


--WITH ENCRYPTION
AS
SELECT B.NUMEROBOLETA, B.FECHAEMISION
FROM BOLETA B
GO

SELECT * FROM VBOLETA

19
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

3. SENTENCIA DROP: Comando que elimina un objeto de una base de datos

Estructura:

DROP OBJETO NOMBREOBJETO

Caso I.3.1: Implementar un script que permita eliminar la base de datos


METROPOLITANO.

USE MASTER
GO

DROP DATABASE METROPOLITANO


GO

Caso I.3.2: Implementar una consulta que permita eliminar la tabla boleta de la
base de datos METROPOLITANO.

DROP TABLE BOLETA


GO

Caso I.3.3: Implementar un script que permita eliminar el trigger TX_MENSAJE


asociado a la tabla BOLETA de la base de datos METROPOLITANO.

DROP TRIGGER TX_MENSAJE

Inhabilitar el Trigger TX_MENSAJE


Disable Trigger 'TX_MENSAJE' ON DATABASE

DISABLE TRIGGER 'TX_MENSAJE'

20
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PARTE 02: GESTIN DE BASE DE DATOS

CASO PRCTICO: RESERVA DE VUELOS

El sistema de reserva de vuelos es un sistema que permite al usuario hacer consultas y


reservas de vuelos, adems de poder comprar los boletos de viajes de forma remota, sin la
necesidad de recurrir a una agencia de viajes. Se desea implementar un sistema de reservas
que sea accesible va web.
El sistema actualmente cuenta con un terminal de servicio de reserva en donde se presenta
un mensaje de bienvenida al sistema, describiendo los servicios ofrecidos junto con la
opcin para registrarse si es la primera vez que accede a ella o caso contrario usar el
sistema de reserva de vuelos. Este acceso se da por medio de un usuario (email) y una clave
previamente registrada en el sistema.
Una vez registrado el usuario este podr seleccionar los siguientes procesos:
Consulta de vuelos
Reserva de vuelos
Compra de boletos areos
La consulta de vuelos se puede realizar de las siguientes formas:
Horarios de vuelos
Tarifas de vuelos
Informacin de vuelos

21
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

La consulta segn el horario muestra los horarios de las diferentes aerolneas que dan el
servicio entre dos ciudades. La consulta segn tarifa muestra los diferentes vuelos entre dos
ciudades ordenados por su costo. La informacin de vuelos se usa para consultar el estado
de un determinado vuelo para el mismo da, si este est en hora. Se pueden incluir
preferencias en las bsquedas como fecha y horario deseado, categora del vuelo, aerolnea
deseada y si ocasionalmente desean vuelos directos.

La reserva de vuelo permite al usuario hacer una reserva para un vuelo particular,
especificando la fecha y horario, bajo una tarifa establecida. Es posible reservar un
itinerario compuesto de mltiples vuelos, para uno o ms pasajeros, adems de poder
reservar asientos. La compra permite al usuario, dada una reserva de vuelo y un nmero de
tarjeta de crdito validada, adquirir los boletos areos.
Los boletos areos sern posteriormente enviados al usuario o estarn listos para ser
adquiridos en el terminal del aeropuerto antes de la salida de su vuelo. Es necesario estar
previamente registrado con un nmero de tarjeta de crdito vlida para poder hacer
compras de boletos areos, o bien proveerla en el momento de la compra.
Adems de los servicios de vuelo, el usuario podr en cualquier momento leer, modificar o
cancelar su propio registro, todo esto despus de haber sido validado como usuario del
sistema.

A continuacin se muestra el Modelo Entidad Relacin del caso propuesto, as como


tambin se muestra las capacidades de cada columna.

22
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

23
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

24
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.1. Implementar la base de datos AGENCIA con valores por defecto.

1ERA FORMA

CREATE DATABASE AGENCIA


GO

2DA FORMA

IF DB_ID('AGENCIA') IS NOT NULL


BEGIN
USE master
DROP DATABASE AGENCIA
END
CREATE DATABASE AGENCIA
GO

PARA VERIFICAR LA EXISTENCIA DE LA BD AGENCIA

SELECT * FROM SYS.SYSDATABASES

OTRA FORMA DE VERIFICAR

SELECT name,dbid,crdate,filename
FROM SYS.SYSDATABASES

VERIFICAMOS LA ESTRUCTURA DE LA BD AGENCIA

SP_HELPDB AGENCIA

25
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.2. Implementar la base de datos AGENCIA2 ubicado en la carpeta


D:\Base_Datos\especificando un archivo primario con tamao inicial de 15MB, un tamao
mximo de 30MB y un crecimiento de 5MB, adems el archivo de transacciones debe
tener un tamao inicial de 5MB y como mximo 10MB a una tasa de crecimiento de 10%.

CREATE DATABASE AGENCIA2


ON PRIMARY(
NAME='AGENCIA2_PRI',
FILENAME='D:\Base_Datos\AGENCIA2.MDF',
SIZE=15MB,
MAXSIZE=30MB,
FILEGROWTH=5MB
)
LOG ON(
NAME='AGENCIA2_LOG',
FILENAME='D:\Base_Datos\AGENCIA2.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
GO

SELECT * FROM SYS.SYSDATABASES

SELECT name,dbid,crdate,filename
FROM SYS.SYSDATABASES

SP_HELPDB AGENCIA2

26
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.3. Implementar la base de datos AGENCIA3 ubicado en la carpeta


D:\Base_Datos\ con la siguiente configuracin:

Archivo de datos: Un tamao inicial de 10MB, mximo de 40MB y un factor de


crecimiento de 5MB.
Archivo secundario: Un tamao inicial de 5MB, mximo de 30MB y un factor de
crecimiento de 5%.
Archivo de transacciones: Un tamao inicial de 4MB, mximo de 20MB y un
factor de crecimiento de 10%.

CREATE DATABASE AGENCIA3


ON PRIMARY (
NAME='AGENCIA3_PRI',
FILENAME='D:\Base_Datos\AGENCIA3.MDF',
SIZE=10MB,
MAXSIZE=40MB,
FILEGROWTH=5MB
),
(
NAME='AGENCIA3_SEC',
FILENAME='D:\Base_Datos\AGENCIA3.NDF',
SIZE=5MB,
MAXSIZE=30MB,
FILEGROWTH=5%
)
LOG ON (
NAME='AGENCIA3_LOG',
FILENAME='D:\Base_Datos\AGENCIA3.LDF',
SIZE=4MB,
MAXSIZE=20MB,
FILEGROWTH=10%
)

27
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

GO

SP_HELPDB AGENCIA3

CASO: II.1.4. Implementar la base de datos AGENCIA4 ubicado en la carpeta


D:\Base_Datos\ con la siguiente configuracin:

Archivo de datos: Un tamao inicial de 10MB, mximo de 40MB y un factor de


crecimiento de 5MB.
Archivo secundario1: Un tamao inicial de 5MB, mximo de 30MB y un factor
de crecimiento de 5%.
Archivo secundario2: Un tamao inicial de 2MB, mximo de 15MB y un factor
de crecimiento de 2%.
Archivo de transacciones: Un tamao inicial de 4MB, mximo de 20MB y un
factor de crecimiento de 10%.

CREATE DATABASE AGENCIA4


ON PRIMARY (
NAME='AGENCIA4_PRI',
FILENAME='D:\Base_Datos\AGENCIA4.MDF',
SIZE=10MB,
MAXSIZE=40MB,
FILEGROWTH=5MB
),
(
NAME='AGENCIA4_SEC1',
FILENAME='D:\Base_Datos\AGENCIA41.NDF',
SIZE=5MB,
MAXSIZE=30MB,
FILEGROWTH=5%
),

28
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

(
NAME='AGENCIA4_SEC2',
FILENAME='D:\Base_Datos\AGENCIA42.NDF',
SIZE=2MB,
MAXSIZE=15MB,
FILEGROWTH=2%
)
LOG ON (
NAME='AGENCIA4_LOG',
FILENAME='D:\Base_Datos\AGENCIA4.LDF',
SIZE=4MB,
MAXSIZE=20MB,
FILEGROWTH=10%
)
GO

SP_HELPDB AGENCIA4

CASO: II.1.5. Implementar una consulta que permita separar la base de datos AGENCIA5
ubicado en la carpeta D:\Base_Datos\ con las siguientes caractersticas:

Archivo de datos: Un tamao inicial de 10MB, mximo de 90MB y un factor de


crecimiento de 5MB.
Archivo secundario: Un tamao inicial de 5MB, mximo de 50MB y un factor de
crecimiento de 5%.
Archivo de transacciones: Un tamao inicial de 5MB, mximo de 50MB y un
factor de crecimiento de 10%.

29
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CREATE DATABASE AGENCIA5


ON PRIMARY (
NAME='AGENCIA5_PRI',
FILENAME='D:\Base_Datos\AGENCIA5.MDF',
SIZE=10MB,
MAXSIZE=90MB,
FILEGROWTH=5MB
),
(
NAME='AGENCIA5_SEC',
FILENAME='D:\Base_Datos\AGENCIA5.NDF',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=5%
)
LOG ON (
NAME='AGENCIA5_LOG',
FILENAME='D:\Base_Datos\AGENCIA5.LDF',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=10%
)
GO

PARA SEPARAR LA BD AGENCIA5

USE master
GO
SP_DETACH_DB AGENCIA5

30
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PARA SEPARAR LA BD AGENCIA5


USE master
GO
SP_DETACH_DB AGENCIA5

PARA ADJUNTAR LA BD AGENCIA5

USE master
GO
SP_ATTACH_DB AGENCIA5,'D:\Base_Datos\AGENCIA5.MDF'

PARA VERIFICAR SU ESTRUCTURA DE BD AGENCIA5

SP_HELPDB AGENCIA5

SQL, brinda una serie de datos para almacenar la informacin, la correcta seleccin del
tipo de dato implica un determinado valor; por ejemplo: carcter, entero, binario, fecha,
etc., as mismo algunas veces necesitamos algn tipo de dato en especial, como el caso del
DNI que cuenta con 8 caracteres de tipo CHAR o el nmero de celular de 9 caracteres.

Para esto pasaremos a definir la sintaxis para crear nuestro propio tipo de dato.

SP_ADDTYPE NOMBRE TIPO, TIPO_DATOS,RESTRICCION


GO
Ahora bien si en caso se desea eliminar un tipo de dato creado por el usuario, se debe seguir
la siguiente sintaxis, teniendo en cuenta que para eliminar un tipo de dato, este no debe
tener objetos asociados.

SP_DROPTYPE NOMBRE_TIPO
GO

31
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.6. Implemente una consulta que permita aadir el tipo de dato DNI dentro de
la base de datos agencia5, adems restringir que no debe contener espacios vacos.

01

USE AGENCIA5
GO

02

SP_ADDTYPE DNI, CHAR (8)','NOT NULL'


GO

03

SELECT S.name, S.xtype, S.length


FROM SYS.systypes S

CASO: II.1.7. Implemente una consulta que permita crear la tabla llamada PASAJERO, en
la cual deber hacer referencia al nuevo tipo de dato creado en la consulta anterior.

Para implementar una tabla se tiene la siguiente sintaxis:

CREATE TABLE PROPIETARIO.NOMBRE_TABLA (


CAMPO1 TIPO_DATO RESTRICCION,
CAMPO2 TIPO_DATO RESTRICCION,
CAMPO3 TIPO_DATO RESTRICCION
)
GO

32
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

Dentro de las restricciones podemos tener NULL, NOT NULL y IDENTITY, lo cual
implica que para dar consistencia al valor que se registrara en la columna puede ser nulo,
no nulo, por defecto, primario, incremental, etc.

01

CREATE TABLE PASAJERO (


IDPASAJERO CHAR (5) NOT NULL,
NOMBRES VARCHAR (50) NOT NULL,
DNI CHAR (9) NOT NULL,
)

02

SP_COLUMNS PASAJERO

CASO: II.1.8. Implemente una consulta que permita crear la tabla llamada PAGO, que
tiene las columnas nmero de pago de tipo entero con un autoincremento de inicio 1 con
salto de 1, fecha de tipo dato NO NULO y monto de tipo MONEY NO NULO.

01
CREATE TABLE PAGO (
NUMPAGO INT IDENTITY (1, 1),
FECHA DATE NOT NULL,
MONTO MONEY NOT NULL
)

02
SP_COLUMNS PAGO

33
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.9. Implemente una consulta que permita crear la tabla llamada PASAJERO,
con las siguientes especificaciones mostradas a continuacin:

IDPASAJERO CHAR (5)


NOMBRES VARCHAR (50)
IDPAIS CHAR (4)
TELEFONO CHAR (5)
EMAIL VARCHAR (50)

CREATE TABLE PASAJERO (


IDPASAJERO CHAR (5) NOT NULL,
NOMBRES VARCHAR (50) NOT NULL,
IDPAIS CHAR (4) NOT NULL,
TELEFONO CHAR (15) NOT NULL,
EMAIL VARCHAR (50) NOT NULL
)
GO

Tener en cuenta que la creacin de la tabla PASAJERO no agrega restricciones, ni campos


claves; as mismo como propietario de la tabla se est usando DBO.

Ahora bien es importante manejar ESQUEMAS en SQL, es ingles SCHEMA, describe


la estructura de la misma ya que todos los objetos que se puedan crear o administrar en
SQL se encuentran dentro de un mismo esquema (DBO).

El manejo de esquemas tiene que ver con temas de agrupacin de objetos y seguridad de las
mismas. Cuando se crea un objeto de base de datos o se especifica una entidad de seguridad
de dominio valida usuarios o grupos como el propietario del objeto, o la entidad de
seguridad de dominio se agregar a la base de datos como esquema.
Su sintaxis de creacin es:

34
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CREATE SCHEMA NOMBRE_ESQUEMA AUTHORIZATION


NOMBRE_PROPIETARIO.

Su sintaxis de eliminacin es:

DROP TABLE NOMBRE_TABLA


GO
DROP SCHEMA NOMBRE_ESQUEMA AUTHORIZATION
NOMBRE_PROPIETARIO
GO

CASO: II.1.10. Implementar los esquemas RRHH, CONTABILIDAD, PAGO dentro de la


base de datos AGENCIA5.

01

USE AGENCIA5
GO

02

CREATE SCHEMA RRHH AUTHORIZATION DBO


CREATE SCHEMA CONTABILIDAD AUTHORIZATION DBO
CREATE SCHEMA PAGO AUTHORIZATION DBO

03

SELECT S.NAME FROM SYS.SCHEMAS S

35
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.11. Implementar los esquemas RESERVACIONES, LOGISTICA y


CLIENTES sobre la base de datos AGENCIA5. As mismo deber distribuir los esquemas
de la siguiente manera:

RESERVACIONES

VUELO
ASIENTO
TARIFA
RESERVA
PAGO

LOGISTICA

AVION
AEROPUERTO
AEROLINEA
PAIS

CLIENTES

PASAJERO

Luego deber crear las tablas antes mencionadas haciendo referencia a sus respectivos
esquemas.

01

USE AGENCIA3
GO

36
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

02

CREATE SCHEMA RESERVACIONES AUTHORIZATION DBO


GO
CREATE SCHEMA LOGISTICA AUTHORIZATION DBO
GO
CREATE SCHEMA CLIENTES AUTHORIZATION DBO
GO

03

CREATE TABLE RESERVACIONES.VUELO (


NUMVUELO INT NOT NULL,
IDAERO CHAR (5) NOT NULL,
IDRESERVA INT NOT NULL,
IDAVION CHAR (5) NOT NULL,
CLASE VARCHAR (20) NOT NULL
)
GO

CREATE TABLE RESERVACIONES.ASIENTO (


NUMVUELO INT NOT NULL,
LETRA CHAR (2) NOT NULL,
FILA INT NOT NULL
)
GO

37
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CREATE TABLE RESERVACIONES.TARIFA (


CLASE VARCHAR (20) NOT NULL,
PRECIO MONEY NOT NULL,
IMPUESTO MONEY NOT NULL
)
GO

CREATE TABLE RESERVACIONES.RESERVA (


IDRESERVA INT IDENTITY NOT NULL,
COSTO MONEY DEFAULT 0,
FECHA DATE DEFAULT GETDATE ()
)
GO

CREATE TABLE RESERVACIONES.PAGO (


NUMPAGO INT NOT NULL,
IDRESERVA INT NOT NULL,
IDPASAJERO CHAR (5) NOT NULL,
FECHA DATE NOT NULL,
MONTO MONEY NOT NULL
)
GO

CREATE TABLE LOGISTICA.AVION (


IDAVION CHAR (5) NOT NULL,
RUC CHAR (11) NOT NULL,
COMPAIA VARCHAR (40) NOT NULL,
TIPO VARCHAR (30) NOT NULL,
PASAJEROS INT NOT NULL
)
GO

38
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CREATE TABLE LOGISTICA.AEROLINEA (


RUC CHAR (11) NOT NULL,
NOMBRE VARCHAR (40) NOT NULL
)
GO

CREATE TABLE LOGISTICA.AEROPUERTO (


IDAERO CHAR (5) NOT NULL,
NOMBRE VARCHAR (40) NOT NULL,
IDPAIS CHAR (4) NOT NULL
)
GO

CREATE TABLE LOGISTICA.PAIS (


IDPAIS CHAR (4) NOT NULL,
PAIS VARCHAR (30) NOT NULL
)
GO

CREATE TABLE CLIENTES.PASAJERO (


IDPASAJERO CHAR (5) NOT NULL,
NOMBRES VARCHAR (50) NOT NULL,
IDPAIS CHAR (4) NOT NULL,
TELEFONO CHAR (15) NOT NULL,
EMAIL VARCHAR (50) NOT NULL
)
GO

39
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

DEFINICION DE LAS LLAVES PRIMARIAS Y FORANEAS:

Es un tipo de restriccin estructural que permite la vinculacin de los datos a otras tablas y
hacer obligatoria la consistencia de las mismas.
Sintaxis de asignacin de llaves primarias:

ALTER TABLE NOMBRE_TABLA


ADD PRIMARY KEY NONCLUSTERED (COLUM1, COLUM2)

Sintaxis de asignacin de llaves forneas:

ALTER TABLE NOMBRE_TABLA


ADD FOREIGN KEY (COLUMNA)
REFERENCES TABLA_ASOCIADA (COLUMNA_ASOCIADA)

CASO: II.1.12. Implementar una consulta que permita aadir la restriccin estructural
campo clave a la columna IDPASAJERO de la tabla PASAJERO.

01

USE AGENCIA3
GO
02
CREATE TABLE CLIENTES.PASAJERO (
IDPASAJERO CHAR (5) NOT NULL,
NOMBRES VARCHAR (50) NOT NULL,
IDPAIS CHAR (4) NOT NULL,
TELEFONO CHAR (15) NOT NULL,
EMAIL VARCHAR (50) NOT NULL
)
GO

40
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

03

ALTER TABLE CLIENTES.PASAJERO


ADD PRIMARY KEY NONCLUSTERED (IDPASAJERO)

OTRA FORMA:

CREATE TABLE CLIENTES.PASAJERO (


IDPASAJERO CHAR (5) PRIMARY KEY NOT NULL,
NOMBRES VARCHAR (50) NOT NULL,
IDPAIS CHAR (4) NOT NULL,
TELEFONO CHAR (15) NOT NULL,
EMAIL VARCHAR (50) NOT NULL
)
GO

CASO: II.1.13. Implementar una consulta que permita aadir la restriccin estructural
entre las columnas IDPAIS de la tabla PASAJERO asociado a la tabla PAIS.

01
USE AGENCIA3
GO
02
CREATE TABLE LOGISTICA.PAIS (
IDPAIS CHAR (4) NOT NULL,
PAIS VARCHAR (30) NOT NULL
)
GO
03
ALTER TABLE LOGISTICA.PAIS
ADD PRIMARY KEY NONCLUSTERED (IDPAIS)

41
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

04
ALTER TABLE CLIENTES.PASAJERO
ADD FOREIGN KEY (IDPAIS)
REFERENCES LOGISTICA.PAIS (IDPAIS)

RESTRICCIONES DE LOS CAMPOS: UNIQUE, CHECK Y DEFAULT:

UNIQUE: Determina que los valores registrados en una misma columna no sean idnticos,
es decir, se mantengan nicos. La restriccin de UNIQUE permite controlar cualquier otro
campo que no sea llave. As mismo tener en cuenta que la columna definida como
UNIQUE acepta a lo ms un valor NULL mientras que una columna restringida con
PRIMARY KEY no permite dicha accin.

CASO: II.1.14. Implementar una consulta que permita aadir la restriccin UNIQUE a la
columna PAIS, es decir solo permita registrar nombre de pases sin repetirse.
01
USE AGENCIA5
GO

02
SELECT * FROM DBO.PAIS;

03
ALTER TABLE DBO.PAIS
ADD PRIMARY KEY NONCLUSTERED (IDPAIS)
GO;

04
ALTER TABLE DBO.PASAJERO
ADD FOREIGN KEY (IDPAIS)
REFERENCES LOGISTICA.PAIS (IDPAIS)
GO;

42
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PRIMERA FORMA DE USAR UNIQUE

ALTER TABLE DBO.PAIS


ADD CONSTRAINT NOM_PAIS UNIQUE (PAIS)
GO;

INSERTANDO

INSERT INTO DBO.PAIS VALUES('1','ESTADOS UNIDOS');


INSERT INTO DBO.PAIS VALUES('2','ESTADOS UNIDOS');

CHECK: Permite restringir el rango de valores que pueden estar permitidos ingresar en
una o ms columnas de una tabla.

CASO: II.1.15. Implementar una consulta que permita aadir la restriccin a la columna
FECHA de la tabla PAGO en donde solo permitir registrar fechas menores o iguales al
da actual.

OTRA FORMA DE USAR UNIQUE

CREATE TABLE PAIS(


IDPAIS CHAR(4) PRIMARY KEY NOT NULL,
PAIS VARCHAR(30) NOT NULL UNIQUE
)
GO

VER LAS COLUMNAS


SP_COLUMNS PAGO;

USANDO LA CONSULTA CHECK


ALTER TABLE DBO.PAGO
ADD CONSTRAINT CHK_FECHA CHECK(FECHA<=GETDATE())

43
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

DEFAULT: Permite personalizar dichas restricciones a cualquier columna de una tabla


que no tenga como restriccin NOT NULL.

CASO: II.1.16. Implementar una consulta que permita aadir la restriccin a la columna
FECHA de la tabla PAGO en donde si el usuario no registra la fecha se inserte la fecha
actual por defecto.

ALTER TABLE DBO.PAGO


ADD CONSTRAINT FECHA_DEF DEFAULT
GETDATE() FOR FECHA

Si en caso se desea eliminar una restriccin se debe alterar la tabla aplicando un DROP
CONSTRAINT.

ALTER TABLE NOMBRE_TABLA


DROP CONSTRAINT NOMBRE_RESTRICCION
GO

Si se quiere mostrar las restricciones creadas, ejecutar la siguiente consulta:


SELECT*FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=TABLE_NAME
Si queremos borrar los datos de una tabla, usar el comando TRUNCATE:
TRUNCATE TABLE NOMBRE_TABLA

CASO: II.1.17. Implementar una consulta que permita eliminar la restriccion


CHECK_FECHA de la tabla PAGO.

ALTER TABLE DBO.PAGO


DROP CONSTRAINT CHK_FECHA

INSERT INTO DBO.PAGO VALUES ( ,'500.00');

44
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO: II.1.18. Implementar una consulta que permita mostrar las restricciones de la tabla
PAGO.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='PAGO'

CASO: II.1.19. Implementar una consulta que permita restringir el campo monto de la
tabla PAGO. De tal forma que los montos ingresados sean valores positivos y no superen
los mil soles, en el caso de numeros decimales solo debera de permitir tres decimales.

ALTER MONTO CHECK (MONTO>=0 AND MONTO<=1000)

CASO: II.1.20. Implementar una consulta que permita restringir el campo ruc de la tabla
AEROLINEA, de tal manera que solo permita ingresar numeros (0-9) y con una longitud
igual a 11

ALTER RUC CHECK (RUC LIKE '[0-9][0-9][0-9][0-9]')

CASO: II.1.21. Implementar una restriccion para el campo ID_PASAJERO de la tabla


PASAJERO de tal forma que solo permita ingresar cuatro caracteres con el siguiente
formato [ p_num1 p_01 ]

CHECK LIKE '[0-9][0-9][0-9][0-9]'

CASO: II.1.22. Implemetar una restriccion al campo ID_AVION de la tabla AVION de tal
forma que peermita 5 caracteres (dos letras y tres digitos). tener en cuenta que los digitos
deberan ser diferentes de 0, salvo sea el primer digito

CASO: II.1.23. Implementar una consulta que permita restringir la columna letra de la
tabla ASIENTO, de tal forma que solo permita ingresar los siguientes valores [CA,CM,CP ]

45
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PARTE 03: LENGUAJE DE MANUPULACION DE DATOS

El lenguaje de manipulacion de datos DML es un termino usado para recuperar y trabajar


datos en sql server incluye las instrucciones para agregar, modificar, consultar o quitar
datos de una base de datos.

las siguientes sentencia son de categoria dml

CATEGORIA DML

INSERT
UPDATE
SELECT
DELETE
MERGE
BULK INSERT

INSERT. La sentencia insert permite agregar una nueva fila a una tabla o vista de una
determinada base de datos.

SINTAXIS

DML INSERT INTO


INSERT [INTO]
[ESQUEMA] TABLA_O_VISTA[(LISTA DE COLUMNAS)]
VALUES[('LISTA DE VALORES')]

46
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO III.1.1. Implementar una consulta que permita registrar los paises en la tabla PAIS
de la base de datos AGENCIA6, usar la version simple de la instruccion o comando
INSERT

USE AGENCIA6;

SELECT * FROM DBO.PAIS


GO

FORMA SIMPLIFICADA [UTIL EN CASO DE INGRESAR SOLO UNA DE LAS COLUMNAS]

INSERT INTO DBO.PAIS (IDPAIS,PAIS) VALUES ('','')


GO

OTRA FORMA DE USAR EL INSERT

INSERT INTO DBO.PAIS VALUES ('','')


GO

CASO III.1.2. Implementar una consulta que permita registrar los paises en la tabla PAIS
de la base de datos AGENCIA6 aplicando el registrar multiple de filas(criterio de por lo
menos "n" filas)

INSERT INTO PAIS


VALUES ('0001','PERU'),
('0002','ARGENTINA')
GO

47
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO III.1.3 Implementar una consulta que permita registrar los paises, aplicando un
orden personalizado de las columnas (pais, idpais)

INSERT INTO PAIS (PAIS,IDPAIS)


VALUES('ESPAA','0014'),
('INGLATERRA','0015')
GO

CASO III.1.4. Implementar una consulta que permita registrar las reservas, teniendo en
cuenta que solo se debe de ingresar el costo de la reserva

INSERT INTO DBO.RESERVA (COSTO) VALUES ('100')


GO

BASE DE DATOS

USE AGENCIA6;

CREAMDO LA TABLA

CREATE TABLE RESERVA_TEMP (


IDRESERVA INT NOT NULL IDENTITY,
COSTO MONEY NOT NULL,
FECHA DATE NOT NULL
)
GO

PONIENDO EL ID COMO PRIMARY

ALTER TABLE DBO.RESERVA_TEMP


ADD PRIMARY KEY NONCLUSTERED (IDRESERVA)
GO

48
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

PONIENDO EL ID COMO IDENTITY

ALTER TABLE DBO.RESERVA_TEMP


ADD IDRESERVA INT IDENTITY(1,1)
GO

AADIR FECHA DE HOY

ALTER TABLE DBO.RESERVA_TEMP


ADD CONSTRAINT FECHA_DEF DEFAULT GETDATE() FOR FECHA
GO

INSERTANDO

INSERT INTO DBO.RESERVA_TEMP (COSTO) VALUES ('100')


GO

ELIMINAR TABLA

DROP TABLE DBO.RESERVA_TEMP


GO

SP_COLUMNS RESERVA
GO

CASO III.1.5. Implementar una consulta para que el costo sea por defecto 0.00

ALTER TABLE DBO.RESERVA_TEMP


ADD CONSTRAINT DEF_COSTO DEFAULT (0.00) FOR COSTO
GO

-- INSERTANDO VALORES POR DEFECTO


INSERT INTO DBO.RESERVA_TEMP DEFAULT VALUES

49
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

CASO III.1.6. Implementar una consulta que permita crear una vista, y que por medio de
esta vista se registre las reservas.

01

SELECT * FROM RESERVA


02

CREATE VIEW VTA_RESERVA


AS
SELECT IDRESERVA,COSTO,FECHA
FROM RESERVA
GO

03
SELECT * FROM VTA_RESERVA
SELECT * FROM RESERVA

04

INSERT INTO VTA_RESERVA(COSTO,FECHA)


VALUES ('20','01/02/2016')

CASO III.1.7. Implementar una consulta que permita registrar los 5 primeras reservas a
una tabla llamada RESERVA TEMP (La tabla sera definida por el usuario)

01
SELECT * FROM RESERVA
02
CREATE TABLE RESERVA_TEMP1(
IDRESERVA INT NOT NULL PRIMARY KEY,
COSTO MONEY NOT NULL,
FECHA DATE NOT NULL )

50
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

GO
03
SELECT
TOP(5)
IDRESERVA,COSTO,FECHA
FROM RESERVA

04
INSERT TOP(5) INTO
RESERVA_TEMP1(IDRESERVA,COSTO,FECHA)
SELECT
IDRESERVA,COSTO,FECHA
FROM RESERVA
GO

05

SELECT * FROM RESERVA_TEMP1

NOTA

SELECT * FROM PASAJERO

CREATE TABLE PASAJERO_TEMP (


IDPASAJERO CHAR (5) NOT NULL PRIMARY KEY,
NOMBRES VARCHAR (50) NOT NULL,
EMAIL VARCHAR (50) NOT NULL
)
GO

INSERT INTO
PASAJERO_TEMP
SELECT

51
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

IDPASAJERO,NOMBRES,EMAIL
FROM
PASAJERO
WHERE
EMAIL LIKE '%@GMAIL%'
GO

SELECT * FROM PASAJERO_TEMP

CREAMOS LA TABLA TEMP


CREATE TABLE RESERVA_TEMP_TEMP (
IDRESERVA INT NOT NULL PRIMARY KEY IDENTITY,
COSTO MONEY NOT NULL,
FECHA DATE NOT NULL
)
GO

Consulta para seleccionar los 5 primeros datos de la tabla RESERVA_TEMP

SELECT TOP 5 IDRESERVA,COSTO,FECHA FROM RESERVA_TEMP


GO

Exportando los datos de la tabla RESERVA_TEMP a RESERVA_TEMP_TEMP

INSERT INTO RESERVA_TEMP_TEMP (COSTO,FECHA)


SELECT TOP 5 COSTO,FECHA FROM RESERVA_TEMP
GO

Seleccionamos los datos de la tabla RESERVA_TEMP_TEMP

52
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

SELECT TOP 5 IDRESERVA,COSTO,FECHA FROM


RESERVA_TEMP_TEMP
GO

USE AGENCIA6
GO

SELECT TOP 3 * FROM DBO.RESERVA


GO

SELECT TOP 5 IDRESERVA,COSTO,FECHA FROM RESERVA_TEMP


WHERE COSTO>0;
GO

INSERT INTO RESERVA_TEMP_TEMP (COSTO,FECHA)


SELECT TOP 5 COSTO,FECHA FROM RESERVA_TEMP
WHERE COSTO>0;
GO

CASO III.1.8. Una tabla temporal para pasajero e ingresar solo los pasajeros que tengan
solo gmail

CREATE TABLE PASAJERO_TEMP(


IDPASAJERO CHAR (5) NOT NULL PRIMARY KEY,
NOMBRES VARCHAR (50) NOT NULL,
IDPAIS CHAR (4),
TELEFONO VARCHAR (10),
EMAIL VARCHAR (30)
)
GO

53
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

DROP TABLE PASAJERO_TEMP


GO

SELECT * FROM PASAJERO WHERE (EMAIL LIKE '%GMAIL%')


GO

INSERT INTO PASAJERO_TEMP


(IDPASAJERO,NOMBRES,IDPAIS,TELEFONO,EMAIL)
SELECT IDPASAJERO,NOMBRES,IDPAIS,TELEFONO,EMAIL FROM
PASAJERO WHERE(EMAIL LIKE '%GMAIL%')
GO

CASO III.1.9. Implementar una consulta que permita insertar un registro a la tabla
PASAJERO por medio de una variable temporal de tipo table

DECLARE @TEMP_PASAJEROS
TABLE(ID CHAR(5) ,
NOM VARCHAR(50),
IDP CHAR(4),
TELE CHAR(15),
EMAIL VARCHAR(50))
INSERT PASAJERO
OUTPUT INSERTED.IDPASAJERO,
INSERTED.NOMBRES,
INSERTED.IDPAIS,
INSERTED.TELEFONO,
INSERTED.EMAIL
INTO @TEMP_PASAJEROS
VALUES ('P0011','LENIN
ELIO','0001','123456789','LENINELIO@GAMIL.COM')
GO

54
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

SELECT * FROM RESERVA


GO

COMO USAR LA TABLA RESERVA Y VALORES POR DEFECTO

DECLARE @TEMP_RESERVA
TABLE (ID INT,
COST MONEY,
FEC DATE)
INSERT RESERVA
OUTPUT INSERTED.IDRESERVA,
INSERTED.COSTO,
INSERTED.FECHA
INTO @TEMP_RESERVA
DEFAULT VALUES
GO

SELECT * FROM RESERVA


GO

CASO III.1.10. Implementar una consulta que permita registrar aviones a una nueva tabla
temporal llamada MIS AVIONES, usar la instruccion with

CREATE TABLE MISAVIONES (


ID CHAR (5),
NIF CHAR (11),
COMP VARCHAR (40),
TIP VARCHAR (30),
PASAJ INT
)
GO

55
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

WITH AVION_TEMP (IDA,NIF1,COMP1,TIP1,PAS)


AS
(
SELECT * FROM AVION
)
INSERT INTO MISAVIONES
SELECT * FROM AVION_TEMP
GO

SELECT * FROM MISAVIONES;

PARA RESERVA
CREATE TABLE MISRESERVAS(
ID INT,
COST MONEY,
FECH DATE
)
GO

WITH RESERVA_TEMP(ID, COST, FECH)


AS
(
SELECT * FROM RESERVA
)
INSERT INTO MISRESERVAS
SELECT * FROM RESERVA_TEMP
GO

SELECT * FROM MISRESERVAS


GO

56
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

MODIFICACION Y ACTUALIZACION DE DATOS DE UNA TABLA CON UPDATE

La sentencia UPDATE permite mofdificar o actualizar un conjunto de registros de una


tabla o vista, el mismo que se encuentra en funcion a una condicin.
Sintaxis
UPDATE TABLA_O_VISTA
SET {COLUMNA1=VALOR1, COLUMNA2=VALOR2,
COLUMNAn=VALORn}
WHERE {CONDICIONES}

Caso III.1.11. Implementar una consulta que permita actualizar los valores de la columna
impuesto por el valor 11 a todos los registros.

UPDATE TARIFA
SET IMPUESTO=11
GO

Caso III.1.12. Implementar una consulta que permita actualizar los valores de la columna
impuesto aumentando en 2 a todos los registros de la tabla tarifa.

UPDATE TARIFA
SET IMPUESTO+=2
GO

Caso III.1.13. Implementar una consulta que permita asignar el impuesto a cero solo a
slo a los registros cuya clase sea Econmico de la tabla tarifa.

UPDATE TARIFA
SET IMPUESTO=0

57
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

WHERE CLASE='ECONOMICO'
GO
Caso III.1.14. Implementar una consulta que permita actualizar los costos de la tabla
RESERVA disminuyendo en 50 a los registros cuyo ingreso se realiz el ao 2013, utilizar
variables.

UPDATE RESERVA
SET COSTO=COSTO - 50
WHERE YEAR (FECHA) = 2013
GO

Caso III.1.15. Implementar una consulta que asigne el texto SIN FONO en el campo
telfono de los pasajeros que sean de Per. Todo esto deber ser realizado en la tabla
Pasajero. Usar subconsultas.

UPDATE PASAJERO
SET TELEFONO = 'SIN FONO'
WHERE IDPAIS= (SELECT IDPAIS FROM PAIS WHERE NOMBRE='PER')
GO

ELIMINACIN DE REGISTROS DE UNA TABLA CON DELETE

La sintaxis correcta es la siguiente:

DELETE [TOP (EXPRESSION)]


FROM TABLE
[WHERE {<condicin>}]

Caso III.1.16. Script que permita eliminar todos los registros de la tabla AEROLINEA

01
DELETE AEROLINEA

02

58
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

TRUNCATE TABLE AEROLINEA

Caso III.1.17. Script que permita eliminar el registro de la tabla PASAJERO cuyo pas sea
ECUADOR usando subconsultas para el proceso.

SELECT * FROM PASAJERO


WHERE IDPAIS = (SELECT IDPAIS FROM PAIS WHERE PAIS='ECUADOR')
GO

Caso III.1.18. Implementar una consulta que permita eliminar el 5% de los registros de la
tabla pasajero, cuyo pais sea Brasil. Usar subconsultas.

DELETE TOP (5) PERCENT


FROM PASAJERO
WHERE IDPAIS = (
SELECT IDPAIS
FROM PAIS
WHERE PAIS='BRASIL'
)
GO

Caso III.1.19. Implemetar una consulta que permita eliminar el 5% de los registros de la
tabla pasajero cuyo pais sea brasil, usar subconsultas para el proceso y el operador
OUTPUT.

DECLARE @MISPASAJEROS TABLE (


IDPAS CHAR (5),
NOMBR VARCHAR (40),
TELEF CHAR (15)
)

DELETE PASAJERO
OUTPUT deleted.IDPASAJERO,
deleted.NOMBRES,

59
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

deleted.TELEFONO
INTO @MISPASAJEROS
FROM PASAJERO P
WHERE IDPAIS = (
SELECT IDPAIS
FROM PAIS
WHERE PAIS='BRASIL')

SELECT IDPAS, NOMBR, TELEF FROM @MISPASAJEROS


GO

DECLARACION GENERAL DEL COMANDO SELECT PARA LA RECUPERACION


DE REGISTROS.

USO DEL SELECT.


01
SELECT * FROM PASAJERO
02
SELECT ALL * FROM PASAJERO

03
SELECT IDPASAJERO,NOMBRES,IDPAIS,TELEFONO,EMAIL
FROM PASAJERO
04
SELECT NOMBRES,EMAIL,TELEFONO
FROM PASAJERO
GO
05
SELECT IDPASAJERO AS CODIGO,
NOMBRES AS 'PASAJERO',
IDPAIS AS 'CODIGO PAIS',

60
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

TELEFONO,
EMAIL AS 'CORREO ELECTRONICO'
FROM PASAJERO

06
SELECT
IDPASAJERO AS [CODIGO],
NOMBRES AS [PASAJERO],
IDPAIS AS [CODIGO PAIS],
TELEFONO,
EMAIL AS [CORREO ELECTRONICO]
FROM PASAJERO

07
SELECT
IDPASAJERO [CODIGO],
NOMBRES [PASAJERO],
IDPAIS [CODIGO PAIS],
TELEFONO,
EMAIL [CORREO ELECTRONICO]
FROM PASAJERO

08
SELECT
CODIGO=IDPASAJERO,
PASAJERO=NOMBRES,
[CODIGO PAIS]=IDPAIS,
TELEFONO,
[CORREO ELECTRONICO]=EMAIL
FROM PASAJERO

61
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

09
SELECT
P.IDPASAJERO, P.NOMBRES,
P.IDPAIS,P.TELEFONO,P.EMAIL
FROM PASAJERO P

10
SELECT
PASAJERO.IDPASAJERO, PASAJERO.NOMBRES,
PASAJERO.IDPAIS,PASAJERO.TELEFONO,PASAJERO.EMAIL
FROM PASAJERO

FORMAS DE USAR EL DISTINCT

01
SELECT IDPAIS
FROM PASAJERO
02
SELECT DISTINCT IDPAIS
FROM PASAJERO

USO DEL ORDER BY

01
SELECT P.*
FROM PASAJERO P
ORDER BY P.NOMBRES
02
SELECT P.*
FROM PASAJERO P
ORDER BY P.NOMBRES ASC

62
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

03
SELECT P.IDPAIS,IDPASAJERO,P.NOMBRES,P.TELEFONO,P.EMAIL
FROM PASAJERO P
ORDER BY P.IDPAIS

04
SELECT P.IDPAIS,IDPASAJERO,P.NOMBRES,P.TELEFONO,P.EMAIL
FROM PASAJERO P
ORDER BY P.IDPAIS, P.IDPASAJERO DESC

05
SELECT P.IDPAIS,P.NOMBRES,P.IDPASAJERO,P.TELEFONO,P.EMAIL
FROM PASAJERO P
ORDER BY P.IDPAIS, P.NOMBRES DESC

USO DEL TOP

01
SELECT TOP 5 *
FROM PASAJERO
02
SELECT TOP 5 *
FROM PASAJERO
ORDER BY IDPASAJERO DESC

03, CONSULTA QUE MUESTRA LOS 5 ULTIMOS REGISTROS DE LA TABLA


PASAJERO.

SELECT TOP 5 *
FROM (SELECT ROW_NUMBER() OVER (ORDER BY P.IDPASAJERO DESC) AS
[NUMERO],*

63
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

FROM PASAJERO P) X
ORDER BY IDPASAJERO DESC

CONSULTA QUE MUESTRA EL 30% DE LOS REGISTROS.

SELECT TOP 30 PERCENT *


FROM RESERVA

CONSULTA QUE PERMITE REPLICAR LOS REGISTROS DE LA TABLA


PASAJERO, EN UNA NUEVA VENTANA LLAMADA MIS PASAJEROS, USANDO LA
CLAUSULA INTO.

01
IF OBJECT_ID('MISPASAJEROS') IS NOT NULL
BEGIN
DROP TABLE MISPASAJEROS
END
GO
02
SELECT P.*
INTO MISPASAJEROS
FROM PASAJERO P
GO
01
IF OBJECT_ID('MISPASAJEROS') IS NOT NULL
BEGIN
DROP TABLE MISPASAJEROS
END
GO
02
SELECT P.*
INTO MISPASAJEROS

64
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

FROM PASAJERO P
WHERE P.EMAIL LIKE '%HOTMAIL%'
GO
03
SELECT * FROM MISPASAJEROS
GO

CONSULTA QUE PERMITE MOSTRAR LOS REGISTROS DE LAS TABLAS


PASAJERO Y PAIS COMBINADOS.
01
SELECT PAS.*,PAI.*
FROM PASAJERO PAS,PAIS PAI
02
SELECT PAS.*,PAI.*
FROM PASAJERO PAS,PAIS PAI
WHERE PAS.IDPAIS=PAI.IDPAIS

03
SELECT PAI.*,PAS.*
FROM PASAJERO PAS,PAIS PAI
WHERE PAS.IDPAIS=PAI.IDPAIS

CONSULTA QUE PERMITE MOSTRAR LOS REGISTROS DE LOS PASAJEROS


CUYO PAIS REGISTRADO SEA ECUADOR, USANDO SUBCONSULTAS.
01
SELECT *
FROM (SELECT P.*
FROM PASAJERO P
WHERE P.IDPAIS='0004') X

65
Base de Datos 2016 II
UNASAM INGENIERA DE SISTEMAS E INFORMTICA

02
SELECT X.IDPASAJERO,X.NOMBRES,X.EMAIL
FROM (SELECT P.*
FROM PASAJERO P
WHERE P.IDPAIS='0004') X

03

SELECT X.IDPASAJERO,X.NOMBRES,X.EMAIL
FROM (SELECT P.*
FROM PASAJERO P
WHERE P.IDPAIS=(SELECT PA.IDPAIS
FROM PAIS PA
WHERE
PA.PAIS='ECUADOR')) X

66
Base de Datos 2016 II

You might also like