Vous êtes sur la page 1sur 46

06/03/13

Ejercicios propuestos : Crear tablas (create table - describe - all_tables - drop table)(Oracle)

2 - Crear tablas (create table - describe - all_tables - drop table)


Primer problema:
Necesita almacenar los datos de amigos en una tabla. Los datos que guardar sern: apellido, nombre, domicilio y telfono.
1- Elimine la tabla "agenda"
Si no existe, un mensaje indicar tal situacin.
2- Intente crear una tabla llamada "*agenda"
5- Visualice las tablas existentes
create table *agenda(
apellido varchar2(30),
nombre varchar2(20),
domicilio varchar2(30),
telefono varchar2(11)
);
aparece un mensaje de error indicando que usamos un caracter invlido ("*") para el nombre de la tabla.
3- Cree una tabla llamada "agenda", debe tener los siguientes campos: apellido, varchar2(30); nombre, varchar2(20); domicilio, varchar2 (30) y telefono,
varchar2(11)
Un mensaje indica que la tabla ha sido creada exitosamente.
4- Intente crearla nuevamente.
Aparece mensaje de error indicando que el nombre ya lo tiene otro objeto.
5- Visualice las tablas existentes (all_tables)
La tabla "agenda" aparece en la lista.
6- Visualice la estructura de la tabla "agenda" (describe)
Aparece la siguiente tabla:
Name Null Type
----------------------APELLIDO VARCHAR2(30)
NOMBRE
VARCHAR2(20)
DOMICILIO VARCHAR2(30)
TELEFONO VARCHAR2(11)

Segundo problema:
Necesita almacenar informacin referente a los libros de su biblioteca personal. Los datos que guardar sern: ttulo del libro, nombre del autor y nombre
de la editorial.
1- Elimine la tabla "libros"
Si no existe, un mensaje indica tal situacin.
2- Verifique que la tabla "libros" no existe (all_tables)
No aparece en la lista.
3- Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo, varchar2(20); autor, varchar2(30) y editorial, varchar2(15)
4- Intente crearla nuevamente:
Aparece mensaje de error indicando que existe un objeto con el nombre "libros".
5- Visualice las tablas existentes
6- Visualice la estructura de la tabla "libros":
Aparece "libros" en la lista.
7- Elimine la tabla
8- Intente eliminar la tabla
Un mensaje indica que no existe.

06/03/13

Ejercicios propuestos : Ingresar registros (insert into- select)(Oracle)

3 - Ingresar registros (insert into- select)


Primer problema:
Trabaje con la tabla "agenda" que almacena informacin de sus amigos.
1- Elimine la tabla "agenda"
2- Cree una tabla llamada "agenda". Debe tener los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y
telefono (cadena de 11)
3- Visualice las tablas existentes para verificar la creacin de "agenda" (all_tables)
4- Visualice la estructura de la tabla "agenda" (describe)
5- Ingrese los siguientes registros:
insert into agenda (apellido, nombre, domicilio, telefono)
values ('Moreno','Alberto','Colon 123','4234567');
insert into agenda (apellido,nombre, domicilio, telefono)
values ('Torres','Juan','Avellaneda 135','4458787');
6- Seleccione todos los registros de la tabla.
7- Elimine la tabla "agenda"
8- Intente eliminar la tabla nuevamente (aparece un mensaje de error)
Segundo problema:
Trabaje con la tabla "libros" que almacena los datos de los libros de su propia biblioteca.
1- Elimine la tabla "libros"
2- Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo (cadena de 20), autor (cadena de 30) y editorial (cadena de 15)
3- Visualice las tablas existentes.
4- Visualice la estructura de la tabla "libros"
Muestra los campos y los tipos de datos de la tabla "libros".
5- Ingrese los siguientes registros:
insert into libros (titulo,autor,editorial)
values ('El aleph','Borges','Planeta');
insert into libros (titulo,autor,editorial)
values ('Martin Fierro','Jose Hernandez','Emece');
insert into libros (titulo,autor,editorial)
values ('Aprenda PHP','Mario Molina','Emece');
6- Muestre todos los registros (select) de "libros"

www.oracleya.com.ar/problemas/problema.php?cod=161&punto=3

1/2

06/03/13

Ejercicios propuestos : Tipos de datos(Oracle)

4 - Tipos de datos

Primer problema:
Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas en una tabla llamada "peliculas"; para cada pelcula necesita los
siguientes datos:
-nombre, cadena de caracteres de 20 de longitud,
-actor, cadena de caracteres de 20 de longitud,
-duracin, valor numrico entero que no supera los 3 dgitos.
-cantidad de copias: valor entero de un slo dgito (no tienen ms de 9 copias de cada pelcula).
1- Elimine la tabla "peliculas" si ya existe.
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo.
Note que los campos "duracion" y "cantidad", que almacenarn valores sin decimales, fueron definidos de maneras diferentes, en el primero especificamos
el valor 0 como cantidad de decimales, en el segundo no especificamos cantidad de decimales, es decir, por defecto, asume el valor 0.
3- Vea la estructura de la tabla.
4- Ingrese los siguientes registros:
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',128,3);
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',130,2);
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Mujer bonita','Julia Roberts',118,3);
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',110,2);
5- Muestre todos los registros (4 registros)
6- Intente ingresar una pelcula con valor de cantidad fuera del rango permitido:
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Mujer bonita','Richard Gere',1200,10);
Mensaje de error.
7- Ingrese un valor con decimales en un nuevo registro, en el campo "duracion":
insert into peliculas (nombre, actor, duracion, cantidad)
values ('Mujer bonita','Richard Gere',120.20,4);
8- Muestre todos los registros para ver cmo se almacen el ltimo registro ingresado.
9- Intente ingresar un nombre de pelcula que supere los 20 caracteres.

06/03/13

Ejercicios propuestos : Tipos de datos(Oracle)

Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes datos: nombre, documento, sexo, domicilio,
sueldobasico.
1- Elimine la tabla si existe.
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table empleados(
nombre varchar2(20),
documento varchar2(8),
sexo varchar2(1),
domicilio varchar2(30),
sueldobasico number(6,2)
);
3- Verifique que la tabla existe consultando "all_tables"
4- Vea la estructura de la tabla (5 campos)
5- Ingrese algunos registros:
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Juan Perez','22333444','m','Sarmiento 123',500);
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Ana Acosta','24555666','f','Colon 134',650);
insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Bartolome Barrios','27888999','m','Urquiza 479',800);
6- Seleccione todos los registros (3 registros)
7- Intente ingresar un registro con el valor "masculino" en el campo "sexo"
Un mensaje indica que el campo est definido para almacenar 1 solo caracter como mximo y est intentando ingresar 9 caracteres.
8- Intente ingresar un valor fuera de rango, en un nuevo registro, para el campo "sueldobasico"
Mensaje de error.
9- Elimine la tabla

06/03/13

Ejercicios propuestos : Recuperar algunos campos (select)(Oracle)

5 - Recuperar algunos campos (select)


Primer problema:
Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas en alquiler en una tabla llamada "peliculas".
1- Elimine la tabla si existe.
2- Cree la tabla:
create table peliculas(
titulo varchar2(20),
actor varchar2(20),
duracion number(3),
cantidad number(1)
);
3- Vea la estructura de la tabla (4 campos)
4- 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);
5- Realice un "select" mostrando solamente el ttulo y actor de todas las pelculas
6- Muestre el ttulo y duracin de todas las peliculas.
7- Muestre el ttulo y la cantidad de copias.
Segundo problema:
Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".
1- Elimine la tabla si ya existe.

2- Cree la tabla:
create table empleados(
nombre varchar2(20),
documento varchar2(8),
sexo varchar2(1),
domicilio varchar2(30),
sueldobasico number(6,2)
);
3- Vea la estructura de la tabla (5 campos)
4- 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);
5- Muestre todos los datos de los empleados.
6- Muestre el nombre, documento y domicilio de los empleados.
7- Realice un "select" mostrando el documento, sexo y sueldo bsico de todos los empleados.

06/03/13

Ejercicios propuestos : Recuperar algunos registros (where)(Oracle)

6 - Recuperar algunos registros (where)

Primer problema:
Trabaje con la tabla "agenda" en la que registra los datos de sus amigos.
1- Elimine "agenda"
2- 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 varchar2(30),
nombre varchar2(30),
domicilio varchar2(30),
telefono varchar2(11)
);
3- Visualice la estructura de la tabla "agenda" (4 campos)
4- Ingrese los siguientes registros ("insert into"):
insert into agenda(apellido,nombre,domicilio,telefono)
('Acosta', 'Ana', 'Colon 123', '4234567');
insert into agenda(apellido,nombre,domicilio,telefono)
('Bustamante', 'Betina', 'Avellaneda 135', '4458787');
insert into agenda(apellido,nombre,domicilio,telefono)
('Lopez', 'Hector', 'Salta 545', '4887788');
insert into agenda(apellido,nombre,domicilio,telefono)
('Lopez', 'Luis', 'Urquiza 333', '4545454');
insert into agenda(apellido,nombre,domicilio,telefono)
('Lopez', 'Marisa', 'Urquiza 333', '4545454');

values
values
values
values
values

5- Seleccione todos los registros de la tabla (5 registros)


6- Seleccione el registro cuyo nombre sea "Marisa" (1 registro)
7- Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lopez" (3 registros)
8- Seleccione los nombres y domicilios de quienes tengan apellido igual a "lopez" (en minsculas)
No aparece ningn registro, ya que la cadena "Lopez" noe s igual a la cadena "lopez".
9- Muestre el nombre de quienes tengan el telfono "4545454" (2 registros)

06/03/13

Ejercicios propuestos : Recuperar algunos registros (where)(Oracle)

Segundo problema:

Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla llamada "articulos".
1- Elimine la tabla si existe.
2- Cree la tabla "articulos" con la siguiente estructura:
create table articulos(
codigo number(5),
nombre varchar2(20),
descripcion varchar2(30),
precio number(7,2)
);
3- Vea la estructura de la tabla:
describe articulos;
4- Ingrese algunos registros:
insert into articulos (codigo, nombre, descripcion,
values (1,'impresora','Epson Stylus C45',400.80);
insert into articulos (codigo, nombre, descripcion,
values (2,'impresora','Epson Stylus C85',500);
insert into articulos (codigo, nombre, descripcion,
values (3,'monitor','Samsung 14',800);
insert into articulos (codigo, nombre, descripcion,
values (4,'teclado','ingles Biswal',100);
insert into articulos (codigo, nombre, descripcion,
values (5,'teclado','espaol Biswal',90);

precio)
precio)
precio)
precio)
precio)

5- Seleccione todos los datos de los registros cuyo nombre sea "impresora" (2 registros)
6- Muestre slo el cdigo, descripcin y precio de los teclados (2 registros)

06/03/13

Ejercicios propuestos : Operadores relacionales(Oracle)

7 - Operadores relacionales
Primer problema:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.
1- Elimine "articulos"
2- Cree la tabla, con la siguiente estructura:
create table articulos(
codigo number(5),
nombre varchar2(20),
descripcion varchar2(30),
precio number(6,2),
cantidad number(3)
);
3- Vea la estructura de la tabla.
4- 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','espaol Biswal',90,50);
5- Seleccione los datos de las impresoras (2 registros)
6- Seleccione los artculos cuyo precio sea mayor o igual a 400 (3 registros)
7- Seleccione el cdigo y nombre de los artculos cuya cantidad sea menor a 30 (2 registros)
8- Selecciones el nombre y descripcin de los artculos que NO cuesten $100 (4 registros)
Segundo problema:
Un video club que alquila pelculas en video almacena la informacin de sus pelculas en alquiler en una tabla denominada "peliculas".
1- Elimine la tabla.
drop table peliculas;
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table peliculas(
titulo varchar2(20),
actor varchar2(20),
duracion number(3),
cantidad number(1)
);
3- 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);
4- Seleccione las pelculas cuya duracin no supere los 90 minutos (2 registros)
5- Seleccione el ttulo de todas las pelculas en las que el actor NO sea "Tom Cruise" (2 registros)
6- Muestre todos los campos, excepto "duracion", de todas las pelculas de las que haya ms de 2 copias (2 registros)

06/03/13

Ejercicios propuestos : Borrar registros (delete)(Oracle)

8 - Borrar registros (delete)


Primer problema:
Trabaje con la tabla "agenda" que registra la informacin referente a sus amigos.
1- Elimine la tabla.
2- 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 varchar2(30),
nombre varchar2(20),
domicilio varchar2(30),
telefono varchar2(11)
);
3- Ingrese los siguientes registros (insert into):
insert into agenda(apellido,nombre,domicilio,telefono)
('Alvarez','Alberto','Colon 123','4234567');
insert into agenda(apellido,nombre,domicilio,telefono)
('Juarez','Juan','Avellaneda 135','4458787');
insert into agenda(apellido,nombre,domicilio,telefono)
('Lopez','Maria','Urquiza 333','4545454');
insert into agenda(apellido,nombre,domicilio,telefono)
('Lopez','Jose','Urquiza 333','4545454');
insert into agenda(apellido,nombre,domicilio,telefono)
('Salas','Susana','Gral. Paz 1234','4123456');

values
values
values
values
values

4- Elimine el registro cuyo nombre sea "Juan" (1 registro)


5- Elimine los registros cuyo nmero telefnico sea igual a "4545454" (2 registros)
Segundo problema:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.
1- Elimine "articulos"

06/03/13

Ejercicios propuestos : Borrar registros (delete)(Oracle)

2- Cree la tabla, con la siguiente estructura:


create table articulos(
codigo number(4,0),
nombre varchar2(20),
descripcion varchar2(30),
precio number(7,2),
cantidad number(3)
);
3- Vea la estructura de la tabla.
4- 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','espaol Biswal',90,50);
5- Elimine los artculos cuyo precio sea mayor o igual a 500 (2 registros)
7- Elimine todas las impresoras (1 registro)
8- Elimine todos los artculos cuyo cdigo sea diferente a 4 (1 registro)

www.oracleya.com.ar/problemas/problema.php?cod=166&punto=8

1/2

06/03/13

Ejercicios propuestos : Actualizar registros (update)(Oracle)

9 - Actualizar registros (update)


Primer problema:
Trabaje con la tabla "agenda" que almacena los datos de sus amigos.
1- Elimine la tabla y crela con la siguiente estructura:
drop table agenda;
create table agenda(
apellido varchar2(30),
nombre varchar2(20),
domicilio varchar2(30),
telefono varchar2(11)
);
3- 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');
4- Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro actualizado)
5- Actualice los registros cuyo nmero telefnico sea igual a "4545454" por "4445566" (2 registros)
6- Actualice los registros que tengan en el campo "nombre" el valor "Juan" por "Juan Jose" (ningn registro afectado porque ninguno cumple con la
condicin del "where")
Segundo problema:
Trabaje con la tabla "libros" de una librera.
1- Elimine la tabla y crela con los siguientes campos: titulo (cadena de 30 caracteres de longitud), autor (cadena de 20), editorial (cadena de 15) y precio
(entero no mayor a 999.99):
drop table libros;
create table libros (
titulo varchar2(30),
autor varchar2(20),
editorial varchar2(15),
precio number(5,2)
);
3- 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);
4- Muestre todos los registros (5 registros)
5- Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (1 registro)
6- Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (ningn registro afectado porque ninguno cumple la
condicin)
7- Actualice el precio del libro de "Mario Molina" a 27 pesos (1 registro)
8- Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros cuya editorial sea igual a "Emece" (3 registros)

20/03/13

Ejercicios propuestos : Valores nulos (null)(Oracle)

11 - Valores nulos (null)

Primer problema:
Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada "medicamentos".
1- Elimine la tabla y crela con la siguiente estructura:
drop table medicamentos;
create table medicamentos(
codigo number(5) not null,
nombre varchar2(20) not null,
laboratorio varchar2(20),
precio number(5,2),
cantidad number(3,0) not null
);
3- Visualice la estructura de la tabla "medicamentos"
note que los campos "codigo", "nombre" y "cantidad", en la columna "Null" muestra "NOT NULL".
4- 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);
5- Vea todos los registros.
6- Ingrese un registro con valor "0" para el precio y cadena vaca para el laboratorio.
7- Intente ingresar un registro con cadena vaca para el nombre (mensaje de error)
8- Intente ingresar un registro con valor nulo para un campo que no lo admite (aparece un mensaje de error)
9- Ingrese un registro con una cadena de 1 espacio para el laboratorio.
10- Recupere los registros cuyo laboratorio contenga 1 espacio (1 registro)
11- Recupere los registros cuyo laboratorio sea distinto de ' '(cadena de 1 espacio) (1 registro)

20/03/13

Ejercicios propuestos : Valores nulos (null)(Oracle)

Trabaje con la tabla que almacena los datos sobre pelculas, llamada "peliculas".
1- Elimine la tabla:
2- Crela con la siguiente estructura:
create table peliculas(
codigo number(4) not null,
titulo varchar2(40) not null,
actor varchar2(20),
duracion number(3)
);
3- Visualice la estructura de la tabla.
note que el campo "codigo" y "titulo", en la columna "Null" muestran "NOT NULL".
4- 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,'Titanic','L. Di Caprio',220);
insert into peliculas (codigo,titulo,actor,duracion)
values(5,'Mujer bonita','R. Gere-J. Roberts',0);
5- Recupere todos los registros para ver cmo Oracle los almacen.
6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de error)
7- Muestre todos los registros.
8- Actualice la pelcula en cuyo campo "duracion" hay 0 por "null" (1 registro)
9- Recupere todos los registros.

20/03/13

Ejercicios propuestos : Operadores relacionales (is null)(Oracle)

12 - Operadores relacionales (is null)

Primer problema:
Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada "medicamentos".
1- Elimine la tabla y crela con la siguiente estructura:
drop table medicamentos;
create table medicamentos(
codigo number(5) not null,
nombre varchar2(20) not null,
laboratorio varchar2(20),
precio number(5,2),
cantidad number(3,0) not null
);
3- Visualice la estructura de la tabla "medicamentos"
note que los campos "codigo", "nombre" y "cantidad", en la columna "Null" muestra "NOT NULL".
4- 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);
5- Vea todos los registros.
6- Ingrese un registro con valor "0" para el precio y cadena vaca para el laboratorio.
7- Intente ingresar un registro con cadena vaca para el nombre (mensaje de error)
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" (3 registros)
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 (2 y 1 registros respectivamente)
11- Recupere los registros cuyo laboratorio no contenga valor nulo (1 registro)
12- Recupere los registros cuyo precio sea distinto de 0, luego los que sean distintos de "null" (1 y 2 resgistros respectivamente)
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).
13- Ingrese un registro con una cadena de 1 espacio para el laboratorio.
14- Recupere los registros cuyo laboratorio sea "null" y luego los que contengan 1 espacio (3 y 1 registros respectivamente)
Note que la salida de la primera sentencia no muestra los registros con valores para el campo "laboratorio" (un caracter espacio es un valor); el resultado
de la segunda sentencia muestra los registros con el valor " " para el campo precio.
15- Recupere los registros cuyo laboratorio sea distinto de ' '(cadena de 1 espacio), luego los que sean distintos de "null" (1 y 2 registros respectivamente)
Note que la salida de la primera sentencia no muestra los registros con valor ' ' y tampoco los que tienen valor nulo; el resultado de la segunda sentencia
muestra los registros con valor para el campo laboratorio (incluso el valor ' ')

20/03/13

Ejercicios propuestos : Operadores relacionales (is null)(Oracle)

Segundo problema:
Trabaje con la tabla que almacena los datos sobre pelculas, llamada "peliculas".
1- Elimine la tabla:
drop table peliculas;
2- Crela con la siguiente estructura:
create table peliculas(
codigo number(4) not null,
titulo varchar2(40) not null,
actor varchar2(20),
duracion number(3)
);
3- Visualice la estructura de la tabla. note que el campo "codigo" y "titulo", en la columna "Null" muestran "NOT NULL".
4- 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,'Titanic','L. Di Caprio',220);
insert into peliculas (codigo,titulo,actor,duracion)
values(5,'Mujer bonita','R. Gere-J. Roberts',0);
5- Recupere todos los registros para ver cmo Oracle los almacen.
6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de error)
7- Muestre los registros con valor nulo en el campo "actor" (2 registros)
8- Actualice los registros que tengan valor de duracin desconocido (nulo) por "120" (1 registro actualizado)
9- Coloque 'Desconocido' en el campo "actor" en los registros que tengan valor nulo en dicho campo (2 registros)
10- Muestre todos los registros
11- Muestre todos los registros con valor nulo en el campo "actor" (ninguno)
12- Actualice la pelcula en cuyo campo "duracion" hay 0 por "null" (1 registro)
13- Recupere todos los registros.
14- Borre todos los registros en los cuales haya un valor nulo en "duracion" (1 registro)
15- Verifique que se elimin recuperando todos los registros.

20/03/13

Ejercicios propuestos : Clave primaria (primary key)(Oracle)

13 - Clave primaria (primary key)

Primer problema:
Trabaje con la tabla "libros" de una librera.
1- Elimine la tabla:
drop table libros;
2- Crela con los siguientes campos, estableciendo como clave primaria el campo "codigo":
create table libros(
codigo number(4) not null,
titulo varchar2(40) not null,
autor varchar2(20),
editorial varchar2(15),
primary key (codigo)
);
3- Ingrese los siguientes registros:
insert into libros (codigo,titulo,autor,editorial)
values (1,'El aleph','Borges','Emece');
insert into libros (codigo,titulo,autor,editorial)
values (2,'Martin Fierro','Jose Hernandez','Planeta');
insert into libros (codigo,titulo,autor,editorial)
values (3,'Aprenda PHP','Mario Molina','Nuevo Siglo');
4- Ingrese un registro con cdigo repetido (aparece un mensaje de error)
5- Intente ingresar el valor "null" en el campo "codigo"
6- Intente actualizar el cdigo del libro "Martin Fierro" a "1" (mensaje de error)
7- Actualice el cdigo del libro "Martin Fierro" a "10"
8- Vea qu campo de la tabla "LIBROS" fue establecido como clave primaria
9- Vea qu campo de la tabla "libros" (en minsculas) fue establecido como clave primaria
La tabla aparece vaca porque Oracle no encuentra la tabla "libros", ya que almacena los nombres de las tablas con maysculas.

20/03/13

Ejercicios propuestos : Clave primaria (primary key)(Oracle)

Un instituto de enseanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".
1- Elimine la tabla "alumnos":
drop table alumnos;
2- Cree la tabla con la siguiente estructura intentando establecer 2 campos como clave primaria, el campo "documento" y "legajo":
create table alumnos(
legajo varchar2(4) not null,
documento varchar2(8),
nombre varchar2(30),
domicilio varchar2(30),
primary key(codigo),
primary key(documento)
);
Un mensaje indica la tabla solamente puede tener UNA clave primaria.
3- Cree la tabla estableciendo como clave primaria el campo "documento":
create table alumnos(
legajo varchar2(4) not null,
documento varchar2(8),
nombre varchar2(30),
domicilio varchar2(30),
primary key(documento)
);
4- Verifique que el campo "documento" no admite valores nulos
5- Ingrese los siguientes registros:
insert into alumnos (legajo,documento,nombre,domicilio)
values('A233','22345345','Perez Mariana','Colon 234');
insert into alumnos (legajo,documento,nombre,domicilio)
values('A567','23545345','Morales Marcos','Avellaneda 348');
6- Intente ingresar un alumno con nmero de documento existente (no lo permite)
7- Intente ingresar un alumno con documento nulo (no lo permite)
8- Vea el campo clave primaria de "ALUMNOS".

20/03/13

Ejercicios propuestos : Tipos de datos alfanumricos(Oracle)

15 - Tipos de datos alfanumricos

Primer problema:
Una concesionaria de autos vende autos usados y almacena los datos de los autos en una tabla llamada "autos".
1- Elimine la tabla "autos"
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo, estableciendo el campo "patente" como clave primaria:
create table autos(
patente char(6),
marca varchar2(20),
modelo char(4),
precio number(8,2),
primary key (patente)
);
Hemos definido el campo "patente" de tipo "char" y no "varchar2" porque la cadena de caracteres siempre tendr la misma longitud (6 caracteres). Lo
mismo sucede con el campo "modelo", en el cual almacenaremos el ao, necesitamos 4 caracteres fijos.
3- Ingrese los siguientes registros:
insert into autos (patente,marca,modelo,precio)
values('ABC123','Fiat 128','1970',15000);
insert into autos (patente,marca,modelo,precio)
values('BCD456','Renault 11','1990',40000);
insert into autos (patente,marca,modelo,precio)
values('CDE789','Peugeot 505','1990',80000);
insert into autos (patente,marca,modelo,precio)
values('DEF012','Renault Megane','1998',95000);
4- Ingrese un registro omitiendo las comillas en el valor de "modelo"
Oracle convierte el valor a cadena.
5- Vea cmo se almacen.
6- Seleccione todos los autos modelo "1990"
7- Intente ingresar un registro con un valor de patente de 7 caracteres
8- Intente ingresar un registro con valor de patente repetida.

20/03/13

Ejercicios propuestos : Tipos de datos alfanumricos(Oracle)

Una empresa almacena los datos de sus clientes en una tabla llamada "clientes".
1- Elimine la tabla "clientes"
2- Crela eligiendo el tipo de dato ms adecuado para cada campo:
create table clientes(
documento char(8) not null,
apellido varchar2(20),
nombre varchar2(20),
domicilio varchar2(30),
telefono varchar2 (11)
);
3- Analice la definicin de los campos. Se utiliza char(8) para el documento porque siempre constar de 8 caracteres. Para el nmero telefnico se usar
"varchar2" y no un tipo numrico porque si bien es un nmero, con l no se realizarn operaciones matemticas.
4- Ingrese algunos registros:
insert into clientes (documento,apellido,nombre,domicilio,telefono)
values('22333444','Perez','Juan','Sarmiento 980','4223344');
insert into clientes (documento,apellido,nombre,domicilio,telefono)
values('23444555','Perez','Ana','Colon 234',null);
insert into clientes (documento,apellido,nombre,domicilio,telefono)
values('30444555','Garcia','Luciana','Caseros 634',null);
5- Intente ingresar un registro con ms caracteres que los permitidos para el campo "telefono"
6- Intente ingresar un registro con ms caracteres que los permitidos para el campo "documento"
7- Intente ingresar un registro omitiendo las comillas en el campo "apellido"
8- Seleccione todos los clientes de apellido "Perez" (2 registros)

20/03/13

Ejercicios propuestos : Tipos de datos numricos(Oracle)

16 - Tipos de datos numricos

Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas".
La tabla contiene estos datos:
Nmero 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- Elimine la tabla "cuentas":
drop table cuentas;
2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba:
- Nmero de cuenta: entero hasta 9999, no nulo, 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 que no superan 999999.99
create table cuentas(
numero number(4) not null,
documento char(8),
nombre varchar2(30),
saldo number(8,2),
primary key (numero)
);
3- 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 nmero de cuenta, de la misma persona.
4- Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros)
5- Muestre el nmero de cuenta y saldo de todas las cuentas cuyo propietario sea "Juan Lopez" (2 registros)
6- Muestre las cuentas con saldo negativo (1 registro)
7- Muestre todas las cuentas cuyo nmero es igual o mayor a "3000" (2 registros)

Segundo problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes datos: nombre, documento, sexo, domicilio,
sueldobasico.
1- Elimine la tabla:
drop table empleados;
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo:
create table empleados(
nombre varchar2(30),
documento char(8),
sexo char(1),
domicilio varchar2(30),
sueldobasico numberl(7,2),--mximo estimado 99999.99
cantidadhijos number(2)--no superar los 99
);
3- 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);
4- Ingrese un valor de "sueldobasico" con ms decimales que los definidos (redondea los decimales al valor ms cercano 800.89)
5- Intente ingresar un sueldo que supere los 7 dgitos (no lo permite)
6- Muestre todos los empleados cuyo sueldo no supere los 900 pesos
7- Seleccione los nombres de los empleados que tengan hijos (3 registros)

20/03/13

Ejercicios propuestos : Ingresar algunos campos(Oracle)

17 - Ingresar algunos campos

Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas".
1- Elimine la tabla "cuentas":
drop table cuentas;
2- Cree la tabla :
create table cuentas(
numero number(10) not null,
documento char(8) not null,
nombre varchar2(30),
saldo number(9,2)
);
3- Ingrese un registro con valores para todos sus campos, omitiendo la lista de campos.
4- Ingrese un registro omitiendo algn campo que admita valores nulos.
5- Verifique que en tal campo se almacen "null"
6- Intente ingresar un registro listando 3 campos y colocando 4 valores. Un mensaje indica que hay demasiados valores.
7- Intente ingresar un registro listando 3 campos y colocando 2 valores. Un mensaje indica que no hay suficientes valores.
8- Intente ingresar un registro sin valor para un campo definido "not null".
9- Vea los registros ingresados.

20/03/13

Ejercicios propuestos : Valores por defecto (default)(Oracle)

18 - Valores por defecto (default)

Primer problema:
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- Elimine la tabla "visitantes"
2- Cree la tabla con la siguiente estructura:
create table visitantes(
nombre varchar2(30),
edad number(2),
sexo char(1) default 'f',
domicilio varchar2(30),
ciudad varchar2(20) default 'Cordoba',
telefono varchar(11),
mail varchar(30) default 'no tiene',
montocompra number (6,2)
);
4- Analice la informacin que retorna la siguiente consulta:
select column_name,nullable,data_default
from user_tab_columns where TABLE_NAME = 'VISITANTES';
Todos los campos admiten valores nulos; hay 3 campos con valores predeterminados.
5- Ingrese algunos registros sin especificar valores para algunos campos para ver cmo opera la clusula "default":
insert into visitantes (domicilio,ciudad,telefono,mail,montocompra)
values ('Colon 123','Cordoba','4334455','juanlopez@hotmail.com',59.80);
insert into visitantes (nombre,edad,sexo,telefono,mail,montocompra)
values ('Marcos Torres',29,'m','4112233','marcostorres@hotmail.com',60);
insert into visitantes (nombre,edad,sexo,domicilio,ciudad)
values ('Susana Molina',43,'f','Bulnes 345','Carlos Paz');
6- Recupere todos los registros.
Los campos de aquellos registros para los cuales no se ingres valor almacenaron el valor por defecto ("null" o el especificado con "default").
7- Use la palabra "default" para ingresar valores en un "insert"
8- Recupere el registro anteriormente ingresado.

20/03/13

Ejercicios propuestos : Valores por defecto (default)(Oracle)

Segundo problema:
Una pequea biblioteca de barrio registra los prstamos de sus libros en una tabla llamada "prestamos". En ella almacena la siguiente informacin: ttulo
del libro, documento de identidad del socio a quien se le presta el libro, fecha de prstamo, fecha en que tiene que devolver el libro y si el libro ha sido o
no devuelto.
1- Elimine la tabla "prestamos"
2- Cree la tabla:
create table prestamos(
titulo varchar2(40) not null,
documento char(8) not null,
fechaprestamo date not null,
fechadevolucion date,
devuelto char(1) default 'n'
);
3- Consulte "user_tab_columns" y analice la informacin.
Hay 3 campos que no admiten valores nulos y 1 solo campo con valor por defecto.
4- Ingrese algunos registros omitiendo el valor para los campos que lo admiten.
5- Seleccione todos los registros.
6- Ingrese un registro colocando "default" en los campos que lo admiten y vea cmo se almacen.
7- Intente ingresar un registro colocando "default" como valor para un campo que no admita valores nulos y no tenga definido un valor por defecto.

20/03/13

Ejercicios propuestos : Operadores aritmticos y de concatenacin (columnas calculadas)(Oracle)

19 - Operadores aritmticos y de concatenacin (columnas calculadas)

Primer problema:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.
1- Elimine la tabla:
drop table articulos;
2- Cree la tabla:
create table articulos(
codigo number(4),
nombre varchar2(20),
descripcion varchar2(30),
precio number(8,2),
cantidad number(3) default 0,
primary key (codigo)
);
3- Ingrese algunos registros:
insert into articulos
values (101,'impresora','Epson Stylus C45',400.80,20);
insert into articulos
values (203,'impresora','Epson Stylus C85',500,30);
insert into articulos
values (205,'monitor','Samsung 14',800,10);
insert into articulos
values (300,'teclado','ingles Biswal',100,50);
4- El comercio quiere aumentar los precios de todos sus artculos en un 15%. Actualice todos los precios empleando operadores aritmticos.
5- Vea el resultado.
6- Muestre todos los artculos, concatenando el nombre y la descripcin de cada uno de ellos separados por coma.
7- Reste a la cantidad de todas las impresoras, el valor 5, empleando el operador aritmtico menos ("-")
8- Recupere todos los datos de las impresoras para verificar que la actualizacin se realiz.
9- Muestre todos los artculos concatenado los campos para que aparezcan de la siguiente manera "Cod. 101: impresora Epson Stylus C45 $460,92 (15)"

20/03/13

Ejercicios propuestos : Alias (encabezados de columnas)(Oracle)

20 - Alias (encabezados de columnas)

Primer problema:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.
1- Elimine la tabla:
drop table articulos;
2- Cree la tabla:
create table articulos(
codigo number(4),
nombre varchar2(20),
descripcion varchar2(30),
precio number(8,2),
cantidad number(3) default 0,
primary key (codigo)
);
3- Ingrese algunos registros:
insert into articulos
values (101,'impresora','Epson Stylus C45',400.80,20);
insert into articulos
values (203,'impresora','Epson Stylus C85',500,30);
insert into articulos
values (205,'monitor','Samsung 14',800,10);
insert into articulos
values (300,'teclado','ingles Biswal',100,50);
4- El comercio hace un descuento del 15% en ventas mayoristas. Necesitamos recuperar el cdigo, nombre, decripcin de todos los artculos con una
columna extra que muestre el precio de cada artculo para la venta mayorista con el siguiente encabezado "precio mayorista"
5- Muestre los precios de todos los artculos, concatenando el nombre y la descripcin con el encabezado "artculo" (sin emplear "as" ni comillas)
6- Muestre todos los campos de los artculos y un campo extra, con el encabezado "monto total" en la que calcule el monto total en dinero de cada artculo
(precio por cantidad)
7- Muestre la descripcin de todas las impresoras junto al precio con un 20% de recargo con un encabezado que lo especifique.

20/03/13

Ejercicios propuestos : Ordenar registros (order by)(Oracle)

24 - Ordenar registros (order by)

Primer problema:
En una pgina web se guardan los siguientes datos de las visitas: nombre, mail, pais y fecha.
1- Elimine la tabla "visitas" y crela con la siguiente estructura:
drop table visitas;
create table visitas (
nombre varchar2(30) default 'Anonimo',
mail varchar2(50),
pais varchar2(20),
fecha date
);
3- Ingrese algunos registros:
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into

visitas
visitas
visitas
visitas
visitas
visitas
visitas

values
values
values
values
values
values
values

('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','10/10/2006 10:10');


('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','10/10/2006 21:30');
('Juancito','JuanJosePerez@hotmail.com','Argentina','11/10/2006 15:45');
('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','12/10/2006 08:15');
('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','12/09/2006 20:45');
('Juancito','JuanJosePerez@hotmail.com','Argentina','12/09/2006 16:20');
('Juancito','JuanJosePerez@hotmail.com','Argentina','15/09/2006 16:25');

4- Ordene los registros por fecha, en orden descendente.


5- Muestre el nombre del usuario, pais y el mes, ordenado por pais (ascendente) y el mes (descendente)
6- Muestre los mail, pas, ordenado por pas, de todos los que visitaron la pgina en octubre (4 registros)

20/03/13

Ejercicios propuestos : Operadores lgicos (and - or - not)(Oracle)

25 - Operadores lgicos (and - or - not)

Primer problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.
1- Elimine la tabla y crela con la siguiente estructura:
drop table medicamentos;
create table medicamentos(
codigo number(5),
nombre varchar2(20),
laboratorio varchar2(20),
precio number(5,2),
cantidad number(3),
primary key(codigo)
);
3- Ingrese algunos registros:
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into

medicamentos
medicamentos
medicamentos
medicamentos
medicamentos
medicamentos

values(100,'Sertal','Roche',5.2,100);
values(102,'Buscapina','Roche',4.10,200);
values(205,'Amoxidal 500','Bayer',15.60,100);
values(230,'Paracetamol 500','Bago',1.90,200);
values(345,'Bayaspirina','Bayer',2.10,150);
values(347,'Amoxidal jarabe','Bayer',5.10,250);

4- Recupere los cdigos y nombres de los medicamentos cuyo laboratorio sea "Roche' y cuyo precio sea menor a 5 (1 registro cumple con ambas
condiciones)
5- Recupere los medicamentos cuyo laboratorio sea "Roche" o cuyo precio sea menor a 5 (4 registros)
6- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad sea=100. Luego muestre todos los medicamentos cuyo laboratorio sea
"Bayer" y cuya cantidad NO sea=100
7- Recupere los nombres de los medicamentos cuyo precio est entre 2 y 5 inclusive (2 registros)
8- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea mayor a 10 (1 registro eliminado)
9- Cambie la cantidad por 200, de todos los medicamentos de "Roche" cuyo precio sea mayor a 5 (1 registro afectado)
10- Muestre todos los registros para verificar el cambio.
11- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3 (3 registros borrados)

20/03/13

Ejercicios propuestos : Operadores lgicos (and - or - not)(Oracle)

Segundo problema:
Trabajamos con la tabla "peliculas" de un video club que alquila pelculas en video.
1- Elimine la tabla y crela con la siguiente estructura:
drop table peliculas;
create table peliculas(
codigo number(4),
titulo varchar2(40) not null,
actor varchar2(20),
duracion number(3),
primary key (codigo)
);
3- Ingrese algunos registros:
insert into peliculas
values(1020,'Mision imposible','Tom Cruise',120);
insert into peliculas
values(1021,'Harry Potter y la piedra filosofal','Daniel R.',180);
insert into peliculas
values(1022,'Harry Potter y la camara secreta','Daniel R.',190);
insert into peliculas
values(1200,'Mision imposible 2','Tom Cruise',120);
insert into peliculas
values(1234,'Mujer bonita','Richard Gere',120);
insert into peliculas
values(900,'Tootsie','D. Hoffman',90);
insert into peliculas
values(1300,'Un oso rojo','Julio Chavez',100);
insert into peliculas
values(1301,'Elsa y Fred','China Zorrilla',110);
4- Recupere los registros cuyo actor sea "Tom Cruise" o "Richard Gere" (3 registros)
5- Recupere los registros cuyo actor sea "Tom Cruise" y duracin menor a 100 (ninguno cumple ambas condiciones)
6- Recupere los nombres de las pelculas cuya duracin se encuentre entre 100 y 120 minutos(5 registros)
7- Cambie la duracin a 200, de las pelculas cuyo actor sea "Daniel R." y cuya duracin sea 180 (1 registro afectado)
8- Recupere todos los registros para verificar la actualizacin anterior
9- Borre todas las pelculas donde el actor NO sea "Tom Cruise" y cuya duracin sea mayor o igual a 100 (2 registros eliminados)

20/03/13

Ejercicios propuestos : Otros operadores relacionales (between)(Oracle)

26 - Otros operadores relacionales (between)

Primer problema:
En una pgina web se guardan los siguientes datos de las visitas: nmero de visita, nombre, mail, pais, fechayhora de la visita.
1- Elimine la tabla "visitas" y crela con la siguiente estructura:
drop table visitas;
create table visitas (
nombre varchar2(30) default 'Anonimo',
mail varchar2(50),
pais varchar2(20),
fecha date
);
2- Ingrese algunos registros:
insert into visitas
values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','10/10/2006');
insert into visitas
values ('Gustavo Gonzalez','GustavoGGonzalez@gotmail.com','Chile','10/10/2006');
insert into visitas
values ('Juancito','JuanJosePerez@hotmail.com','Argentina','11/10/2006');
insert into visitas
values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','12/10/2006');
insert into visitas
values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','12/09/2006');
insert into visitas
values ('Juancito','JuanJosePerez@gmail.com','Argentina','12/09/2006');
insert into visitas
values ('Juancito','JuanJosePerez@hotmail.com','Argentina','15/09/2006');
insert into visitas
values ('Federico1','federicogarcia@xaxamail.com','Argentina',null);
3- Seleccione los usuarios que visitaron la pgina entre el '12/09/2006' y '11/10/2006' (6 registros)
Note que incluye los de fecha mayor o igual al valor mnimo y menores o iguales al valor mximo, y que los valores nulos no se incluyen.

Segundo problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.
1- Elimine la tabla y crela con la siguiente estructura:

20/03/13

Ejercicios propuestos : Otros operadores relacionales (between)(Oracle)

drop table medicamentos;


create table medicamentos(
codigo number(6) not null,
nombre varchar2(20),
laboratorio varchar2(20),
precio number(6,2),
cantidad number(4),
fechavencimiento date not null,
primary key(codigo)
);
2- Ingrese algunos registros:
insert into medicamentos
values(102,'Sertal','Roche',5.2,10,'01/02/2010');
insert into medicamentos
values(120,'Buscapina','Roche',4.10,200,'01/12/2007');
insert into medicamentos
values(230,'Amoxidal 500','Bayer',15.60,100,'28/12/2007');
insert into medicamentos
values(250,'Paracetamol 500','Bago',1.90,20,'01/02/2008');
insert into medicamentos
values(350,'Bayaspirina','Bayer',2.10,150,'01/12/2009');
insert into medicamentos
values(456,'Amoxidal jarabe','Bayer',5.10,250,'01/10/2010');
3- Recupere los nombres y precios de los medicamentos cuyo precio est entre 5 y 15 (2 registros)
4- Seleccione los registros cuya cantidad se encuentre entre 100 y 200 (3 registros)
5- Recupere los remedios cuyo vencimiento se encuentre entre la fecha actual y '01/01/2008' inclusive (2 registros)
6- Elimine los remedios cuyo vencimiento se encuentre entre el ao 2007 y 2008 inclusive (3 registros)

20/03/13

Ejercicios propuestos : Otros operadores relacionales (in)(Oracle)

27 - Otros operadores relacionales (in)

Primer problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.
1- Elimine la tabla y crela con la siguiente estructura:
drop table medicamentos;
create table medicamentos(
codigo number(5),
nombre varchar2(20),
laboratorio varchar2(20),
precio number(6,2),
cantidad number(3) not null,
fechavencimiento date not null,
primary key(codigo)
);
3- Ingrese algunos registros:
insert into medicamentos
values(100,'Sertal','Roche',5.2,1,'01/02/2005');
insert into medicamentos
values(230,'Buscapina',null,4.10,3,'01/03/2006');
insert into medicamentos
values(280,'Amoxidal 500','Bayer',15.60,100,'01/05/2007');
insert into medicamentos
values(301,'Paracetamol 500','Bago',1.90,10,'01/02/2008');
insert into medicamentos
values(400,'Bayaspirina','Bayer',2.10,150,'01/08/2009');
insert into medicamentos
values(560,'Amoxidal jarabe','Bayer',5.10,250,'01/10/2010');
4- Recupere los nombres y precios de los medicamentos cuyo laboratorio sea "Bayer" o "Bago" empleando el operador "in" (4 registros)
5- Recupere los nombres y precios de los medicamentos cuyo laboratorio NO sea "Bayer" o "Bago" empleando el operador "in" (1 registro)
Note que los valores nulos no se incluyen.
6- Seleccione los remedios cuya cantidad se encuentre entre 1 y 5 empleando el operador "between" y luego el operador "in" (2 registros)
Note que es ms conveniente emplear, en este caso, el operador "between", simplifica la consulta.
7- Recupere los registros cuyas fechas de vencimiento se encuentra entre enero de 2005 y enero del 2007 (emplee el operador apropiado) (2 registros)
8- Recupere los registros cuyo ao de vencimiento sea 2005 o 2006 (emplee el operador apropiado) (2 registros)

20/03/13

Ejercicios propuestos : Bsqueda de patrones (like - not like)(Oracle)

28 - Bsqueda de patrones (like - not like)

Primer problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados".
1- Elimine la tabla:
drop table empleados;
2- Cree la tabla:
create table empleados(
nombre varchar2(30),
documento char(8) not null,
domicilio varchar2(30),
fechaingreso date,
seccion varchar2(20),
sueldo number(6,2),
primary key(documento)
);
3- Ingrese algunos registros:
insert into empleados
values('Juan Perez','22333444','Colon 123','08/10/1990','Gerencia',900.50);
insert into empleados
values('Ana Acosta','23444555','Caseros 987','18/12/1995','Secretaria',590.30);
insert into empleados
values('Lucas Duarte','25666777','Sucre 235','15/05/2005','Sistemas',790);
insert into empleados
values('Pamela Gonzalez','26777888','Sarmiento 873','12/02/1999','Secretaria',550);
insert into empleados
values('Marcos Juarez','30000111','Rivadavia 801','22/09/2002','Contaduria',630.70);
insert into empleados
values('Yolanda perez','35111222','Colon 180','08/10/1990','Administracion',400);
insert into empleados
values('Rodolfo perez','35555888','Coronel Olmedo 588','28/05/1990','Sistemas',800);
4- Muestre todos los empleados con apellido "Perez" empleando el operador "like" (1 registro)
Note que no incluye los "perez" (que comienzan con minscula).
5- Muestre todos los empleados cuyo domicilio comience con "Co" y tengan un "8" (2 registros)
6- Seleccione todos los empleados cuyo documento finalice en 0 4 (2 registros)
7- Seleccione todos los empleados cuyo documento NO comience con 2 y cuyo nombre finalice en "ez" (1 registro)
8- Recupere todos los nombres que tengan una "G" o una "J" en su nombre o apellido (3 registros)
9- Muestre los nombres y seccin de los empleados que pertenecen a secciones que comiencen con "S" o "G" y tengan 8 caracteres (3 registros)
10- Muestre los nombres y seccin de los empleados que pertenecen a secciones que NO comiencen con "S" (3 registros)
11- Muestre todos los nombres y sueldos de los empleados cuyos sueldos se encuentren entre 500,00 y 599,99 empleando "like" (2 registros)
12- Muestre los empleados que hayan ingresado en la dcada del 90 (5 registros)
13- Agregue 50 centavos a todos los sueldos que no tengan centavos (4 registros) y verifique recuperando todos los registros.
14- Elimine todos los empleados cuyos apellidos comiencen con "p" (minscula) (2 registros)

20/03/13

Ejercicios propuestos : Contar registros (count)(Oracle)

29 - Contar registros (count)

Primer problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.
1- Elimine la tabla:
drop table medicamentos;
2- Cree la tabla con la siguiente estructura:
create table medicamentos(
codigo number(5),
nombre varchar2(20),
laboratorio varchar2(20),
precio number(6,2),
cantidad number(3),
fechavencimiento date not null,
numerolote number(6) default null,
primary key(codigo)
);
3- Ingrese algunos registros:
insert into medicamentos
values(120,'Sertal','Roche',5.2,1,'01/02/2005',123456);
insert into medicamentos
values(220,'Buscapina','Roche',4.10,3,'01/02/2006',null);
insert into medicamentos
values(228,'Amoxidal 500','Bayer',15.60,100,'01/05/2007',null);
insert into medicamentos
values(324,'Paracetamol 500','Bago',1.90,20,'01/02/2008',null);
insert into medicamentos
values(587,'Bayaspirina',null,2.10,null,'01/12/2009',null);
insert into medicamentos
values(789,'Amoxidal jarabe','Bayer',null,null,'15/12/2009',null);
4- Muestre la cantidad de registros empleando la funcin "count(*)" (6 registros)
5- Cuente la cantidad de medicamentos que tienen laboratorio conocido (5 registros)
6- Cuente la cantidad de medicamentos que tienen precio y cantidad, con alias (5 y 4 respectivamente)
7- Cuente la cantidad de remedios con precio conocido, cuyo laboratorio comience con "B" (2 registros)
8- Cuente la cantidad de medicamentos con nmero de lote distinto de "null" (1 registro)
9- Cuente la cantidad de medicamentos con fecha de vencimiento conocida (6 registros)

20/03/13

Ejercicios propuestos : Funciones de grupo (count - max - min - sum - avg)(Oracle)

30 - Funciones de grupo (count - max - min - sum - avg)

Primer problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados".
1- Elimine la tabla y crela con la siguiente estructura:
drop table empleados;
create table empleados(
nombre varchar2(30),
documento char(8),
domicilio varchar2(30),
seccion varchar2(20),
sueldo number(6,2),
cantidadhijos number(2),
fechaingreso date,
primary key(documento)
);
3- Ingrese algunos registros:
insert into empleados
values('Juan Perez','22333444','Colon 123','Gerencia',5000,2,'10/10/1980');
insert into empleados
values('Ana Acosta','23444555','Caseros 987','Secretaria',2000,0,'15/08/1998');
insert into empleados
values('Lucas Duarte','25666777','Sucre 235','Sistemas',4000,1,null);
insert into empleados
values('Pamela Gonzalez','26777888','Sarmiento 873','Secretaria',2200,3,null);
insert into empleados
values('Marcos Juarez','30000111','Rivadavia 801','Contaduria',3000,0,'26/08/2000');
insert into empleados
values('Yolanda Perez','35111222','Colon 180','Administracion',3200,1,'25/09/2001');
insert into empleados
values('Rodolfo Perez','35555888','Coronel Olmedo 588','Sistemas',4000,3,null);
insert into empleados
values('Martina Rodriguez','30141414','Sarmiento 1234','Administracion',3800,4,'14/12/2000');
insert into empleados
values('Andres Costa','28444555',default,'Secretaria',null,null,'08/08/1990');
4- Muestre la cantidad de empleados usando "count" (9 empleados)
5- Muestre la cantidad de empleados con fecha de ingreso conocida (6 empleados)
6- Muestre la cantidad de empleados con sueldo (8 empleados)
7- Muestre la cantidad de empleados con sueldo de la seccin "Secretaria" (2 empleados)
8- Muestre el sueldo ms alto y el ms bajo colocando un alias (5000 y 2000 respectivamente)
9- Muestre el valor mayor de "cantidadhijos" de los empleados "Perez" (3 hijos)
10- Muestre la fecha de ingreso ms reciente (max) y la ms lejana (min) (25/09/01 y 10/10/80 respectivamente)
11- Muestre el documento menor (22333444)
12- Muestre el promedio de sueldos de todo los empleados (3400. Note que hay un sueldo nulo y no es tenido en cuenta)
13- Muestre el promedio de sueldos de los empleados de la seccin "Secretara" (2100. Note que hay 3 registros de la seccin solicitada, pero como uno de
ellos tiene sueldo nulo, no es tenido en cuenta)
14- Muestre el promedio de hijos de todos los empleados de "Sistemas" (retorna 2)
15- Muestre la cantidad de empleados, la cantidad de empleados con domicilio conocido, la suma de los hijos, el promedio de los sueldos y los valores
mnimo y mximo del campo "fechaingreso" de todos los empleados. Empleamos todas las funciones de grupo en una sola consulta y nos retorna 9, 8, 14,
3400, 10/10/80 y 25/09/01.

20/03/13

Ejercicios propuestos : Funciones de grupo (count - max - min - sum - avg)(Oracle)

16- Realice la misma consulta anterior pero ahora de los empleados de la seccin "Recursos". Al no existir tal seccin, "count(*)" y "count(domicilio)"
retornan 0 (cero) y las dems funciones de grupo retornan "null".

20/03/13

Ejercicios propuestos : Agrupar registros (group by)(Oracle)

31 - Agrupar registros (group by)

Primer problema:
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- Elimine la tabla "visitantes" y crela con la siguiente estructura:
drop table visitantes;
create table visitantes(
nombre varchar2(30),
edad number(2),
sexo char(1) default 'f',
domicilio varchar2(30),
ciudad varchar2(20) default 'Cordoba',
telefono varchar2(11),
mail varchar2(30) default 'no tiene',
montocompra number(6,2)
);
3- Ingrese algunos registros:
insert into visitantes
values ('Susana Molina',35,default,'Colon 123',default,null,null,59.80);
insert into visitantes
values ('Marcos Torres',29,'m',default,'Carlos Paz',default,'marcostorres@hotmail.com',150.50);
insert into visitantes
values ('Mariana Juarez',45,default,default,'Carlos Paz',null,default,23.90);
insert into visitantes (nombre, edad,sexo,telefono, mail)
values ('Fabian Perez',36,'m','4556677','fabianperez@xaxamail.com');
insert into visitantes (nombre, ciudad, montocompra)
values ('Alejandra Gonzalez','La Falda',280.50);
insert into visitantes (nombre, edad,sexo, ciudad, mail,montocompra)
values ('Gaston Perez',29,'m','Carlos Paz','gastonperez1@gmail.com',95.40);
insert into visitantes
values ('Liliana Torres',40,default,'Sarmiento 876',default,default,default,85);
insert into visitantes
values ('Gabriela Duarte',21,null,null,'Rio Tercero',default,'gabrielaltorres@hotmail.com',321.50);
4- Queremos saber la cantidad de visitantes de cada ciudad utilizando la clusula "group by" (4 filas devueltas)
5- Queremos la cantidad visitantes con telfono no nulo, de cada ciudad (4 filas devueltas)
6- Necesitamos el total del monto de las compras agrupadas por sexo (3 filas)
Note que los registros con valor nulo en el campo "sexo" se procesan como un grupo diferente.
7- Se necesita saber el mximo y mnimo valor de compra agrupados por sexo y ciudad (6 filas)
8- Calcule el promedio del valor de compra agrupados por ciudad (4 filas)
9- Cuente y agrupe por ciudad sin tener en cuenta los visitantes que no tienen mail (3 filas)

20/03/13

Ejercicios propuestos : Agrupar registros (group by)(Oracle)

Segundo problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados".
1- Elimine la tabla y luego crela con la estructura definida a continuacin:
drop table empleados;
create table empleados(
nombre varchar2(30),
documento char(8),
domicilio varchar2(30),
seccion varchar2(20),
sueldo number(6,2),
cantidadhijos number(2),
fechaingreso date,
primary key(documento)
);
3- Ingrese algunos registros:
insert into empleados
values('Juan Perez','22333444','Colon 123','Gerencia',5000,2,'10/05/1980');
insert into empleados
values('Ana Acosta','23444555','Caseros 987','Secretaria',2000,0,'12/10/1980');
insert into empleados
values('Lucas Duarte','25666777','Sucre 235','Sistemas',4000,1,'25/05/1985');
insert into empleados
values('Pamela Gonzalez','26777888','Sarmiento 873','Secretaria',2200,3,'25/06/1990');
insert into empleados
values('Marcos Juarez','30000111','Rivadavia 801','Contaduria',3000,0,'01/05/1996');
insert into empleados
values('Yolanda Perez','35111222','Colon 180','Administracion',3200,1,'01/05/1996');
insert into empleados
values('Rodolfo Perez','35555888','Coronel Olmedo 588','Sistemas',4000,3,'01/05/1996');
insert into empleados
values('Martina Rodriguez','30141414','Sarmiento 1234','Administracion',3800,4,'01/09/2000');
insert into empleados
values('Andres Costa','28444555',default,'Secretaria',null,null,null);
4- Cuente la cantidad de empleados agrupados por seccin (5 filas)
5- Calcule el promedio de hijos por seccin (5 filas)
6- Cuente la cantidad de empleados agrupados por ao de ingreso (6 filas)
7- Calcule el promedio de sueldo por seccin de los empleados con hijos (4 filas)

20/03/13

Ejercicios propuestos : Seleccionar grupos (Having)(Oracle)

32 - Seleccionar grupos (Having)

Primer problema:
Una empresa tiene registrados sus clientes en una tabla llamada "clientes".
1- Elimine la tabla "clientes":
drop table clientes;
2- Crela con la siguiente estructura:
create table clientes (
nombre varchar2(30) not null,
domicilio varchar2(30),
ciudad varchar2(20),
provincia varchar2(20),
telefono varchar2(11)
);
3- Ingrese algunos registros:
insert into clientes
values ('Lopez Marcos','Colon 111','Cordoba','Cordoba','null');
insert into clientes
values ('Perez Ana','San Martin 222','Cruz del Eje','Cordoba','4578585');
insert into clientes
values ('Garcia Juan','Rivadavia 333','Villa del Rosario','Cordoba','4578445');
insert into clientes
values ('Perez Luis','Sarmiento 444','Rosario','Santa Fe',null);
insert into clientes
values ('Pereyra Lucas','San Martin 555','Cruz del Eje','Cordoba','4253685');
insert into clientes
values ('Gomez Ines','San Martin 666','Santa Fe','Santa Fe','0345252525');
insert into clientes
values ('Torres Fabiola','Alem 777','Villa del Rosario','Cordoba','4554455');
insert into clientes
values ('Lopez Carlos',null,'Cruz del Eje','Cordoba',null);
insert into clientes
values ('Ramos Betina','San Martin 999','Cordoba','Cordoba','4223366');
insert into clientes
values ('Lopez Lucas','San Martin 1010','Posadas','Misiones','0457858745');
4- Obtenga el total de los registros agrupados por ciudad y provincia (6 filas)
5- Obtenga el total de los registros agrupados por ciudad y provincia sin considerar los que tienen menos de 2 clientes (3 filas)
6- Obtenga el total de los clientes que viven en calle "San Martin" (where), agrupados por provincia (group by), de aquellas ciudades que tengan menos de
2 clientes (having) y omitiendo la fila correspondiente a la ciudad de "Cordoba" (having) (2 filas devueltas)

20/03/13

Ejercicios propuestos : Seleccionar grupos (Having)(Oracle)

www.oracleya.com.ar/problemas/problema.php?cod=190&punto=32

3/3

20/03/13

Ejercicios propuestos : Registros duplicados (Distinct)(Oracle)

33 - Registros duplicados (Distinct)

Primer problema:
Una empresa tiene registrados sus clientes en una tabla llamada "clientes".
1- Elimine la tabla "clientes" y crela con la siguiente estructura:
drop table clientes;
create table clientes (
nombre varchar2(30) not null,
domicilio varchar2(30),
ciudad varchar2(20),
provincia varchar2(20)
);
2- Ingrese algunos registros:
insert into clientes
values ('Lopez Marcos','Colon 111','Cordoba','Cordoba');
insert into clientes
values ('Perez Ana','San Martin 222','Cruz del Eje','Cordoba');
insert into clientes
values ('Garcia Juan','Rivadavia 333','Villa del Rosario','Cordoba');
insert into clientes
values ('Perez Luis','Sarmiento 444','Rosario','Santa Fe');
insert into clientes
values ('Pereyra Lucas','San Martin 555','Cruz del Eje','Cordoba');
insert into clientes
values ('Gomez Ines','San Martin 666','Santa Fe','Santa Fe');
insert into clientes
values ('Torres Fabiola','Alem 777','Villa del Rosario','Cordoba');
insert into clientes
values ('Lopez Carlos',null,'Cruz del Eje','Cordoba');
insert into clientes
values ('Ramos Betina','San Martin 999','Cordoba','Cordoba');
insert into clientes
values ('Lopez Lucas','San Martin 1010','Posadas','Misiones');
3- Obtenga las provincias sin repetir (3 registros)
4- Cuente las distintas provincias (retorna 3)
5- Se necesitan los nombres de las ciudades sin repetir (6 registros)
6- Obtenga la cantidad de ciudades distintas (devuelve 6)
7- Combine con "where" para obtener las distintas ciudades de la provincia de Cordoba (3 registros)
8- Contamos las distintas ciudades de cada provincia empleando "group by" (3 filas)

20/03/13

Ejercicios propuestos : Registros duplicados (Distinct)(Oracle)

Segundo problema:
La provincia almacena en una tabla llamada "inmuebles" los siguientes datos de los inmuebles y sus propietarios para cobrar impuestos:
1- Elimine la tabla:
drop table inmuebles;
2- Crela con la siguiente estructura:
create table inmuebles (
documento varchar2(8) not null,
apellido varchar2(30),
nombre varchar2(30),
domicilio varchar2(20),
barrio varchar2(20),
ciudad varchar2(20),
tipo char(1),--b=baldio, e: edificado
superficie number(8,2)
);
3- Ingrese algunos registros:
insert into inmuebles
values ('11000000','Perez','Alberto','San Martin 800','Centro','Cordoba','e',100);
insert into inmuebles
values ('11000000','Perez','Alberto','Sarmiento 245','Gral. Paz','Cordoba','e',200);
insert into inmuebles
values ('12222222','Lopez','Maria','San Martin 202','Centro','Cordoba','e',250);
insert into inmuebles
values ('13333333','Garcia','Carlos','Paso 1234','Alberdi','Cordoba','b',200);
insert into inmuebles
values ('13333333','Garcia','Carlos','Guemes 876','Alberdi','Cordoba','b',300);
insert into inmuebles
values ('14444444','Perez','Mariana','Caseros 456','Flores','Cordoba','b',200);
insert into inmuebles
values ('15555555','Lopez','Luis','San Martin 321','Centro','Carlos Paz','e',500);
insert into inmuebles
values ('15555555','Lopez','Luis','Lopez y Planes 853','Flores','Carlos Paz','e',350);
insert into inmuebles
values ('16666666','Perez','Alberto','Sucre 1877','Flores','Cordoba','e',150);
4- Muestre los distintos apellidos de los propietarios, sin repetir (3 registros)
5- Recupere los distintos documentos de los propietarios y luego muestre los distintos documentos de los propietarios, sin repetir y vea la diferencia (9 y 6
registros respectivamente)
6- Cuente, sin repetir, la cantidad de propietarios de inmuebles de la ciudad de Cordoba (5)
7- Cuente la cantidad de inmuebles con domicilio en 'San Martin' (3)
8- Cuente la cantidad de inmuebles con domicilio en 'San Martin', sin repetir la ciudad (2 registros). Compare con la sentencia anterior.
9- Muestre los apellidos y nombres de todos los registros(9 registros)
10- Muestre los apellidos y nombres, sin repetir (5 registros)
Note que si hay 2 personas con igual nombre y apellido aparece una sola vez.
11- Muestre la cantidad de inmuebles que tiene cada propietario en barrios conocidos, agrupando por documento (6 registros)
12- Realice la misma consulta anterior pero en esta oportunidad, sin repetir barrio (6 registros)

20/03/13

Ejercicios propuestos : Clave primaria compuesta(Oracle)

34 - Clave primaria compuesta

Primer problema:
Un consultorio mdico en el cual trabajan 3 mdicos registra las consultas de los pacientes en una tabla llamada "consultas".
1- Elimine la tabla:
drop table consultas;
2- La tabla contiene los siguientes datos:
-

fechayhora: date not null, fecha y hora de la consulta,


medico: varchar2(30), not null, nombre del mdico (Perez,Lopez,Duarte),
documento: char(8) not null, documento del paciente,
paciente: varchar2(30), nombre del paciente,
obrasocial: varchar2(30), nombre de la obra social (IPAM,PAMI, etc.).

3- Setee el formato de "date" para que nos muestre da, mes, ao, hora y minutos:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI';
4- Un mdico slo puede atender a un paciente en una fecha y hora determinada. En una fecha y hora determinada, varios mdicos atienden a distintos
pacientes. Cree la tabla definiendo una clave primaria compuesta:
create table consultas(
fechayhora date not null,
medico varchar2(30) not null,
documento char(8) not null,
paciente varchar2(30),
obrasocial varchar2(30),
primary key(fechayhora,medico)
);
4- Ingrese varias consultas para un mismo mdico en distintas horas el mismo da:
insert into consultas
values ('05/11/2006 8:00','Lopez','12222222','Acosta Betina','PAMI');
insert into consultas
values ('05/11/2006 8:30','Lopez','23333333','Fuentes Carlos','PAMI');
5- Ingrese varias consultas para diferentes mdicos en la misma fecha y hora:
insert into consultas
values ('05/11/2006 8:00','Perez','34444444','Garcia Marisa','IPAM');
insert into consultas
values ('05/11/2006 8:00','Duarte','45555555','Pereyra Luis','PAMI');
6- Intente ingresar una consulta para un mismo mdico en la misma hora el mismo da (mensaje de error)
7- Intente cambiar la hora de la consulta de "Acosta Betina" por una no disponible ("8:30") (error)
8- Cambie la hora de la consulta de "Acosta Betina" por una disponible ("9:30")
9- Ingrese una consulta para el da "06/11/2006" a las 10 hs. para el doctor "Perez"
10- Recupere todos los datos de las consultas de "Lopez" (3 registros)
11- Recupere todos los datos de las consultas programadas para el "05/11/2006 8:00" (2 registros)
12- Muestre da y mes de todas las consultas de "Lopez"

20/03/13

Ejercicios propuestos : Clave primaria compuesta(Oracle)

Segundo problema:
Un club dicta clases de distintos deportes. En una tabla llamada "inscriptos" almacena la informacin necesaria.
1- Elimine la tabla "inscriptos":
drop table inscriptos;
2- La tabla contiene los siguientes campos:
-

documento del socio alumno: char(8) not null


nombre del socio: varchar2(30),
nombre del deporte (tenis, futbol, natacin, basquet): varchar2(15) not null,
ao de inscripcion: date,
matrcula: si la matrcula ha sido o no pagada ('s' o 'n').

3- Necesitamos una clave primaria que identifique cada registro. Un socio puede inscribirse en varios deportes en distintos aos. Un socio no puede
inscribirse en el mismo deporte el mismo ao. Varios socios se inscriben en un mismo deporte en distintos aos. Cree la tabla con una clave compuesta:
create table inscriptos(
documento char(8) not null,
nombre varchar2(30),
deporte varchar2(15) not null,
ao date,
matricula char(1),
primary key(documento,deporte,ao)
);
4- Setee el formato de "date" para que nos muestre solamente el ao (no necesitamos las otras partes de la fecha ni la hora)
5- Inscriba a varios alumnos en el mismo deporte en el mismo ao:
insert into inscriptos
values ('12222222','Juan Perez','tenis','2005','s');
insert into inscriptos
values ('23333333','Marta Garcia','tenis','2005','s');
insert into inscriptos
values ('34444444','Luis Perez','tenis','2005','n');
6- Inscriba a un mismo alumno en varios deportes en el mismo ao:
insert into inscriptos
values ('12222222','Juan Perez','futbol','2005','s');
insert into inscriptos
values ('12222222','Juan Perez','natacion','2005','s');
insert into inscriptos
values ('12222222','Juan Perez','basquet','2005','n');
7- Ingrese un registro con el mismo documento de socio en el mismo deporte en distintos aos:
insert into inscriptos
values ('12222222','Juan Perez','tenis','2006','s');
insert into inscriptos
values ('12222222','Juan Perez','tenis','2007','s');
8- Intente inscribir a un socio alumno en un deporte en el cual ya est inscripto en un ao en el cual ya se haya inscripto (mensaje de error)
9- Intente actualizar un registro para que la clave primaria se repita (error)
10- Muestre los nombres y aos de los inscriptos en "tenis" (5 registros)
11- Muestre los nombres y deportes de los inscriptos en el ao 2005 (6 registros)
12- Muestre el deporte y ao de todas las incripciones del socio documento "12222222" (6 registros)

20/03/13

Ejercicios propuestos : Secuencias (create sequence - currval - nextval - drop sequence)(Oracle)

35 - Secuencias (create sequence - currval - nextval - drop sequence)

Primer problema:
Una empresa registra los datos de sus empleados en una tabla llamada "empleados".
1- Elimine la tabla "empleados":
drop table empleados;
2- Cree la tabla:
create table empleados(
legajo number(3),
documento char(8) not null,
nombre varchar2(30) not null,
primary key(legajo)
);
3- Elimine la secuencia "sec_legajoempleados" y luego crela estableciendo el valor mnimo (1), mximo (999), valor inicial (100), valor de incremento (2)
y no circular. Finalmente inicialice la secuencia.
4- Ingrese algunos registros, empleando la secuencia creada para los valores de la clave primaria:
insert into empleados
values (sec_legajoempleados.currval,'22333444','Ana Acosta');
insert into empleados
values (sec_legajoempleados.nextval,'23444555','Betina Bustamante');
insert into empleados
values (sec_legajoempleados.nextval,'24555666','Carlos Caseros');
insert into empleados
values (sec_legajoempleados.nextval,'25666777','Diana Dominguez');
insert into empleados
values (sec_legajoempleados.nextval,'26777888','Estela Esper');
5- Recupere los registros de "libros" para ver los valores de clave primaria.
Note que los valores se incrementaron en 2, porque as se estableci el valor de incremento al crear la secuencia.
6- Vea el valor actual de la secuencia empleando la tabla "dual". Retorna 108.
7- Recupere el valor siguiente de la secuencia empleando la tabla "dual" Retorna 110.
8- Ingrese un nuevo empleado (recuerde que la secuencia ya tiene el prximo valor, emplee "currval" para almacenar el valor de legajo)
9- Recupere los registros de "libros" para ver el valor de clave primaria ingresado anteriormente.
10- Incremente el valor de la secuencia empleando la tabla "dual" (retorna 112)
11- Ingrese un empleado con valor de legajo "112".
12- Intente ingresar un registro empleando "currval":
insert into empleados
values (sec_legajoempleados.currval,'29000111','Hector Huerta');
Mensaje de error porque el legajo est repetido y la clave primaria no puede repetirse.
13- Incremente el valor de la secuencia. Retorna 114.
14- Ingrese el registro del punto 11.
Ahora si lo permite, pues el valor retornado por "currval" no est repetido en la tabla "empleados".
15- Recupere los registros.
16- Vea las secuencias existentes y analice la informacin retornada.
Debe aparecer "sec_legajoempleados".

20/03/13

Ejercicios propuestos : Secuencias (create sequence - currval - nextval - drop sequence)(Oracle)

17- Vea todos los objetos de la base de datos actual que contengan en su nombre la cadena "EMPLEADOS".
Debe aparacer la tabla "empleados" y la secuencia "sec_legajoempleados".
18- Elimine la secuencia creada.
19- Consulte todos los objetos de la base de datos que sean secuencias y verifique que "sec_legajoempleados" ya no existe.

20/03/13

Ejercicios propuestos : Alterar secuencia (alter sequence)(Oracle)

36 - Alterar secuencia (alter sequence)

Primer problema:
Una empresa registra los datos de sus empleados en una tabla llamada "empleados".
1- Elimine la tabla "empleados":
drop table empleados;
2- Cree la tabla:
create table empleados(
legajo number(3),
documento char(8) not null,
nombre varchar2(30) not null,
primary key(legajo)
);
3- Elimine la secuencia "sec_legajoempleados" y luego crela estableciendo el valor mnimo (1), mximo (210), valor inicial (206), valor de incremento (2)
y no circular. Finalmente inicialice la secuencia.
4- Ingrese algunos registros, empleando la secuencia creada para los valores de la clave primaria.
insert into empleados
values (sec_legajoempleados.currval,'22333444','Ana Acosta');
insert into empleados
values (sec_legajoempleados.nextval,'23444555','Betina Bustamante');
insert into empleados
values (sec_legajoempleados.nextval,'24555666','Carlos Caseros');
5- Recupere los registros de "libros" para ver los valores de clave primaria.
6- Vea el valor actual de la secuencia empleando la tabla "dual"
7- Intente ingresar un registro empleando "nextval":
insert into empleados
values (sec_legajoempleados.nextval,'25666777','Diana Dominguez');
Oracle muestra un mensaje de error indicando que la secuencia ha llegado a su valor mximo.
8- Altere la secuencia modificando el atributo "maxvalue" a 999.
9- Obtenga informacin de la secuencia.
10- Ingrese el registro del punto 7.
11- Recupere los registros.
12- Modifique la secuencia para que sus valores se incrementen en 1.
13- Ingrese un nuevo registro:
insert into empleados
values (sec_legajoempleados.nextval,'26777888','Federico Fuentes');
14- Recupere los registros.
15- Elimine la secuencia creada.
16- Consulte todos los objetos de la base de datos que sean secuencias y verifique que "sec_legajoempleados" ya no existe.

Vous aimerez peut-être aussi