Está en la página 1de 85

ORACLE Machanay Sulca, Carlos E.

Estructura lógica de la base de


datos
Tablespaces

Una base de datos se divide en unidades lógicas de almacenamiento


denominadas tablespaces. Un tablespaces permite agrupar estructura lógicas
que están relacionas entre si como por ejemplo todos los objetos de una
aplicación para simplificar algunas tareas administrativas.

Oracle almacena la data lógicamente en los tablespaces físicamente en los


datafiles asociados al tablespace correspondientemente.

La instrucción CREATE TABLESPACE

Sintaxis

CREATE TABLESPACE nombre_tablespace


DATAFILE ‘ubicación_y_nombre_archivo_datafile’
SIZE tamaño [ K|M ]
EXTENT MANAGEMENT
DICTIONARY | LOCAL
[ AUTOALLOCATE | SIZE tamaño [ K|M ] ]

• nombre_tablespace: es el identificador de la estructura lógica.

• ubicación_y_nombre_archivo_datafile: es una cadena que


incluye la ruta y el nombre del archivo. La ruta debe especificar una
carpeta existente en el servidor en el que esta instalado Oracle.

• Tamaño: especifica el tamaño del archivo.

• EXTENT MANAGEMENT: especifica si los extents serán


administrados por el diccionario de datos (DICTIONARY), o localmente
(LOCAL).

• El tamaño de los extents puede ser manejados por el servidor (opción


AUTOALLOCATE), o podemos definir extents de tamaño uniforme
(opción SIZE)

E-Mail: vbnet_developer@hotmail.com
Pagina 1
ORACLE Machanay Sulca, Carlos E.

Creación de un tablespace

CREATE TABLESPACE TS_INT


DATAFILE ‘C:\oraclexe\oradata\XE\TS_INT.ORA’
SIZE 3M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Para verificar la creación ejecute el siguiente script.

SELECT NAME FROM V$TABLESPACE WHERE NAME =’TS_INT’;

E-Mail: vbnet_developer@hotmail.com
Pagina 2
ORACLE Machanay Sulca, Carlos E.

Introducción a los esquemas


Un esquema es una colección de objetos de la base de datos. El esquema es
propiedad de un usuario de la base de datos, y tiene el mismo nombre que su
usuario propietario. Los objetos del esquema, tales como tablas, vistas e
índices, son las estructuras lógicas referidas directamente a la data de la base
de datos.

Creación de un esquema

CREATE USER INSTITUTO IDENTIFIED BY DBA;

En la instrucción CREATE USER, INSTITUTO es el identificador del usuario, y


DBA es su contraseña.

Concesión de privilegios

Para el usuario INSTITUTO pueda iniciar la sesión y crear los objetos de su


esquema necesita contar con lo privilegios adecuados.

GRANT CONNECT TO INSTITUTO;

Instrucción para asignar el rol CONNECT al usuario INSTITUTO.


Ahora conéctese con el usuario.

E-Mail: vbnet_developer@hotmail.com
Pagina 3
ORACLE Machanay Sulca, Carlos E.

Tipo de datos
Cada constante y variable tiene un tipo de dato en el cual se especifica el
formato de almacenamiento, restricciones y rango de valores validos.

PL/SQL proporciona una variedad predefinida de tipos de datos. Casi todos los
tipos de datos manejados por PL/SQL son similares a los soportados por SQL. A
continuación se muestran os tipos de datos mas comunes.

NUMBER (Numérico): Almacena números enteros o de punto flotante,


virtualmente de cualquier longitud, aunque puede ser especificada la
precisión (Número de dígitos) y la escala que es la que determina el número
de decimales.

CHAR (Caracter): Almacena datos de tipo carácter con una longitud máxima
de 32767 y cuyo valor de longitud por default es 1.

VARCHAR2 (Caracter de longitud variable): Almacena datos de tipo carácter


empleando sólo la cantidad necesaria aún cuando la longitud máxima sea
mayor.

BOOLEAN (lógico): Se emplea para almacenar valores TRUE o FALSE.

DATE (Fecha): Almacena datos de tipo fecha. Las fechas se almacenan


internamente como datos numéricos, por lo que es posible realizar
operaciones aritméticas con ellas.

Atributos de tipo. Un atributo de tipo PL/SQL es un modificador que puede ser


usado para obtener información de un objeto de la base de datos. El atributo
%TYPE permite conocer el tipo de una variable, constante o campo de la base
de datos. El atributo %ROWTYPE permite obtener los tipos de todos los
campos de una tabla de la base de datos, de una vista o de un cursor.

PL/SQL también permite la creación de tipos personalizados (registros) y


colecciones (tablas de PL/SQL), que veremos en sus apartados
correspondientes.

E-Mail: vbnet_developer@hotmail.com
Pagina 4
ORACLE Machanay Sulca, Carlos E.

Existen por supuesto más tipos de datos, la siguiente tabla los muestra:

Tipo de dato / Oracle 8i Oracle 9i Descripción


Sintáxis
dec(p, e) La precisión La precisión Donde p es la
máxima es de 38 máxima es de 38 precisión y e la
dígitos. dígitos. escala.

Por ejemplo:
dec(3,1) es un
número que tiene
2 dígitos antes
del decimal y un
dígito después
del decimal.

decimal(p, e) La precisión La precisión Donde p es la


máxima es de 38 máxima es de 38 precisión y e la
dígitos. dígitos. escala.

Por ejemplo:
decimal (3,1) es
un número que
tiene 2 dígitos
antes del decimal
y un dígito
después del
decimal.

double
precision
float
int
integer
numeric(p, e) La precisión La precisión Donde p es la
máxima es de 38 máxima es de 38 precisión y e la
dígitos. dígitos. escala.

Por ejemplo:
numeric(7,2) es
un número que
tiene 5 dígitos
antes del decimal
y 2 dígitos
después del
decimal.

E-Mail: vbnet_developer@hotmail.com
Pagina 5
ORACLE Machanay Sulca, Carlos E.

Tipo de dato / Oracle 8i Oracle 9i Descripción


Sintáxis
number(p, e) La precisión La precisión Donde p es la
máxima es de 38 máxima es de 38 precisión y e la
dígitos. dígitos. escala.

Por ejemplo:
number(7,2) es
un número que
tiene 5 dígitos
antes del decimal
y 2 dígitos
después del
decimal.

real
smallint
char (tamaño) Hasta 32767 Hasta 32767 Donde tamaño es
bytes en PLSQL. bytes en PLSQL. el número de
caracteres a
Hasta 2000 bytes Hasta 2000 bytes almacenar. Son
en Oracle 8i. en Oracle 9i. cadenas de ancho
fijo. Se rellena
con espacios.

varchar2 Hasta 32767 Hasta 32767 Donde tamaño es


(tamaño) bytes en PLSQL bytes en PLSQL el número de
caracteres a
Hasta 4000 bytes Hasta 4000 bytes almacenar. Son
en Oracle 8i. en Oracle 9i. cadenas de ancho
variable.

long Hasta 2 Hasta 2 Son cadenas de


gigabytes. gigabytes. ancho variable.
raw Hasta 32767 Hasta 32767 Son cadenas
bytes en PLSQL. bytes en PLSQL. binarias de ancho
variable.
Hasta 2000 bytes Hasta 2000 bytes
en Oracle 8i. en Oracle 9i.

long raw Hasta 2 Hasta 2 Son cadenas


gigabytes. gigabytes. binarias de ancho
variable.

E-Mail: vbnet_developer@hotmail.com
Pagina 6
ORACLE Machanay Sulca, Carlos E.

Tipo de dato / Oracle 8i Oracle 9i Descripción


Sintáxis
date Una fecha entre Una fecha entre
el 1 de Enero de el 1 de Enero de
4712 A.C. y el 31 4712 A.C. y el 31
de Diciembre de de Diciembre de
9999 D.C. 9999 D.C.
timestamp No soportado por .fractional Incluye año, mes
(fractional Oracle 8i. seconds día, hora,
seconds precision debe minutos y
precision) ser un número segundos.
entre 0 y 9. (El
valor por defecto Por ejemplo:
es 6) timestamp(6)

timestamp No soportado por fractional Incluye año, mes


(fractional Oracle 8i. seconds día, hora,
seconds precision debe minutos y
precision) with ser un número segundos; con un
time zone entre 0 y 9. (El valor de
valor por defecto desplazamiento
es 6) de zona horaria.

Por ejemplo:
timestamp(5)
with time zone

timestamp No soportado por fractional Incluye año, mes


(fractional Oracle 8i. seconds día, hora,
seconds precision debe minutos y
precision) with ser un número segundos; con
local time zone entre 0 y 9. (El una zona horaria
valor por defecto expresada como
es 6) la zona horaria
actual.

Por ejemplo:
timestamp(4)
with local time
zone

interval year No soportado por year precision Período de


(year precision) Oracle 8i. debe ser un tiempo
to month número entre 0 y almacenado en
9. (El valor por años y meses.
defecto es 2)
Por ejemplo:
interval year(4)
to month

E-Mail: vbnet_developer@hotmail.com
Pagina 7
ORACLE Machanay Sulca, Carlos E.

Tipo de dato / Oracle 8i Oracle 9i Descripción


Sintáxis
interval day No soportado por day precision debe Incluye año,
(day precision) Oracle 8i. ser un número entre mes día, hora,
to second 0 y 9. (El valor por minutos y
(fractional defecto es 2) segundos.
seconds
precision) Por ejemplo:
fractional seconds interval day(2)
precision debe ser to second(6)
un número entre 0 y
9. (El valor por
defecto es 6)
rowid El formato del El formato del Datos binarios
campo rowid es: campo rowid es: de ancho fijo.
Cada registro
BBBBBBB.RRRR.FF BBBBBBB.RRRR.FFFFF de la base de
FFF donde donde BBBBBBB es el datos tiene una
BBBBBBB es el bloque en el fichero dirección física
bloque en el de la base de datos; o rowid.
fichero de la base RRRR es la fila del
de datos; RRRR es bloque; FFFFF es el
la fila del bloque; fichero de la base de
FFFFF es el datos.
fichero de la base
de datos.

urowid Hasta 2000 bytes. Hasta 2000 bytes. Rowid


[tamaño] universal.
Donde tamaño
es opcional.
boolean Válido en PLSQL, Válido en PLSQL,
este tipo de datos este tipo de datos no
no existe en existe en Oracle 9i.
Oracle 8i.
nchar (tamaño) Hasta 32767 bytes Hasta 32767 bytes en Donde tamaño
en PLSQL. Hasta PLSQL. Hasta 2000 es el número
2000 bytes en bytes en Oracle 9i. de caracteres a
Oracle 8i. almacenar.
Cadena NLS de
ancho fijo.
nvarchar2 Hasta 32767 bytes Hasta 32767 bytes en Donde tamaño
(tamaño) en PLSQL. Hasta PLSQL. Hasta 4000 es el número
4000 bytes en bytes en Oracle 9i. de caracteres a
Oracle 8i. almacenar.
Cadena NLS de
ancho variable.

E-Mail: vbnet_developer@hotmail.com
Pagina 8
ORACLE Machanay Sulca, Carlos E.

Tipo de dato / Oracle 8i Oracle 9i Descripción


Sintáxis
bfile Hasta 4 Hasta 4 gigabytes. Localizadores
gigabytes. de archivo
apuntan a un
objeto binario
de sólo lectura
fuera de la
base de datos.
blob Hasta 4 Hasta 4 gigabytes. Localizadores
gigabytes. LOB apuntan a
un gran objeto
binario dentro
de la base de
datos.
clob Hasta 4 Hasta 4 gigabytes. Localizadores
gigabytes. LOB apuntan a
un gran objeto
de caracteres
dentro de la
base de datos.
nclob Hasta 4 Hasta 4 gigabytes. Localizadores
gigabytes. LOB apuntan a
un gran objeto
NLS de
caracteres
dentro de la
base de datos.

E-Mail: vbnet_developer@hotmail.com
Pagina 9
ORACLE Machanay Sulca, Carlos E.

Creación de tablas
La instrucción CREATE TABLE

Sintaxis

CREATE TABLE nombre_tabla(


Nombre_columna1 tipo_dato1 (NULL | NOT NULL),
Nombre_columna1 tipo_dato2 (NULL | NOT NULL),
Nombre_columna1 tipo_dato3 (NULL | NOT NULL)

Especificación de NULL o NOT NULL

• NULL: columna que puede ser nulo de datos.

• NOT NULL: columna obligado a ingresar datos.

Creación de tablas

En el esquema INSTITUTO crear la tabla especialidad asociada al tablespace


TS_INT.

CREATE TABLE especialidad


(id_especialidad NUMBER(3) NOT NULL,
nombre_especialidad VARCHAR2(40))
TABLESPACE TS_INT;

Usted recibe un mensaje de error, el cual indica que usted no cuenta con los
privilegios necesarios para crear las tablas.

Concesión al esquema INSTITUTO del privilegio para crear las


tablas

Conéctese con el usuario SYSTEM.

Ejecute el siguiente script.

GRANT RESOURCE TO INSTITUTO;

El rol RESOURCE concede privilegios para crear ciertos objetos de un


esquema, entre ellos las tablas.

E-Mail: vbnet_developer@hotmail.com
Pagina 10
ORACLE Machanay Sulca, Carlos E.

Conéctese con el usuario INSTITUTO

Vuelva a ejecutar el script.

CREATE TABLE especialidad


(id_especialidad NUMBER(3) NOT NULL,
nombre_especialidad VARCHAR2(40))
TABLESPACE TS_INT;

Verificación la creación de la tabla.

SELECT *FROM CAT;

Verificar la definición de la tabla.

DESCRIBE especialidad;

Laboratorio 01:

1. Crear las siguientes tablas.

2. Verifique la creación de las tablas.

3. Verificar la definición de las tablas.

E-Mail: vbnet_developer@hotmail.com
Pagina 11
ORACLE Machanay Sulca, Carlos E.

Modificando la definición de la tabla.

En una tabla podemos añadir nuevas columnas, eliminar columnas, cambiar


las propiedades de las columnas, añadir o eliminar restricciones.

La instrucción ALTER TABLE

Sintaxis

ALTER TABLE nombre_tabla


ADD nombre_columna propiedades_columna
| DROP COLUMN nombre_columna
| ALTER COLUMN nombre_columna
nuevas_propiedades_columna
| ADD CONSTRAINT nombre_restriccion
PRIMARY KEY | UNIQUE | FOREIGN KEY
| DEFAULT | CHECK
| DROP CONSTRAINT nombre_restriccion

• ADD nombre_columna: permite añadir nueva columna a la tabla.

• DROP COLUMN: se usa para eliminar una columna.

• ALTER COLUMN: permite modificar la definición de una columna.

• ADD CONSTRAINT: permite añadir una restricción PRIMARY KEY,


UNIQUE FOREIGN KEY, DEFAULT o CHECK a la definición de una tabla.

• DROP CONSTRAINT: se usa para eliminar una restricción.

Para ver el efecto de la instrucción ALTER TABLE, en el esquema INSTITUTO


crearemos una tabla.

CREATE TABLE tabla_prueba


(columna1 NUMBER(3) NOT NULL,
columna2 VARCHAR2(10))
TABLESPACE TS_INT;

Añadir una columna de tipo NUMBER(8,2) con la propiedad NULL.

ALTER TABLE tabla_prueba


ADD columna3 NUMBER(8,2) NULL;

E-Mail: vbnet_developer@hotmail.com
Pagina 12
ORACLE Machanay Sulca, Carlos E.

Adición de una columna NOT NULL a una tabla.

Insertamos una fila en la tabla tabla_prueba

INSERT INTO tabla_prueba VALUES(101,’CARLOS’,30.45);

Ahora tratemos de añadir una columna de tipo VARCHA2 con la propiedad NOT
NULL.

ALTER TABLE tabla_prueba


ADD columna4 VARCHAR2(20) NOT NULL;

Usted recibe un mensaje de error, el cual indica que solo puede agregar
columnas con la propiedad NOT NULL cuando la tabla esta vacía.

Añadiendo la columna con la propiedad NULL

ALTER TABLE tabla_prueba


ADD columna4 VARCHAR2(20) NULL;

Ahora, establecemos cual es el valor para la nueva columna de la fila que ya


esta registrada en la tabla.

UPDATE tabla_prueba
SET columna4=’LIMA’
WHERE columna1=’101’;

Ahora cambiamos la propiedad NULL de dicha columna a NOT NULL.

ALTER TABLE tabla_prueba


MODIFY (columna4 VARCHAR2(20) NOT NULL);

E-Mail: vbnet_developer@hotmail.com
Pagina 13
ORACLE Machanay Sulca, Carlos E.

Restricciones
Son un método declarativo de definición de la integridad de datos ya que ellas
se definen al momento de crear la tabla con la sentencia (CREATE TABLE) o
al momento de modificar de tabla con la sentencia (ALTER TABLE).

Tipos de restricciones

Las restricciones son un método estándar ANSI para forzar la integridad de los
datos. A continuación los tipos de restricciones.

tipos de restricciones descripción


PRIMARY KEY garantiza que cada fila o registro en una tabla
(clave primaria) sea único, no permite valores nulos.
UNIQUE garantiza que cada valor en una columna es
(valor no duplicado) único. permite valores únicos.
FOREIGN KEY define la columna o combinación de columnas
(clave foránea) de una tabla secundaria cuyos valores dependen
de la clave primaria de una tabla primaria.
DEFAULT establece el valor predeterminado para una
(valor predeterminado) columna.
CHECK establece la regla que debe cumplir un valor
(regla de validación) para que se un valor aceptable en una columna.

Creación de la clave primaria (PK)

Sintaxis

ALTER TABLE nombre_tabla


ADD CONSTRAINT pk_nombre_tabla
PRIMARY KEY (columnaP, columnaX)

• pk_nombre_tabla: es el nombre de la restricción clave primaria.

• columnaP, columnaX: es la columna o combinación de columnas


que se define como clave primaria.

Creación de clave primaria de la tabla curso.

ALTER TABLE curso


ADD CONSTRAINT PK_curso
PRIMARY KEY(id_curso);

E-Mail: vbnet_developer@hotmail.com
Pagina 14
ORACLE Machanay Sulca, Carlos E.

Creación de clave foránea (FK).

Sintaxis

ALTER TABLE nombre_tabla


ADD CONSTRAINT fk_nombre_tabla_tabla_referenciada
FOREIGN KEY (columnaP, columnaX)
REFERENCES tabla_referenciada

• fk_nombre_tabla_tabla_referenciada: es el nombre de la
restricción clave foranea.

• columnaP, columnaX: es la columna o combinación de columnas


que se define como clave foránea.

• tabla_referenciada: es el nombre de la tabla primaria con la que se


relaciona la tabla secundaria que tiene la clave foránea.

Creación de la clave foránea en la tabla notas.

ALTER TABLE notas


ADD CONSTRAINT FK_notas_curso
FOREIGN KEY (id_curso) REFERENCES curso;

Creación de la restricción valor no duplicado (UNIQUE).

Sintaxis

ALTER TABLE nombre_tabla


ADD CONSTRAINT u_nombre_tabla_nombre_columna
UNIQUE (columnaP, columnaX)

• u_nombre_tabla_nombre_columna: es el nombre de la
restricción valor no duplicado o UNIQUE.

• columnaP, columnaX: es la columna o combinación de columnas a


la que se aplica la restricción.

E-Mail: vbnet_developer@hotmail.com
Pagina 15
ORACLE Machanay Sulca, Carlos E.

Creación de restricción UNIQUE para la columna nombre_curso


en la tabla curso.

ALTER TABLE curso


ADD CONSTRAINT U_curso_nombre_curso
UNIQUE (nombre_curso);

Creación de valor predeterminado (DEFAULT)

Sintaxis

ALTER TABLE nombre_tabla


MODIFY (columnaX DEFAULT valor_predeterminado)

valor_predeterminado: es el valor que se almacena en la columnas


cuando inserta una fila no se especificada el valor para esa columna.

columnaX: es la columna que se aplica la restricción.

Creación de una restricción DEFUALT para la columna


credito_curso en la tabla curso.

Antes vamos a insertar un registro en la tabla curso

INSERT INTO curso VALUES (501,’JAVA’,30);

Ahora procedemos a crear la restricción.

ALTER TABLE curso


MODIFY (credito_curso DEFAULT 30);

Ahora inserte un registro

INSERT INTO curso (id_curso,nombre_curso)VALUES


(501,’JAVA’);

E-Mail: vbnet_developer@hotmail.com
Pagina 16
ORACLE Machanay Sulca, Carlos E.

Creación de regla de validación (CHECK)

Sintaxis

ALTER TABLE nombre_tabla


ADD CONSTRAINT ck_nombre_tabla_nombre_columna
CHECK (condición)

ck_nombre_tabla_nombre_columna: es el nombre de la restricción


regla de validación o check.

condición: es la expresión que determina como debe ser el valor a ingresar


en la columna afectada por la restricción.

Creación de la restricción CHECK para la columna credito_curso


de la tabla curso.

ALTER TABLE curso


ADD CONSTRAINT CK_curso_credito_curso
CHECK (credito_curso > 0);

Eliminación de tablas (la instrucción DROP TABLE)

Elimina la definición de una tabla.

Si la tabla referencial por una clave foránea, no se podrá eliminar.

Eliminación de tablas

DROP TABLE tabla_prueba;

E-Mail: vbnet_developer@hotmail.com
Pagina 17
ORACLE Machanay Sulca, Carlos E.

Laboratorio 02:

1. Establecer clave principal y relacione las siguientes tablas.

2. Inserte 2 registros en la tabla especialidad, registros a la tabla curso, 3


registros en la tabla alumno y 3 registros a la tabla notas.

3. Agregar la columna (telefono_alumno varchar2 (10)) a la tabla alumno.

4. Establecer restricción a la columna (credito_curso) de la tabla curso, el


credito del curso no puede ser mayor a 120.

5. Mostrar la fecha del sistema.

6. Verificar los tablespace creados y escribirlos.

7. Verificar todos los objetos del catalogo de esquema INSTITUTO.

E-Mail: vbnet_developer@hotmail.com
Pagina 18
ORACLE Machanay Sulca, Carlos E.

Mantenimiento de datos
Una vez de haber creado las tablas de la base de datos se debe cargar la data
lo que normalmente se lleva a cabo desde una aplicación cliente que contiene
formularios para que el usuario puede cargar los datos con facilidad y
comodidad.

Inserción de filas (instrucción INSERT)

Sintaxis

INSERT INTO nombre_tabla (lista_columnas) VALUES (lista_de_


valores)

lista_columnas: es la relación de columnas en las que se almacenaran los


valores especificados.

lista_de_valores: es la relación de valores a almacenar en la fila a


insertar.

Los elementos de ambas listas van separados.

Inserción de una fila con lista de valores completa

INSERT INTO curso VALUES (502,’VISUAL STUDIO .NET’,20);

Inserción de una fila con lista de valores incompleta

INSERT INTO curso (id_curso,nombre_curso) VALUES


(503,POWER BUILDER’);

E-Mail: vbnet_developer@hotmail.com
Pagina 19
ORACLE Machanay Sulca, Carlos E.

Objeto sequence

Es un objeto de base de datos que genera números secuenciales y se utiliza


para asignar valores a campos numéricos enteros en los que se requiere que la
generación de su contenido sea automática y secuencial.

Sintaxis

CREATE SECUENCE nombre_secuencia


[ STAR WITH valor_inicial ]
[ INCREMENT BY incremento ]
[ MAXVALUE valor_maximo | NOMAXVALUE ]
[ MINVALUE valor_minimo | NOMINVALUE ]
[ CYCLE | NOCYCLE ]

• Valor_inicial: valor que empieza la secuencia.


• Incremento: establece la diferencia entre un valor de la secuencia y
el siguiente si no específica se asume 1.
• Valor_maximo: mayor valor de la secuencia que puede alcanzar.
• Valor_minimo: menor valor en la secuencia.
• Cycle: permite que la secuencia continué a partir de MINVALUE
cuando se alcanza MAXVALUE.
• Nocycle: modo predeterminado.

Creando una nueva tabla, y creando un objeto sequence.

CREATE TABLE tabla_secuencia


(codigo NUMBER(4) PRIMARY KEY NOT NULL,
nombre VARCHAR2(20) NOT NULL)
TABLESPACE TS_INT;

CREATE SEQUENCE sq_codigo


MAXVALUE 9999;

Utilizamos el objeto secuencia sq_codigo para insertar datos.

INSERT INTO tabla_secuencia


VALUES(sq_codigo.NEXTVAL,’CARLOS EDUARDO’);

E-Mail: vbnet_developer@hotmail.com
Pagina 20
ORACLE Machanay Sulca, Carlos E.

Actualización de datos (instrucción UPDATE)

Sintaxis

UPDATE nombre_tabla
SET columnaX = expresionX,
columnaP = expresionP, …
WHERE condicion_fila_actualizar

• columnaX, columnaP: son las columnas cuyo contenido se


actualizará.

• expresionX, expresionP: establecen los nuevos valores a


almacenar en las columnas.

• condicion_fila_actualizar: es una expresión lógica que determina


que las filas en las que la actualización se debe llevar acabo.

Uso del UPDATE

Antes de del uso del UPDATE, ejecute la siguiente instrucción.

SELECT *FROM curso;

Ejecute la siguiente instrucción

UPDATE curso
SET credito_curso=25
WHERE id_curso=502;

E-Mail: vbnet_developer@hotmail.com
Pagina 21
ORACLE Machanay Sulca, Carlos E.

Eliminación de filas (instrucción DELETE)

Sintaxis

DELETE FROM nombre_tabla


WHERE condicion_fila_eliminar

condicion_fila_eliminar: es una expresión lógica que determina las filas


en las que la eliminación se debe llevar acabo.

Uso del DELETE

Antes de del uso del DELETE, ejecute la siguiente instrucción.

SELECT *FROM curso;

Elimine el curso POWER BUILDER

DELETE FROM curso


WHERE id_curso=503;

Si desea eliminar todos los registros.

DELETE FROM curso;

Eliminación de todas las filas de una tabla (instrucción


TRUNCATE TABLE)

La instrucción TRUNCATE TABLE se ejecuta más rápido debido a que no


registra la eliminación de cada fila en el log de transacciones como lo hace
DELETE.

TRUNCATE TABLE nombre_tabla

Eliminar todas las filas de la tabla curso

TRUNCATE TABLE curso;

E-Mail: vbnet_developer@hotmail.com
Pagina 22
ORACLE Machanay Sulca, Carlos E.

Fundamentos de Oracle - SQL


Es la implementación de Oracle del estándar ANSI SQL que define elementos
del lenguaje SQL que puede ejecutarse desde cualquier aplicación frontal.

Elementos de Oracle - SQL

DML: Data Manipulation Languague (consultar y modificar datos)


DDL: Data Definition Languague (crear objetos de la base de datos)
DCL: Data Control Languague (quien modifica los datos)

Elementos adicionales al lenguaje: variables, operadores, funciones,


sentencia de control de flujo y comentarios.

Declaración DML
Trabaja con los datos de la base de datos

instrucción descripción
SELECT selecciona filas y columnas de una o más tablas de la base
de datos.
INSERT añade una nueva fila a una tabla.
UPDATE modifica los datos existentes en una tabla.
DELETE elimina filas de una tabla.

Declaración DDL
Permite crear base de datos, tablas, y tipos de datos definidos por el usuario.

instrucción Descripción
CREATE crea un objeto de la base de datos.
nombre_objeto
ALTER modifica la definición del objeto de la base de datos.
nombre_objeto
DROP elimina un objeto de la base de datos.
nombre_objeto

Declaración DCL
Permite cambiar los permisos o roles asociado con un usuario de la base de
datos.

instrucción descripción
GRANT crea una entrada en la seguridad del sistema que le
permite a un usuario trabajar con los datos o ejecutar
ciertas sentencias.
DENY crea una entrada de seguridad del sistema negando un
permiso de una cuenta de seguridad.
REVOKE quita un permiso previamente concebido o negado

E-Mail: vbnet_developer@hotmail.com
Pagina 23
ORACLE Machanay Sulca, Carlos E.

Operadores

La siguiente tabla ilustra los operadores de Oracle.

tipo de operador operadores


Operador de asignación := (dos puntos + igual)
Operadores aritméticos + (suma)
- (resta)
* (multiplicación)
/ (división)
** (exponente)
Operadores relacionales o de = (igual a)
comparación <> (distinto de)
< (menor que)
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
Operadores lógicos AND (y lógico)
NOT (negación)
OR (o lógico)
Operador de concatenación ||

E-Mail: vbnet_developer@hotmail.com
Pagina 24
ORACLE Machanay Sulca, Carlos E.

Laboratorio 03:

1. Crear un tablespace de nombre TS_INT.

2. Crear un esquema de nombre INSTITUTO.

3. Crear las siguientes tablas dentro del esquema (INSTITUTO):


Establecer clave principal a cada tabla y relacionarlas.

4. En la tabla notas la nota no debe sobre pasar más de 20.

5. Insertando los siguientes registros:

Tabla: ESPECIALIDAD

Tabla: CURSO

Tabla: ALUMNO

E-Mail: vbnet_developer@hotmail.com
Pagina 25
ORACLE Machanay Sulca, Carlos E.

Tabla: NOTAS

6. Cambie el crédito del curso a 150 para los cursos LIBRO CAJA y POWER
BUILDER.

7. Mostrar los alumnos que tenga la especialidad de COMPUTACION E


INFORMACTICA.

8. Mostar las notas de los alumnos que lleven el curso POWER BUILDER.

9. Aumentar 2 puntos en el EXAMEN PARCIAL, al alumno JOSE ANTONIO


ROMAN LEIVA.

10. Mostar el promedio global de los alumnos que lleven el curso de


VISUAL STUDIO.NET.

E-Mail: vbnet_developer@hotmail.com
Pagina 26
ORACLE Machanay Sulca, Carlos E.

11. Mostrar el promedio global mas bajo.

12. Mostrar los datos del alumno MARIA ISABEL LOZADA ROJAS de tal forma
que se vea en un solo cuadro.

13. Cambie el curso de VISUAL STUDIO.NET a JAVA CREATOR.

14. Mostrar los cursos que tenga el crédito del curso mayor a 100.

15. Restar con 5 puntos en el EXAMEN FINAL a los alumnos que lleven el
curso de LIBRO CAJA.

16. Insertar un nuevo alumno que tenga la especialidad de COMPUTACION E


INFORMATICA.

E-Mail: vbnet_developer@hotmail.com
Pagina 27
ORACLE Machanay Sulca, Carlos E.

17. Mostrar los alumnos que tenga en el promedio global más 15.

18. Insertar 5 nuevos alumnos, 3 de ellos para la especialidad de


CONTABILIDAD Y FINANZAS y los otros 2 para la otra especialidad.

19. Ingresar notas a los alumnos que no tengan, los alumnos de


COMPUTACION E INFORMATICA lleva el curso de JAVA CREATOR.

20. Mostrar el promedio global más bajo que lleven el curso de JAVA
CREATOR.

E-Mail: vbnet_developer@hotmail.com
Pagina 28
ORACLE Machanay Sulca, Carlos E.

21. Aumentar con 3 puntos más a las notas del EXAMEN PARCIAL que estén
bajo o igual a 13.

22. Mostrar los cursos que tenga en CREDITO DE CURSO menor a 100

23. Cambie el curso de LIBRO CAJA a LIBRO MAYOR.

24. Mostar todos los alumnos que tenga la especialidad de CONTABILIDAD Y


FINANZAS.

25. Mostrar los alumnos que lleven el curso de JAVA CREATOR y que su
promedio global sea mayor igual a 17.

E-Mail: vbnet_developer@hotmail.com
Pagina 29
ORACLE Machanay Sulca, Carlos E.

26. Cambie el curso de COSTOS Y PRESUPUESTOS a ECONOMIA Y FINANZAS.

27. Restar con 1 punto en el EXAMEN FINAL a los alumnos que lleven el
curso de LIBRO MAYOR.

28. Mostrar los alumnos que tenga nota de promedio global 15 o 17.

29. Mostrar las notas del alumno CARMEN ROSARIO SOLIS ALVAREZ.

30. Restar con 12 puntos en el EXAMEN FNAL a los alumnos que lleven el
curso de POWER BUILDER.

E-Mail: vbnet_developer@hotmail.com
Pagina 30
ORACLE Machanay Sulca, Carlos E.

Preguntas de investigación

31. Mostrar la fecha del sistema incrementado 5 días.

32. Mostar la hora del sistema.

33. Mostrar la condición APROBADO o DESAPROBADO dependiendo el


promedio global.

34. Mostrar su edad actual

35. Genere el proceso de operación para el promedio global.

E-Mail: vbnet_developer@hotmail.com
Pagina 31
ORACLE Machanay Sulca, Carlos E.

Consultas simples
Antes de empezar, resuelva el laboratorio 04

Laboratorio 04:

1. Crear un tablespace de nombre TS_COM.

2. Crear un esquema de nombre COMERCIAL.

3. Crear las siguientes tablas dentro del esquema (COMERCIAL):


Establecer clave principal a cada tabla y relacionarlas.

E-Mail: vbnet_developer@hotmail.com
Pagina 32
ORACLE Machanay Sulca, Carlos E.

E-Mail: vbnet_developer@hotmail.com
Pagina 33
ORACLE Machanay Sulca, Carlos E.

La instrucción SELECT

Hay tres componentes básicos en la instrucción SELECT: SELECT FROM y


WHERE.

Sintaxis

SELECT * | lista_columnas
FROM nombre_tabla
WHERE condicion_filas

lista_columnas: es la lista de las columnas a mostrar en el resultado de la


consulta. Si se especifica * se mostraran todas las columnas de la tabla.

condicion_filas: es una expresión lógica que indica que las filas a mostrar
son aquellas para las que el valor de la expresión es verdadero.

Sintaxis con cláusulas más utilizadas

SELECT ALL |DISTINCT lista_columnas


INTO nueva_tabla FROM tabla_origen
WHERE condicion_filas
GROUP BY ALL expresión_agrupar_por ,
HAVING condicion_grupos
ORDER BY nombre_columa ASC | DESC.

Lectura de todos los datos.

SELECT *FROM PERSONAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 34
ORACLE Machanay Sulca, Carlos E.

Lectura de columnas seleccionadas.

SELECT COD_CLI,APE_CLI,NOM_CLI,TEL_CLI FROM CLIENTE;

Definiendo alias para los nombres de las columnas.

SELECT COD_PER AS ID,APE_PER AS APELLIDOS,NOM_PER AS


NOMBRES FROM PERSONAL;

Definiendo columnas computadas.

SELECT COD_PRO,NOM_PRO,COD_LIN,PRE_PRO,(PRE_PRO -
(PRE_PRO * 0.05)) AS "PRECIO CON DSCTO"
FROM PRODUCTO;

E-Mail: vbnet_developer@hotmail.com
Pagina 35
ORACLE Machanay Sulca, Carlos E.

Concatenando cadena.

SELECT COD_CLI,NOM_CLI || ' ' || APE_CLI AS CLIENTE,DIR_CLI


FROM CLIENTE;

E-Mail: vbnet_developer@hotmail.com
Pagina 36
ORACLE Machanay Sulca, Carlos E.

Definición de filtros

En la cláusula WHERE, condicion_filas es una expresión lógica que establece


la condición que deben cumplir las filas a mostrar el resultado de la consulta.
Para construir la expresión lógica utilice operadores relacionales o de
comparación y de operadores lógicos SQL como LIKE, BETWEEN e IN.

Uso del operador igual (=)

SELECT COD_PER,APE_PER,NOM_PER,COD_DIS FROM PERSONAL


WHERE COD_DIS='D03';

Uso del operador diferente (<> !=)

SELECT COD_CAR,NOM_CAR FROM CARGO


WHERE COD_CAR <> 'C003';

SELECT COD_CAR,NOM_CAR FROM CARGO


WHERE COD_CAR != 'C003';

Uso del operador menor que (<)

SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE STO_ACT < 15;

E-Mail: vbnet_developer@hotmail.com
Pagina 37
ORACLE Machanay Sulca, Carlos E.

Uso del operador mayor que (>)

SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE PRE_PRO > 3100;

Uso del operador menor o igual que (< =)

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE


WHERE APE_CLI <='LOAYZA MARENGO';

Uso del operador mayor o igual que (> =)

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE


WHERE APE_CLI >='SALAZAR RUIZ';

E-Mail: vbnet_developer@hotmail.com
Pagina 38
ORACLE Machanay Sulca, Carlos E.

Manipulación de datos tipo Fecha y Hora.

Fecha del sistema

SELECT SYSDATE FROM DUAL;

Uso de la función TO_CHAR con datos tipo fecha

TO_CHAR(expresión_fecha,’patron_formato_fecha’)

Convierte la expresión_fecha a una cadena con el formato de fecha


especificado en patron_formato_fecha.

expresión_fecha: representa la fecha que se desea convertir a cadena con


formato fecha.

patron_formato_fecha: especifica el formato de la cadena que


representa una fecha.

Mostrar solo fecha

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') AS FECHA FROM


DUAL;

Mostrar solo hora

SELECT TO_CHAR(SYSDATE,'HH:MI:SS') AS HORA FROM DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 39
ORACLE Machanay Sulca, Carlos E.

Búsqueda basada en cadena de caracteres

Operador LIKE

Sintaxis

SELECT * | FROM lista_columnas


FROM nombre_tabla
WHERE columna LIKE expresión_cadena_a_buscar

Comodín del operador LIKE.

Comodín Descripción
% indica que en la posición del comodín puede ir cualquier
cadena de caracteres, incluso una cadena nula.
- indica que en la posición del comodín puede ir cualquier
cadena de caracteres, no nulo.

Uso del comodín (%)

Permite generar la busqueda por el incio del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE


WHERE APE_CLI LIKE 'PAL%';

Permite generar la búsqueda por el final del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE


WHERE APE_CLI LIKE '%IVA';

E-Mail: vbnet_developer@hotmail.com
Pagina 40
ORACLE Machanay Sulca, Carlos E.

Permite generar la búsqueda por cualquier lado del campo.

SELECT COD_CLI,NOM_CLI,APE_CLI,DIR_CLI FROM CLIENTE


WHERE NOM_CLI LIKE '%MARIA%';

Uso del comodín ( _ )

SELECT COD_PRO,NOM_PRO FROM PRODUCTO


WHERE NOM_PRO LIKE '%43_';

Búsqueda basada en rango

El operador BETWEEN permite ejecutar consultas que ejecutan búsquedas


basadas en rango de valores.

Sintaxis

SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna BETWEEN valor_inicial AND valor_final

between indica que el valor en columna debe encontrarse en el rango


definido por valor_inicial y valor _final.

columna: es la columna en la que se busca según el rango especificado por


valor_inicial y valor_final.

valor_inicial, valor_final: establecen los límites del rango de valores en


el que se basa la búsqueda.

E-Mail: vbnet_developer@hotmail.com
Pagina 41
ORACLE Machanay Sulca, Carlos E.

Búsqueda basada en rango de valores numéricos.

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM


PRODUCTO
WHERE STO_ACT BETWEEN 10 AND 14;

Búsqueda basada en rango de valores cadena.

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM


PRODUCTO
WHERE NOM_PRO BETWEEN 'CO' AND 'EX'
ORDER BY NOM_PRO;

Búsqueda basada en rango de valores fecha.

SELECT TOTAL,NUM_COMP FROM COMPROBANTE


WHERE FECHA_EMISION BETWEEN '02/02/2009' AND
'03/03/2009';

E-Mail: vbnet_developer@hotmail.com
Pagina 42
ORACLE Machanay Sulca, Carlos E.

Búsqueda basada en conjunto de valores.

El operador IN permite ejecutar consultas que ejecutan búsquedas basadas en


conjunto de valores.

Sintaxis

SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna [NOT] IN (conjunto_de_valores)

Busqueda en conjunto de valores

SELECT COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM


PRODUCTO
WHERE COD_PRO IN('P0000010','P0000080','P0000041');

Manipulación de valores NULL

Un valor NULL indica que el valor es desconocido, no aplicable, o que


simplemente se registrara posteriormente. Un valor NULL es distinto a una
cadena vacía o al valor cero (0), y también es distinto a cualquier otro valor
NULL.

La comparación u operación entre dos valores NULL, o entre un valor NULL y


cualquier otro valor retorna un valor desconocido (otro valor NULL), ya que
cada valor NULL es desconocido.

Antes de ejecutar un valor NULL, ejecute la siguiente sentencia.

UPDATE PRODUCTO
SET STO_ACT=''
WHERE COD_PRO IN('P0000001','P0000005');

E-Mail: vbnet_developer@hotmail.com
Pagina 43
ORACLE Machanay Sulca, Carlos E.

Ahora muestre los valores NULL.

SELECT COD_PRO,NOM_PRO,PRE_PRO FROM PRODUCTO


WHERE STO_ACT IS NULL;

Calculo con valores de columnas que contienen valores NULL.

SELECT COD_PRO,NOM_PRO,PRE_PRO,
STO_MIN,STO_ACT,STO_MIN + STO_ACT AS STOCK FROM
PRODUCTO
WHERE COD_PRO IN('P0000001','P0000005');

Calculo con valores de columnas que contienen valores NULL –


uso de la función NVL

Sintaxis

NVL (expresión_a_verificar, valor_de_remplazo)

expresión_a_verificar: es una expresión cuyo valor puede ser NULL.

valor_de_remplazo: es el valor con que se remplaza


expresión_a_verificar en el caso que esta fuera NULL.

Ejecutando la consulta empleando la función NVL.

SELECT COD_PRO,NOM_PRO,PRE_PRO,
STO_MIN,NVL(STO_ACT,0),STO_MIN + NVL(STO_ACT,0) AS
STOCK FROM PRODUCTO
WHERE COD_PRO IN('P0000001','P0000005');

E-Mail: vbnet_developer@hotmail.com
Pagina 44
ORACLE Machanay Sulca, Carlos E.

Laboratorio 05:

Utilizando el esquema COMERCIAL.

1. Mostrar todos productos que sean de tipo DIGITAL.

2. Mostrar todos los clientes que al final de su nombre termine con RIA.

3. Mostrar a todo el personal que al inicio de su apellido empiece con C.

E-Mail: vbnet_developer@hotmail.com
Pagina 45
ORACLE Machanay Sulca, Carlos E.

4. Mostrar todos los productos que tenga en stock de 10 a 15 unidades.

5. Mostrar todos los productos que empiece con la letra T, y que tenga en
stock de 1 a 15 unidades.

6. Mostrar todos los productos de la línea ESCRITORIO, que tenga en stock


menos de 50 unidades y el precio este entre 300 y 1000.

7. Mostrar todos los productos que empiece con la letra TV y que sean de
la marca MIRAY.

E-Mail: vbnet_developer@hotmail.com
Pagina 46
ORACLE Machanay Sulca, Carlos E.

8. Mostrar todas las líneas que terminen con la letra O.

9. Mostrar todos los productos que utilicen GAS.

10. Mostrar todos los clientes que tenga los siguientes códigos: C0000001,
C0000018, C0000020.

Preguntas de investigación.

11. Mostrar todos los clientes que al inicio de sus datos sea mayúscula, y
que tenga la letra Z.

12. Elevar a la potencia 5 ^ 2.

E-Mail: vbnet_developer@hotmail.com
Pagina 47
ORACLE Machanay Sulca, Carlos E.

Funciones ORACLE
Funciones numérica

Las funciones numéricas ejecutan un cálculo en base a valores de entrada


recibidos como parámetros retornando como valor numérico.

MOD (expresionNumerica1, expresionNumerica2)


Retorna el residuo de la división.

Ejemplo

SELECT MOD(11,2) FROM DUAL;

POWER (expresionNumerica, n)
Retorna el resultado de elevar expresionNumerica a la potencia n.

Ejemplo

SELECT POWER(4,3) FROM DUAL;

ROUND (expresionNumerica, presicion)


Retorna el valor de expresionNumerica redondeando a la presicion
especificada.

Ejemplo

SELECT ROUND(230.5879,0)FROM DUAL; 231


SELECT ROUND(230.5879,1)FROM DUAL; 230.6
SELECT ROUND(230.5879,2)FROM DUAL; 230.59
SELECT ROUND(230.5879,3)FROM DUAL; 230.588
SELECT ROUND(230.5879,4)FROM DUAL; 230.5879

E-Mail: vbnet_developer@hotmail.com
Pagina 48
ORACLE Machanay Sulca, Carlos E.

SQRT (expresionNumerica)
Retorna la raiz cuadrada de expresionNumerica.

Ejemplo

SELECT SQRT(9)FROM DUAL;

TRUNC (expresionNumerica, [n])


Trunc espresionNumerica a n lugares decimales.

Ejemplo

SELECT TRUNC(3457.5252,2) FROM DUAL;

Funciones Cadena

Ejecutan operaciones sobre una cadena ingresada como parámetro, y


devuelven una cadena o valor numérico o información sobre el juego de
caracteres.

CONCAT (expresionCadena1, expresionCadena2)


Retorna expresionCadena1 concatenando con expresionCadena2.

Ejemplo

SELECT CONCAT('ALIANZA LIMA ', 'CAMPEON 2009' ) AS EQUIPO


FROM DUAL;

INITCAP (expresionCadena)
Retorna expresionCadena con la inicial de cada palabra mayúscula.

Ejemplo

SELECT INITCAP('carlos eduardo machanay sulca') AS CLIENTE


FROM DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 49
ORACLE Machanay Sulca, Carlos E.

LENGTH (expresionCadena)
Retorna longitud de expresionCadena.

Ejemplo

SELECT LENGTH('ALIANZA LIMA')AS EQUIPO FROM DUAL;

LOWER (expresionCadena)
Retorna expresionCadena, pero todo en minúscula.

Ejemplo

SELECT LOWER(‘JAVA’) AS SOFTWARE FROM DUAL;

LTRIM (expresionCadena1 [,expresionCadena2])


Elimina los espacios en blanco por izquierda.

Ejemplo

SELECT LTRIM(' ORACLE Y JAVA')AS SOFTWARE FROM DUAL;

REPLACE (expresionCadena1, expresionCadena2,


expresionCadena3)
Remplaza en expresionCadena1 todas las ocurrencias de expresionCadena2
con expresionCadena3.

Ejemplo

SELECT REPLACE('EL MEJOR EQUIPO DEL PERU UNIVERSITARIO '


,'UNIVERSITARIO','ALIANZA LIMA') AS EQUIPO FROM DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 50
ORACLE Machanay Sulca, Carlos E.

RTRIM (expresionCadena1 [,expresionCadena2])


Elimina los espacios en blanco por derecha.

Ejemplo

SELECT RTRIM('PL/SQL DEVELOPER ') AS MANUAL FROM DUAL;

SELECT RTRIM('PL/SQL DEVELOPER','DEVELOPER') AS MANUAL


FROM DUAL;

SUBSTR (expresionCadena, inicio, n)


A partir de expresionCadena retorna una subcadena de n caracteres de
longitud generada a partir de la posición inicio.

Ejemplo

SELECT SUBSTR('ALIANZA LIMA CAMPEON 2009',1,12) AS EQUIPO


FROM DUAL;

UPPER (expresionCadena)
Retorna expresionCadena, pero todo en mayúscula.

Ejemplo

SELECT UPPER('oracle developer') AS MANUAL FROM DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 51
ORACLE Machanay Sulca, Carlos E.

Funciones Fecha y Hora

Las funciones de fecha y hora operan sobre valores de fecha (DATE).

ADD_MONTHS (expresionFecha,n)
Incrementa expresionFecha en n meses y genera una nueva fecha.

Ejemplo

SELECT ADD_MONTHS(SYSDATE,4)AS FECHA FROM DUAL;

EXTRACT (parteFecha, from expresionFecha)


Entrega a partir de expresionFecha, la parteFecha especificada. parteFecha
puede ser una de las siguientes:

YEAR
MONTH
DAY
HOUR
MINUTE
SECOND

Ejemplo

SELECT EXTRACT(YEAR FROM SYSDATE) AS AÑO FROM DUAL;

LAST_DAY (expresionFecha)
Entrega la fecha del último día del mes especificado:

Ejemplo

SELECT LAST_DAY(SYSDATE) AS FECHA FROM DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 52
ORACLE Machanay Sulca, Carlos E.

NEXT_DAY (expresionFecha, diaSemana)


Entrega la fecha posterior más cercana a expresionFecha y que cae en el
diaSemana especificado.

Ejemplo

SELECT NEXT_DAY('25/08/2009','VIERNES') AS FECHA FROM


DUAL;

ROUND (expresionFecha, Unidad)


Entrega la nueva fecha que es el resultado de redondear expresionFecha a la
unidad especificada.

Ejemplo

SELECT ROUND(TO_DATE('25/02/2009'),'YEAR') AS FECHA FROM


DUAL;

TO_CHAR (expresionFecha, formato [,idioma]) )


Convierte expresionFecha a una cadena con el formato e idioma
especificados.

Ejemplo

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY')AS FECHA FROM


DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 53
ORACLE Machanay Sulca, Carlos E.

Elementos para formato

Elemento Descripción
DL formato de fecha largo.
DS formato de fecha corto.
DAY nombre del dia de la semana.
DY nombre abreviado del dia de la semana.
D dia de la semana(1 - 7)
DD dia del mes (1 - 31)
DDD dia del año (1 - 365)
MONTH nombre del mes.
MON nombre abreviado del mes.
MM mes del año (01 - 12)
YYYY año con 4 dígitos.
YY año con 2 digitos.
HH hora del dia (1 - 12)
HH24 hora del dia (0 - 23)
MI minutos (0 - 59)
SS segundos (0 – 59)
TS formato de hora.

TO_DATE (‘cadenaFormatoFecha’ [,formato] [,formato])


Entrega un tipo Fecha-Hora a partir de ‘cadenaFormatoFecha’ usando el
formato e idioma especificados.

Ejemplo

SELECT TO_DATE('25/08/2009','DD/MM/YYYY')AS FECHA FROM


DUAL;

E-Mail: vbnet_developer@hotmail.com
Pagina 54
ORACLE Machanay Sulca, Carlos E.

Funciones de conversión de tipos

CAST (expresión as tipoDato)


Convierte el valor de la expresión al tipo especificado en tipoDato.

Ejemplo

SELECT CAST(SYSDATE AS CHAR(10))AS FECHA FROM DUAL;

Otras funciones

NVL (expresión1, expresión2)


Si expresión1 es NULL, la funcion retorna expresión2.

NVL2 (expresión1, expresión2, expresión3)


Si expresión1 no es NULL, la funcion retorna expresión2, Si expresión1 es
NULL, la funcion retorna expresión3 .

USER
Entrega nombre del usuario en la sesión actual.

E-Mail: vbnet_developer@hotmail.com
Pagina 55
ORACLE Machanay Sulca, Carlos E.

Laboratorio 06:

1. Resuelva la siguiente operación.

2. Agregar un trimestre a la fecha del sistema.

3. Redondear el siguiente número a 2 decimales 563.256

4. Mostrar el mes actual en texto.

5. Calcular su edad actual.

E-Mail: vbnet_developer@hotmail.com
Pagina 56
ORACLE Machanay Sulca, Carlos E.

Funciones de agregación y
agrupamiento de datos
Funciones de agregación

Son funciones que permite efectuar una operación aritmética que resume los
valores de una columna de toda la tabla o que resume los valores de una
columna agrupados según determinado criterio.

La función produce un solo valor que es el resumen de la tabla, o de cada una


de los grupos.

Función Descripción
AVG() Retorna el promedio de los valores de una columna o
expresión.
COUNT() Retorna la cuenta del número de filas de una consulta.
MAX() Retorna el valor máximo de una columna o expresión.
MIN() Retorna el valor mínimo de una columna o expresión.
SUM() Retorna la suma de los valores de una columna o expresión.

Puede usar las funciones de agregación con la declaración SELECT o en


combinación con la cláusula GROUP BY.

Utilizando el esquema COMERCIAL.

Uso de la función AVG()

Sintaxis

AVG ( [DISTINCT ] Expresión_Numerica)

DISTINCT indica que debe eliminarse los valores duplicados de


Expresión_Numerica antes de evaluar la función.

Ejemplo: Obtener el precio promedio de los productos.

SELECT AVG(PRE_PRO) AS PRECIO FROM PRODUCTO;

E-Mail: vbnet_developer@hotmail.com
Pagina 57
ORACLE Machanay Sulca, Carlos E.

Ejemplo: Obtener el precio promedio de los productos de la línea AUDIO.

SELECT AVG(PRE_PRO) AS PRECIO FROM PRODUCTO


WHERE COD_LIN='L008';

Ejemplo: Obtener el stock promedio de los productos cuyo precio sea mayor
a 600.

SELECT AVG(STO_ACT)AS STOCK FROM PRODUCTO


WHERE PRE_PRO > 600;

Uso de la función COUNT()

Sintaxis

COUNT ( [DISTINCT ] Expresión)


COUNT ( * )

DISTINCT indica que debe eliminarse los valores duplicados de la Expresión


antes de evaluar la función.

COUNT (Expresion) Ignora los valores NULL de expresión; COUNT (*) se


utiliza para contar filas, por lo que no ignora los valores NULL.

Ejemplo: Cuenta los productos registrados.

SELECT COUNT(*) AS PRODUCTO FROM PRODUCTO;

E-Mail: vbnet_developer@hotmail.com
Pagina 58
ORACLE Machanay Sulca, Carlos E.

Uso de las funciones MAX () Y MIN ()

Sintaxis

MAX (Expresión)
MIN (Expresión)

Expresión: indica los valores para los que se debe hallar el máximo y
mínimo valor.

Ejemplo: Stock mas alto y stock mas bajo.

SELECT MAX(STO_ACT) AS "STOCK MAXIMO", MIN(STO_ACT) AS


"STOCK MINIMO" FROM PRODUCTO;

Ejemplo: Nombre del primer producto y del ultimo producto.

SELECT MIN(NOM_PRO)AS "PRODUCTO MIN" ,MAX(NOM_PRO) AS


"PRODUCTO MAX" FROM PRODUCTO;

E-Mail: vbnet_developer@hotmail.com
Pagina 59
ORACLE Machanay Sulca, Carlos E.

Uso de la función SUM ()

Sintaxis

SUM ( [DISTINCT ] Expresión)

DISTINCT indica que debe eliminarse los valores duplicados de la Expresión


antes de evaluar la función.

Ejemplo: Stock total de los productos.

SELECT SUM(STO_ACT)AS "TOTAL STOCK" FROM PRODUCTO;

Ejemplo: Stock total de los productos que son de la línea AUDIO.

SELECT SUM(STO_ACT)AS "TOTAL STOCK" FROM PRODUCTO


WHERE COD_LIN='L008';

E-Mail: vbnet_developer@hotmail.com
Pagina 60
ORACLE Machanay Sulca, Carlos E.

Cláusula GROUP BY

Se utiliza para agrupar las filas en base a determinado criterio, y luego


ejecutar una operación que resume un atributo para cada uno de los grupos
así formados.

Sintaxis

SELECT lista_columnas, funcion_agregacion(columna),


funcion_agregacion(columna),
FROM n_tabla
[ WHERE condicion_filas ]
GROUP BY lista_columnas
[ HAVING condicion_grupos ]

Las columnas presentes en lista_columnas de la clausula GROUP BY deben


necesariamente estar presentes en la lista_columnas de SELECT.

• Cualquier columna presente en SELECT, y que no se encuentre en la


lista_columnas de GROUP BY debe estar afectada por una función
de agregación.

• condicion_grupos en la clausula HAVING permite establecer una


expresión logica que indica que los grupos a mostrar en el resultado son
aquellos para los que el valor de la expresión es verdadero.

• Una consulta GROUP BY solo entrega una fila por cada grupo
generado. Esta fila muestra el resultado de la funcion_agregacion
aplicada sobre el grupo. No muestra el contenido del grupo.

• Cuando se utiliza GROUP BY sobre una columna que contiene valores


NULL, estos se procesan como grupo.

E-Mail: vbnet_developer@hotmail.com
Pagina 61
ORACLE Machanay Sulca, Carlos E.

Ejemplo: Cantidad de productos registrados por cada línea.

SELECT COD_LIN AS LINEA,COUNT(COD_PRO)AS PRODUCTO


FROM PRODUCTO
GROUP BY COD_LIN;

Cláusula GROUP BY con el operador CUBE

Resume los valores de grupos. El operador CUBE se usa normalmente para


producir promedios acumulados o sumas acumuladas.

Ejemplo: GROUP BY agrupa las filas de la tabla PRODUCTO en base a la


combinación de los valores de las columnas, COD_LIN y para cada una de las
combinaciones obtenidas calcula el promedio de columna PRE_PRO.

SELECT COD_LIN AS LINEA,AVG(PRE_PRO)AS "PRECIO PROMEDIO"


FROM PRODUCTO
GROUP BY CUBE(COD_LIN)
ORDER BY COD_LIN;

E-Mail: vbnet_developer@hotmail.com
Pagina 62
ORACLE Machanay Sulca, Carlos E.

Uso de GROUP BY con el operador GROUPING SETS

Permite que una sola consulta GROUP BY se presente grupos formados por
distintas combinaciones de atributos.

Uso del operador GROUPING SETS

Este ejemplo muestra la suma acumulada del STO_ACT para tres


combinaciones de atributos.

• (COD_LIN, COD_PRV, PRE_PRO)


• (COD_LIN, PRE_PRO)
• (COD_PRV, PRE_PRO)

SELECT COD_LIN,COD_PRV,PRE_PRO,SUM(STO_ACT) AS "STOCK


ACTUAL" FROM PRODUCTO
GROUP BY GROUPING SETS(
(COD_LIN,COD_PRV,PRE_PRO),
(COD_LIN,PRE_PRO),
(COD_PRV,PRE_PRO))
ORDER BY COD_LIN,COD_PRV,PRE_PRO;

E-Mail: vbnet_developer@hotmail.com
Pagina 63
ORACLE Machanay Sulca, Carlos E.

Uso de la condición HAVING ()

Cuando ejecutamos una consulta GROUP BY es posible establecer un filtro de


grupos utilizando la cláusula HAVING.

Ejemplo: GROUP BY agrupa las filas de la tabla PRODUCTO en base a la


combinación de los valores de las columnas, COD_LIN y COD_MAR, y para
cada una de las combinaciones obtenidas calcula el promedio de columna
PRE_PRO. Luego, filtra los grupos para mostrar solo aquellos definidos.

SELECT COD_LIN AS LINEA,COD_MAR AS


MARCA,AVG(PRE_PRO)AS "PRECIO PROMEDIO" FROM PRODUCTO
GROUP BY CUBE(COD_LIN,COD_MAR)
HAVING COD_LIN='L005';
ORDER BY COD_LIN,COD_MAR;

E-Mail: vbnet_developer@hotmail.com
Pagina 64
ORACLE Machanay Sulca, Carlos E.

Laboratorio 07:

Utilizando el esquema COMERCIAL.

1. Mostrar el precio promedio de todos productos que sean de tipo


DIGITAL.

2. Incrementar el código del cliente más 1.

3. Mostrar el total del stock de los productos que pertenecen a la línea


ESCRITORIO.

4. Mostrar el total del stock de los productos por línea que sea menor a
150 unidades.

5. Mostrar el precio total de las líneas de productos que estén entre 1000
a 6000 soles.

E-Mail: vbnet_developer@hotmail.com
Pagina 65
ORACLE Machanay Sulca, Carlos E.

6. Mostrar los productos que se repitan y que cantidad

7. Mostrar el precio máximo a la raíz cuadrada, mostrando solo dos


decimales.

8. Mostrar el total de stock por cada línea de producto, si el stock es


mayor a 200 unidades muestra un mensaje en el siguiente campo
STOCK SUFICIENTE de lo contrario STOCK INSUFICIENTE.

9. Mostrar la cantidad de los productos más 1.

10. Mostrar el precio mínimo, el stock máximo y la cantidad de productos.

11. Mostrar los productos, donde realice cálculo del precio por cantidad (5
unidades) me da el importe, donde muestre los productos cocina y que
el importe sea mayor a 3000 soles y que sea de la marca INDURAMA.

E-Mail: vbnet_developer@hotmail.com
Pagina 66
ORACLE Machanay Sulca, Carlos E.

Consultas multitablas
Consultas correlacionadas

Un Join, combinación o consulta correlacionada es la consulta que selecciona


columnas de dos tablas o conjunto de filas, y las entrega en un único conjunto
de resultados. Las filas de las tablas o conjunto de filas se combinan
relacionando valores comunes, típicamente de clave primaria y clave foránea.

Sintaxis

SELECT lista_columnas
FROM tabla1
tipo_join JOIN tabla2 ON condicion_del_join

• lista_columnas es la lista de columnas a mostrar en el resultado de la


consulta. Se recomienda que cada columna se calificada con alias de la
tabla a la cual pertenece.

• tipo_join indica si el join es interior (INNER), exterior (OUTER) o


irrestricto (CROSS).

• condicion_del_join es una expresión que indica en base a que


columnas de cada una de las tablas se establece la relación entre ellas.

Una combinación (join) puede ser cualquiera de los siguientes tipos.

• INNER JOIN
• OUTER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
• CROSS JOIN

INNER JOIN.

Un INNER JOIN es la consulta correlacionada que combina todas las filas que
están relacionadas de las dos tablas o conjunto de filas.

E-Mail: vbnet_developer@hotmail.com
Pagina 67
ORACLE Machanay Sulca, Carlos E.

Uso del INNER JOIN.

Mostrar los nombres de los distritos de la tabla cliente que vivan en LIMA.

SELECT CLIENTE.COD_CLI AS
CODIGO,CLIENTE.RAZON_SOCIAL,CLIENTE.RUC_CLI AS
RUC,DISTRITO.NOM_DIS AS DISTRITO FROM CLIENTE
INNER JOIN DISTRITO ON CLIENTE.COD_DIS=DISTRITO.COD_DIS
WHERE DISTRITO.NOM_DIS='LIMA';

Usando el alias como referencia a las tablas.

SELECT C.COD_CLI AS CODIGO,C.RAZON_SOCIAL,C.RUC_CLI AS


RUC,D.NOM_DIS AS DISTRITO FROM CLIENTE C
INNER JOIN DISTRITO D ON C.COD_DIS=D.COD_DIS
WHERE D.NOM_DIS='LIMA';

E-Mail: vbnet_developer@hotmail.com
Pagina 68
ORACLE Machanay Sulca, Carlos E.

Uso del INNER JOIN con 3 tablas.

Mostrar los datos de la tabla comprobante, que se ha el numero CP00000004,


que tipo de comprobante es, así como el importe.

SELECT COMPROBANTE.NUM_COMP AS
NUMERO,TIPOCOMPROBANTE.NOM_TIC AS
COMPROBANTE,COMPROBANTE.FECHA_EMISION AS FECHA,
SUM(DETALLE.PRECIO * DETALLE.CANT) AS IMPORTE
FROM COMPROBANTE
INNER JOIN DETALLE ON
COMPROBANTE.NUM_COMP=DETALLE.NUM_COMP
INNER JOIN TIPOCOMPROBANTE ON
COMPROBANTE.COD_TIC=TIPOCOMPROBANTE.COD_TIC
GROUP BY
COMPROBANTE.NUM_COMP,TIPOCOMPROBANTE.NOM_TIC,COMP
ROBANTE.FECHA_EMISION
HAVING COMPROBANTE.NUM_COMP='CP00000004';

Uso del OUTER JOIN

Un OUTER JOIN es la consulta correlacionada que entrega todas las filas


que están relacionadas, y además.

Las filas no relacionadas de la tabla izquierda (LEFT OUTER JOIN)


Las filas no relacionadas de la tabla derecha (RIGHT OUTER JOIN)
Las filas no relacionadas de ambas tablas (FULL OUTER JOIN)

Se considera como la tabla izquierda, a aquella que se menciona primero en


la cláusula FROM.

E-Mail: vbnet_developer@hotmail.com
Pagina 69
ORACLE Machanay Sulca, Carlos E.

Mostrar los productos que han sido vendidos.

SELECT PRODUCTO.COD_PRO AS CODIGO,PRODUCTO.NOM_PRO


AS PRODUCTO,DETALLE.CANT FROM PRODUCTO
LEFT OUTER JOIN DETALLE ON
PRODUCTO.COD_PRO=DETALLE.COD_PRO
WHERE NOT DETALLE.CANT IS NULL;

Uso de CROSS JOIN

Es una consulta correlacionada que combina cada una de la filas de una de las
tablas con cada una de las filas de la otra tabla.

No es necesario que exista una columna en común para ejecutar un CROSS


JOIN. Esta consulta también se le conoce como el producto cartesiano de
dos tablas.

E-Mail: vbnet_developer@hotmail.com
Pagina 70
ORACLE Machanay Sulca, Carlos E.

SELECT
MARCA.COD_MAR,MARCA.NOM_MAR,PRODUCTO.COD_PRO,PROD
UCTO.NOM_PRO FROM MARCA
CROSS JOIN PRODUCTO;

Operador UNION

Sintaxis

Sentencia_SELECT_1
UNION [ALL]
Sentencia_SELECT_2
UNION [ALL]
Sentencia_SELECT_3

El operador UNION une los resultados de dos o más instrucciones SELECT en


un solo conjunto de resultados.

Use el operador UNION cuando los datos que desea recuperar residen en
diferentes localizaciones y no puede acceder a ellos con una sola consulta.
Cuando use el operador UNION considere los siguiente.

• SQL Server requiere que las consultas a las tablas referenciadas tenga
el mismo número de columnas, los mismos tipos de datos, y que las
columnas se encuentren en el mismo orden en la lista de cada uno de
los SELECT.

E-Mail: vbnet_developer@hotmail.com
Pagina 71
ORACLE Machanay Sulca, Carlos E.

• SQL Server elimina las filas duplicadas en el resultado. Sin embargo, si


usa la opción ALL, todas las filas (incluso las duplicadas) son incluidas
en el resultado.
• Debe especificar los nombres de las columnas en la primera instrucción
SELECT. Por consiguiente, si quiere definir los nuevos títulos de las
columnas para el resultado, debe crear los seudónimos de las columnas
en la primera instrucción SELECT.

• Si quiere que el resultado completo sea devuelto en un orden


especifico, debe especificar el orden e incluir la cláusula ORDER BY
dentro de la sentencia UNION.

Uso del operador UNION

SELECT COD_PRO,PRE_PRO FROM PRODUCTO


UNION
SELECT COD_PRO,PRECIO FROM DETALLE;

E-Mail: vbnet_developer@hotmail.com
Pagina 72
ORACLE Machanay Sulca, Carlos E.

Para explicar como trabaja el operador UNION ALL y además los operadores
INTERSECT y MINUS, vamos a crear dos pequeñas tablas con algunos datos.

Crear la tabla OPERARIOS

CREATE TABLE OPERARIOS


(IDOPERARIO VARCHAR2(4),
NOMBRE VARCHAR2(15));

Insertando 5 registros

INSERT INTO OPERARIOS VALUES('0967','ANTONIO');


INSERT INTO OPERARIOS VALUES('0245','NANCY');
INSERT INTO OPERARIOS VALUES('0376','CARLOS');
INSERT INTO OPERARIOS VALUES('0879','ROSA');
INSERT INTO OPERARIOS VALUES('0147','MARCOS');

Crear la tabla SUPERVISORES

CREATE TABLE SUPERVISORES


(IDSUPERVISOR VARCHAR2(4),
NOMBRE VARCHAR2(15));

Insertando 2 registros

INSERT INTO SUPERVISORES VALUES('0376','CARLOS');


INSERT INTO SUPERVISORES VALUES('0713','GUMERCINDO');

Ejecución de UNION

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE


FROM SUPERVISORES
UNION
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;

E-Mail: vbnet_developer@hotmail.com
Pagina 73
ORACLE Machanay Sulca, Carlos E.

Ejecución de UNION ALL

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE


FROM SUPERVISORES
UNION ALL
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;

Uso del operador INTERSECT

El operador INTERSECT, al igual que el operador UNION, permite procesar


filas de dos consultas. INTERSECT entrega las filas que son comunes a las
dos consultas.

SELECT IDSUPERVISOR AS EMPLEADO,NOMBRE


FROM SUPERVISORES
INTERSECT
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;

E-Mail: vbnet_developer@hotmail.com
Pagina 74
ORACLE Machanay Sulca, Carlos E.

Uso del operador MINUS

El operador MINUS construye una relación de filas formado por las filas que
aparecen en el primer conjunto, pero que no aparecen en el segundo
conjunto.

SELECT IDOPERARIO AS EMPLEADO,NOMBRE


FROM OPERARIOS
MINUS
SELECT IDSUPERVISOR,NOMBRE
FROM SUPERVISORES;

Consulta AUTOJOIN

Es una consulta correlacionada en la que una tabla se combina consigo misma


para generar un nuevo conjunto de resultado.

Para generar un ejemplo crearemos una tabla que tenga autorelacion. Esta
tabla contiene clave foránea que apunta a la clave primaria en la misma
tabla.

Crear la tabla TRABAJADOR, establecer clave primaria.

CREATE TABLE TRABAJADOR


(IDTRABAJADOR NUMBER PRIMARY KEY,
APELLIDOS VARCHAR2(30)NOT NULL,
JEFE NUMBER NULL);

Estableciendo clave foránea.

ALTER TABLE TRABAJADOR


ADD CONSTRAINT FK_TRABAJADOR_TRABAJADOR
FOREIGN KEY(JEFE) REFERENCES TRABAJADOR;

E-Mail: vbnet_developer@hotmail.com
Pagina 75
ORACLE Machanay Sulca, Carlos E.

Insertando 7 registros.

INSERT INTO TRABAJADOR VALUES(102,'ARDILES SOTO',NULL);


INSERT INTO TRABAJADOR VALUES(101,'CAMACHO
SARAVIA',102);
INSERT INTO TRABAJADOR VALUES(105,'VILCHEZ SANTOS',102);
INSERT INTO TRABAJADOR VALUES(103,'SANCHEZ ALIAGA',101);
INSERT INTO TRABAJADOR VALUES(104,'CASTRO AVILA',101);
INSERT INTO TRABAJADOR VALUES(107,'URRUNAGA TAPIA',101);
INSERT INTO TRABAJADOR VALUES(106,'JUAREZ PINTO',105);

Ejemplo: crear una consulta que muestre una lista de trabajadores. La lista
debe mostrar apellidos del jefe de cada trabajador.

SELECT T1.IDTRABAJADOR,T1.APELLIDOS,T2.APELLIDOS AS JEFE


FROM TRABAJADOR T1 INNER JOIN TRABAJADOR T2
ON T1.JEFE= T2.IDTRABAJADOR;

Modifique la consulta para que también se muestre al trabajador 102.

SELECT T1.IDTRABAJADOR,T1.APELLIDOS,T2.APELLIDOS AS JEFE


FROM TRABAJADOR T1 LEFT OUTER JOIN TRABAJADOR T2
ON t1.jefe= t2.idtrabajador;

E-Mail: vbnet_developer@hotmail.com
Pagina 76
ORACLE Machanay Sulca, Carlos E.

Subconsultas

Una subconsulta es una declaración SELECT anidada dentro de una sentencia


SELECT, INSERT, UPDATE o DELETE o dentro de otra subconsulta.

Las consultas son de los tipos siguientes:

Subconsulta que entrega un solo valor (1 fila, 1 columna)


Subconsulta que entrega un conjunto de valores (varias filas, 1 columna)

Una subconsulta se especifica entre paréntesis.

Test de pertenencia

SELECT COD_PRO,NOM_PRO FROM PRODUCTO


WHERE COD_PRO NOT IN(SELECT COD_PRO FROM DETALLE)
ORDER BY COD_PRO;

E-Mail: vbnet_developer@hotmail.com
Pagina 77
ORACLE Machanay Sulca, Carlos E.

Test de existencia – uso de EXISTS

Productos que han sido vendidos.

SELECT PRODUCTO.COD_PRO, PRODUCTO.NOM_PRO


FROM PRODUCTO
WHERE EXISTS(SELECT *FROM DETALLE
WHERE PRODUCTO.COD_PRO=DETALLE.COD_PRO);

E-Mail: vbnet_developer@hotmail.com
Pagina 78
ORACLE Machanay Sulca, Carlos E.

Inserción de filas con datos leídos por SELECT.

Sinstaxis

INSERT [INTO] tabla_destino


SELECT lista_columnas
FROM tabla_origen
[WHERE condicion_filas_tabla_origen]

Inserción de filas.

Antes de empezar, crearemos una tabla.

CREATE TABLE TABLA_PRUEBA


(DISTRITO VARCHAR2(60));

Ahora insertaremos los datos de la tabla distrito a la tabla tabla_prueba.

INSERT INTO TABLA_PRUEBA


SELECT NOM_DIS FROM DISTRITO;

Ahora revisemos la tabla TABLA_PRUEBA.

SELECT *FROM TABLA_PRUEBA;

E-Mail: vbnet_developer@hotmail.com
Pagina 79
ORACLE Machanay Sulca, Carlos E.

Laboratorio 08:

Utilizando el esquema COMERCIAL.

1. Mostrar los productos que sean de la línea MUSICA.

2. Mostar el cargo del personal, su nombre del personal que emitió


el comprobante numero CP00000001.

3. Mostrar los productos que su proveedor se a del país de MEXICO.

4. Mostrar el proveedor de los productos vendidos.

E-Mail: vbnet_developer@hotmail.com
Pagina 80
ORACLE Machanay Sulca, Carlos E.

5. Mostrar todos los clientes que todavía no han generado alguna compra.

6. Mostrar el total de los importes vendidos de la línea MUSICA.

7. Mostrar los productos procedentes del país de MEXICO y que no sean de


la marca SAMSUNG.

8. Mostrar el total redondeado de las compras por cada cliente.

9. Mostrar el total del precio por cada línea, que sea mayor a los 4000.

E-Mail: vbnet_developer@hotmail.com
Pagina 81
ORACLE Machanay Sulca, Carlos E.

10. Mostrar que tipo de comprobante, número del día, nombre del mes que
han sido emitidos.

11. Mostrar el código del producto más 1.

12. Mostrar los productos vendidos que sean de la línea VIDEO.

13. Mostrar los comprobantes emitidos de los clientes que sean del
distrito de LIMA y que su razón social se a S.A.

E-Mail: vbnet_developer@hotmail.com
Pagina 82
ORACLE Machanay Sulca, Carlos E.

14. Mostrar los productos vendidos, el stock actual, el precio por unidad, y
el precio de todo el stock actual.

15. Mostrar el personal donde su teléfono no empiece con el número 3 y


que sea del distrito de ATE.

16. Mostrar los productos que en el penúltimo carácter sea 3 y que sean de
la marca MIRAY.

17. Mostar los productos donde usted pueda obtener la ganancia liquida de
los productos DVD, de la línea AUDIO, y la ganancia se mayor a 45.

E-Mail: vbnet_developer@hotmail.com
Pagina 83
ORACLE Machanay Sulca, Carlos E.

18. Mostrar el total de ventas por meses.

19. Mostrar el total de ventas por distrito, y que cantidad por distrito.

20. Mostrar la descripción de los tipos de comprobantes.

21. Mostrar los proveedores que pertenecen a la línea AUDIO.

22. Modificar la ciudad, estado del proveedor CORPORACION LIGHT GOOD.

23. Modificar los apellidos, nombres del cliente CLINICA SAN LUCAS S.A.

E-Mail: vbnet_developer@hotmail.com
Pagina 84
ORACLE Machanay Sulca, Carlos E.

24. Mostrar los clientes que todavía no han generado alguna compra, y que
en el distrito tenga la letra O.

25. Mostrar los productos que sean de la línea LINEA BLANCA, y que el
stock este entre 10 y 20.

26. Incrementar el stock máximo del producto con 30 unidades a la línea


MAQUINAS DE COSER.

E-Mail: vbnet_developer@hotmail.com
Pagina 85