domingo, 8 de abril de 2012

30 - Otros operadores relacionales (between - in)

Hemos visto los operadores relacionales:

= (igual), <> (distinto), > (mayor), < (menor), >= (mayor o igual), <= (menor o igual), is null/is not null (si un valor es NULL o no).

Existen otros que simplifican algunas consultas:

Para recuperar de nuestra tabla "libros" los registros que tienen precio mayor o igual a 20 y menor o igual a 40, usamos 2 condiciones unidas por el operador lógico "and":

select * from libros
  where precio>=20 and precio<=40;
 
Podemos usar "between":

select * from libros
  where precio between 20 and 40;
 
"between" significa "entre". Averiguamos si el valor de un campo dado (precio) está entre los valores mínimo y máximo especificados (20 y 40 respectivamente). 

Si agregamos el operador "not" antes de "between" el resultado se invierte. 

Para recuperar los libros cuyo autor sea 'Paenza' o 'Borges' usamos 2 condiciones:

select * from libros
  where autor='Borges' or autor='Paenza';
 
Podemos usar "in":

select * from libros
  where autor in('Borges','Paenza');
 
Con "in" averiguamos si el valor de un campo dado (autor) está incluido en la lista de valores especificada (en este caso, 2 cadenas).

Para recuperar los libros cuyo autor no sea 'Paenza' ni 'Borges' usamos:

select * from libros where autor<>'Borges' and autor<>'Paenza';
 
También podemos usar "in" :

select * from libros
 where autor not in ('Borges','Paenza');
 
Con "in" averiguamos si el valor del campo está incluido en la lista, con "not" antecediendo la condición, invertimos el resultado.


Problema: 

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe.

Creamos la tabla con la siguiente estructura:

create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  primary key(codigo)
 );
 
Ingresamos algunos registros:

insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Planeta',15.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Martin Fierro','Jose Hernandez','Emece',22.90);
 insert into libros (titulo,autor,editorial,precio)
  values('Martin Fierro','Jose Hernandez','Planeta',39);
 insert into libros (titulo,autor,editorial,precio)
  values('Aprenda PHP','Mario Molina','Emece',19.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Cervantes y el quijote','Borges','Paidos',35.40);
 insert into libros (titulo,autor,editorial,precio)
  values('Matematica estas ahi', 'Paenza', 'Paidos',19);
 
Recuperamos los registros que tienen precio mayor o igual a 20 y menor o igual a 40, usando 2 condiciones:
 
select * from libros
  where precio>=20 and
  precio<=40;
 
Ahora usamos "between" y confirmamos que la salida es la misma:

select * from libros
  where precio between 20 and 40;
 
Recuperamos los libros cuyo autor es 'Paenza' o 'Borges' usando 2 condiciones:

select * from libros
  where autor='Borges' or
  autor='Paenza';
 
Usamos "in" y obtenemos el mismo resultado:

select * from libros
  where autor in('Borges','Paenza');
 
Seleccionamos los libros cuyo autor no es 'Paenza' ni 'Borges' usamos:

select * from libros
  where autor<>'Borges' and
  autor<>'Paenza';
 
Realizamos la misma consulta, pero esta vez con "in" :

select * from libros
  where autor not in ('Borges','Paenza');
 
 
 
Problema Propuesto:
 
 
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:
 
 (nombre,laboratorio,precio,cantidad)
 Sertal,Roche,5.2,100
 Buscapina,Roche,4.10,200
 Amoxidal 500,Bayer,15.60,100
 Paracetamol 500,Bago,1.90,200
 Bayaspirina,Bayer,2.10,150
 Amoxidal jarabe,Bayer,5.10,250

5- Recupere los nombres y precios de los medicamentos cuyo precio 
esté entre 5 y 15:
 
6- Seleccione los registros cuyo laboratorio sea "Bayer" o "Bago":
 
7- Elimine los registros cuya cantidad esté entre 100 y 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(
  patente char(6),
  marca varchar(20),
  modelo char(4),
  precio decimal(8,2) unsigned,
  primary key(patente)
 );
 
3- Ingrese los siguientes registros:
 
 (patente,marca,modelo,precio)
  ACD123,Fiat 128,1970,15000
  ACG234,Renault 11,1990,40000
  BCD333,Peugeot 505,1990,80000
  GCD123,Renault Clio,1990,70000
  BCC333,Renault Megane,1998,95000
  BVF543,Fiat 128,1975,20000

4- Seleccione todos los autos cuyo año sea '1970' o '1975' 
usando el operador "in":
 
5- Seleccione todos los autos cuyo precio esté entre 50000 y 100000:


      
 
 

No hay comentarios:

Publicar un comentario