3º Recuperación de valores (I)
Un videoclub que alquila películas en video almacena la información de sus películas
en alquiler en una tabla llamada "peliculas".
1- Cree la tabla:
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
2- Vea la estructura de la tabla.
3- Ingrese los siguientes registros:
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',180,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',190,2);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mujer bonita','Julia Roberts',118,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',110,2);
4- Realice un "select" mostrando solamente el título y actor de todas las películas
5- Muestre el título y duración de todas las peliculas
6- Muestre el título y la cantidad de copias
4º Recuperación de valores (II)
Una empresa almacena los datos de sus empleados en una tabla llamada
"empleados".
1- Cree la tabla:
create table empleados(
nombre varchar(20),
documento varchar(8),
sexo varchar(1),
domicilio varchar(30),
sueldobasico float
);
2- Vea la estructura de la tabla
3- Ingrese algunos registros:
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Juan Juarez','22333444','m','Sarmiento 123',500);
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Ana Acosta','27888999','f','Colon 134',700);
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Carlos Caseres','31222333','m','Urquiza 479',850);
4- Muestre todos los datos de los empleados
5- Muestre el nombre, documento y domicilio de los empleados
6- Realice un "select" mostrando el documento, sexo y sueldo básico de todos los
empleados
5º Clausula Where (I)
Trabaje con la tabla "agenda" en la que registra los datos de sus amigos.
1- Cree la tabla, con los siguientes campos: apellido (cadena de 30), nombre
(cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11).
2- Visualice la estructura de la tabla "agenda".
3- Ingrese los siguientes registros:
Acosta, Ana, Colon 123, 4234567;
Bustamante, Betina, Avellaneda 135, 4458787;
Lopez, Hector, Salta 545, 4887788;
Lopez, Luis, Urquiza 333, 4545454;
Lopez, Marisa, Urquiza 333, 4545454.
4- Seleccione todos los registros de la tabla
5- Seleccione el registro cuyo nombre sea "Marisa" (1 registro)
6- Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lopez"
(3 registros)
7- Muestre el nombre de quienes tengan el teléfono "4545454" (2 registros)
6º Clausula Where (II)
Trabaje con la tabla "libros" de una librería que guarda información referente a sus
libros disponibles para la venta.
1- Cree la tabla "libros". Debe tener la siguiente estructura:
create table libros (
titulo varchar(20),
autor varchar(30),
editorial varchar(15));
2- Visualice la estructura de la tabla "libros".
3- Ingrese los siguientes registros:
El aleph,Borges,Emece;
Martin Fierro,Jose Hernandez,Emece;
Martin Fierro,Jose Hernandez,Planeta;
Aprenda PHP,Mario Molina,Siglo XXI;
4- Seleccione los registros cuyo autor sea "Borges" (1 registro)
5- Seleccione los títulos de los libros cuya editorial sea "Emece" (2 registros)
6- Seleccione los nombres de las editoriales de los libros cuyo titulo sea "Martin
Fierro" (2 registros)
7º Operadores relacionales (I)
Un comercio que vende artículos de computación registra los datos de sus artículos
en una tabla con ese nombre.
1- Cree la tabla, con la siguiente estructura:
create table articulos(
codigo integer,
nombre varchar(20),
descripcion varchar(30),
precio float,
cantidad integer
);
2- Ingrese algunos registros:
insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (1,'impresora','Epson Stylus C45',400.80,20);
insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (2,'impresora','Epson Stylus C85',500,30);
insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (3,'monitor','Samsung 14',800,10);
insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (4,'teclado','ingles Biswal',100,50);
insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (5,'teclado','español Biswal',90,50);
3- Seleccione los datos de las impresoras (2 registros)
4- Seleccione los artículos cuyo precio sea mayor o igual a 400 (3 registros)
5- Seleccione el código y nombre de los artículos cuya cantidad sea menor a 30 (2
registros)
6- Selecciones el nombre y descripción de los artículos que NO cuesten $100 (4
registros)
8º Operadores relacionales (II)
Un video club que alquila películas en video almacena la información de sus
películas en alquiler en una tabla denominada "peliculas".
1- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
2- Ingrese los siguientes registros:
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',120,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',180,4);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mujer bonita','Julia R.',90,1);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',80,2);
3- Seleccione las películas cuya duración no supere los 90 minutos (2 registros)
4- Seleccione el título de todas las películas en las que el actor NO sea "Tom
Cruise" (2 registros)
5- Muestre todos los campos, excepto "duracion", de todas las películas de las que
haya más de 2 copias (2 registros)
9º Borrar registros de una tabla
Trabaje con la tabla "agenda" que registra la información referente a sus amigos.
1- Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre
(cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11):
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
2- Ingrese los siguientes registros (insert into):
Alvarez,Alberto,Colon 123,4234567,
Juarez,Juan,Avellaneda 135,4458787,
Lopez,Maria,Urquiza 333,4545454,
Lopez,Jose,Urquiza 333,4545454,
Salas,Susana,Gral. Paz 1234,4123456.
3- Elimine el registro cuyo nombre sea "Juan" (1 registro afectado)
4- Elimine los registros cuyo número telefónico sea igual a "4545454" (2 registros
afectados)
5- Muestre la tabla.
6- Elimine todos los registros (2 registros afectados)
7- Muestre la tabla.
10º Actualizar los campos de un registro (I)
Trabaje con la tabla "agenda" que almacena los datos de sus amigos.
1- Cree la tabla:
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
2- Ingrese los siguientes registros:
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Acosta','Alberto','Colon 123','4234567');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Juarez','Juan','Avellaneda 135','4458787');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Lopez','Maria','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Lopez','Jose','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Suarez','Susana','Gral. Paz 1234','4123456');
3- Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro
afectado)
4- Actualice los registros cuyo número telefónico sea igual a "4545454" por
"4445566"
(2 registros afectados)
5- Actualice los registros que tengan en el campo "nombre" el valor "Juan" por
"Juan Jose" (ningún
registro afectado porque ninguno cumple con la condición del "where")
6 - Luego de cada actualización ejecute un select que muestre todos los registros
de la tabla.
11º Actualizar los campos de un registro (II)
Trabaje con la tabla "libros" de una librería.
1- Créela con los siguientes campos: titulo (cadena de 30 caracteres de longitud),
autor (cadena de 20), editorial (cadena de 15) y precio (float):
create table libros (
titulo varchar(30),
autor varchar(20),
editorial varchar(15),
precio float
);
2- Ingrese los siguientes registros:
insert into libros (titulo, autor, editorial, precio)
values ('El aleph','Borges','Emece',25.00);
insert into libros (titulo, autor, editorial, precio)
values ('Martin Fierro','Jose Hernandez','Planeta',35.50);
insert into libros (titulo, autor, editorial, precio)
values ('Aprenda PHP','Mario Molina','Emece',45.50);
insert into libros (titulo, autor, editorial, precio)
values ('Cervantes y el quijote','Borges','Emece',25);
insert into libros (titulo, autor, editorial, precio)
values ('Matematica estas ahi','Paenza','Siglo XXI',15);
3- Muestre todos los registros (5 registros):
4- Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (1
registro afectado)
5- Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", por
"Adrian Paenza" (ningún registro afectado porque ninguno cumple la condición)
6- Actualice el precio del libro de "Mario Molina" a 27 pesos (1 registro afectado):
update libros set precio=27 where autor='Mario Molina';
7- Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros
cuya editorial sea igual a "Emece" (3 registros afectados)
8 - Luego de cada actualización ejecute un select que muestre todos los registros
de la tabla
12: Clave primaria
Trabaje con la tabla "libros" de una librería.
1- Créela con los siguientes campos, estableciendo como clave primaria el campo
"codigo":
createtable libros(
codigointnotnull,
titulo varchar(40) notnull,
autor varchar(20),
editorial varchar(15),
primarykey(codigo)
);
2- Ingrese los siguientes registros:
insertinto libros (codigo,titulo,autor,editorial)
values (1,'El aleph','Borges','Emece');
insertinto libros (codigo,titulo,autor,editorial)
values (2,'Martin Fierro','JoseHernandez','Planeta');
insertinto libros (codigo,titulo,autor,editorial)
values (3,'Aprenda PHP','MarioMolina','Nuevo Siglo');
3- Ingrese un registro con código repetido (aparece un mensaje de error)
4- Intente ingresar el valor "null" en el campo "codigo"
5- Intente actualizar el código del libro "Martin Fierro" a "1" (mensaje de error)
13º Valores Null (I)
Una farmacia guarda información referente a sus medicamentos en una tabla
llamada "medicamentos".
13º Valores Null(I)
1- Cree la tabla con la siguiente estructura:
create table medicamentos(
codigo integer not null,
nombre varchar(20) not null,
laboratorio varchar(20),
precio float,
cantidad integer not null
);
2- Visualice la estructura de la tabla "medicamentos" indicando si el campo admite
valores null.
3- Ingrese algunos registros con valores "null" para los campos que lo admitan:
insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
values(1,'Sertal gotas',null,null,100);
insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
values(2,'Sertal compuesto',null,8.90,150);
insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
values(3,'Buscapina','Roche',null,200);
4- Vea todos los registros:
5- Ingrese un registro con valor "0" para el precio y cadena vacía para el
laboratorio.
6- Ingrese un registro con valor "0" para el código y cantidad y cadena vacía para
el nombre.
7- Muestre todos los registros.
8- Intente ingresar un registro con valor nulo para un campo que no lo admite
(aparece un mensaje de error):
9- Recupere los registros que contengan valor "null" en el campo "laboratorio",
luego los que
tengan una cadena vacía en el mismo campo. Note que el resultado es diferente.
10- Recupere los registros que contengan valor "null" en el campo "precio", luego
los que tengan el
valor 0 en el mismo campo. Note que el resultado es distinto.
11- Recupere los registros cuyo laboratorio no contenga una cadena vacía, luego
los que sean
distintos de "null".
Note que la salida de la primera sentencia no muestra los registros con cadenas
vacías y tampoco los
que tienen valor nulo; el resultado de la segunda sentencia muestra los registros
con valor para el
campo laboratorio (incluso cadena vacía).
12- Recupere los registros cuyo precio sea distinto de 0, luego los que sean
distintos de "null".
Note que la salida de la primera sentencia no muestra los registros con valor 0 y
tampoco los que
tienen valor nulo; el resultado de la segunda sentencia muestra los registros con
valor para el
campo precio (incluso el valor 0).
14º Valores Null (II)
Trabaje con la tabla que almacena los datos sobre películas, llamada "peliculas".
1- Créela con la siguiente estructura:
create table peliculas(
codigo int not null,
titulo varchar(40) not null,
actor varchar(20),
duracion int
);
2- Visualice la estructura de la tablanote que el campo "codigo" y "titulo", en la
columna "ins_nullable" muestra "NO" y los otros campos "YES".
3- Ingrese los siguientes registros:
insert into peliculas (codigo,titulo,actor,duracion)
values(1,'Mision imposible','Tom Cruise',120);
insert into peliculas (codigo,titulo,actor,duracion)
values(2,'Harry Potter y la piedra filosofal',null,180);
insert into peliculas (codigo,titulo,actor,duracion)
values(3,'Harry Potter y la camara secreta','Daniel R.',null);
insert into peliculas (codigo,titulo,actor,duracion)
values(0,'Mision imposible 2','',150);
insert into peliculas (codigo,titulo,actor,duracion)
values(4,'','L. Di Caprio',220);
insert into peliculas (codigo,titulo,actor,duracion)
values(5,'Mujer bonita','R. Gere-J. Roberts',0);
4- Recupere todos los registros para ver cómo PostgreSQL los almacenó:
select * from peliculas;
5- Intente ingresar un registro con valor nulo para campos que no lo admiten
(aparece un mensaje de
error)
6- Muestre los registros con valor nulo en el campo "actor" y luego los que guardan
una cadena vacía
(note que la salida es distinta) (1 registro)
7- Modifique los registros que tengan valor de duración desconocido (nulo) por
"120" (1 registro
actualizado)
8- Coloque 'Desconocido' en el campo "actor" en los registros que tengan una
cadena vacía en dicho
campo (1 registro afectado)
9- Muestre todos los registros. Note que el cambio anterior no afectó a los registros
con valor
nulo en el campo "actor".
10- Elimine los registros cuyo título sea una cadena vacía (1 registro)
15º Alias
Trabaje con la tabla "libros" de una librería.
1- Cree la tabla:
create table libros(
codigo serial,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
editorial varchar(20),
precio decimal(6,2),
cantidad smallint default 0,
primary key (codigo)
);
2- Ingrese algunos registros:
insert into libros (titulo,autor,editorial,precio)
values('El aleph','Borges','Emece',25);
insert into libros (titulo,autor,editorial,precio,cantidad)
values('Java en 10 minutos','Mario Molina','Siglo XXI',50.40,100);
insert into libros (titulo,autor,editorial,precio,cantidad)
values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',15,50);
3- Muestre todos los campos de los libros y un campo extra, con el encabezado
"monto_total" en la
que calcule el monto total en dinero de cada libro (precio por cantidad)
4- Muestre el título, autor y precio de todos los libros de editorial "Emece" y
agregue dos columnas
extra en las cuales muestre el descuento de cada libro, con el encabezado
"descuento" y el precio
con un 10% de descuento con el encabezado "precio_final".
16º Operadores Lógicos (I)
Trabaje con la tabla llamada "medicamentos" de una farmacia.
1- Cree la tabla con la siguiente estructura:
create table medicamentos(
codigo serial,
nombre varchar(20),
laboratorio varchar(20),
precio decimal(5,2),
cantidad smallint,
primary key(codigo)
);
2- Ingrese algunos 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);
3- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea
'Roche' y cuyo precio sea
menor a 5 (1 registro cumple con ambas condiciones)
4- Recupere los medicamentos cuyo laboratorio sea 'Roche' o cuyo precio sea
menor a 5 (4 registros)
Note que el resultado es diferente al del punto 4, hemos cambiado el operador de la
sentencia
anterior.
5- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya
cantidad sea=100 (1
registro)
6- Muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad
NO sea=100 (2 registros)
Analice estas 2 últimas sentencias. El operador "not" afecta a la condición a la cual
antecede, no a
las siguientes. Los resultados de los puntos 6 y 7 son diferentes.
7- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea
mayor a 10 (1
registro eliminado)
8- Cambie la cantidad por 200, a todos los medicamentos de "Roche" cuyo precio
sea mayor a 5 (1
registro afectado)
9- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a
3 (3 registros
borrados)
17º Operadores Lógicos (II)
Trabajamos con la tabla "peliculas" de un video club que alquila películas en video.
1- Créela con la siguiente estructura:
create table peliculas(
codigo serial,
titulo varchar(40) not null,
actor varchar(20),
duracion smallint,
primary key (codigo)
);
2- Ingrese algunos 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);
3- Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere" (3
registros)
4- Recupere los registros cuyo actor sea "Tom Cruise" y duración menor a 100
(ninguno cumple ambas condiciones)
5- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya
duración sea 180 (1 registro afectado)
6- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración
sea mayor o igual a 100 (5 registros eliminados)
18º is Null
1- Créela con la siguiente estructura:
create table peliculas(
codigo serial,
titulo varchar(40) not null,
actor varchar(20),
duracion smallint,
primary key (codigo)
);
2- Ingrese algunos 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.',null);
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',null,120);
insert into peliculas(titulo,actor,duracion)
values('Tootsie','D. Hoffman',90);
insert into peliculas (titulo)
values('Un oso rojo');
3- Recupere las películas cuyo actor sea nulo (2 registros)
4- Cambie la duración a 0, de las películas que tengan duración igual a "null" (2
registros)
5- Borre todas las películas donde el actor sea "null" y cuya duración sea 0 (1
registro)
19º Valores numéricos
Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla
llamada "cuentas".
La tabla contiene estos datos:
Número de Cuenta Documento Nombre Saldo
______________________________________________________________
1234 25666777 Pedro Perez 500000.60
2234 27888999 Juan Lopez -250000
3344 27888999 Juan Lopez 4000.50
3346 32111222 Susana Molina 1000
1- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos
descriptos arriba:
- Número de cuenta: entero, no puede haber valores repetidos, clave primaria;
- Documento del propietario de la cuenta: cadena de caracteres de 8 de longitud
(siempre 8), no nulo;
- Nombre del propietario de la cuenta: cadena de caracteres de 30 de longitud,
- Saldo de la cuenta: valores altos con decimales.
2- Ingrese los siguientes registros:
insert into cuentas(numero,documento,nombre,saldo)
values('1234','25666777','Pedro Perez',500000.60);
insert into cuentas(numero,documento,nombre,saldo)
values('2234','27888999','Juan Lopez',-250000);
insert into cuentas(numero,documento,nombre,saldo)
values('3344','27888999','Juan Lopez',4000.50);
insert into cuentas(numero,documento,nombre,saldo)
values('3346','32111222','Susana Molina',1000);
Note que hay dos cuentas, con distinto número de cuenta, de la misma persona.
3- Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros)
4- Muestre el número de cuenta y saldo de todas las cuentas cuyo propietario sea
"Juan Lopez" (2 registros)
5- Muestre las cuentas con saldo negativo (1 registro)
6- Muestre todas las cuentas cuyo número es igual o mayor a "3000" (2 registros):
Ejercicio 20º Valores numéricos (II)
Una empresa almacena los datos de sus empleados en una tabla "empleados" que
guarda los siguientes
datos: nombre, documento, sexo, domicilio, sueldobasico.
1- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table empleados(
nombre varchar(30),
documento char(8),
sexo char(1),
domicilio varchar(30),
sueldobasico decimal(7,2),--máximo estimado 99999.99
cantidadhijos smallint --no superará los 255
);
2- Ingrese algunos registros:
insert into empleados
(nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Juan Perez','22333444','m','Sarmiento 123',500,2);
insert into empleados
(nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Ana Acosta','24555666','f','Colon 134',850,0);
insert into empleados
(nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Bartolome Barrios','27888999','m','Urquiza 479',10000.80,4);
3- Ingrese un valor de "sueldobasico" con más decimales que los definidos
(redondea los decimales al
valor más cercano 800.89):
insert into empleados
(nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Susana Molina','29000555','f','Salta 876',800.888,3);
4- Intente ingresar un sueldo que supere los 7 dígitos (no lo permite)
5- Muestre todos los empleados cuyo sueldo no supere los 900 pesos (1 registro):
6- Seleccione los nombres de los empleados que tengan hijos (3 registros):
21º Fecha y Hora
Una facultad almacena los datos de sus alumnos en una tabla denominada
"alumnos".
1- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table alumnos(
apellido varchar(30),
nombre varchar(30),
documento char(8),
domicilio varchar(30),
fechaingreso date,
fechanacimiento date
);
2- Setee el formato para entrada de datos de tipo fecha para que acepte valores
"día-mes-año"
Set datestyle to ‘European’;
3- Ingrese un alumno empleando distintos separadores para las fechas:
insert into alumnos values('Gonzalez','Ana','22222222','Colon 123','20-08-
1990','15/02/1972');
4- Ingrese otro alumno empleando solamente un dígito para día y mes y 2 para el
año:
insert into alumnos values('Juarez','Bernardo','25555555','Sucre 456','03-03-
1991','15/02/1972');
5- Ingrese un alumnos empleando 2 dígitos para el año de la fecha de ingreso y
"null" en
"fechanacimiento":
insert into alumnos values('Perez','Laura','26666666','Bulnes 345','03-03-91',null);
6- Intente ingresar un alumno con fecha de ingreso correspondiente a "15 de
marzo de 1990" pero en orden incorrecto "03-15-90": insert into alumnos
values('Lopez','Carlos','27777777','Sarmiento 1254','03-15-1990',null);
aparece un mensaje de error porque lo lee con el formato día, mes y año y no
reconoce el mes 15.
7- Muestre todos los alumnos que ingresaron antes del '1-1-91'. 1 registro.
8- Muestre todos los alumnos que tienen "null" en "fechanacimiento". 1 registro.
22º Order by
En una página web se guardan los siguientes datos de las visitas: número de visita,
nombre, mail,
pais, fecha.
1- Créela con la siguiente estructura:
create table visitas (
numero serial,
nombre varchar(30) default 'Anonimo',
mail varchar(50),
pais varchar (20),
fecha timestamp,
primary key(numero)
);
2- Ingrese algunos registros:
insert into visitas (nombre,mail,pais,fecha)
values ('Ana Maria Lopez','
[email protected]','Argentina','2006-10-10
10:10');
insert into visitas (nombre,mail,pais,fecha)
values ('Gustavo Gonzalez','
[email protected]','Chile','2006-10-10
21:30');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','
[email protected]','Argentina','2006-10-11 15:45');
insert into visitas (nombre,mail,pais,fecha)
values ('Fabiola Martinez','
[email protected]','Mexico','2006-10-12
08:15');
insert into visitas (nombre,mail,pais,fecha)
values ('Fabiola Martinez','
[email protected]','Mexico','2006-09-12
20:45');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','
[email protected]','Argentina','2006-09-12 16:20');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','
[email protected]','Argentina','2006-09-15 16:25');
3- Ordene los registros por fecha, en orden descendente.
4- Muestre el nombre del usuario, pais y el número de mes, ordenado por pais
(ascendente)
y número de mes (descendente)
5- Muestre el pais, el mes, el día y la hora y ordene las visitas por nombre del mes,
del día y la
hora.
6- Muestre los mail, país, ordenado por país, de todos los que visitaron la página en
octubre (4 registros)
23º Clave Primaria Compuesta
Un consultorio médico en el cual trabajan 3 médicos registra las consultas de los
pacientes en una
tabla llamada "consultas".
1- La tabla contiene los siguientes datos:
- fechayhora: timestamp not null, fecha y hora de la consulta,
- medico: varchar(30), not null, nombre del médico (Perez,Lopez,Duarte),
- documento: char(8) not null, documento del paciente,
- paciente: varchar(30), nombre del paciente,
- obrasocial: varchar(30), nombre de la obra social (IPAM,PAMI, etc.).
);
2- Un médico sólo puede atender a un paciente en una fecha y hora determinada.
En una fecha y hora
determinada, varios médicos atienden a distintos pacientes. Cree la tabla
definiendo una clave
primaria compuesta:
create table consultas(
fechayhora timestamp not null,
medico varchar(30) not null,
documento char(8) not null,
paciente varchar(30),
obrasocial varchar(30),
primary key(fechayhora,medico)
);
3- Ingrese varias consultas para un mismo médico en distintas horas el mismo día.
4- Ingrese varias consultas para diferentes médicos en la misma fecha y hora.
5- Intente ingresar una consulta para un mismo médico en la misma hora el mismo
día.
24º Unique
Una empresa de remises tiene registrada la información de sus vehículos en una
tabla llamada
"remis".
1- Cree la tabla con la siguiente estructura:
create table remis(
numero serial,
patente char(6),
marca varchar(15),
modelo char(4)
);
2- Ingrese algunos registros, 2 de ellos con patente repetida y alguno con patente
nula:
insert into remis(patente,marca,modelo) values('ABC123','Renault clio','1990');
insert into remis(patente,marca,modelo) values('DEF456','Peugeot 504','1995');
insert into remis(patente,marca,modelo) values('DEF456','Fiat Duna','1998');
insert into remis(patente,marca,modelo) values('GHI789','Fiat Duna','1995');
insert into remis(patente,marca,modelo) values(null,'Fiat Duna','1995');
3- Intente agregar una restricción "unique" para asegurarse que la patente del
remis no tomará
valores repetidos.
No se puede porque hay valores duplicados.
4- Elimine el registro con patente duplicada y establezca la restricción.
Note que hay 1 registro con valor nulo en "patente".
5- Intente ingresar un registro con patente repetida (no lo permite)
6- Ingresar un registro con valor nulo para el campo "patente".
Lo permite.
7- Muestre la información de las restricciones
25º Having (I)
Una empresa tiene registrados sus clientes en una tabla llamada "clientes".
1- Créela con la siguiente estructura:
create table clientes (
codigo serial,
nombre varchar(30) not null,
domicilio varchar(30),
ciudad varchar(20),
provincia varchar (20),
telefono varchar(11),
primary key(codigo)
);
3- Ingrese algunos registros:
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Marcos','Colon 111','Cordoba','Cordoba','null');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Ana','San Martin 222','Cruz del Eje','Cordoba','4578585');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Garcia Juan','Rivadavia 333','Villa del
Rosario','Cordoba','4578445');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Luis','Sarmiento 444','Rosario','Santa Fe',null);
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Pereyra Lucas','San Martin 555','Cruz del
Eje','Cordoba','4253685');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Gomez Ines','San Martin 666','Santa Fe','Santa
Fe','0345252525');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Torres Fabiola','Alem 777','Villa del Rosario','Cordoba','4554455');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Carlos',null,'Cruz del Eje','Cordoba',null);
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Ramos Betina','San Martin 999','Cordoba','Cordoba','4223366');
insert into clientes(nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Lucas','San Martin
1010','Posadas','Misiones','0457858745');
3- Obtenga el total de los registros agrupados por ciudad y provincia (6
filas)
4- Obtenga el total de los registros agrupados por ciudad y provincia sin
considerar los que tienen
menos de 2 clientes (3 filas)
26º Having (II)
Un comercio que tiene un stand en una feria registra en una tabla llamada
"visitantes" algunos datos
de las personas que visitan o compran en su stand para luego enviarle
publicidad de sus productos.
1- Créela con la siguiente estructura:
create table visitantes(
nombre varchar(30),
edad smallint,
sexo char(1),
domicilio varchar(30),
ciudad varchar(20),
telefono varchar(11),
montocompra decimal(6,2) not null
);
2- Ingrese algunos registros:
insert into visitantes
values ('Susana Molina',28,'f',null,'Cordoba',null,45.50);
insert into visitantes
values ('Marcela Mercado',36,'f','Avellaneda
345','Cordoba','4545454',22.40);
insert into visitantes
values ('Alberto Garcia',35,'m','Gral. Paz 123','Alta
Gracia','03547123456',25);
insert into visitantes
values ('Teresa Garcia',33,'f',default,'Alta Gracia','03547123456',120);
insert into visitantes
values ('Roberto Perez',45,'m','Urquiza 335','Cordoba','4123456',33.20);
insert into visitantes
values ('Marina Torres',22,'f','Colon 222','Villa Dolores','03544112233',95);
insert into visitantes
values ('Julieta Gomez',24,'f','San Martin 333','Alta Gracia',null,53.50);
insert into visitantes
values ('Roxana Lopez',20,'f','null','Alta Gracia',null,240);
insert into visitantes
values ('Liliana Garcia',50,'f','Paso 999','Cordoba','4588778',48);
insert into visitantes
values ('Juan Torres',43,'m','Sarmiento 876','Cordoba',null,15.30);
3- Obtenga el total de las compras agrupados por ciudad y sexo de aquellas
filas que devuelvan un
valor superior a 50 (3 filas)
4- Agrupe por ciudad y sexo, muestre para cada grupo el total de visitantes,
la suma de sus compras
y el promedio de compras, ordenado por la suma total y considerando las
filas con promedio superior
a 30 (3 filas)
27º Left Join
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", también
tiene una tabla "provincias" donde registra los nombres de las provincias.
1- Cree las tablas:
create table clientes (
codigo serial,
nombre varchar(30),
domicilio varchar(30),
ciudad varchar(20),
codigoprovincia smallint not null,
primary key(codigo)
);
create table provincias(
codigo serial,
nombre varchar(20),
primary key (codigo)
);
2- Ingrese algunos registros para ambas tablas:
insert into provincias (nombre) values('Cordoba');
insert into provincias (nombre) values('Santa Fe');
insert into provincias (nombre) values('Corrientes');
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Lopez Marcos','Colon 111','Córdoba',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Perez Ana','San Martin 222','Cruz del Eje',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Garcia Juan','Rivadavia 333','Villa Maria',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Perez Luis','Sarmiento 444','Rosario',2);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Gomez Ines','San Martin 666','Santa Fe',2);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Torres Fabiola','Alem 777','La Plata',4);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Garcia Luis','Sucre 475','Santa Rosa',5);
3- Muestre todos los datos de los clientes, incluido el nombre de la provincia
4- Realice la misma consulta anterior pero alterando el orden de las tablas
5- Muestre solamente los clientes de las provincias que existen en
"provincias" (5 registros)
6- Muestre todos los clientes cuyo código de provincia NO existe en
"provincias" ordenados por
nombre del cliente (2 registros)
7- Obtenga todos los datos de los clientes de "Cordoba" (3 registros)
28º Right Join
Una empresa tiene registrados sus clientes en una tabla llamada "clientes",
también tiene una
tabla "provincias" donde registra los nombres de las provincias.
1-Cree las tablas:
create table clientes (
codigo serial,
nombre varchar(30),
domicilio varchar(30),
ciudad varchar(20),
codigoprovincia smallint not null,
primary key(codigo)
);
create table provincias(
codigo serial,
nombre varchar(20),
primary key (codigo)
);
2- Ingrese algunos registros para ambas tablas:
insert into provincias (nombre) values('Cordoba');
insert into provincias (nombre) values('Santa Fe');
insert into provincias (nombre) values('Corrientes');
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Lopez Marcos','Colon 111','Córdoba',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Perez Ana','San Martin 222','Cruz del Eje',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Garcia Juan','Rivadavia 333','Villa Maria',1);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Perez Luis','Sarmiento 444','Rosario',2);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Gomez Ines','San Martin 666','Santa Fe',2);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Torres Fabiola','Alem 777','La Plata',4);
insert into clientes(nombre,domicilio,ciudad,codigoprovincia)
values ('Garcia Luis','Sucre 475','Santa Rosa',5);
3- Muestre todos los datos de los clientes, incluido el nombre de la provincia
empleando un "right
join".
4- Obtenga la misma salida que la consulta anterior pero empleando un "left
join".
5- Empleando un "right join", muestre solamente los clientes de las
provincias que existen en
"provincias" (5 registros)
6- Muestre todos los clientes cuyo código de provincia NO existe en
"provincias" ordenados por
ciudad (2 registros)
29º Cross Join
Una agencia matrimonial almacena la información de sus clientes de sexo
femenino en una tabla
llamada "mujeres" y en otra la de sus clientes de sexo masculino llamada
"varones".
1- Cree las tablas:
create table mujeres(
nombre varchar(30),
domicilio varchar(30),
edad int
);
create table varones(
nombre varchar(30),
domicilio varchar(30),
edad int
);
2- Ingrese los siguientes registros:
insert into mujeres values('Maria Lopez','Colon 123',45);
insert into mujeres values('Liliana Garcia','Sucre 456',35);
insert into mujeres values('Susana Lopez','Avellaneda 98',41);
insert into varones values('Juan Torres','Sarmiento 755',44);
insert into varones values('Marcelo Oliva','San Martin 874',56);
insert into varones values('Federico Pereyra','Colon 234',38);
insert into varones values('Juan Garcia','Peru 333',50);
3- La agencia necesita la combinación de todas las personas de sexo
femenino con las de sexo
masculino. Use un "cross join" (12 registros)
4- Realice la misma combinación pero considerando solamente las personas
mayores de 40 años (6
registros)
5- Forme las parejas pero teniendo en cuenta que no tengan una diferencia
superior a 10 años (8
registros)
30º Vistas
Un club dicta cursos de distintos deportes. Almacena la información en
varias tablas.
El director no quiere que los empleados de administración conozcan la
estructura de las tablas ni
algunos datos de los profesores y socios, por ello se crean vistas a las
cuales tendrán acceso.
1- Crear las tablas:
create table socios(
documento char(8) not null,
nombre varchar(40),
domicilio varchar(30),
primary key (documento)
);
create table profesores(
documento char(8) not null,
nombre varchar(40),
domicilio varchar(30),
primary key (documento)
);
create table cursos(
numero serial,
deporte varchar(20),
dia varchar(15),
documentoprofesor char(8),
primary key (numero)
);
create table inscriptos(
documentosocio char(8) not null,
numero smallint not null,
matricula char(1),
primary key (documentosocio,numero)
);
2- Ingrese algunos registros para todas las tablas:
insert into socios values('30000000','Fabian Fuentes','Caseros 987');
insert into socios values('31111111','Gaston Garcia','Guemes 65');
insert into socios values('32222222','Hector Huerta','Sucre 534');
insert into socios values('33333333','Ines Irala','Bulnes 345');
insert into profesores values('22222222','Ana Acosta','Avellaneda 231');
insert into profesores values('23333333','Carlos Caseres','Colon 245');
insert into profesores values('24444444','Daniel Duarte','Sarmiento 987');
insert into profesores values('25555555','Esteban Lopez','Sucre 1204');
insert into cursos(deporte,dia,documentoprofesor)
values('tenis','lunes','22222222');
insert into cursos(deporte,dia,documentoprofesor)
values('tenis','martes','22222222');
insert into cursos(deporte,dia,documentoprofesor)
values('natacion','miercoles','22222222');
insert into cursos(deporte,dia,documentoprofesor)
values('natacion','jueves','23333333');
insert into cursos(deporte,dia,documentoprofesor)
values('natacion','viernes','23333333');
insert into cursos(deporte,dia,documentoprofesor)
values('futbol','sabado','24444444');
insert into cursos(deporte,dia,documentoprofesor)
values('futbol','lunes','24444444');
insert into cursos(deporte,dia,documentoprofesor)
values('basquet','martes','24444444');
insert into inscriptos values('30000000',1,'s');
insert into inscriptos values('30000000',3,'n');
insert into inscriptos values('30000000',6,null);
insert into inscriptos values('31111111',1,'s');
insert into inscriptos values('31111111',4,'s');
insert into inscriptos values('32222222',8,'s');
3- Cree una vista en la que aparezca el nombre y documento del socio, el
deporte, el día y el nombre del profesor.
4- Muestre la información contenida en la vista.
5- Realice una consulta a la vista donde muestre la cantidad de socios
inscriptos en cada deporte
ordenados por cantidad.
6- Muestre (consultando la vista) los cursos (deporte y día) para los cuales
no hay inscriptos.
7- Muestre los nombres de los socios que no se han inscripto en ningún
curso (consultando la vista)
8- Muestre (consultando la vista) los profesores que no tienen asignado
ningún deporte aún.
9- Muestre (consultando la vista) el nombre y documento de los socios que
deben matrículas.
10- Consulte la vista y muestre los nombres de los profesores y los días en
que asisten al club para
dictar sus clases.
11- Muestre la misma información anterior pero ordenada por día.
12- Muestre todos los socios que son compañeros en tenis los lunes