Sei sulla pagina 1di 71

PRACTICAS SQL

EJERCICIO 1:
Crear tablas (create table - describe - all_tables - drop table)
Primer problema:0

Elimine la tabla "agenda", si no existe, un mensaje indicará tal situación.


Intente crear una tabla llamada "*agenda"

Cree una tabla llamada "agenda", debe tener los siguientes campos:
apellido, varchar2(30); nombre, varchar2(20); domicilio, varchar2 (30) y
teléfono, varchar2(11)
Un mensaje indica que la tabla ha sido creada exitosamente.

Intente crearla nuevamente. Aparece mensaje de error indicando que


el nombre ya lo tiene otro objeto.
Visualice las tablas existentes (all_tables). La tabla "agenda" aparece
en la lista.

Visualice la estructura de la tabla "agenda" (describe). Aparece la


siguiente tabla:
EJERCICIO 2:
Ingresar registros (insert into- select).

Trabaje con la tabla "agenda" que almacena información de sus


amigos.
Visualice las tablas existentes para verificar la creación de "agenda"
(all_tables).

Visualice la estructura de la tabla "agenda" (describe).


Ingrese los siguientes registros.

Seleccione todos los registros de la tabla.


Elimine la tabla "agenda"
Intente eliminar la tabla nuevamente (aparece un mensaje de error).
EJERCICIO 3:

Un videoclub que alquila películas en video almacena la información


de sus películas en una tabla llamada "peliculas"; para cada película
necesita los siguientes datos:
Elimine la tabla "peliculas" si ya existe

Cree la tabla eligiendo el tipo de dato adecuado para cada campo.


Note que los campos "duracion" y "cantidad", que almacenarán 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.
Vea la estructura de la tabla.
Ingrese los siguientes registros:

Muestre todos los registros (4 registros):

Intente ingresar una película con valor de cantidad fuera del rango
permitido:
Ingrese un valor con decimales en un nuevo registro, en el campo
"duracion”:

Muestre todos los registros para ver cómo se almacenó el último


registro ingresado.

Intente ingresar un nombre de película que supere los 20 caracteres.


EJERCICIO 4:
Un videoclub que alquila películas en video almacena la información
de sus películas en alquiler en una tabla llamada "peliculas". Elimine la
tabla si existe.

Cree la tabla:
Vea la estructura de la tabla (4 campos):
Ingrese los siguientes registros:

Realice un "select" mostrando solamente el título y actor de todas las


películas:

Muestre el título y duración de todas las peliculas.


Muestre el título y la cantidad de copias.

EJERCICIO 5:
Recuperar algunos registros (where): Trabaje con la tabla "agenda" en
la que registra los datos de sus amigos.
Elimine "agenda".

Cree la tabla, con los siguientes campos: apellido (cadena de 30),


nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena
de 11):
Visualice la estructura de la tabla "agenda" (4 campos):

Ingrese los siguientes registros ("insert into"):


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

Seleccione el registro cuyo nombre sea "Marisa" (1 registro):


Seleccione los nombres y domicilios de quienes tengan apellido igual a
"Lopez" (3 registros):

Seleccione los nombres y domicilios de quienes tengan apellido igual a


"lopez" (en minúsculas):
Muestre el nombre de quienes tengan el teléfono "4545454" (2
registros):
EJERCICIO 6:

Un comercio que vende artículos de computación registra los datos de


sus artículos en una tabla con ese nombre. Elimine "articulos".

Cree la tabla, con la siguiente estructura:

Vea la estructura de la tabla:


Ingrese algunos registros:

Seleccione los datos de las impresoras (2 registros):


Seleccione los artículos cuyo precio sea mayor o igual a 400 (3
registros):

Seleccione el código y nombre de los artículos cuya cantidad sea


menor a 30 (2 registros);

Selecciones el nombre y descripción de los artículos que NO cuesten


$100 (4 registros):
EJERCICIO 7:
Trabaje con la tabla "agenda" que registra la información referente a
sus amigos. Elimine la tabla.

Cree la tabla con los siguientes campos: apellido (cadena de 30),


nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena
de 11):
Ingrese los siguientes registros (insert into):

Elimine los registros cuyo número telefónico sea igual a "4545454" (2


registros):
Elimine todos los registros (2 registros):

EJERCICIO 8:
Trabaje con la tabla "agenda" que almacena los datos de sus amigos:
Elimine la tabla y créela con la siguiente estructura:
Ingrese los siguientes registros:
Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro
actualizado):

Actualice los registros cuyo número telefónico sea igual a "4545454" por
"4445566" (2 registros):

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"):
EJERCICIO 9:
Una farmacia guarda información referente a sus medicamentos en
una tabla llamada "medicamentos". Elimine la tabla y créela con la
siguiente estructura:

EJERCICIO 10:
Alias (encabezados de columnas)
Elimine la tabla:
Cree la tabla

Ingrese algunos registros

El comercio hace un descuento del 15% en ventas mayoristas. Necesitamos recuperar el


código, nombre, decripción de todos los artículos con una columna extra que muestre el
precio de cada artículo para la venta mayorista con el siguiente encabezado "precio
mayorista"
Muestre los precios de todos los artículos, concatenando el nombre y la descripción
con el encabezado "artículo" (sin emplear "as" ni comillas)

Muestre todos los campos de los artículos y un campo extra, con el encabezado
"monto total" en la que calcule el monto total en dinero de cada artículo (precio por
cantidad)

Muestre todos los campos de los artículos y un campo extra, con el encabezado
"monto total" en la que calcule el monto total en dinero de cada artículo (precio por
cantidad)
EJERCICIO 11:

Varias tablas (join)


Hasta el momento hemos trabajado con una sola tabla, pero generalmente, se trabaja con
más de una.Para evitar la repetición de datos y ocupar menos espacio, se separa la
información en varias tablas. Cada tabla almacena parte de la información que necesitamos
registrar.
Por ejemplo, los datos de nuestra tabla "libros" podrían separarse en 2 tablas, una llamada
"libros" y otra "editoriales" que guardará la información de las editoriales. En nuestra tabla
"libros" haremos referencia a la editorial colocando un código que la identifique. Veamos:

De esta manera, evitamos almacenar tantas veces los nombres de las editoriales en la tabla
"libros" y guardamos el nombre en la tabla "editoriales"; para indicar la editorial de cada libro
agregamos un campo que hace referencia al código de la editorial en la tabla "libros" y en
"editoriales".

Al recuperar los datos de los libros con la siguiente instrucción:


EJERCICIO 12:

Combinación interna (join)

Elimine las tablas "clientes" y "provincias"

Créelas con las siguientes estructuras

Ingrese algunos registros para ambas tablas


Obtenga los datos de ambas tablas, usando alias.

Obtenga la misma información anterior pero ordenada por nombre de provincia (join y order
by)
Recupere todos los datos de los clientes de la provincia "Santa Fe" (join con where) (2
registros devueltos)

EJERCICIO 13:

Una empresa tiene registrados sus clientes en una tabla llamada "clientes", también tiene
una tabla "provincias" donde registra los nombres de las provincias.

Elimine las tablas "clientes" y "provincias", créelas y agregue restricciones únicas


para los campos "codigo" de ambas tablas:
Ingrese algunos registros para ambas tablas. Incluya valores nulos para el campo "codigo" de
"provincias" y valores nulos para el campo "codigoprovincia" de "clientes". Incluya en
"clientes" un código de provincia que no exista en "provincias":

Muestre todos los datos de los clientes, incluido el nombre de la provincia

Realice la misma consulta anterior pero alterando el orden de las tablas.


Muestre todos los clientes cuyo código de provincia NO existe en "provincias"
ordenados por nombre del cliente ( registros)

EJERCICIO 14:

Subconsultas como expresion


Elimine la tabla
Créela con los campos necesarios. Agregue una restricción "primary key" para el
campo "documento" y una "check" para validar que el campo "nota" se encuentre
entre los valores 0 y 10:

Ingrese algunos registros:

Obtenga todos los datos de los alumnos con la nota más alta, empleando subconsulta
Realice la misma consulta anterior pero intente que la consulta interna retorne,
además del máximo valor de nota, el nombre del alumno.
Mensaje de error, porque la lista de selección de una subconsulta que va luego de un
operador de comparación puede incluir sólo un campo o expresión (excepto si se
emplea "exists" o "in").

Cambie la nota del alumno que tiene la menor nota por 4.

Elimine los alumnos cuya nota es menor al promedio.


EJERCICIO 15:

Vistas (create view)


Elimine las tablas y créelas nuevamente

Ingrese algunos registros para todas las tablas:


Elimine la vista "vista_club"

Cree una vista en la que aparezca el nombre del socio, el deporte, el día, el nombre del
profesor y el estado de la matrícula (deben incluirse los socios que no están inscriptos
en ningún deporte, los cursos para los cuales no hay inscriptos y los profesores que no
tienen designado deporte también)
Muestre la información contenida en la vista (11 registros)

Muestre (consultando la vista) el nombre de los socios que deben matrículas (1 registro)

Intente crear una vista denominada "vista_inscriptos" que muestre la cantidad de


inscriptos por curso, incluyendo el número del curso, el nombre del deporte y el día
EJERCICIO 16:

Procedimientos Almacenados (crear- ejecutar)


Eliminamos la tabla y la creamos

Ingrese algunos registros:

Cree (o reemplace) el procedimiento almacenado llamado "pa_aumentarsueldo" que


aumente los sueldos inferiores al promedio en un 20%
Ejecute el procedimiento creado anteriormente

Verifique que los sueldos han aumentado

Elimine la tabla "empleados_antiguos"


Cree la tabla "empleados_antiguos"

EJERCICIO 17:
Disparador de inserción a nivel de sentencia
Elimine las tres tablas:

Cree las tablas con las siguientes estructuras


Establezca el formato de fecha para que muestre "DD/MM/YYYY HH24:MI":

Cree un disparador que se dispare cuando se ingrese un nuevo registro en "ofertas"; el


trigger debe ingresar en la tabla "control", el nombre del usuario, la fecha y la hora en la
cual se realizó un "insert" sobre "ofertas"
Vea qué informa el diccionario "user_triggers" respecto del trigger anteriormente
creado

Ingrese algunos registros en "libros"


Verifique que el trigger se disparó consultando la tabla "control"

EJERCICIO 18:

Usuarios (crear)
Primero eliminamos el usuario "director", porque si existe, aparecerá un mensaje de
error:
Elimine el usuario "profesor":

Cree un usuario "profesor", con contraseña "maestro" y espacio en "system"


Consulte el diccionario "dba_users" y analice la información que nos muestra

EJERCICIO 19:

Ingresar algunos campos


Elimine la tabla "cuentas":
Cree la tabla :

Ingrese un registro con valores para todos sus campos, omitiendo la lista de campos.
Vea los registros ingresados.

EJERCICIO 20:
Trabajamos con la tabla "libros" que almacena los datos de los libros de una librería.
Vaciar la tabla (truncate table)
Eliminamos la tabla:
Creamos la tabla:

Agregamos algunos registros:


Seleccionamos todos los registros:

Truncamos la tabla:

Intentamos seleccionar todos los registros:


EJERCICIO 21:

Tipos de datos numéricos


Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla
llamada "cuentas". La tabla contiene estos datos.

Elimine la tabla "cuentas"

Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos
arriba Número 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

Ingrese los siguientes registros:

Note que hay dos cuentas, con distinto número de cuenta, de la misma persona.
Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros)
Muestre el número de cuenta y saldo de todas las cuentas cuyo propietario sea "Juan
Lopez" (2 registros)

Muestre las cuentas con saldo negativo (1 registro)


Muestre todas las cuentas cuyo número es igual o mayor a "3000" (2 registros)

17 - Ingresar algunos campos


Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes
en una tabla llamada "cuentas".
Elimine la tabla "cuentas":
drop table cuentas;

Cree la tabla :
create table cuentas(
numero number(10) not null,
documento char(8) not null,
nombre varchar2(30),
saldo number(9,2)
);
Ingrese un registro con valores para todos sus campos, omitiendo

la lista de campos.

Ingrese un registro omitiendo algún campo que admita valores


nulos.
Verifique que en tal campo se almacenó "null"

Intente ingresar un registro listando 3 campos y colocando 4


valores. Un mensaje indica que hay demasiados valores.
Intente ingresar un registro listando 3 campos y colocando 2
valores. Un mensaje indica que no hay suficientes valores.

Intente ingresar un registro sin valor para un campo definido "not


null".

Vea los registros ingresados.


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.

Elimine la tabla "visitantes"

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)
);

Analice la información 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.
Ingrese algunos registros sin especificar valores para algunos
campos para ver cómo opera la cláusula "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');
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").

Use la palabra "default" para ingresar valores en un "insert"


Recupere el registro anteriormente ingresado.

19 - Operadores aritméticos y de concatenación (columnas


calculadas)
Primer problema:
Un comercio que vende artículos de computación registra los
datos de sus artículos en una tabla con ese nombre.

20 - Alias (encabezados de columnas)


Primer problema:
Un comercio que vende artículos de computación registra los
datos de sus artículos en una tabla con ese nombre.

Elimine la tabla:
drop table articulos;
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)
);
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);

El comercio hace un descuento del 15% en ventas mayoristas.


Necesitamos recuperar el código, nombre, decripción de todos
los artículos con una columna extra que muestre el precio de
cada artículo para la venta mayorista con el siguiente
encabezado "precio mayorista"
Muestre los precios de todos los artículos, concatenando el
nombre y la descripción con el encabezado "artículo" (sin
emplear "as" ni comillas)

Muestre todos los campos de los artículos y un campo extra, con


el encabezado "monto total" en la que calcule el monto total en
dinero de cada artículo (precio por cantidad)
Muestre la descripción de todas las impresoras junto al precio
con un 20% de recargo con un encabezado que lo especifique.

Potrebbero piacerti anche