Вы находитесь на странице: 1из 6

-- update Cliente

set Estado_clie ='habilitado'


where DNI= '12345678'
-- seleccionar diferentes habilitados femeninos
select Nombres_cli + '' + ApellidoPat_cli + '' + ApellidoMat_cli
from Clietne
where estado_cli = 'Habilitado'
secelte Nombres_cli,ApellidoPat_cli,ApellidoMat_cli
from Cliente
select * from cliente
-- seleccionar diferentes habilitados femeninos
select Nombres_cli + '' + ApellidoPat_cli + '' + ApellidoMat_cli as Nombre
from Clietne
where estado_cli = 'Habilitado' and Sexo_Cli = 1
sentencia case: para calculos, cambiar salidas de atributos
--seleccionar clientes y sexo escpecificado
select DNI, Nombres_cli, ApellidoPat_cli,
case Sexo_cli when 1 then 'Masculino' when 0 then 'Femenino' end as sexo
from Cliente

create database BD_PELICULAS


go
use BD_PELICULAS
go
--TABLA CLIENTE
create table Cliente(
DNI nchar(8) not null PRIMARY KEY,
Nombres_cli varchar(30) not null,
ApellidoPat_cli varchar(30) not null,
ApellidoMat_cli varchar(30)not null,
Sexo_cli int not null,
Correo_cli varchar(50) not null,
Estado_cli varchar(20) not null
)
go
-- TABLA PELICULA
create table Pelicula(
id_Pelicula int not null Identity(1,1) PRIMARY KEY,
Titulo_pel varchar(50) not null,
FechaEstreno_pel date,
Duracion_pel int,
Genero_pel varchar(20) not null,
Director_pel varchar(50)
)
go

-- TABLA FORMATO
create table Formato(
id_Formato int not null Identity(1,1) PRIMARY KEY,
Tipo_for varchar(20) not null
)
go
create table Copias(
id_Copia int not null Identity(1,1) PRIMARY KEY,
NumCopias int not null,
Estado_cop int not null,
Precio_cop decimal(6,2) not null,
id_Pelicula int not null,
id_formato int not null,
CONSTRAINT FK_pel1 FOREIGN KEY(id_Pelicula)
REFERENCES Pelicula(id_Pelicula),
CONSTRAINT FK_for1 FOREIGN KEY(id_formato)
REFERENCES Formato(id_formato)
)
go
-- TABLA ALQUILER
create table Alquiler(
id_Alquiler int not null Identity(1,1) PRIMARY KEY,
Fecha_alq date not null,
DNI nchar(8) not null,
id_Copia int not null,
CONSTRAINT FK_dni1 FOREIGN KEY(DNI)
REFERENCES Cliente(DNI),
CONSTRAINT FK_cop1 FOREIGN KEY(id_Copia)
REFERENCES Copias(id_Copia)
)
go
-- MODIFICAR DATOS DE UNA TABLA
-- Agregar un campo a la tabla Cliente
Alter table Cliente
ADD Domicilio varchar(30) not null
go
-- Modificar el nombre de un campo de tabla
exec sp_rename 'Cliente.Domicilio', DomicilioNew
-- Modificar el nombre de una tabla
exec sp_rename 'dbo.NuevoCliente', Cliente
-- Eliminar una columna
Alter table Cliente
DROP Column DomicilioNew
go
-- Ver todas las tablas de la BD
select table_name from INFORMATION_SCHEMA.TABLES
-- Ver los campos de todas las tablas de la BD
Select table_name, column_name from INFORMATION_SCHEMA.COLUMNS
go

-- Ver informacion completa de una tabla


sp_help Alquiler
go
-- Eliminar una relacion entre tabla cliente - alquiler
alter table Alquiler
drop constraint fk_dni1
-- Agregar una relacion entre tabla cliente - alquiler
alter table alquiler
add constraint FK_dni_cliente FOREIGN KEY(DNI)
References Cliente(DNI)

-- Agregar Registros
INSERT INTO Formato VALUES('DVD')
INSERT INTO Formato VALUES('DVD RIP')
INSERT INTO Formato VALUES('BLURAY')
INSERT INTO Cliente
VALUES('12345678', 'Juan', 'Perez', 'Lopez', 1,
'jperez@gmail.com', 'Habilitado')
go
INSERT INTO Cliente(ApellidoPat_cli, DNI, Estado_cli,
Nombres_cli, Sexo_cli, ApellidoMat_cli, Correo_cli)
VALUES('Guevara', '22222222', 'habilitado',
'Cesar', 1, 'Ramirez', 'cramirez@hotmail.com')
INSERT INTO Pelicula
VALUES('MATRIX', '10/05/2000', 120, 'Ciencia Ficcin', 'Pedro Santos')
INSERT INTO Pelicula
VALUES('El Ultimo Desafio', '20/06/2012', 110, 'Ciencia Ficcin', 'Almodovar')
go
INSERT INTO Pelicula
VALUES('Asu Mare', '01/01/2014', 100, 'Comedia', 'Anita'),
('La Odisea', '12/07/2015', 200, 'Ficcin', 'Pablo')
INSERT INTO Copias
VALUES(5, 1, 10, 4, 3),
(10, 1, 12, 2, 1),
(7, 2, 20, 4, 2)
INSERT INTO Alquiler
VALUES('23/10/2015', '12345678', 1),
('21/10/2015', '22222222', 2)
select *from Alquiler
-- Seleccionar registros
Select * from Copias
Select * from Pelicula
Select * from Cliente
Select * from Alquiler
Select * from Formato
-- PROGRAMACIN EN TRANSACT SQL

declare @num1 int --declaracin de variables


declare @num2 int
declare @rpta int
set @num1 = 15 -- estableciendo un valor a la variable
set @num2 = 20
set @rpta = @num1 + @num2
select @rpta as SUMA
--Condicionales
declare @estado int
declare @condicion varchar(20)
set @estado = 0
if @estado = 0
begin
set @condicion = 'Activo'
end
else
begin
set @condicion = 'Inactivo'
end
print 'CONDICIN: ' + @condicion
go
--SENTENCIA CASE
declare @num1 int, @num2 int, @rpta int
declare @operacion varchar(15)
set @num1 = 30
set @num2 = 50
set @operacion = 'suma'
set @rpta = case @operacion
when 'suma' then @num1 + @num2
when 'resta' then @num1 - @num2
else @num1 * @num2
end
print 'Resultado' + str(@rpta)
go
declare @operacion varchar(15), @nombre varchar(30)
declare @rpta int
set @operacion = 'suma'
set @rpta = case @operacion
when 'suma' then(select count (*) from Cliente)
when 'resta' then (select count(*) from Pelicula)
else (select count (*) from alquiler)
end
if @operacion = 'suma'
begin
set @nombre = 'Total de alquileres: ' + str(@rpta)
end
print @nombre

--CONTEOS: COUNT (NORMALMENTE)


SELECT COUNT (*) AS TOTAL FROM Pelicula

select id_Pelicula as codigo, Titulo_pel as descripcion, FechaEstreno_pel as Fec


ha from Pelicula -- buena practica para proteger datos (ocultar el nombre de los
campos)
--peliculas por genero
select Genero_pel, count (Genero_pel) as Cantidad from Pelicula
group by Genero_pel
-- RELACIONES JOIN (INNER es la unin entre tablas, RIGHT solo salen elementos de
la tabla de derecha que tienen relacin con la tabla de la izquierda, LEFT)
select * from Alquiler
select C.Nombres_cli, C.ApellidoPat_cli, A.Fecha_alq -- todos los clientes debe
n tener un registro en tabla alquiler
from Cliente C inner join Alquiler A on C.DNI = A.DNI
select C.Nombres_cli, C.ApellidoPat_cli, A.Fecha_alq -- ojo como manda la tabla
cliente (tiene un registro mas) muestra los datos de la tabla que manda (por se
r left - izquierda) llenando datos en null al no tener un alquiler respectivo
from Cliente C left join Alquiler A on C.DNI = A.DNI
select C.Nombres_cli, C.ApellidoPat_cli, A.Fecha_alq -- como manda la tabla alq
uiler (por ser rigth join, derecha) no muestra el cliente que no tiene alquiler
(ver el caso del left join)
from Cliente C right join Alquiler A on C.DNI = A.DNI
-- Alquileres oir cliente incluyendo el nombre de la pelicula
select C.Nombres_cli, C.ApellidoPat_cli, A.Fecha_alq, P.Titulo_pel -- todos los
clientes deben tener un registro en tabla alquiler
from (((Cliente C inner join Alquiler A on C.DNI = A.DNI)
inner join Copias Cp on Cp.id_Copia = A.id_Copia)
inner join Pelicula P on P.id_Pelicula = Cp.id_Pelicula)
select C.Nombres_cli, C.ApellidoPat_cli, A.Fecha_alq, A.DNI
from Cliente C left join Alquiler A on C.DNI = A.DNI
where A.DNI is null
go
-- Total de alquileres por cliente
select C.Nombres_cli, C.ApellidoPat_cli, count(A.DNI) as 'N de veces'
from Cliente C inner join Alquiler A on C.DNI = A.DNI
group by C.Nombres_cli, C.ApellidoPat_cli, A.DNI
select C.Nombres_cli, C.ApellidoPat_cli, count(A.DNI) as 'N de veces' --ojo con e
l left
from Cliente C left join Alquiler A on C.DNI = A.DNI
group by C.Nombres_cli, C.ApellidoPat_cli, A.DNI
--peliculas y su formato
select P.id_Pelicula, P.Titulo_pel, F.Tipo_for
from ((Pelicula P inner join Copias C on P.id_Pelicula = C.id_Pelicula)

inner join Formato F on C.id_formato = F.id_formato)


select P.id_Pelicula, P.Titulo_pel, F.Tipo_for -- ojo con el left
from ((Pelicula P left join Copias C on P.id_Pelicula = C.id_Pelicula)
left join Formato F on C.id_formato = F.id_formato)
select P.id_Pelicula, P.Titulo_pel, isnull(F.Tipo_for, 'SIN FORMATO') as Formato
-- ojo con el left
from ((Pelicula P left join Copias C on P.id_Pelicula = C.id_Pelicula)
left join Formato F on C.id_formato = F.id_formato)
select P.Titulo_pel, count(A.id_Copia) AS TOTAL
from ((Pelicula P left join Copias C on P.id_Pelicula = C.id_Pelicula)
left join Alquiler A on A.id_Copia = C.id_Copia)
group by P.Titulo_pel, A.id_Copia

Вам также может понравиться