Data">
Nothing Special   »   [go: up one dir, main page]

TP SQL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

1) Crear las siguientes tablas sin PKs y FKs en el siguiente orden:

A. Cliente:
 IDCliente: int.
 RazonSocial: varchar (50).
 Domicilio: varchar (50).
 Mail: varchar (50). Admite nulos.
 Rubro: int. Admite nulos.
 CantEmpleados: int.
B. Rubro:
 IDRubro: int.
 Descripcion: varchar (50).
 ClienteSucursal:
C. IDClienteSucursal: int.
 CantSucursalesCapital: int.
 CantSucursalesInterior: int.

create table cliente(


IDCliente int,
RazonSocial varchar(50),
Domicilio varchar(50),
Mail varchar(50) null,
Rubro int null,
cantidadEmpleados int
);

create table Rubro(


IDRubro int,
Descripcion varchar(50)
);

create table ClienteSucursal(


IDClienteSucursal int,
CantSucursalesCapital int,
CantSucursalesInterior int
);

2) Actualizar las tablas de la consigna anterior, agregando las siguientes PKs y FKs en el orden
adecuado:
A. Cliente: En dos instrucciones.
 PK: IDCliente.
 FK: Rubro. Hace referencia a IDRubro en la tabla Rubro.
B. Rubro:
 PK: IDRubro.
C. ClienteSucursal: En una instrucción.
 PK: IDClienteSucursal.
 FK: IDClienteSucursal. Hace referencia a IDCliente en la tabla Cliente.

alter table cliente add primary key(IDCliente);


alter table rubro add primary key(IDRubro);
alter table cliente add foreign key(Rubro) references Rubro(IDRubro);
alter table clientesucursal add primary key(IDClientesucursal);
alter table clientesucursal add foreign key(IDClienteSucursal) references cliente(IDCliente)
3) Luego de realizar el ejercicio anterior, actualizar la tabla Cliente generando las siguientes 4
instrucciones:
 Agregar el campo CP (código postal) cuyo tipo de dato es varchar(50) y no
admite nulos.
 Eliminar el campo CP.
 Eliminar la FK. d. ¿Es posible eliminar la PK? En caso afirmativo, escribir la
instrucción. En caso negativo, justificar.

alter table cliente add CP varchar(50) not null;

alter table cliente drop CP;

No es posible eliminar la PK porque está vinculada a la FK.

4) Eliminar las tablas Cliente, Rubro y ClienteSucursal actualizadas en la consigna 2. ¿Se pueden
eliminar en cualquier orden? Justificar. En caso negativo, indicar el orden.

No se pueden eliminar en cualquier orden, debe ser en el siguiente:

drop table rubro;


drop table clientesucursal;
drop table cliente;

5) Crear las tablas Cliente , Rubro y ClienteSucursal de la consigna 1, pero esta vez incluyendo
las PKs y FKs definidas en la consigna 2. ¿Se pueden crear en cualquier orden? Justificar. En
caso negativo, indicar el orden

Debido a las relaciones entre PKs y Fks se deben crear en el siguiente orden:

create table cliente(


IDCliente int not null,
Domicilio varchar(50) not null,
Mail varchar(50) not null,
Rubro int null,
CantEmpleados int null,
primary key (IDCliente),
constraint fk_cliente_rubro
foreign key (Rubro) references rubro(IDRubro)
);
create table rubro(
IDRubro int not null,
Descripcion varchar(50) not null,
primary key (IDRubro)
);
create table ClienteSucursal(
IDClienteSucursal int not null,
CantSucursalesCapital int null,
CantSucursalesInterior int not null,
primary key (IDClienteSucursal),
foreign key (IDClienteSucursal) references cliente(IDCliente)
);
6) Insertar las siguientes filas en las tablas Cliente, Rubro y ClienteSucursal de la consigna
anterior teniendo en cuenta el orden en que se deben agregar las mismas para respetar las
reglas de integridad referencial:

insert into cliente(IDCliente, Domicilio, Mail, Rubro, CantEmpleados) values


(2, 'Virrey del Pino 1434', 'et@yahoo.com.ar', 1, 5),
(3, 'Aguero 37', 'conectar@fibertel.com.ar', 2, 10),
(4, 'Cerrito esq San Juan', null, 3, 12),
(5, 'Salguero 3421', 'mip@hotmail.com', 2, 3),
(6, 'Las Heras esq Austria', 'rs@gmail.com', null , 4),
(7, 'Cabildo esq Juramento', null, null, 1),
(8, 'Guemes 234', null, 4, 7);

insert into rubro(IDRubro, Descripcion) values


(2, 'telecomunicaciones'),
(3, 'redes'),
(4, 'telefonia ip'),
(5,'seguridad informatica');

insert into cliente(IDCliente, Domicilio, Mail, Rubro, CantEmpleados) values


(4, 'Cerrito esq San Juan', null, 3, 12),
(5, 'Salguero 3421', 'mip@hotmail.com', 2, 3),
(6, 'Las Heras esq Austria', 'rs@gmail.com', null , 4),
(7, 'Cabildo esq Juramento', null, null, 1),
(8, 'Guemes 234', null, 4, 7);

7) Trabajar con la inserción, actualización y eliminación de filas:


a. Insertar en la tabla Cliente el siguiente cliente:
 IDCliente: 9.
 RazonSocial: Tecno Group SA.
 Domicilio: Rivadavia 7654.
 Mail: info@tecnogroup.com.ar.
 Rubro: NULL.  cantEmpleados: 22.
b. Actualizar los siguientes datos en el cliente insertado en la consigna anterior:
 Mail: info@tecnogroup.com.
 Rubro: 3.
c. Eliminar el cliente modificado en la consigna anterior.

a.

insert into cliente (IDCliente, Domicilio, Mail, CantEmpleados) values


(9, 'Rivadavia 7654', 'info@tecnogroup.com.ar', 22);

b.

update cliente
set Mail = 'info@tecnogroup.com', Rubro = 3
where IDCliente = 9;

c.
delete
from cliente
where IDCliente = 9;

8) Responder: Según los datos ingresados en la consigna 6, ¿se puede eliminar de la tabla
Rubro la tupla con IDRubro 2? En caso afirmativo, escribir la/s instrucción/es DML. En caso
negativo, justificar.

No se puede porque está relacionada a la tabla cliente.

9) Realizar las siguientes consultas sobre los datos ingresados en la consigna 6:


NOTA: En cada caso escribir la instrucción DML y el resultado de las tuplas obtenidas al
ejecutarla.
a. Un listado con todos los datos de todos los clientes

Select * from clientes;

b. Un listado de clientes sucursales, indicando su ID de cliente y la cantidad de


sucursales de Capital, donde solo figuren aquellos cuya cantidad de sucursales de
Capital sea menor a 25.

select IDCliente, CantSucursalesCapital


from clientes
inner join ClienteSucursal
on clientes.Idcliente = ClienteSucursal.IDClienteSucursal
where CantSucursalesCapital < 25

c. Un listado de clientes sucursales, indicando su ID de cliente y la cantidad de


sucursales de Capital, donde solo figuren aquellos cuya cantidad de sucursales de
Capital sea menor o igual a 25.

select IDCliente, CantSucursalesCapital


from cliente
inner join clientesucursal
on cliente.IDCliente = clientesucursal.IDClienteSucursal
where CantSucursalesCapital <= 25;

d. Un listado de clientes sucursales, indicando su ID de cliente y la cantidad de


sucursales del Interior, donde solo figuren aquellos cuya cantidad de sucursales del
Interior se encuentren entre 2 y 4. En este caso buscar dos soluciones posibles al
ejercicio.

select IDCliente, CantSucursalesInterior


from cliente as c
inner join clientesucursal as cs
on c.IDCliente = cs.IDClienteSucursal
where CantSucursalesInterior between 2 and 4;

select IDCliente, CantSucursalesInterior


from cliente as c
inner join clientesucursal as cs
on c.IDCliente = cs.IDClienteSucursal
where CantSucursalesInterior >=2 and CantSucursalesInterior<=4;

e. Un listado de clientes sucursales, indicando su ID de cliente y la cantidad de


sucursales del Interior, donde solo figuren aquellos cuya cantidad de sucursales del
Interior sean menores a dos o mayores a 4. En este caso buscar dos soluciones posibles
al ejercicio.
select IDCliente, CantSucursalesInterior
from cliente as c
inner join clientesucursal as cs
on c.IDCliente = cs.IDClienteSucursal
where CantSucursalesInterior < 2 or CantSucursalesInterior > 4;

select IDCliente, CantSucursalesInterior


from cliente as c
inner join clientesucursal as cs
on c.IDCliente = cs.IDClienteSucursal
where CantSucursalesInterior not between 2 and 4;

f. Un listado de clientes, indicando su ID de cliente, razón social y domicilio, donde


solo figuren aquellos cuyo domicilio comience con la letra C.

select IDCliente, Domicilio


from cliente
where Domicilio like 'c%';

g. Un listado de clientes, indicando su ID de cliente, razón social y domicilio, donde


solo figuren aquellos cuyo domicilio contenga la letra A.

select IDCliente, Domicilio


from cliente
where Domicilio like '%a%';

h. Un listado de clientes, indicando su ID de cliente, razón social y domicilio, donde


solo figuren aquellos cuya segunda letra del domicilio sea la letra A.
select IDCliente, Domicilio
from cliente
where Domicilio like '_a%';

i. Un listado de clientes, cuyo ID de rubro sea 1, 2 o 3. En este caso buscar dos


soluciones posibles al ejercicio. j. Un listado de clientes que no tengan rubro.

select *
from cliente
where Rubro <= 3;

select *
from cliente
where Rubro between 1 and 3;

k. Un listado de clientes con ID de rubro 2 o sin rubro, y que además en ambos casos
la cantidad de empleados sea mayor a 3.

select *
from cliente
where CantEmpleados > 3 and (Rubro is null or Rubro = 2);

m. Un listado de los IDs de rubros que están asignados a clientes sin duplicados.

select distinct(IDRubro)
from rubro
inner join cliente
on rubro.IDRubro = cliente.Rubro;
n. Un listado con todos los datos de los clientes y de su rubro asociado, donde solo
figuren los clientes que tienen rubro. En este caso resolver con y sin columnas que
posean datos duplicados.

select IDCliente, Domicilio, Mail, Rubro, CantEmpleados, Descripcion


from cliente as c
inner join rubro as r
on c.Rubro = r.IDRubro;

p. Un listado con todos los datos de los clientes y de su rubro asociado, donde figuren
los clientes que tienen rubro y también aquellos clientes que no tienen rubro asociado.
Resolver sin columnas con datos duplicados.

select IDCliente, Domicilio, Mail, Rubro, Descripcion


from cliente as c
left join rubro as r
on c.Rubro = r.IDRubro;

q. Un listado con todos los datos de los clientes y de su rubro asociado, donde figuren
los clientes que tienen rubro y también aquellos rubros que no tienen clientes
asociados. Resolver sin columnas con datos duplicados.

select IDCliente, Domicilio, Mail, Rubro, CantEmpleados, IDRubro, Descripcion


from cliente as c
right join rubro as r
on c.Rubro = r.IDRubro;

También podría gustarte