Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FUENTE: http://www.oracleya.com.ar/index.php?inicio=0
Orden Detalle Problema
Problema
del Concepto del a
resuelto
concepto concepto resolver
1 Instalación de Oracle.
Crear tablas (create table - describe - all_tables - drop
2
table)
3 Ingresar registros (insert into- select)
4 Tipos de datos
7 Operadores relacionales
10 Comentarios
21 Funciones string
22 Funciones matemáticas.
Página 1 de 100
24 Ordenar registros (order by)
37 Integridad de datos
39 Restricción unique
40 Restriccion check
Restricciones: validación y estados (validate - novalidate
41
- enable - disable)
Restricciones: información (user_constraints -
42
user_cons_columns)
43 Restricciones: eliminación (alter table - drop constraint)
44 Indices.
46 Indices (eliminar)
Página 2 de 100
53 Autocombinación
57 Clave foránea
63 Información de user_constraints
65 Unión
66 Intersección
67 Minus
72 Subconsultas
74 Subconsultas con in
76 Subconsultas correlacionadas
77 Exists y No Exists
80 Subconsulta e insert
Página 3 de 100
82 Vistas (create view)
83 Vistas (información)
91 Procedimientos almacenados
97 Funciones
1. Oracle 10g XE
2. Para permitir descargarlo del sitio seleccionamos con el mouse el control Radio "Accept
License Agreement".
3. Luego seleccionamos la versión "Oracle Database 10g Express Edition (Universal)"
(OracleXEUniv.exe (216,933,372 bytes))
4. El sitio de Oracle requiere que nos registremos. Debemos seleccionar "sign up now" y luego
"Create your Oracle account now", es decir crear una cuenta Oracle.
Luego de habernos registrado podemos descargar el motor de base de datos Oracle.
5. El paso siguiente es instalar el gestor de base de datos propiamente dicho. Ejecutamos el
archivo que acabamos de descargar: OracleXEUniv.exe
Debemos ir presionando el botón "siguiente" en el asistente de instalación, salvo cuando nos
pide ingresar la contraseña de la base de datos, es importante no olvidar dicha clave.
Luego de algunos minutos ya tenemos instalado el gestor de bases de datos Oracle en nuestro
equipo.
La segunda aplicación que instalaremos será el "Oracle SQL Developer". Es un entorno visual que nos
permite comunicar con nuestro gestor de base de datos Oracle. Desde este entorno aprenderemos a
administrar una base de datos Oracle.
Página 5 de 100
2 - Crear tablas (create table - describe - all_tables - drop table)
Existen varios objetos de base de datos: tablas, constraints (restricciones), vistas, secuencias, índices,
agrupamientos (clusters), disparadores (triggers), instantaneas (snapshots), procedimientos, funciones,
paquetes, sinónimos, usuarios, perfiles, privilegios, roles, etc.
Una base de datos almacena su información en tablas, que es la unidad básica de almacenamiento.
Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un
campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un
dato específico, un solo valor.
Cada registro contiene un dato por cada columna de la tabla. Cada campo (columna) debe tener un
nombre. El nombre del campo hace referencia a la información que almacenará.
Cada campo (columna) también debe definir el tipo de dato que almacenará.
Aparece una tabla que nos muestra en cada fila, los datos de una tabla específica; en la columna
"TABLE_NAME" aparece el nombre de cada tabla existente.
Al crear una tabla debemos resolver qué campos (columnas) tendrá y que tipo de datos almacenarán
cada uno de ellos, es decir, su estructura.
La tabla debe ser definida con un nombre que la identifique y con el cual accederemos a ella.
Creamos una tabla llamada "usuarios" y entre paréntesis definimos los campos y sus tipos:
Cada campo con su tipo debe separarse con comas de los siguientes, excepto el último.
Cuando se crea una tabla debemos indicar su nombre y definir al menos un campo con su tipo de dato.
En esta tabla "usuarios" definimos 2 campos:
- nombre: que contendrá una cadena de caracteres de 30 caracteres de longitud, que almacenará el
nombre de usuario y
- clave: otra cadena de caracteres de 10 de longitud, que guardará la clave de cada usuario.
Página 6 de 100
Cada usuario ocupará un registro de esta tabla, con su respectivo nombre y clave.
Para nombres de tablas, se puede utilizar cualquier caracter permitido para nombres de directorios, el
primero debe ser un caracter alfabético y no puede contener espacios. La longitud máxima es de 30
caracteres.
Si intentamos crear una tabla con un nombre ya existente (existe otra tabla con ese nombre), mostrará
un mensaje indicando que a tal nombre ya lo está utilizando otro objeto y la sentencia no se ejecutará.
Para ver la estructura de una tabla usamos el comando "describe" junto al nombre de la tabla:
describe usuarios;
Esta es la estructura de la tabla "usuarios"; nos muestra cada campo, su tipo y longitud y otros valores
que no analizaremos por el momento.
Para eliminar una tabla usamos "drop table" junto al nombre de la tabla a eliminar:
Si intentamos eliminar una tabla que no existe, aparece un mensaje de error indicando tal situación y la
sentencia no se ejecuta.
Problema:
Para probar todos los ejercicios resueltos y propuestos debemos ingresar al sqldeveloper.exe y luego
en el entorno crear una nueva conexión:
1. Elegimos File -> New y seleccionamos "New Connection" y presionamos el botón "Aceptar".
2. Ingresamos los campos Connection Name (por ejemplo ingresamos "prueba"), en el campo
Username ingresamos el usuario SYSTEM y por último en el campo Password ingresamos la
clave que creamos al instalar Oracle.
3. Luego en la ventana que aparece el mansaje "Enter SQL Statement" debemos tipear los
comandos SQL y mediante el primer botón "triangulo verde" ejecutaremos el comando SQL
donde se encuentra el cursos (también podemos ejecutar todos los comando SQL mediante el
segundo botón.
Aparece una tabla que nos muestra todas las tablas; la columna "TABLE_NAME" contiene el nombre
de cada tabla.
Página 7 de 100
Vamos a crear una tabla denominada "usuarios". En primer lugar vamos a eliminar la tabla "usuarios"
porque si ya existe no podremos crear otra con el mismo nombre.
Aparece un mensaje que indica que la sentencia "create table" ha sido procesada.
Cada usuario ocupará un registro de esta tabla, con su respectivo nombre y clave.
describe usuarios;
Nos informa que la tabla "usuarios" tiene 2 campos, el campo "nombre" de tipo "varchar2" de 30
caracteres de longitud y el campo "clave", de tipo "varchar2" de 10 caracteres de longitud. La columna
"Null" aparece vacía y la explicaremos más adelante.
Intentemos crear una tabla con el mismo nombre, mostrará un mensaje indicando que ya hay un objeto
llamado "usuarios" y la sentencia no se ejecutará:
Eliminemos la tabla:
Verifiquemos si se ha eliminado:
Primer problema:
Necesita almacenar los datos de amigos en una tabla. Los datos que guardará serán: apellido, nombre,
domicilio y teléfono.
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.
Ver solución
describe agenda;
Segundo problema:
Necesita almacenar información referente a los libros de su biblioteca personal. Los datos que
guardará serán: título del libro, nombre del autor y nombre de la editorial.
3- Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo, varchar2(20);
autor, varchar2(30) y editorial, varchar2(15)
7- Elimine la tabla
Ver solución
Página 10 de 100
describe libros;
Un registro es una fila de la tabla que contiene los datos propiamente dichos. Cada registro tiene un
dato por cada columna (campo). Nuestra tabla "usuarios" consta de 2 campos, "nombre" y "clave".
Al ingresar los datos de cada registro debe tenerse en cuenta la cantidad y el orden de los campos.
Usamos "insert into", luego el nombre de la tabla, detallamos los nombres de los campos entre
paréntesis y separados por comas y luego de la cláusula "values" colocamos los valores para cada
campo, también entre paréntesis y separados por comas.
Note que los datos ingresados, como corresponden a cadenas de caracteres se colocan entre comillas
simples.
El comando "select" recupera los registros de una tabla. Con el asterisco indicamos que muestre todos
los campos de la tabla "usuarios".
Aparece la tabla, sus campos y registros ingresados; si no tiene registros, aparecerían solamente los
campos y la tabla vacía).
Es importante ingresar los valores en el mismo orden en que se nombran los campos: En el siguiente
ejemplo se lista primero el campo "clave" y luego el campo "nombre" por eso, los valores también se
colocan en ese orden:
Si ingresamos los datos en un orden distinto al orden en que se nombraron los campos, no aparece un
mensaje de error y los datos se guardan de modo incorrecto.
Página 11 de 100
En el siguiente ejemplo se colocan los valores en distinto orden en que se nombran los campos, el
valor de la clave (la cadena "Boca") se guardará en el campo "nombre" y el valor del nombre (la
cadena "Luis") en el campo "clave":
Problema:
Si existe la eliminamos:
Creamos una nueva tabla denominada "usuarios" con los siguientes campos:
No tiene, la tabla aparece vacía, solamente vemos las columnas que muestran los nombres de sus
campos.
NOMBRE CLAVE
-------------
Mariano payaso
Página 12 de 100
Ingresamos los datos en un orden distinto al orden en que se nombran los campos, no aparece un
mensaje de error y los datos se guardan de modo incorrecto:
NOMBRE CLAVE
-------------
Mariano payaso
Juan River
Boca Luis
La tabla tiene 3 registros. Note que la clave "Boca" se guardó en el campo "nombre" y el nombre de
usuario "Luis" en el campo "clave".
Primer problema:
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)
Ver solución
describe agenda;
Segundo problema:
Trabaje con la tabla "libros" que almacena los datos de los libros de su propia biblioteca.
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)
Ver solución
describe libros;
4 - Tipos de datos
Ya explicamos que al crear una tabla debemos resolver qué campos (columnas) tendrá y que tipo de
datos almacenará cada uno de ellos, es decir, su estructura.
El tipo de dato especifica el tipo de información que puede guardar un campo: caracteres, números,
etc.
Estos son algunos tipos de datos básicos de Oracle (posteriormente veremos otros y con más detalle):
- varchar2: se emplea para almacenar cadenas de caracteres. Una cadena es una secuencia de
caracteres. Se coloca entre comillas simples; ejemplo: 'Hola', 'Juan Perez', 'Colon 123'. Este
tipo de dato definen una cadena de longitud variable en la cual determinamos el máximo de
caracteres entre paréntesis. Puede guardar hasta xxx caracteres. Por ejemplo, para almacenar
cadenas de hasta 30 caracteres, definimos un campo de tipo varchar2 (30), es decir, entre
paréntesis, junto al nombre del campo colocamos la longitud.
Si intentamos almacenar una cadena de caracteres de mayor longitud que la definida, la cadena
no se carga, aparece un mensaje indicando tal situación y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo varchar(10) e intentamos almacenar en él la cadena
'Buenas tardes', aparece un mensaje indicando que el valor es demasiado grande para la
columna.
- number(p,s): se usa para guardar valores numéricos con decimales, de 1.0 x10-120 a 9.9...(38
posiciones). Definimos campos de este tipo cuando queremos almacenar valores numéricos con
los cuales luego realizaremos operaciones matemáticas, por ejemplo, cantidades, precios, etc.
Puede contener números enteros o decimales, positivos o negativos. El parámetro "p" indica la
precisión, es decir, el número de dígitos en total (contando los decimales) que contendrá el
número como máximo. El parámetro "s" especifica la escala, es decir, el máximo de dígitos
decimales. Por ejemplo, un campo definido "number(5,2)" puede contener cualquier número
entre 0.00 y 999.99 (positivo o negativo).
Para especificar número enteros, podemos omitir el parámetro "s" o colocar el valor 0 como
parámetro "s". Se utiliza como separador el punto (.).
Si intentamos almacenar un valor mayor fuera del rango permitido al definirlo, tal valor no se
carga, aparece un mensaje indicando tal situación y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo number(4,2) e intentamos guardar el valor 123.45,
aparece un mensaje indicando que el valor es demasiado grande para la columna. Si
ingresamos un valor con más decimales que los definidos, el valor se carga pero con la
cantidad de decimales permitidos, los dígitos sobrantes se omiten.
Antes de crear una tabla debemos pensar en sus campos y optar por el tipo de dato adecuado para cada
uno de ellos.
Por ejemplo, si en un campo almacenaremos números telefónicos o un números de documento, usamos
"varchar2", no "number" porque si bien son dígitos, con ellos no realizamos operaciones matemáticas.
Si en un campo guardaremos apellidos, y suponemos que ningún apellido superará los 20 caracteres,
definimos el campo "varchar2(20)". Si en un campo almacenaremos precios con dos decimales que no
superarán los 999.99 pesos definimos un campo de tipo "number(5,2)", es decir, 5 dígitos en total, con
2 decimales. Si en un campo almacenaremos valores enteros de no más de 3 dígitos, definimos un
campo de tipo "number(3,0)".
Problema:
Página 15 de 100
Eliminamos la tabla "libros":
Vamos a crear una tabla llamada "libros" para almacenar información de los libros de una librería.
Necesitamos los siguientes campos:
Al crear la tabla, entonces, elegimos el tipo de dato más adecuado para cada campo:
describe libros;
Note que al ingresar valores numéricos no se utilizan comillas y para el separador de decimales se usa
el caracter punto (.).
Página 16 de 100
Veamos lo que sucede si intentamos ingresar para el campo "titulo" una cadena de más de 20
caracteres:
vamos a cortar la cadena para que SQL Server acepte el ingreso del registro:
Veamos qué sucede si intentamos ingresar para el campo "cantidad" un valor fuera de rango:
Oracle muestra un mensaje de error y la sentencia no se ejecuta, es decir, el registro no fue ingresado.
Veamos qué sucede si intentamos ingresar en el campo "precio" un valor con más decimales que los
permitidos:
Oracle omitió el último dígito decimal porque el campo sólo admitía 2 decimales.
Primer problema:
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:
6- Intente ingresar una película con valor de cantidad fuera del rango permitido:
8- Muestre todos los registros para ver cómo se almacenó el último registro ingresado.
Ver solución
describe peliculas;
Segundo problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes
datos: nombre, documento, sexo, domicilio, sueldobasico.
8- Intente ingresar un valor fuera de rango, en un nuevo registro, para el campo "sueldobasico"
Mensaje de error.
9- Elimine la tabla
Ver solución
Hemos aprendido cómo ver todos los registros de una tabla, empleando la instrucción "select".
La sintaxis básica y general es la siguiente:
Podemos especificar el nombre de los campos que queremos ver, separándolos por comas:
La lista de campos luego del "select" selecciona los datos correspondientes a los campos nombrados.
En el ejemplo anterior seleccionamos los campos "titulo" y "autor" de la tabla "libros", mostrando
todos los registros.
Problema:
Trabajamos con la tabla "libros" que almacena los datos de los libros de una librería.
Eliminamos la tabla:
Creamos la tabla:
describe libros;
Página 20 de 100
Ingresamos algunos registros:
Recuperamos solamente el título, autor y editorial de todos los libros especificando los nombres de los
campos separados por comas:
Con la siguiente sentencia seleccionamos los títulos y precios de todos los libros:
TITULO PRECIO
-----------------------------------------------
El aleph 25.50
Alicia en el pais de las maravillas 10
Matematica estas ahi 18.8
EDITORIAL CANTIDAD
-------------------------
Emece 100
Atlantida 200
Página 21 de 100
Siglo XXI 200
Note que en todos los casos recuperamos TODOS los registros, pero solamente ALGUNOS campos
que especificamos.
Primer problema:
Un videoclub que alquila películas en video almacena la información de sus películas en alquiler en
una tabla llamada "peliculas".
2- Cree la tabla:
Ver solución
describe peliculas;
Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".
2- Cree la tabla:
7- Realice un "select" mostrando el documento, sexo y sueldo básico de todos los empleados.
Ver solución
describe empleados;
select nombre,documento,domicilio
from empleados;
select documento,sexo,sueldobasico
from empleados;
Existe una cláusula, "where" con la cual podemos especificar condiciones para una consulta "select".
Es decir, podemos recuperar algunos registros, sólo los que cumplan con ciertas condiciones indicadas
con la cláusula "where". Por ejemplo, queremos ver el usuario cuyo nombre es "Marcelo", para ello
utilizamos "where" y luego de ella, la condición:
Para las condiciones se utilizan operadores relacionales (tema que trataremos más adelante en detalle).
El signo igual(=) es un operador relacional. Para la siguiente selección de registros especificamos una
condición que solicita los usuarios cuya clave es igual a "River":
select nombre,clave
from usuarios
where clave='River';
Si ningún registro cumple la condición establecida con el "where", no aparecerá ningún registro.
Para recuperar algunos campos de algunos registros combinamos en la consulta la lista de campos y la
cláusula "where":
select nombre
from usuarios
where clave='River';
En la consulta anterior solicitamos el nombre de todos los usuarios cuya clave sea igual a "River".
Problema:
Trabajamos con la tabla "usuarios" que consta de 2 campos: nombre de usuario y clave.
Eliminamos la tabla si ya existe:
Página 24 de 100
drop table usuarios;
Creamos la tabla:
describe usuarios;
Realizamos una consulta especificando una condición, queremos ver toda la información del usuario
cuyo nombre es "Marcelo":
Nos muestra todos los campos del registro en el cual el campo "nombre" es igual a "Marcelo".
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):
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 minúsculas)
No aparece ningún registro, ya que la cadena "Lopez" noe s igual a la cadena "lopez".
Ver solución
describe agenda;
Página 26 de 100
select nombre,domicilio from agenda
where apellido='Lopez';
Segundo problema:
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla
llamada "articulos".
describe articulos;
5- Seleccione todos los datos de los registros cuyo nombre sea "impresora" (2 registros)
Ver solución
describe articulos;
Página 27 de 100
insert into articulos (codigo, nombre, descripcion, precio)
values (1,'impresora','Epson Stylus C45',400.80);
insert into articulos (codigo, nombre, descripcion, precio)
values (2,'impresora','Epson Stylus C85',500);
insert into articulos (codigo, nombre, descripcion, precio)
values (3,'monitor','Samsung 14',800);
insert into articulos (codigo, nombre, descripcion, precio)
values (4,'teclado','ingles Biswal',100);
insert into articulos (codigo, nombre, descripcion, precio)
values (5,'teclado','español Biswal',90);
7 - Operadores relacionales
Los operadores son símbolos que permiten realizar operaciones matemáticas, concatenar cadenas,
hacer comparaciones.
1) relacionales (o de comparación)
2) aritméticos
3) de concatenación
4) lógicos
Los operadores relacionales (o de comparación) nos permiten comparar dos expresiones, que pueden
ser variables, valores de campos, etc.
Hemos aprendido a especificar condiciones de igualdad para seleccionar registros de una tabla; por
ejemplo:
Los operadores relacionales vinculan un campo con un valor para que Oracle compare cada registro (el
campo especificado) con el valor dado.
= igual
<> distinto
> mayor
< menor
>= mayor o igual
<= menor o igual
Podemos seleccionar los registros cuyo autor sea diferente de "Borges", para ello usamos la condición:
Página 28 de 100
Podemos comparar valores numéricos. Por ejemplo, queremos mostrar los títulos y precios de los
libros cuyo precio sea mayor a 20 pesos:
Queremos seleccionar los libros cuyo precio sea menor o igual a 30:
Los operadores relacionales comparan valores del mismo tipo. Se emplean para comprobar si un
campo cumple con una condición.
Problema:
Seleccionamos los registros cuyo precio supere los 20 pesos, sólo el título y precio:
select titulo,precio
from libros
where precio>20;
Página 29 de 100
Note que el valor con el cual comparamos el campo "precio", como es numérico, no se coloca entre
comillas. Los libros cuyo precio es menor a 20 pesos no aparecen en la selección.
Primer problema:
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con
ese nombre.
1- Elimine "articulos"
6- Seleccione los artículos cuyo precio sea mayor o igual a 400 (3 registros)
7- Seleccione el código y nombre de los artículos cuya cantidad sea menor a 30 (2 registros)
Ver solución
Página 30 de 100
);
describe articulos;
select codigo,nombre
from articulos
where cantidad<30;
Segundo problema:
Un video club que alquila películas en video almacena la información de sus películas en alquiler en
una tabla denominada "peliculas".
1- Elimine la tabla.
5- Seleccione el título de todas las películas en las que el actor NO sea "Tom Cruise" (2 registros)
Página 31 de 100
6- Muestre todos los campos, excepto "duracion", de todas las películas de las que haya más de 2
copias (2 registros)
Ver solución
select titulo,actor,cantidad
from peliculas
where cantidad >2;
Sintaxis básica:
Se coloca el comando delete seguido de la palabra clave "from" y el nombre de la tabla de la cual
queremos eliminar los registros. En el siguiente ejemplo se eliminan los registros de la tabla
"usuarios":
Si no queremos eliminar todos los registros, sino solamente algunos, debemos indicar cuál o cuáles;
para ello utilizamos el comando "delete" junto con la clausula "where" con la cual establecemos la
condición que deben cumplir los registros a borrar.
Por ejemplo, queremos eliminar aquel registro cuyo nombre de usuario es "Marcelo":
Página 32 de 100
Si solicitamos el borrado de un registro que no existe, es decir, ningún registro cumple con la
condición especificada, aparecerá un mensaje indicando que ningún registro fue eliminado, pues no
encontró registros con ese dato.
Tenga en cuenta que si no colocamos una condición, se eliminan todos los registros de la tabla
especificada.
Problema:
Como ningún registro cumple con la condición especificada (nombre igual a Marcelo), aparecerá un
mensaje indicando que ningún registro fue borrado.
Página 33 de 100
Aparece un mensaje indicando que 2 registros fueron eliminados, es decir, se eliminaron los 2 registros
cuyas claves eran igual a "River".
No hay registros.
Primer problema:
Trabaje con la tabla "agenda" que registra la información 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):
5- Elimine los registros cuyo número telefónico sea igual a "4545454" (2 registros)
Ver solución
Segundo problema:
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con
ese nombre.
1- Elimine "articulos"
5- Elimine los artículos cuyo precio sea mayor o igual a 500 (2 registros)
Ver solución
Página 35 de 100
drop table articulos;
describe libros;
Para modificar uno o varios datos de uno o varios registros utilizamos "update" (actualizar).
Sintaxis básica:
Utilizamos "update" junto al nombre de la tabla y "set" junto con el campo a modificar y su nuevo
valor.
Por ejemplo, en nuestra tabla "usuarios", queremos cambiar los valores de todas las claves, por
"RealMadrid":
Podemos modificar algunos registros, para ello debemos establecer condiciones de selección con
"where".
Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado
"Federicolopez", queremos como nueva clave "Boca", necesitamos una condición "where" que afecte
solamente a este registro:
Página 36 de 100
update usuarios set clave='Boca'
where nombre='Federicolopez';
Si Oracle no encuentra registros que cumplan con la condición del "where", un mensaje indica que
ningún registro fue modificado.
Las condiciones no son obligatorias, pero si omitimos la cláusula "where", la actualización afectará a
todos los registros.
Para ello colocamos "update", el nombre de la tabla, "set" junto al nombre del campo y el nuevo valor
y separado por coma, el otro nombre del campo con su nuevo valor.
Problema:
Creamos la tabla:
Necesitamos cambiar el valor de la clave del usuario llamado "Federicolopez" por "Boca":
Página 37 de 100
Verifiquemos que la actualización se realizó:
Vimos que si Oracle no encuentra registros que cumplan con la condición del "where", un mensaje
indica que ningún registro se modifica:
Primer problema:
Trabaje con la tabla "agenda" que almacena los datos de sus amigos.
4- Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro actualizado)
5- Actualice los registros cuyo número telefónico sea igual a "4545454" por "4445566" (2 registros)
6- 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")
Ver solución
Página 38 de 100
create table agenda(
apellido varchar2(30),
nombre varchar2(20),
domicilio varchar2(30),
telefono varchar2(11)
);
Segundo problema:
1- Elimine la tabla y créela 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):
5- Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (1 registro)
Página 39 de 100
6- Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (ningún
registro afectado porque ninguno cumple la condición)
8- Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros cuya editorial
sea igual a "Emece" (3 registros)
Ver solución
10 - Comentarios
Para aclarar algunas instrucciones, en ocasiones, necesitamos agregar comentarios.
Es posible ingresar comentarios en la línea de comandos, es decir, un texto que no se ejecuta; para ello
se emplean dos guiones (--):
en la línea anterior, todo lo que está luego de los guiones (hacia la derecha) no se ejecuta.
Para agregar varias líneas de comentarios, se coloca una barra seguida de un asterisco (/*) al comienzo
del bloque de comentario y al finalizarlo, un asterisco seguido de una barra (*/)
Por ejemplo, en nuestra tabla de libros, podemos tener valores nulos en el campo "precio" porque es
posible que para algunos libros no le hayamos establecido el precio para la venta.
Veamos un ejemplo. Tenemos nuestra tabla "libros". El campo "titulo" no debería estar vacío nunca,
igualmente el campo "autor". Para ello, al crear la tabla, debemos especificar que tales campos no
admitan valores nulos:
Para especificar que un campo NO admita valores nulos, debemos colocar "not null" luego de la
definición del campo.
Cuando colocamos "null" estamos diciendo que admite valores nulos (caso del campo "editorial"); por
defecto, es decir, si no lo aclaramos, los campos permiten valores nulos (caso del campo "precio").
Cualquier campo, de cualquier tipo de dato permite ser definido para aceptar o no valores nulos. Un
valor "null" NO es lo mismo que un valor 0 (cero) o una cadena de espacios en blanco (" ").
Si ingresamos los datos de un libro, para el cual aún no hemos definido el precio podemos colocar
"null" para mostrar que no tiene precio:
Note que el valor "null" no es una cadena de caracteres, NO se coloca entre comillas.
Entonces, si un campo acepta valores nulos, podemos ingresar "null" cuando no conocemos el valor.
Página 41 de 100
Una cadena vacía es interpretada por Oracle como valor nulo; por lo tanto, si ingresamos una cadena
vacía, se almacena el valor "null".
Si intentamos ingresar el valor "null" (o una cadena vacía) en campos que no admiten valores nulos
(como "titulo" o "autor"), Oracle no lo permite, muestra un mensaje y la inserción no se realiza; por
ejemplo:
Cuando vemos la estructura de una tabla con "describe", en la columna "Null", aparece "NOT NULL"
si el campo no admite valores nulos y no aparece en caso que si los permita.
Para recuperar los registros que contengan el valor "null" en algún campo, no podemos utilizar los
operadores relacionales vistos anteriormente: = (igual) y <> (distinto); debemos utilizar los operadores
"is null" (es igual a null) y "is not null" (no es null).
Entonces, para que un campo no permita valores nulos debemos especificarlo luego de definir el
campo, agregando "not null". Por defecto, los campos permiten valores nulos, pero podemos
especificarlo igualmente agregando "null".
Problema:
Creamos la tabla especificando que los campos "titulo" y "autor" no admitan valores nulos:
Los campos "editorial" y "precio" si permiten valores nulos; el primero, porque lo especificamos
colocando "null" en la definición del campo, el segundo lo asume por defecto.
Ingresamos otro registro, con valor nulo para el campo "editorial", campo que admite valores "null":
Página 42 de 100
insert into libros (titulo,autor,editorial,precio)
values('Alicia en el pais','Lewis Carroll',null,0);
Ingresamos otro registro, con valor nulo para los dos campos que lo admiten:
Veamos lo que sucede si intentamos ingresar el valor "null" en campos que no lo admiten, como
"titulo":
aparece un mensaje indicando que no se puede realizar una inserción "null" y la sentencia no se
ejecuta.
Para ver cuáles campos admiten valores nulos y cuáles no, vemos la estructura de la tabla:
describe libros;
nos muestra, en la columna "Null", que los campos "titulo" y "autor" están definidos "not null", es
decir, no permiten valores nulos, los otros dos campos si los admiten.
Dijimos que la cadena vacía es interpretada como valor "null". Vamos a ingresar un registro con
cadena vacía para el campo "editorial":
No aparece ningún valor en la columna "editorial" del libro "Uno", almacenó "null".
Página 43 de 100
Dijimos que una cadena de espacios NO es igual a una cadena vacía o valor "null". Vamos a ingresar
un registro y en el campo "editorial" guardaremos una cadena de 3 espacios:
Recuperamos los registros que contengan en el campo "editorial" una cadena de 3 espacios:
Primer problema:
Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos".
4- Ingrese algunos registros con valores "null" para los campos que lo admitan:
6- Ingrese un registro con valor "0" para el precio y cadena vacía para el laboratorio.
7- Intente ingresar un registro con cadena vacía 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)
Página 44 de 100
11- Recupere los registros cuyo laboratorio sea distinto de ' '(cadena de 1 espacio) (1 registro)
Ver solución
describe medicamentos;
Segundo problema:
Trabaje con la tabla que almacena los datos sobre películas, llamada "peliculas".
1- Elimine la tabla:
5- Recupere todos los registros para ver cómo Oracle los almacenó.
6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de
error)
Ver solución
describe peliculas;
Con la siguiente sentencia recuperamos los libros que contienen valor nulo en el campo "editorial":
Con la primera sentencia veremos los libros cuya editorial almacena el valor "null" (desconocido); con
la segunda, los libros cuya editorial guarda una cadena de 3 espacios en blanco.
Para obtener los registros que no contienen "null", se puede emplear "is not null", esto mostrará los
registros con valores conocidos.
Para ver los libros que NO tienen valor "null" en el campo "precio" tipeamos:
Problema:
Dijimos que una cadena de espacios NO es igual a una cadena vacía o valor "null". Vamos a ingresar
un registro y en el campo "editorial" guardaremos una cadena de 3 espacios:
Recuperamos los registros que contengan el valor "null" en el campo "editorial" y luego aquellos que
tengan una cadena de 3 espacios:
Con la primera sentencia veremos los libros cuya editorial es igual a "null" (desconocido); con la
segunda, los libros cuya editorial almacena una cadena de espacios.
Primer problema:
Una farmacia guarda información referente a sus medicamentos en una tabla llamada "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:
6- Ingrese un registro con valor "0" para el precio y cadena vacía para el laboratorio.
7- Intente ingresar un registro con cadena vacía 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).
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 ' ')
Ver solución
describe medicamentos;
Segundo problema:
Trabaje con la tabla que almacena los datos sobre películas, llamada "peliculas".
1- Elimine la tabla:
3- Visualice la estructura de la tabla. note que el campo "codigo" y "titulo", en la columna "Null"
muestran "NOT NULL".
5- Recupere todos los registros para ver cómo Oracle los almacenó.
6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de
error)
8- Actualice los registros que tengan valor de duración 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)
11- Muestre todos los registros con valor nulo en el campo "actor" (ninguno)
12- Actualice la película en cuyo campo "duracion" hay 0 por "null" (1 registro)
14- Borre todos los registros en los cuales haya un valor nulo en "duracion" (1 registro)
Ver solución
describe peliculas;
Veamos un ejemplo, si tenemos una tabla con datos de personas, el número de documento puede
establecerse como clave primaria, es un valor que no se repite; puede haber personas con igual apellido
y nombre, incluso el mismo domicilio (padre e hijo por ejemplo), pero su documento será siempre
distinto.
Si tenemos la tabla "usuarios", el nombre de cada usuario puede establecerse como clave primaria, es
un valor que no se repite; puede haber usuarios con igual clave, pero su nombre de usuario será
siempre diferente.
Podemos establecer que un campo sea clave primaria al momento de crear la tabla o luego que ha sido
creada. Vamos a aprender a establecerla al crear la tabla. No existe una única manera de hacerlo, por
ahora veremos la sintaxis más sencilla.
Lo que hacemos agregar, luego de la definición de cada campo, "primary key" y entre paréntesis, el
nombre del campo que será clave primaria.
En el siguiente ejemplo definimos una clave primaria, para nuestra tabla "usuarios" para asegurarnos
que cada usuario tendrá un nombre diferente y único:
Página 52 de 100
create table usuarios(
nombre varchar2(20),
clave varchar2(10),
primary key(nombre)
);
Una tabla sólo puede tener una clave primaria. Cualquier campo (de cualquier tipo) puede ser clave
primaria, debe cumplir como requisito, que sus valores no se repitan ni sean nulos. Por ello, al definir
un campo como clave primaria, automáticamente Oracle lo convierte a "not null".
Luego de haber establecido un campo como clave primaria, al ingresar los registros, Oracle controla
que los valores para el campo establecido como clave primaria no estén repetidos en la tabla; si
estuviesen repetidos, muestra un mensaje y la inserción no se realiza. Es decir, si en nuestra tabla
"usuarios" ya existe un usuario con nombre "juanperez" e intentamos ingresar un nuevo usuario con
nombre "juanperez", aparece un mensaje y la instrucción "insert" no se ejecuta.
Igualmente, si realizamos una actualización, Oracle controla que los valores para el campo establecido
como clave primaria no estén repetidos en la tabla, si lo estuviese, aparece un mensaje indicando que
se viola la clave primaria y la actualización no se realiza.
Podemos ver el campo establecido como clave primaria de una tabla realizando la siguiente consulta:
No explicaremos la consulta anterior por el momento, sólo la ejecutaremos; si la consulta retorna una
tabla vacía, significa que la tabla especificada no tiene clave primaria. El nombre de la tabla DEBE ir
en mayúsculas, sino Oracle no la encontrará.
Problema:
Eliminamos la tabla:
Al campo "nombre" no lo definimos "not null", pero al establecerse como clave primaria, Oracle lo
convierte en "not null", veamos que en la columna "NULL" aparece "NOT NULL":
describe usuarios;
Página 53 de 100
values ('juanperez','Boca');
insert into usuarios (nombre, clave)
values ('raulgarcia','River');
Recordemos que cuando un campo es clave primaria, sus valores no se repiten. Intentamos ingresar un
valor de clave primaria existente:
Cuando un campo es clave primaria, sus valores no pueden ser nulos. Intentamos ingresar el valor
"null" en el campo clave primaria:
Si realizamos alguna actualización, Oracle controla que los valores para el campo establecido como
clave primaria no estén repetidos en la tabla. Intentemos actualizar el nombre de un usuario colocando
un nombre existente:
Corroboramos que la tabla "usuarios" tiene establecido el campo "nombre" como clave primaria
realizando la siguiente consulta (Recuerde colocar el nombre de la tabla en mayúsculas, sino Oracle
considerará que no existe la tabla):
TABLE_NAME COLUMN_NAME
--------------------------------------------
USUARIOS NOMBRE
indicando que la tabla "usuarios" tiene establecido el campo "nombre" como clave primaria.
Primer problema:
1- Elimine la tabla:
2- Créela con los siguientes campos, estableciendo como clave primaria el campo "codigo":
Página 54 de 100
create table libros(
codigo number(4) not null,
titulo varchar2(40) not null,
autor varchar2(20),
editorial varchar2(15),
primary key (codigo)
);
6- Intente actualizar el código del libro "Martin Fierro" a "1" (mensaje de error)
8- Vea qué campo de la tabla "LIBROS" fue establecido como clave primaria
9- Vea qué campo de la tabla "libros" (en minúsculas) fue establecido como clave primaria
La tabla aparece vacía porque Oracle no encuentra la tabla "libros", ya que almacena los nombres de
las tablas con mayúsculas.
Ver solución
Página 55 de 100
update libros set codigo=10
where titulo='Martin Fierro';
Segundo problema:
Un instituto de enseñanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".
2- Cree la tabla con la siguiente estructura intentando establecer 2 campos como clave primaria, el
campo "documento" y "legajo":
Página 56 de 100
8- Vea el campo clave primaria de "ALUMNOS".
Ver solución
describe alumnos;
La sentencia "truncate table" vacía la tabla (elimina todos los registros) y conserva la estructura de la
tabla.
La diferencia con "drop table" es que esta sentencia elimina la tabla, no solamente los registros,
"truncate table" la vacía de registros.
Página 57 de 100
La diferencia con "delete" es la siguiente, al emplear "delete", Oracle guarda una copia de los registros
borrados y son recuperables, con "truncate table" no es posible la recuperación porque se libera todo el
espacio en disco ocupado por la tabla; por lo tanto, "truncate table" es más rápido que "delete" (se nota
cuando la cantidad de registros es muy grande).
Problema:
Trabajamos con la tabla "libros" que almacena los datos de los libros de una librería.
Eliminamos la tabla:
Creamos la tabla:
Truncamos la tabla:
Página 58 de 100
Ingresamos nuevamente algunos registros:
Eliminamos la tabla:
Podemos almacenar letras, símbolos y dígitos con los que no se realizan operaciones matemáticas, por
ejemplo, códigos de identificación, números de documentos, números telefónicos. Tenemos los
siguientes tipos:
1) char(x): define una cadena de caracteres de longitud fija determinada por el argumento "x". Si se
omite el argumento, por defecto coloca 1. "char" viene de character, que significa caracter en inglés.
Su rango es de 1 a 2000 caracteres.
Que sea una cadena de longitud fija significa que, si definimos un campo como "char(10)" y
almacenamos el valor "hola" (4 caracteres), Oracle rellenará las 6 posiciones restantes con espacios, es
decir, ocupará las 10 posiciones; por lo tanto, si la longitud es invariable, es conveniente utilizar el tipo
char; caso contrario, el tipo varchar2.
Si almacenamos "hola" en un campo definido "char(10)" Oracle almacenará "hola ".
2) varchar2(x): almacena cadenas de caracteres de longitud variable determinada por el argumento "x"
(obligatorio). Que sea una cadena de longitud variable significa que, si definimos un campo como
"varchar2(10)" y almacenamos el valor "hola" (4 caracteres), Oracle solamente ocupa las 4 posiciones
(4 bytes y no 10 como en el caso de "char"); por lo tanto, si la longitud es variable, es conveniente
utilizar este tipo de dato y no "char", así ocupamos menos espacio de almacenamiento en disco. Su
rango es de 1 a 4000 caracteres.
3) nchar(x): es similar a "char" excepto que permite almacenar caracteres ASCII, EBCDIC y Unicode;
su rango va de 1 a 1000 caracteres porque se emplean 2 bytes por cada caracter.
4) nvarchar2(x): es similar a "varchar2", excepto que permite almacenar caracteres Unicode; su rango
va de 1 a 2000 caracteres porque se emplean 2 bytes por cada caracter.
Si intentamos almacenar en un campo alfanumérico una cadena de caracteres de mayor longitud que la
definida, aparece un mensaje indicando que el valor es demasiado grande y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo varchar2(10) y le asignamos la cadena 'Aprenda PHP' (11
caracteres), aparece un mensaje y la sentencia no se ejecuta.
Si ingresamos un valor numérico (omitiendo las comillas), lo convierte a cadena y lo ingresa como tal.
Por ejemplo, si en un campo definido como varchar2(5) ingresamos el valor 12345, lo toma como si
hubiésemos tipeado '12345', igualmente, si ingresamos el valor 23.56, lo convierte a '23.56'. Si el valor
numérico, al ser convertido a cadena supera la longitud definida, aparece un mensaje de error y la
sentencia no se ejecuta.
Para almacenar cadenas que varían en su longitud, es decir, no todos los registros tendrán la misma
longitud en un campo determinado, se emplea "varchar2" en lugar de "char".
Por ejemplo, en campos que guardamos nombres y apellidos, no todos los nombres y apellidos tienen
la misma longitud.
Para almacenar cadenas que no varían en su longitud, es decir, todos los registros tendrán la misma
longitud en un campo determinado, se emplea "char".
Por ejemplo, definimos un campo "codigo" que constará de 5 caracteres, todos los registros tendrán un
código de 5 caracteres, ni más ni menos.
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.
Página 60 de 100
Los campos "nombre", "domicilio" y "ciudad" almacenarán valores cuya longitud varía, por ello
elegimos el tipo "varchar2" y le damos a cada uno una longitud máxima estimando su tamaño. El
campo "sexo" se define de tipo "char", porque necesitamos solamente 1 caracter "f" o "m", que
siempre será fijo. El campo "telefono" también se define como varchar2 porque no todos los números
telefónicos tienen la misma longitud.
Ingresamos un registro:
Intentamos ingresar una cadena de mayor longitud que la definida en el campo "sexo":
Ingresamos el mismo registro, esta vez con un sólo caracter para el campo "sexo":
Ingresamos un número telefónico olvidando las comillas, es decir, como un valor numérico:
Una concesionaria de autos vende autos usados y almacena los datos de los autos en una tabla llamada
"autos".
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo, estableciendo el campo "patente"
como clave primaria:
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 año, necesitamos 4 caracteres fijos.
Ver solución
Segundo problema:
Una empresa almacena los datos de sus clientes en una tabla llamada "clientes".
Página 62 de 100
2- Créela eligiendo el tipo de dato más adecuado para cada campo:
3- Analice la definición de los campos. Se utiliza char(8) para el documento porque siempre constará
de 8 caracteres. Para el número telefónico se usar "varchar2" y no un tipo numérico porque si bien es
un número, con él no se realizarán operaciones matemáticas.
5- Intente ingresar un registro con más caracteres que los permitidos para el campo "telefono"
6- Intente ingresar un registro con más caracteres que los permitidos para el campo "documento"
Ver solución
Los valores numéricos no se ingresan entre comillas. Se utiliza el punto como separador de decimales.
1) number(t,d): para almacenar valores enteros o decimales, positivos o negativos. Su rango va de 1.0
x 10-130 hasta 9.999...(38 nueves). Definimos campos de este tipo cuando queremos almacenar
valores numéricos con los cuales luego realizaremos operaciones matemáticas, por ejemplo,
cantidades, precios, etc.
El parámetro "t" indica el número total de dígitos (contando los decimales) que contendrá el número
como máximo (es la precisión). Su rango va de 1 a 38. El parámetro "d" indica el máximo de dígitos
decimales (escala). La escala puede ir de -84 a 127. Para definir número enteros, se puede omitir el
parámetro "d" o colocar un 0.
Un campo definido "number(5,2)" puede contener cualquier número entre -999.99 y 999.99.
Para especificar número enteros, podemos omitir el parámetro "d" o colocar el valor 0.
Si intentamos almacenar un valor mayor fuera del rango permitido al definirlo, tal valor no se carga,
aparece un mensaje indicando tal situación y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo "number(4,2)" e intentamos guardar el valor 123.45,
aparece un mensaje indicando que el valor es demasiado grande para la columna. Si ingresamos un
valor con más decimales que los definidos, el valor se carga pero con la cantidad de decimales
permitidos, los dígitos sobrantes se omiten.
2) float (x): almacena un número en punto decimal. El parámetro indica la precisión binaria máxima;
con un rango de 1 a 126. Si se omite, por defecto es 126.
- si ingresamos un valor con más decimales que los permitidos, redondea al más cercano; por ejemplo,
si definimos "float(4,2)" e ingresamos el valor "12.686", guardará "12.69", redondeando hacia arriba;
si ingresamos el valor "12.682", guardará "12.67", redondeando hacia abajo.
- si ingresamos una cadena, Oracle intenta convertirla a valor numérico, si dicha cadena consta
solamente de dígitos, la conversión se realiza, luego verifica si está dentro del rango, si es así, la
ingresa, sino, muestra un mensaje de error y no ejecuta la sentencia. Si la cadena contiene caracteres
que Oracle no puede convertir a valor numérico, muestra un mensaje de error y la sentencia no se
ejecuta.
Por ejemplo, definimos un campo de tipo "numberl(5,2)", si ingresamos la cadena '12.22', la convierte
al valor numérico 12.22 y la ingresa; si intentamos ingresar la cadena '1234.56', la convierte al valor
numérico 1234.56, pero como el máximo valor permitido es 999.99, muestra un mensaje indicando
que está fuera de rango. Si intentamos ingresar el valor '12y.25', Oracle no puede realizar la conversión
y muestra un mensaje de error.
Problema:
Página 64 de 100
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla:
Note que definimos el campo "codigo" de tipo "number(5)", esto es porque estimamos que no
tendremos más de 99999 libros, y no colocamos decimales porque necesitamos números enteros.
Como en el campo "precio" no almacenaremos valores mayores a 9999.99, definimos el campo de tipo
"number(6,2)".
Como los valores para el campo "cantidad" no superarán los 9999, definimos el campo de tipo
"number(4)", no colocamos decimales porque necesitamos valores enteros.
Truncó el valor.
Página 65 de 100
Truncó el valor.
Intentamos ingresar una cadena que Oracle no pueda convertir a valor numérico en el campo "precio":
Error.
Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas".
La tabla contiene estos datos:
2- 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;
Note que hay dos cuentas, con distinto número de cuenta, de la misma persona.
4- Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros)
5- Muestre el número de cuenta y saldo de todas las cuentas cuyo propietario sea "Juan Lopez" (2
registros)
7- Muestre todas las cuentas cuyo número es igual o mayor a "3000" (2 registros)
Ver solución
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:
4- Ingrese un valor de "sueldobasico" con más decimales que los definidos (redondea los decimales al
valor más cercano 800.89)
6- Muestre todos los empleados cuyo sueldo no supere los 900 pesos
Ver solución
Si ingresamos valores para todos los campos, podemos omitir la lista de nombres de los campos.
Por ejemplo, si tenemos creada la tabla "libros" con los campos "titulo", "autor" y "editorial", podemos
ingresar un registro de la siguiente manera:
También es posible ingresar valores para algunos campos. Ingresamos valores solamente para los
campos "titulo" y "autor":
Oracle almacenará el valor "null" en el campo "editorial", para el cual no hemos explicitado un valor.
- la lista de campos debe coincidir en cantidad y tipo de valores con la lista de valores luego de
"values". Si se listan más (o menos) campos que los valores ingresados, aparece un mensaje de error y
la sentencia no se ejecuta.
- si ingresamos valores para todos los campos podemos obviar la lista de campos.
- podemos omitir valores para los campos que permitan valores nulos (se guardará "null"); si omitimos
el valor para un campo "not null", la sentencia no se ejecuta.
Problema:
Trabajamos con la tabla "libros" que almacena los datos de los libros de una librería.
Eliminamos la tabla:
Creamos la tabla:
Si ingresamos valores para todos los campos, podemos omitir la lista de campos:
Página 69 de 100
Podemos ingresar valores para algunos de los campos:
No podemos omitir el valor para un campo declarado "not null", como el campo "codigo":
Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas".
2- Cree la tabla :
3- Ingrese un registro con valores para todos sus campos, omitiendo la lista de campos.
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".
Página 70 de 100
Ver solución
Hemos visto que si al insertar registros no se especifica un valor para un campo que admite valores
nulos, se ingresa automáticamente "null". A este valor se le denomina valor por defecto o
predeterminado.
Para campos de cualquier tipo no declarados "not null", es decir, que admiten valores nulos, el valor
por defecto es "null". Para campos declarados "not null", no existe valor por defecto, a menos que se
declare explícitamente con la cláusula "default".
Podemos establecer valores por defecto para los campos cuando creamos la tabla. Para ello utilizamos
"default" al definir el campo. Por ejemplo, queremos que el valor por defecto del campo "autor" de la
tabla "libros" sea "Desconocido" y el valor por defecto del campo "cantidad" sea "0":
Si al ingresar un nuevo registro omitimos los valores para el campo "autor" y "cantidad", Oracle
insertará los valores por defecto; en "autor" colocará "Desconocido" y en cantidad "0".
Entonces, si al definir el campo explicitamos un valor mediante la cláusula "default", ése será el valor
por defecto.
Página 71 de 100
La cláusula "default" debe ir antes de "not null" (si existiese), sino aparece un mensaje de error.
Para ver si los campos de la tabla "libros" tiene definidos valores por defecto y cuáles son, podemos
realizar la siguiente consulta:
select column_name,nullable,data_default
from user_tab_columns where TABLE_NAME = 'libros';
Muestra una fila por cada campo, en la columna "data_default" aparece el valor por defecto (si lo
tiene), en la columna "nullable" aparece "N" si el campo no está definido "not null" y "Y" si admite
valores "null".
También se puede utilizar "default" para dar el valor por defecto a los campos en sentencias "insert",
por ejemplo:
Entonces, la cláusula "default" permite especificar el valor por defecto de un campo. Si no se explicita,
el valor por defecto es "null", siempre que el campo no haya sido declarado "not null".
Los campos para los cuales no se ingresan valores en un "insert" tomarán los valores por defecto:
- si tiene cláusula "default" (admita o no valores nulos), el valor definido como predeterminado;
- si está declarado explícitamente "not null" y no tiene valor "default", no hay valor por defecto, así
que causará un error y el "insert" no se ejecutará.
Un campo sólo puede tener un valor por defecto. Una tabla puede tener todos sus campos con valores
por defecto. Que un campo tenga valor por defecto no significa que no admita valores nulos, puede o
no admitirlos.
Un campo definido como clave primaria acepta un valor "default", pero no tiene sentido ya que el
valor por defecto solamente podrá ingresarse una vez; si intenta ingresarse cuando otro registro ya lo
tiene almacenado, aparecerá un mensaje de error indicando que se intenta duplicar la clave.
Problema:
Eliminamos la tabla:
Creamos la tabla estableciendo valores por defecto para los campos "autor" y "cantidad":
Página 72 de 100
Ingresamos un registro omitiendo los valores para el campo "autor" y "cantidad":
Oracle ingresará el registro con el título, editorial y precio especificados, en "autor" colocará
"Desconocido" y en cantidad "0", veámoslo:
Si ingresamos un registro sin valor para el campo "precio", que admite valores nulos, se ingresará
"null" en ese campo:
Veamos si los campos de la tabla "libros" tiene definidos valores por defecto y cuáles son:
select column_name,nullable,data_default
from user_tab_columns where TABLE_NAME = 'LIBROS';
Muestra una fila por cada campo, en la columna "data_default" aparece el valor por defecto (si lo
tiene), en la columna "nullable" aparece "N" si el campo no está definido "not null" y "Y" si permite
valores nulos.
Podemos emplear "default" para dar el valor por defecto a algunos campos al ingresar un registro:
Que un campo tenga valor por defecto no significa que no admita valores nulos, puede o no admitirlos.
Podemos ingresar el valor "null" en el campo "cantidad":
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.
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 cómo opera la
cláusula "default":
Los campos de aquellos registros para los cuales no se ingresó valor almacenaron el valor por defecto
("null" o el especificado con "default").
Ver solución
Página 74 de 100
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)
);
select column_name,nullable,data_default
from user_tab_columns where TABLE_NAME = 'VISITANTES';
Segundo problema:
Una pequeña biblioteca de barrio registra los préstamos de sus libros en una tabla llamada
"prestamos". En ella almacena la siguiente información: título del libro, documento de identidad del
socio a quien se le presta el libro, fecha de préstamo, fecha en que tiene que devolver el libro y si el
libro ha sido o no devuelto.
2- Cree la tabla:
4- Ingrese algunos registros omitiendo el valor para los campos que lo admiten.
6- Ingrese un registro colocando "default" en los campos que lo admiten y vea cómo 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.
Ver solución
Página 75 de 100
drop table prestamos;
select column_name,nullable,data_default
from user_tab_columns where TABLE_NAME = 'PRESTAMOS';
19 - Operadores aritméticos y de
concatenación (columnas calculadas)
Aprendimos que los operadores son símbolos que permiten realizar distintos tipos de operaciones.
Dijimos que Oracle tiene 4 tipos de operadores: 1) relacionales o de comparación (los vimos), 2)
aritméticos, 3) de concatenación y 4) lógicos (lo veremos más adelante).
Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un campo de
una tabla.
Si queremos ver los títulos, precio y cantidad de cada libro escribimos la siguiente sentencia:
select titulo,precio,cantidad
from libros;
Si queremos saber el monto total en dinero de un título podemos multiplicar el precio por la cantidad
por cada título, pero también podemos hacer que Oracle realice el cálculo y lo incluya en una columna
extra en la salida:
Página 76 de 100
Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la sentencia los
siguientes cálculos:
select titulo,precio,
precio-(precio*0.1)
from libros;
Para concatenar el título y el autor de cada libro usamos el operador de concatenación ("||"):
select titulo||'-'||autor
from libros;
Oracle puede convertir automáticamente valores numéricos a cadenas para una concatenación; por
ejemplo, en el siguiente ejemplo mostramos el título y precio de cada libro concatenado con el
operador "||":
Problema:
Eliminamos la tabla:
Creamos la tabla:
Página 77 de 100
select titulo, precio,cantidad,
precio*cantidad
from libros;
select titulo,precio,
precio-(precio*0.1)
from libros;
select titulo||'-'||autor
from libros;
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con
ese nombre.
1- Elimine la tabla:
2- Cree la tabla:
4- El comercio quiere aumentar los precios de todos sus artículos en un 15%. Actualice todos los
precios empleando operadores aritméticos.
Página 78 de 100
5- Vea el resultado.
6- Muestre todos los artículos, concatenando el nombre y la descripción de cada uno de ellos separados
por coma.
7- Reste a la cantidad de todas las impresoras, el valor 5, empleando el operador aritmético menos ("-")
8- Recupere todos los datos de las impresoras para verificar que la actualización se realizó.
9- Muestre todos los artículos concatenado los campos para que aparezcan de la siguiente manera
"Cod. 101: impresora Epson Stylus C45 $460,92 (15)"
Ver solución
select titulo,
Página 79 de 100
cantidad as stock,
precio
from libros;
Para reemplazar el nombre de un campo del encabezado por otro, se coloca la palabra clave "as"
seguido del texto del encabezado.
Si el alias consta de una sola cadena las comillas no son necesarias, pero si contiene más de una
palabra, es necesario colocarla entre comillas dobles:
select titulo,
cantidad as "stock disponible",
precio
from libros;
select titulo,precio,
precio*0.1 as descuento,
precio-(precio*0.1) as "preciofinal"
from libros;
Entonces, un "alias" se usa como nombre de un campo o de una expresión. En estos casos, son
opcionales, sirven para hacer más comprensible el resultado.
Problema:
Eliminamos la tabla:
Creamos la tabla:
select titulo,
cantidad as stock,
Página 80 de 100
precio
from libros;
select titulo,
cantidad as "stock disponible",
precio
from libros;
Recuperamos el título, autor, precio, descuento del 10% y precio final con descuento, empleando un
alias para las 2 últimas columnas:
select titulo,autor,precio,
precio*0.1 as descuento,
precio-(precio*0.1) as "precio final"
from libros;
select titulo,precio,
precio-(precio*0.1) "precio con descuento"
from libros;
Primer problema:
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con
ese nombre.
1- Elimine la tabla:
2- Cree la tabla:
4- 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"
Página 81 de 100
5- 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)
6- 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)
7- Muestre la descripción de todas las impresoras junto al precio con un 20% de recargo con un
encabezado que lo especifique.
Ver solución
21 - Funciones string
Las funciones de manejo de caracteres alfanuméricos aceptan argumentos de tipo caracter y retornan
caracteres o valores numéricos.
Las siguientes son algunas de las funciones que ofrece Oracle para trabajar con cadenas de caracteres:
- chr(x): retorna un caracter equivalente al código enviado como argumento "x". Ejemplo:
- initcap(cadena): retorna la cadena enviada como argumento con la primera letra (letra capital) de
cada palabra en mayúscula. Ejemplo:
- lower(cadena): retorna la cadena enviada como argumento en minúsculas. "lower" significa reducir
en inglés. Ejemplo:
- trim(cadena): retorna la cadena con los espacios de la izquierda y derecha eliminados. "Trim"
significa recortar. Ejemplo:
Página 83 de 100
- replace(cadena,subcade1,subcade2): retorna la cadena con todas las ocurrencias de la subcadena de
reemplazo (subcade2) por la subcadena a reemplazar (subcae1). Ejemplo:
retorna "www.oracle.com'.
- length(cadena): retorna la longitud de la cadena enviada como argumento. "lenght" significa longitud
en inglés. Ejemplo:
- translate(): reemplaza cada ocurrencia de una serie de caracteres con otra serie de acracteres. La
diferencia con "replace" es que aquella trabaja con cadenas de caracteres y reemplaza una cadena
completa por otra, en cambio "translate" trabaja con caracteres simples y reemplaza varios. En el
siguiente ejemplo se especifica que se reemplacen todos los caracteres "O" por el caracter "0", todos
los caracteres "S" por el caracter "5" y todos los caracteres "G" por "6":
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo caracter.
Problema:
Eliminamos la tabla:
Creamos la tabla:
Mostramos sólo los 12 primeros caracteres de los títulos de los libros y sus autores, empleando la
función "substr":
Mostramos sólo los 20 primeros caracteres de los títulos de los libros y rellenando los espacios
restantes con "*", empleando la función "rpad":
Mostramos el título y el precio de todos los libros concatenando el signo "$" a los precios:
select titulo,replace(editorial,'Emece','Sudamericana')
from libros;
Recuperamos el autor de todos los libros reemplazando las letras "abc" por "ABC" respectivamente
(empleando "translate"):
Mostramos la posición de la primera ocurrencia de la cadena "pais" en los títulos de los libros:
Página 85 de 100
select instr(titulo,'pais') from libros;
Note que los títulos que no contienen la subcadena "pais" muestran el valor cero.
22 - Funciones matemáticas.
Las funciones matemáticas realizan operaciones con expresiones numéricas y retornan un resultado,
operan con tipos de datos numéricos.
Las funciones numéricas aceptan parámetros de entrada de tipo numérico y retornan valores
numéricos.
Oracle tiene algunas funciones para trabajar con números. Aquí presentamos algunas.
La tabla dual es una tabla virtual que existe en todas las Bases de datos Oracle.
- round(n,d): retorna "n" redondeado a "d" decimales; si se omite el segundo argumento, redondea
todos los decimales. Si el segundo argumento es positivo, el número de decimales es redondeado
según "d"; si es negativo, el número es redondeado desde la parte entera según el valor de "d".
Ejemplos:
Página 86 de 100
- sign(x): si el argumento es un valor positivo, retorna 1, si es negativo, devuelve -1 y 0 si es 0.
Ejemplo:
- sqrt(x): devuelve la raiz cuadrada del valor enviado como argumento. Ejemplo:
Oracle dispone de funciones trigonométricas que retornan radianes, calculan seno, coseno, inversas,
etc.: acos, asin, atan, atan2, cos, cosh, exp, ln, log, sin, sinh, tan, tanh. No las veremos en detalle.
Se pueden emplear las funciones matemáticas enviando como argumento el nombre de un campo de
tipo numérico.
Problema:
Una empresa almacena los datos de sus empleados en una tabla denominada "empleados".
Eliminamos la tabla:
Creamos la tabla:
Página 87 de 100
Vamos a mostrar los sueldos de los empleados redondeando el valor hacia abajo y luego hacia arriba
(empleamos "floor" y "ceil"):
Mostramos los nombre de cada empleado, su respectivo sueldo, y el sueldo redondeando el valor a
entero ("round") y truncado a entero ("trunc"):
Note que los valores devueltos según la función empleada, son diferentes.
Devuelve el valor 4.
Retorna 9.
- last_day(f): retorna el ultimo día de mes de la fecha enviada como argumento. Ejemplo:
Página 88 de 100
- months_between(f1,f2): retorna el numero de meses entre las fechas enviadas como argumento.
Ejemplo:
- next_day(fecha,dia): retorna una fecha correspondiente al primer día especificado en "dia" luego de
la fecha especificada. En el siguiente ejemplo se busca el lunes siguiente a la fecha especificada:
Retorna 05/09/07
- extract(parte,fecha): retorna la parte (especificada por el primer argumento) de una fecha. Puede
extraer el año (year), mes (month), día (day), hora (hour), minuto (minute), segundo (second), etc.
Ejemplo:
En Oracle: Los operadores aritméticos "+" (más) y "-" (menos) pueden emplearse con fechas. Por
ejemplos:
select sysdate-3:
Página 89 de 100
Retorna 10/12/07
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo date.
Problema:
Eliminamos la tabla:
Creamos la tabla:
Muestre la fecha que será 15 días después de "24/08/2007" empleando el operador "+":
Retorna 08/09/07.
Muestre la fecha que 20 días antes del "12/08/2007" empleando el operador "-":
Retorna 23/07/07.
Por ejemplo, recuperamos los registros de la tabla "libros" ordenados por el título:
También podemos colocar el número de orden del campo por el que queremos que se ordene en lugar
de su nombre, es decir, referenciar a los campos por su posición en la lista de selección. Por ejemplo,
queremos el resultado del "select" ordenado por "precio":
select titulo,autor,precio
from libros order by 3;
Por defecto, si no aclaramos en la sentencia, los ordena de manera ascendente (de menor a mayor).
Podemos ordenarlos de mayor a menor, para ello agregamos la palabra clave "desc":
select *libros
order by editorial desc;
También podemos ordenar por varios campos, por ejemplo, por "titulo" y "editorial":
Página 91 de 100
Incluso, podemos ordenar en distintos sentidos, por ejemplo, por "titulo" en sentido ascendente y
"editorial" en sentido descendente:
Debe aclararse al lado de cada campo, pues estas palabras claves afectan al campo inmediatamente
anterior.
Es posible ordenar por un campo que no se lista en la selección incluso por columnas calculados.
Se puede emplear "order by" con campos de tipo caracter, numérico y date.
Problema:
Ordenamos los registros por el campo "precio", referenciando el campo por su posición en la lista de
selección:
select titulo,autor,precio
from libros order by 3;
Página 92 de 100
select *from libros
order by titulo,editorial;
Mostramos el título y año de edición de todos los libros, ordenados por año de edición:
En una página web se guardan los siguientes datos de las visitas: nombre, mail, pais y fecha.
Página 93 de 100
insert into visitas values
('Juancito','JuanJosePerez@hotmail.com','Argentina','12/09/2006 16:20');
insert into visitas values
('Juancito','JuanJosePerez@hotmail.com','Argentina','15/09/2006 16:25');
5- Muestre el nombre del usuario, pais y el mes, ordenado por pais (ascendente) y el mes
(descendente)
6- Muestre los mail, país, ordenado por país, de todos los que visitaron la página en octubre (4
registros)
Ver solución
Si queremos recuperar todos los libros cuyo autor sea igual a "Borges" y cuyo precio no supere los 20
pesos, necesitamos 2 condiciones:
Los registros recuperados en una sentencia que une dos condiciones con el operador "and", cumplen
con las 2 condiciones.
Queremos ver los libros cuyo autor sea "Borges" y/o cuya editorial sea "Planeta":
En la sentencia anterior usamos el operador "or"; indicamos que recupere los libros en los cuales el
valor del campo "autor" sea "Borges" y/o el valor del campo "editorial" sea "Planeta", es decir,
seleccionará los registros que cumplan con la primera condición, con la segunda condición y con
ambas condiciones.
Los registros recuperados con una sentencia que une dos condiciones con el operador "or", cumplen
una de las condiciones o ambas.
Queremos recuperar los libros que NO cumplan la condición dada, por ejemplo, aquellos cuya editorial
NO sea "Planeta":
Los registros recuperados en una sentencia en la cual aparece el operador "not", no cumplen con la
condición a la cual afecta el "NOT".
Los paréntesis se usan para encerrar condiciones, para que se evalúen como una sola expresión.
Cuando explicitamos varias condiciones con diferentes operadores lógicos (combinamos "and", "or")
permite establecer el orden de prioridad de la evaluación; además permite diferenciar las expresiones
más claramente.
Página 95 de 100
Si bien los paréntesis no son obligatorios en todos los casos, se recomienda utilizarlos para evitar
confusiones.
El orden de prioridad de los operadores lógicos es el siguiente: "not" se aplica antes que "and" y "and"
antes que "or", si no se especifica un orden de evaluación mediante el uso de paréntesis. El orden en el
que se evalúan los operadores con igual nivel de precedencia es indefinido, por ello se recomienda usar
los paréntesis.
Entonces, para establecer más de una condición en un "where" es necesario emplear operadores
lógicos. "and" significa "y", indica que se cumplan ambas condiciones; "or" significa "y/o", indica que
se cumpla una u otra condición (o ambas); "not" significa "no.", indica que no se cumpla la condición
especificada.
Problema:
Recuperamos los libros cuyo autor sea igual a "Borges" y cuyo precio no supere los 20 pesos:
Seleccionamos los libros cuyo autor es "Borges" y/o cuya editorial es "Planeta":
Página 96 de 100
select *from libros
where autor='Borges' or
editorial='Planeta';
Note que aparecen todos los libros de "Borges" y todos los libros de "Planeta", algunos cumplen ambas
condiciones.
Veamos un ejemplo de cómo el empleo de paréntesis permite a Oracle evaluar en forma diferente
ciertas consultas aparentemente iguales:
Note que el primer resultado retorna todos los libros de "Borges" (primera condición) y todos los libros
de "Paidos" con precio inferior a 20 (segunda condición) (registros 1,2,6 y 8); la segunda recupera
todos los libros de "Borges" o de "Paidos" (primera condición) cuyo precio sea inferior a 20 (segunda
condición) (registros 1,6 y 8).
Primer problema:
4- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea "Roche' y cuyo precio
sea menor a 5 (1 registro cumple con ambas condiciones)
5- Recupere los medicamentos cuyo laboratorio sea "Roche" o cuyo precio sea menor a 5 (4 registros)
Página 97 de 100
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)
11- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3 (3 registros
borrados)
Ver solución
select codigo,nombre
from medicamentos
where laboratorio='Roche' and
precio<5;
Trabajamos con la tabla "peliculas" de un video club que alquila películas en video.
4- Recupere los registros cuyo actor sea "Tom Cruise" o "Richard Gere" (3 registros)
5- Recupere los registros cuyo actor sea "Tom Cruise" y duración menor a 100 (ninguno cumple
ambas condiciones)
6- Recupere los nombres de las películas cuya duración se encuentre entre 100 y 120 minutos(5
registros)
7- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya duración sea 180 (1
registro afectado)
9- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea mayor o igual a
100 (2 registros eliminados)
Página 99 de 100
Ver solución