Problemas Manual Clase 8 de BD

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

8.1.

Operadores Lógicos compuestos

Problema: 

Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Elimine la tabla, si existe.

2- Cree la tabla con la siguiente estructura:


create table medicamentos(
codigo int unsigned auto_increment,
nombre varchar(20),
laboratorio varchar(20),
precio decimal(5,2) unsigned,
cantidad int unsigned,
primary key(codigo)
);

3- Visualice la estructura de la tabla "medicamentos".

4- Mediante un formulario en HTML y con PHP Ingrese los siguientes registros (insert
into):
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Sertal','Roche',5.2,100);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Buscapina','Roche',4.10,200);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Amoxidal 500','Bayer',15.60,100);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Paracetamol 500','Bago',1.90,200);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Bayaspirina','Bayer',2.10,150);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Amoxidal jarabe','Bayer',5.10,250);

5- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea 'Roche' y
cuyo precio sea menor a 5:
select codigo,nombre
from medicamentos
where laboratorio='Roche' and
precio<5;
Quedó seleccionado 1 registro, es el único que cumple con ambas condiciones.

6- Recupere los medicamentos cuyo laboratorio sea 'Roche' o cuyo precio sea menor a
5:
select * from medicamentos
where laboratorio='Roche' or
precio<5;
Note que la salida es diferente, hemos cambiado el operador de la sentencia anterior.
Ahora se recuperaron todos los registros cuyo laboratorio es igual a 'Roche' y todos los
registros cuyo precio es menor a 5. Aquellos registros que no cumplieron con la
condición 1 (no son de "Roche") ni con la condicion2 (no cuestan menos de 5) no
aparecen.

7- Muestre todos los registros que no sean de "Bayer" usando el operador "not".

8- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad
sea=100:
select * from medicamentos
where not laboratorio='Bayer' and
cantidad=100;

9- Muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad NO
sea=100:
select * from medicamentos
where laboratorio='Bayer' and
not cantidad=100;
Analice estas 2 últimas sentencias. El operador "not" afecta a la condición a la cual
antecede, no a las siguientes. Los resultados de estas 2 sentencias son diferentes.

10- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea
mayor a 10:
delete from medicamentos
where laboratorio='Bayer' and
precio>10;
Sólo 1 registro debe ser eliminado, el que cumple con ambas condiciones.

11- Cambie la cantidad por 200, a todos los medicamentos de "Roche" cuyo precio sea
mayor a 5:
update medicamentos set cantidad=200
where laboratorio='Roche' and
precio>5;
Un solo registro fue actualizado porque sólo uno cumplió con las condiciones
especificadas.

12- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3.
Antes veamos cuáles cumplen con la condición, los registros 5 y 6 son de "Bayer,
cumplen con la primera condición, los registros 4 y 5 cumplen con la segunda
condición, es decir, se borrarán 3 registros: el 4 porque cumple con la segunda
condición, el 5 porque cumple con ambas y el 6 porque cumple con la primera.
Digitemos:
delete from medicamentos
where laboratorio='Bayer' or
precio<3;

Otros problemas: 

A) Trabajamos con la tabla "peliculas" de un video club que alquila películas en video.

1- Elimine la tabla, si existe.

2- Créela con la siguiente estructura:


-codigo (entero sin signo, autoincrementable),
-titulo (cadena de 30),
-actor (cadena de 20),
-duracion (entero sin signo no mayor a 200),
-clave primaria (codigo).

3- Ingrese los siguientes registros:


insert into peliculas (titulo,actor,duracion)
values('Mision imposible','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la piedra filosofal','Daniel R.',180);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la camara secreta','Daniel R.',190);
insert into peliculas (titulo,actor,duracion)
values('Mision imposible 2','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('Mujer bonita','Richard Gere',120);
insert into peliculas (titulo,actor,duracion)
values('Tootsie','D. Hoffman',90);
insert into peliculas (titulo,actor,duracion)
values('Un oso rojo','Julio Chavez',100);
insert into peliculas (titulo,actor,duracion)
values('Elsa y Fred','China Zorrilla',110);

4- Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere". (3 registros).

5- Recupere los registros cuyo actor sea "Tom Cruise" y "Richard Gere".
(ninguno cumple ambas condiciones).

6- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya
duración sea 180.
(1 registro afectado).

8- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea
mayor o igual a 100:
delete from peliculas
where not actor='Tom Cruise' and
duracion<=100;
Deben borrarse 2 registros.

B) En una página web se solicitan los siguientes datos para guardar información de sus
visitas:
nombre, mail, pais.

1- Elimine la tabla "visitas", si existe.

2- Créela con la siguiente estructura:


create table visitas (
numero int unsigned auto_increment,
nombre varchar(30) not null,
mail varchar(50),
pais varchar (20),
fecha datetime,
primary key(numero)
);

3- Ingrese algunos registros:


insert into visitas (nombre,mail,pais,fecha)
values (???);
De tal manera que pueda aplicar el tema

4- Muestre los datos de las visitas del país o países que ud quiera ingresado después
del mes de septiembre:

5- Elimine todos los registros cuyo pais no sea el que ud quiera seleccionar y que
hayan visitado la página antes de las 16 hs.:

8.2. Operadores relacionales

Problema: 

Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Elimine la tabla, si existe.

2- Cree la tabla con la siguiente estructura:


create table medicamentos(
codigo int unsigned auto_increment,
nombre varchar(20),
laboratorio varchar(20),
precio decimal(5,2) unsigned,
cantidad int unsigned,
primary key(codigo)
);

3- Visualice la estructura de la tabla "medicamentos".

4- Ingrese los siguientes registros:


insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Sertal','Roche',5.2,100);
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Buscapina','Roche',4.10,200);
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Amoxidal 500','Bayer',15.60,100);
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Paracetamol 500','Bago',1.90,200);
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Bayaspirina','Bayer',2.10,150);
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Amoxidal jarabe','Bayer',5.10,250);

5- Recupere los nombres y precios de los medicamentos cuyo precio esté entre 5 y 15:
select nombre,precio from medicamentos
where precio between 5 and 15;

6- Seleccione los registros cuyo laboratorio sea "Bayer" o "Bago":


select * from medicamentos
where laboratorio in ('Bayer','Bago');

7- Elimine los registros cuya cantidad esté entre 100 y 200:


delete from medicamentos
where cantidad between 100 and 200;

Otros problemas: 

Una concesionaria de autos vende autos usados y almacena la información en una


tabla llamada "autos".

1- Elimine la tabla "autos" si existe.

2- Cree la tabla con la siguiente estructura:


create table autos(
placa char(6),
marca varchar(20),
modelo char(4),
precio decimal(8,2) unsigned,
primary key(placa)
);

3- Ingrese los siguientes registros:


insert into autos(placa,marca,modelo,precio)
values('ACD123','Mercedes Benz 128','2010',15000);
insert into autos(placa,marca,modelo,precio)
values('ACG234','Renault 11','1990',40000);
insert into autos(placa,marca,modelo,precio)
values('BCD333','Peugeot 505','1990',80000);
insert into autos(placa,marca,modelo,precio)
values('GCD123','Renault Clio','1990',70000);
insert into autos(placa,marca,modelo,precio)
values('BCC333','Renault Megane','2008',95000);
insert into autos(placa,marca,modelo,precio)
values('BVF543','Mercedes Benz 128','2015',20000);

4- Seleccione todos los autos cuyo año sea '2010' o '2015' usando el operador "in":
select * from autos
where modelo in ('2010','2015');

5- Seleccione todos los autos cuyo precio esté entre 50000 y 100000:
select * from autos
where precio between 50000 and 100000;

8.3. Like y not like


Problema: 

Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Elimine la tabla, si existe:


drop table if exists medicamentos;

2- Cree la tabla con la siguiente estructura:


create table medicamentos(
codigo int unsigned auto_increment,
nombre varchar(20) not null,
laboratorio varchar(20),
precio decimal(6,2) unsigned,
cantidad int unsigned,
primary key(codigo)
);

3- Visualice la estructura de la tabla "medicamentos".

4- Ingrese los siguientes registros:


insert into medicamentos (nombre, laboratorio,precio)
values('Sertal gotas','Roche',5.2);
insert into medicamentos (nombre, laboratorio,precio)
values('Buscapina','Roche',4.10);
insert into medicamentos (nombre, laboratorio,precio)
values('Amoxidal 500','Bayer',15.60);
insert into medicamentos (nombre, laboratorio,precio)
values('Paracetamol 500','Bago',1.90);
insert into medicamentos (nombre, laboratorio,precio)
values('Bayaspirina','Bayer',2.10);
insert into medicamentos (nombre, laboratorio,precio)
values('Amoxidal jarabe','Bayer',5.10);
insert into medicamentos (nombre, laboratorio,precio)
values('Sertal compuesto','Bayer',5.10);
insert into medicamentos (nombre, laboratorio,precio)
values('Paracetamol 1000','Bago',2.90);
insert into medicamentos (nombre, laboratorio,precio)
values('Amoxinil','Roche',17.80);

5- Recupere los medicamentos cuyo nombre comiencen con "Amox":


select codigo,nombre,laboratorio,precio
from medicamentos
where nombre like 'Amox%';
Quedaron 3 registros seleccionados.
6- Recupere los medicamentos "Paracetamol" cuyo precio sea menor a 2:
select codigo,nombre,laboratorio,precio
from medicamentos
where nombre like 'Paracetamol%' and
precio<2;

7- Busque todos los medicamentos cuyo precio tenga .10 centavos:


select codigo,nombre,laboratorio,precio
from medicamentos
where precio like '%.1%';

8- Muestre todos los medicamentos que no contengan la cadena "compuesto":


select codigo,nombre,laboratorio,precio
from medicamentos
where nombre not like'%compuesto%';

9- Elimine todos los registros cuyo laboratorio contenga la letra "y":


delete from medicamentos
where laboratorio like '%y%';

10- Cambie el precio por 5, al "Paracetamol" cuyo precio es mayor a 2:


update medicamentos set precio=5
where nombre like 'Paracetamol%' and
precio>2;

Otros problemas: 

A) Trabaje con la tabla "peliculas" de un video club.

1- Elimine la tabla, si existe.

2- Créela con la siguiente estructura:


-codigo (entero sin signo, autoincrementable),
-titulo (cadena de 30), not null,
-actor (cadena de 20),
-duracion (entero sin signo no mayor a 200 aprox.),
-clave primaria (codigo).

3- Visualice la estructura de la tabla "peliculas".

4- Ingrese los siguientes registros:


insert into peliculas (titulo,actor,duracion)
values('Mision imposible','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la piedra filosofal','Daniel R.',180);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la camara secreta','Daniel R.',190);
insert into peliculas (titulo,actor,duracion)
values('Mision imposible 2','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('Mujer bonita','Richard Gere',120);
insert into peliculas (titulo,actor,duracion)
values('Tootsie','D. Hoffman',90);
insert into peliculas (titulo,actor,duracion)
values('Un oso rojo',null,100);
insert into peliculas (titulo,actor,duracion)
values('Elsa y Fred','China Zorrilla',110);
insert into peliculas (titulo,actor,duracion)
values('Mrs. Johns','Richard Gere',180);

5- Actualice el valor del campo "actor" cambiando por 'R. Gere- J. Roberts', de la
película cuyo código es 5:
update peliculas set actor='R. Gere-J. Roberts'
where codigo=5;

6- Seleccione todas las películas en las cuales trabaje el actor "Gere". Use "like". (2
registros seleccionados).

7- Recupere los registros que NO contengan la letra "y" en el título y contenga "ch" en
el campo "actor" (2 registros):
select * from peliculas
where titulo not like '%y%' and
actor like '%ch%';

8- Seleccione las películas que comiencen con "M" y cuya duración sea menor a 150 (3
registros):
select * from peliculas
where titulo like 'M%' and
duracion<150;

9- Cambie el valor de la duración a 100 en las películas en las cuales el campo "actor"
comience con "D":
update peliculas set duracion=100
where actor like 'D%';

10- Recupere los registros que cumplan la condición del punto anterior, para verificar
el cambio de la duración:
select * from peliculas
where actor like 'D%';

11- Vea si existen películas con títulos nulos:


select * from peliculas
where titulo like null;

12- Vea si existen películas con valor nulo en el campo "actor":


select * from peliculas
where actor like null;

B) Trabaje con la tabla "usuarios" que almacena el nombre y clave de cada usuario.

1- Elimine la tabla, si existe.


- Créela con la siguiente estructura:
-nombre (cadena de 20),
-clave (cadena de 10),
-clave primaria (clave).

3- Visualice la estructura de la tabla "usuarios".

4- Ingrese los varios registros de tal manera que aplique el contexto de este tema:

5- Busque los registros cuya clave contenga sólo 5 letras:

6- Busque los registros cuyo nombre de usuario termine con "o":

8.4. Regexp
Problema: 

Trabaje con la tabla "agenda" que registra la información referente a sus amigos.

1- Elimine la tabla si existe.

2- Cree la tabla con la siguiente estructura:


create table agenda(
apellido varchar(30),
nombre varchar(20) not null,
domicilio varchar(30),
telefono varchar(11),
mail varchar(30)
);

3- Ingrese tantos registros como pueda practicar el tema correspondiente a regexp

4- Busque todos los mails que contengan la cadena "gmail":

5- Busque los nombres que no tienen "z" ni "g":

6- Busque los apellidos que tienen por lo menos una de las letras de la "v" hasta la "z"
(v,w,x,y,z):

7- Seleccione los apellidos que terminen en "ez":

8- Seleccione los apellidos, nombres y domicilios de los amigos cuyos apellidos


contengan 2 letras "i":

9- Seleccione los teléfonos que tengan 7 caracteres exactamente:

10- Seleccione el nombre y mail de todos los amigos cuyos mails tengan al menos 20
caracteres:
Otros problemas: 

Un almacén de UNILAGO que vende artículos de computación registra los datos de sus
artículos en una tabla con ese nombre.

1- Elimine "articulos", si existe:


drop table if exists articulos;

2- Cree la tabla, con la siguiente estructura:


create table articulos(
codigo int unsigned auto_increment,
nombre varchar(25) not null,
descripcion varchar(30),
precio decimal(6,2) unsigned,
cantidad tinyint unsigned,
primary key(codigo)
);

3- Ingrese algunos registros:


insert into articulos (nombre, descripcion, precio,cantidad)
values ('impresora','Epson Stylus C45',400.80,20);
insert into articulos (nombre, descripcion, precio,cantidad)
values ('impresora','Epson Stylus C85',500,30);
insert into articulos (nombre, descripcion, precio,cantidad)
values ('monitor','Samsung 14',800,10);
insert into articulos (nombre, descripcion, precio,cantidad)
values ('teclado','ingles Biswal',100,50);
insert into articulos (nombre, descripcion, precio,cantidad)
values ('teclado','español Biswal',90,50);
insert into articulos (nombre, descripcion, precio,cantidad)
values ('impresora multifuncion','HP 1410',300,20);

4- Seleccione todos los artículos que comienzan con "impresora":


select * from articulos
where nombre regexp '^impresora';

5-Busque los artículos en los cuales el campo "descripcion" no tienen "H" ni "W":
select * from articulos
where descripcion not regexp '[hw]';

6- Seleccione las descripciones que contengan una letra "s" seguida de un caracter
cualquiera y luego una "n":
select * from articulos
where descripcion regexp 's.n';

Busque otras formas de hacer consultas por todos los ejercicios de este documento

También podría gustarte