Oracle PDF
Oracle PDF
Oracle PDF
Requerimiento de software
Software Requerimiento
Arquitectura del sistema Procesador: Intel (x64), AMD64
Sistema operativo Windows 2000 con SP1 o
posterior, todas las ediciones.
Windows Server 2003, todas las
ediciones.
Windows XP profesional.
Protocolo de red TCP/IP
Pagina 1
ORACLE
Tipos de instalación
Enterprise Edition: proporciona administración de datos para el sistema de
misión crítica tales como el procesamiento de transacciones en línea (OLTP)
de alto volumen, consultas intensivas en entornos de procesamientos
analíticos en línea (OLAP), y las aplicaciones para internet. Esta edición no
tiene límite en cuanto a la cantidad de procesadores soportados.
Pagina 2
ORACLE
Pagina 3
ORACLE
Pagina 4
ORACLE
Nos pide la ruta donde instalar el programa, si desea puede personalizar, pero
lo dejaremos por defecto.
Pagina 5
ORACLE
Esperamos
Pagina 6
ORACLE
Pagina 7
ORACLE
Pantalla de inicio.
Pagina 8
ORACLE
Pantalla de bienvenida
Pagina 9
ORACLE
➢ SYS
➢ SYSTEM
➢ SYSMAN
La cuenta SYS
El esquema SYS contiene todas las tablas y vistas del diccionario de datos (la
metadata). Estas tablas y vistas son criticas para el funcionamiento de Oracle
database, y no deben ser manipuladas directamente por el administrador.
Debe asegurarse que los usuarios no tengan acceso con esta cuenta.
La cuenta SYSTEM
El esquema SYSTEM almacena tablas y vistas adicionales creadas por las
herramientas de Oracle con propósito administrativo. El esquema SYSTEM no
debe contener las tablas de los usuarios.
La cuenta SYSMAN
Se crea por defecto durante la instalación de Oracle Enterprise Manager. Esta
cuenta debe ser utilizada para realizar tareas poco frecuentes tales como
configuración global del sistema. El usuario SYSMAN es un súper administrador
que crea otras cuentas para la realización de las tareas administrativas
diarias.
Nota: debe crear por lo menos una cuenta adicional con el rol DBA y conceder
los privilegios apropiados para que pueda ejecutar las tareas administrativas
diarias. No utilice las cuentas SYS, SYSTEM y SYSMAN para estos propósitos.
Pagina
ORACLE
La instancia de Oracle
A diferencia de otros productos de base de datos en los que por cada instancia
del servidor podemos crear varias bases de datos, por cada instancia de
Oracle se crea solo una base de datos. Por ejemplo en MS SQL Server creamos
en un servidor las bases de datos ventas, producción y personal, en Oracle
creamos una sola base de datos conteniendo los esquemas ventas producción
y personal.
Oracle separa parte de la memoria total del sistema para utilizar en sus
procesos. Es parte de la memoria que Oracle separa y esta formada por:
Pagina
ORACLE
Estructura Descripción
Database Buffer La data solicitada por una aplicación para ser consultada
Cache o modificada debe ser leída del disco y almacenada
previamente en la memoria en el buffer cache.
Shared Pool Almacena información que puede ser compartida por los
usuarios:
Sentencia SQL y PL/SQL
Información del diccionario de datos
Redo Log Buffer Almacena información sobre la data actualizada, y que
utilizada por la instancia para actualizar en el momento
oportuno los archivos de registro almacenados
físicamente en el disco.
Large Pool Área opcional utilizada por las solicitudes entrada/salida
muy grandes tales como operaciones de respaldo y
restauración de datos.
Java Pool Utilizada para almacenar código y data especificada a
sesión Java en JVM (Java Virtual Machine).
Streams Pool Utilizado por el producto Oracle Streams.
Pagina
ORACLE
Pagina
ORACLE
Pagina
ORACLE
Pagina
ORACLE
Los datafiles son archivos .DBF en los que se almacenan todos los datos
de la base de datos. La base de datos Oracle puede tener uno o más
datafiles.
Archivo de control
Pagina
ORACLE
Los archivos Redo Log (.LOG) almacenan las modificaciones de los datos
ejecutadas en la base de datos con la finalidad de recuperarlas en caso
que produjera una falla en el sistema.
Los archivos Archive Log son copias fuera de línea de los archivos Redo
Log. Se usan para recuperar la base de datos en caso de falla del medio de
almacenamiento.
Archivos de parámetros
Pagina
ORACLE
Tablespaces
Pagina
ORACLE
Pagina
ORACLE
Extensiones (Extents)
Segmento (Segment)
Pagina
ORACLE
Sintaxis
Pagina
ORACLE
Creación de un tablespace
Pagina
ORACLE
Creación de un esquema
Concesión de privilegios
Pagina
ORACLE
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.
CHAR (Caracter): Almacena datos de tipo carácter con una longitud máxima
de 32767 y cuyo valor de longitud por default es 1.
Pagina
ORACLE
Existen por supuesto más tipos de datos, la siguiente tabla los muestra:
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.
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.
Pagina
ORACLE
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.
Pagina
ORACLE
Por ejemplo:
timestamp(5)
with time zone
Por ejemplo:
timestamp(4)
with local time
zone
Pagina
ORACLE
Pagina
ORACLE
Pagina
ORACLE
Creación de tablas
La instrucción CREATE TABLE
Sintaxis
Creación de tablas
Usted recibe un mensaje de error, el cual indica que usted no cuenta con los
privilegios necesarios para crear las tablas.
Pagina
ORACLE
DESCRIBE especialidad;
Laboratorio 01:
Pagina
ORACLE
Sintaxis
Pagina
ORACLE
Ahora tratemos de añadir una columna de tipo VARCHA2 con la propiedad 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.
UPDATE tabla_prueba
SET columna4=’LIMA’
WHERE columna1=’101’;
Pagina
ORACLE
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.
Sintaxis
Pagina
ORACLE
Sintaxis
fk_nombre_tabla_tabla_referenciada: es el nombre de la
restricción clave foranea.
Sintaxis
u_nombre_tabla_nombre_columna: es el nombre de la
restricción valor no duplicado o UNIQUE.
Pagina
ORACLE
(DEFAULT) Sintaxis
Pagina
ORACLE
Sintaxis
Eliminación de tablas
DROP TABLE
tabla_prueba;
Pagina
ORACLE
Laboratorio 02:
Pagina
ORACLE
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.
INSERT) Sintaxis
Objeto sequence
Pagina
ORACLE
Sintaxis
CREATE SECUENCE
nombre_secuencia [ STAR WITH
valor_inicial ]
[ INCREMENT BY incremento ]
[ MAXVALUE valor_maximo | NOMAXVALUE
] [ MINVALUE valor_minimo | NOMINVALUE
]
[ CYCLE | NOCYCLE ]
CREATE SEQUENCE
sq_codigo MAXVALUE 9999;
Pagina
ORACLE
UPDATE) Sintaxis
UPDATE nombre_tabla
SET columnaX = expresionX,
columnaP = expresionP,
…
WHERE condicion_fila_actualizar
UPDATE curso
SET credito_curso=25
WHERE id_curso=502;
Pagina
ORACLE
Sintaxis
Pagina
ORACLE
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
Pagina
ORACLE
Operadores
Pagina
ORACLE
Laboratorio 03:
Tabla: ESPECIALIDAD
Tabla: CURSO
Tabla: ALUMNO
Pagina
ORACLE
Tabla: NOTAS
6. Cambie el crédito del curso a 150 para los cursos LIBRO CAJA y POWER
BUILDER.
8. Mostar las notas de los alumnos que lleven el curso POWER BUILDER.
Pagina
ORACLE
12.Mostrar los datos del alumno MARIA ISABEL LOZADA ROJAS de tal forma
que se vea en un solo cuadro.
16.Insertar
un nuevo alumno que tenga la especialidad de COMPUTACION E
INFORMATICA.
Pagina
ORACLE
Pagina
ORACLE
21.Aumentar con 3
puntos más a
las notas del
EXAMEN
PARCIAL que
estén bajo o igual a 13.
Pagina
ORAC
Pagina
ORAC
Preguntas de investigación
Pagina
ORAC
Consultas simples
Antes de empezar, resuelva el laboratorio 04
Laboratorio 04:
Pagina
ORACLE
E-Mail: vbnet_developer@hotmail.com
Pagina 53
ORAC
La instrucción SELECT
Sintaxis
SELECT * | lista_columnas
FROM nombre_tabla
WHERE condicion_filas
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.
Pagina
ORAC
Pagina
ORAC
SELECT COD_PRO,NOM_PRO,COD_LIN,PRE_PRO,(PRE_PRO -
(PRE_PRO * 0.05)) AS "PRECIO CON DSCTO"
FROM PRODUCTO;
Pagina
ORAC Machanay Sulca, Carlos
Concatenando cadena.
E-Mail:
Pagina
ORAC Machanay Sulca, Carlos
Definición de filtros
SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE STO_ACT < 15;
E-Mail:
Pagina
ORAC
SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE PRE_PRO > 3100;
Pagina 59
ORAC
TO_CHAR(expresión_fecha,’patron_formato_fecha’)
Pagina 60
ORAC
Sintaxis
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.
Pagina 61
ORAC
SELECT
COD_PRO,NOM_PRO FROM PRODUCTO
WHERE NOM_PRO LIKE '%43_';
Sintaxis
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna BETWEEN valor_inicial AND valor_final
Pagina 62
ORAC
Pagina 63
ORAC
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');
UPDATE PRODUCTO
SET STO_ACT=''
WHERE COD_PRO IN('P0000001','P0000005');
Pagina 64
ORAC
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');
Sintaxis
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');
Pagina 65
ORAC
Pagina 66
ORAC
Laboratorio 05:
Pagina 67
ORAC
5. Mostrar todos los productos que empiece con la letra T, y que tenga en
stock de 1 a 15 unidades.
7. Mostrar todos los productos que empiece con la letra TV y que sean de
la marca MIRAY.
Pagina 68
ORAC
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.
Pagina 69
ORAC
Funciones ORACLE
Funciones numérica
Ejemplo
POWER (expresionNumerica, n)
Retorna el resultado de elevar expresionNumerica a la potencia n.
Ejemplo
Ejemplo
Pagina 70
ORAC
SQRT (expresionNumerica)
Retorna la raiz cuadrada de expresionNumerica.
Ejemplo
Ejemplo
Funciones Cadena
Ejemplo
INITCAP (expresionCadena)
Retorna expresionCadena con la inicial de cada palabra mayúscula.
Ejemplo
Pagina 71
ORAC
LENGTH (expresionCadena)
Retorna longitud de expresionCadena.
Ejemplo
LOWER (expresionCadena)
Retorna expresionCadena, pero todo en minúscula.
Ejemplo
Ejemplo
Ejemplo
Pagina 72
ORAC
Ejemplo
Ejemplo
UPPER (expresionCadena)
Retorna expresionCadena, pero todo en mayúscula.
Ejemplo
Pagina 73
ORAC
ADD_MONTHS (expresionFecha,n)
Incrementa expresionFecha en n meses y genera una nueva fecha.
Ejemplo
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
Ejemplo
LAST_DAY (expresionFecha)
Entrega la fecha del último día del mes especificado:
Ejemplo
Pagina 74
ORAC
Ejemplo
Ejemplo
Ejemplo
Pagina 75
ORAC
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.
Ejemplo
Pagina 76
ORAC
Ejemplo
Otras funciones
USER
Entrega nombre del usuario en la sesión actual.
Pagina 77
ORAC
Laboratorio 06:
Pagina 78
ORAC
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.
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.
Sintaxis
Pagina 79
ORAC
Ejemplo: Obtener el stock promedio de los productos cuyo precio sea mayor
a 600.
Sintaxis
Pagina 80
ORAC
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.
Pagina 81
ORAC
Sintaxis
Pagina 82
ORAC
Cláusula GROUP BY
Sintaxis
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.
Pagina 83
ORAC
Pagina 84
ORAC
Permite que una sola consulta GROUP BY se presente grupos formados por
distintas combinaciones de atributos.
Pagina 85
ORAC
Pagina 86
ORAC
Laboratorio 07:
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.
Pagina 87
ORAC
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.
Pagina 88
ORAC
Consultas multitablas
Consultas correlacionadas
Sintaxis
SELECT lista_columnas
FROM tabla1
tipo_join JOIN tabla2 ON condicion_del_join
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.
Pagina 89
ORAC
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';
Pagina 90
ORAC
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';
Pagina 91
ORAC
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.
Pagina 92
ORAC
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
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.
Pagina 93
ORAC
Pagina 94
ORAC
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
Insertando 5 registros
Insertando 2 registros
Ejecución de UNION
SELECT IDSUPERVISOR AS
EMPLEADO,NOMBRE FROM SUPERVISORES
UNION
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;
Pagina 95
ORAC
SELECT IDSUPERVISOR AS
EMPLEADO,NOMBRE FROM SUPERVISORES
UNION ALL
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;
SELECT IDSUPERVISOR AS
EMPLEADO,NOMBRE FROM SUPERVISORES
INTERSECT
SELECT IDOPERARIO,NOMBRE
FROM OPERARIOS;
Pagina 96
ORAC
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
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.
Pagina 97
ORAC
Insertando 7 registros.
Ejemplo: crear una consulta que muestre una lista de trabajadores. La lista
debe mostrar apellidos del jefe de cada trabajador.
Pagina 98
ORAC
Subconsultas
Test de pertenencia
Pagina 99
ORAC
SELECT PRODUCTO.COD_PRO,
PRODUCTO.NOM_PRO FROM PRODUCTO
WHERE EXISTS(SELECT *FROM DETALLE
WHERE PRODUCTO.COD_PRO=DETALLE.COD_PRO);
Pagina
ORAC
Sintaxis
Inserción de filas.
CREATE TABLE
TABLA_PRUEBA (DISTRITO
VARCHAR2(60));
Pagina
ORAC
Laboratorio 08:
Pagina
ORAC
5. Mostrar todos los clientes que todavía no han generado alguna compra.
9. Mostrar el total del precio por cada línea, que sea mayor a los 4000.
Pagina
ORACLE
Pagina
ORAC
Pagina
ORAC
23.Modificar los apellidos, nombres del cliente CLINICA SAN LUCAS S.A.
Pagina
ORAC
Pagina
ORAC
Pagina
ORAC
Las vistas
Una vista es un objeto que almacena una consulta predefinida y que
proporciona un modo alternativo de visualización de datos sin tener que
redefinir la consulta.
Ejemplo:
Antes de poder crear una vista debemos conceder los permisos necesarios
para crear una vista.
Ejemplo de vista
CREATE VIEW
V_LISTA_PRODUCTO AS
SELECT L.NOM_LIN AS LINEA,P.NOM_PRO AS
PRODUCTO,P.PRE_PRO AS
PRECIO FROM PRODUCTO P
LEFT OUTER JOIN LINEA L ON P.COD_LIN=L.COD_LIN;
SELECT *FROM
V_LISTA_PRODUCTO WHERE
LINEA='MUSICA';
Pagina
ORAC
Observe que para ejecutar la vista se utiliza la instrucción SELECT. Una vista
se manipula como si fuera una tabla; es decir, que se puede aplicar las
declaraciones SELECT, INSERT, UPDATE y DELETE. Sin embargo, no debe ver la
vista como una tabla, sino pensar en ella como un programa que ejecuta una
sola instrucción.
Sintaxis:
OR REPLACE indica que si la vista ya existe, debe ser remplazada por la nueva
definición de la tabla.
WITH READ ONLY indica que la vista solo permite consultas solo se
puede ejecutar SELECT sobre la vista, y no puede ejecutarse INSERT, UPDATE
ni DELETE.
Pagina
ORAC
Sintaxis:
Ejemplo de vista
CREATE VIEW
V_LISTA_PRODUCTO_MUSICA AS
SELECT L.NOM_LIN AS LINEA,P.NOM_PRO
AS PRODUCTO,P.PRE_PRO AS
PRECIO FROM PRODUCTO P
LEFT OUTER JOIN LINEA L ON
P.COD_LIN=L.COD_LIN WHERE L.NOM_LIN='MUSICA'
WITH CHECK OPTION;
Pagina
ORAC
Laboratorio 09:
Pagina
ORAC
Fundamentos de PL/SQL
SQL es un lenguaje de consulta para los sistemas de bases de datos
relaciónales, pero que no posee la potencia de los lenguajes de programación.
No permite el uso de variables, estructuras de control de flujo, bucles... y
demás elementos característicos de la programación. No es de extrañar, SQL
es un lenguaje de consulta, no un lenguaje de programación.
Bloque anónimo
Procedimientos almacenados
Funciones
Triggers
Paquetes
Pagina
ORAC
Bloque anónimo
Es la unidad básica de la programación en PL/SQL.
Sintaxis:
DECLARE
BEGIN
EXECEPTION
END;
DECLARE
V_FECHA DATE;
BEGIN
SELECT SYSDATE INTO V_FECHA FROM DUAL;
dbms_output.put_line('FECHA : ' || V_FECHA);
END;
Pagina
ORAC
Pagina
ORAC
Laboratorio 10:
Pagina
ORAC
Declaración de variables
Son elementos de lenguajes que se define en la memoria del sistema a los que
se pueden asignar valores para luego usarlos posteriormente.
Sintaxis
nombre_variable tipo_dato
[CONSTANT] [NOT NULL]
[:=Valor];
Ejemplo:
Uso de %TYPE
Este operador permite declarar una variable del mismo tipo que la otra
variable constante o columna.
Sintaxis
nombre_variable identificador%type;
Ejemplo:
Pagina
ORAC
Sintaxis
nombre_variable :=valor;
Ejemplo:
v_Nombre := ’JUAN
PABLO’; n_Stock := 50;
Sintaxis
Ejemplo:
Pagina
ORAC
Procedimiento
Un bloque se puede almacenar como un objeto de la base de datos de modo
de modo que se puede ejecutar repetidamente invocándolo con la instrucción
EXECUTE. El bloque se puede almacenar como procedimiento o función.
Sintaxis
BEGIN
EXECEPTIONS
END;
Pagina
ORAC
Ejemplo:
BEGIN
N_MONTO); END;
EXECUTE USP_MONTO_COMPROBANTE('CP00000002');
Pagina
ORAC
Función
Una función es similar a un procedimiento con la diferencia que la función
retorna siempre un valor.
Sintaxis:
BEGIN
EXECEPTIONS
END;
Pagina
ORAC
Ejemplo:
BEGIN
END;
Pagina
ORAC
Laboratorio 11:
1. Crear una vista donde muestre los continentes de los proveedores, solo
mostrar los proveedores que sean de los continentes ASIA y EUROPA.
2. Crear un bloque anónimo donde pueda insertar una nueva línea, donde
el código de la línea se tiene que incrementar.
Pagina
ORAC
El condicional IF
Sintaxis:
IF (expresión_logica) THEN
END IF;
Sintaxis:
IF (expresión_logica) THEN
ELSE
END IF;
Pagina
ORAC
Sintaxis:
IF (expresión_logica1) THEN
ELSE
END IF;
Pagina
ORAC
Ejemplo:
Crear una función que evalué el stock actual del producto, comparando con el
stock mínimo.
IF (N_STOCK_ACTUAL >
N_STOCK_MINIMO)THEN V_MENSAJE
:='TENEMOS MERCADERIA';
END IF;
RETURN V_MENSAJE;
END;
Pagina
ORAC
El condicional CASE
Sintaxis:
CASE selector
WHEN valor1 THEN
ELSE
END CASE;
Sintaxis:
CASE selector
WHEN expression_logica1 THEN
ELSE
END CASE;
Pagina
ORAC
Ejemplo:
Consulta muestra una lista de los proveedores con una columna computada
cuyo valor depende del valor encontrado en columna PAIS de la tabla
proveedor.
SELECT COD_PRV,RAZON_SOCIAL,
CASE PAIS
WHEN 'ESPAÑA' THEN 'CONTINENTE EUROPEO'
WHEN 'CHINA' THEN 'CONTINENTE ASIATICO'
WHEN 'MEXICO' THEN 'CONTINENTE AMERICANO'
ELSE
'FALTA
ESTABLECER' END AS
CONDICION
FROM PROVEEDOR;
Pagina
ORAC
Ejemplo:
SELECT P.COD_PRO,P.NOM_PRO,
CASE
WHEN SUM(D.CANT) < 20 THEN 'NIVEL MUY BAJO, <
20 UNIDADES'
WHEN SUM(D.CANT) >=20 AND SUM(D.CANT) < 35 THEN 'NIVEL
BAJO, < 20 UNIDADES'
END AS CONDICION
FROM PRODUCTO
P
LEFT OUTER JOIN DETALLE D ON
P.COD_PRO=D.COD_PRO WHERE P.COD_LIN='L002'
GROUP BY P.COD_PRO,P.NOM_PRO;
Pagina
ORAC
Ejemplo:
Función que establece si el precio del producto esta por encima o por debajo
del precio promedio de todos los productos.
CASE
WHEN (N_PRE_PRO > N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO POR ENCIMA DEL PROMEDIO';
WHEN (N_PRE_PRO = N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO PROMEDIO';
WHEN (N_PRE_PRO < N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO POR DEBAJO DEL PROMEDIO';
END CASE;
V_MENSAJE := 'PRODUCTO: ' || C_COD_PRO || ' ' ||
TO_CHAR(N_PRE_PRO) || ' - ' || V_MENSAJE;
RETURN V_MENSAJE;
END;
Pagina
ORAC
Pagina
ORAC
El parámetro esta inicializado con valor NULL. Remplace este por el código
del producto.
El bucle LOOP
Pagina
ORAC
Sintaxis:
LOOP
IF (expresion_logica) THEN
EXIT
END IF;
END LOOP;
Ejemplo:
El bucle WHILE
Pagina
ORAC
Sintaxis:
END LOOP;
Ejemplo:
Usaremos un bucle WHILE para insertar filas en una tabla que tiene una llave
primaria numérica cuyo valor es generado automáticamente por el sistema.
Para ello haremos uso del objeto secuencia.
Pagina
ORAC
EXECUTE PRCARGARTABLA(5);
SELECT *FROM
PRUEBA_CLAVES;
El bucle FOR
Sintaxis:
END LOOP;
Ejemplo:
Pagina
ORAC
EXECUTE PRINSERTAR_FILAS(6);
SELECT *FROM
PRUEBA_CLAVES;
Ejemplo:
Pagina
ORAC
EXECUTE PRTABLAMULTIPLICAR(10);
Pagina