Está en la página 1de 64

CAPACITACION SQL/PL-SQL

AREA DE DESARROLLO DE
APLICACIONES
AGENDA

 CAPITULO I: Arquitectura del servidor Oracle, introducción a


SQL, Tipos de datos, creación de tablas y restricciones,
unique, Insert, update, delete.
 CAPITULO II: Funciones de cadena y Numéricas. Funciones
de comparación, lógicas, uso de Case, tratamiento de fechas,
funciones de Grupo, Función ROLLUP Y CUBE.
 CAPITULO III: ¿Qué es un Join y para qué sirve? Ejercicios
variados.
 CAPITULO IV: PL/SQL. Creación de procedures, trigger y
funciones. Creación de paquetes.
 CAPITULO V: Ejercicios variados en base a CAPITULO IV.

HERRAMIENTA: TOAD 8.0


ENTREGA DE MATERIAL ADICIONALE EN DIGITAL.
CAPITULO I

 ARQUITECTURA DELSERVIDOR ORACLE 9i


 ESQUEMA GENERAL
CAPITULO I

 INSTANCIA ORACLE
CAPITULO I

 AREA GLOBAL DELSISTEMA (SGA)


CAPITULO I

 LA BASE DE DATOS
CAPITULO I

 SQL FUNDAMENTOS
 DATA MANIPULATION LANGUAGE (DML): Usado para acceder, crear,
modificar o eliminar data en una estructura de base de datos existente.
UPDATE, DELETE, SELECT,INSERT.
 DATA DEFINITION LANGUAGE (DDL): Usado para crear, modificar o
eliminar objetos de datos y sus privilegios. CREATE, ALTER, DROP.
 DATA CONTROL LANGUAGE (DCL): Usado para controlar el uso y
manejo de datos. GRANT, ROOLLBACK, REVOKE, COMMIT.
 TRANSACTION CONTROL: Garantizan la consistencia de los datos,
organizando las instrucciones SQL en transacciones lógicas, que se
completan o fallan como una sola unidad (atomicidad).
 SESSION CONTROL: Permite controlar las propiedades de sesión de
usuario. La sesión se inicia desde el momento en que el usuario se conecta
a la base de datos hasta el momento en que se desconecta.
CAPITULO I

 ¿QUE ES SQL ?
Structured Query Language es un lenguaje declarativo de acceso a
bases de datos relacionales que permite especificar diversos tipos de
operaciones sobre las mismas. Una de sus características es el
manejo del álgebra y el cálculo relacional permitiendo lanzar consultas
con el fin de recuperar -de una forma sencilla- información de interés
de una base de datos, así como también hacer cambios sobre la
misma.
Es un lenguaje de cuarta generación (4GL).
CAPITULO I

 TIPOS DE DATOS EN ORACLE


CAPITULO I

 OPERADORES ARITMETICOS

 OPERADOR DE CONCATENACION
‘UNIVERSITARIO DE DEPORTES’||’CAMPEON’ = ‘UNIVERSITARIO DE DEPORTESCAMPEON’
CAPITULO I

 OPERADORES DE CONJUNTOS
CAPITULO I

 CREACION DE TABLAS
SINTAXIS:
CAPITULO I

 CREACION DE TABLAS
Ejemplos: Crear la tabla Facultad
CREATE TABLE FACULTAD
(
CODFAC CHAR(2 BYTE) NOT NULL,
DESFAC VARCHAR2(50 BYTE) NOT NULL,
DESFACRES VARCHAR2(15 BYTE) NOT NULL,
DIRFAC VARCHAR2(30 BYTE) NOT NULL,
CODUBIGEO CHAR(6 BYTE),
NOMREP VARCHAR2(30 BYTE),
STAFAC CHAR(1 BYTE) NOT NULL,
IDEUSUCRE VARCHAR2(20 BYTE) NOT NULL,
FECHORUSUCRE DATE NOT NULL,
IDEUSUMOD VARCHAR2(20 BYTE) NOT NULL,
FECHORUSUMOD DATE NOT NULL,
PROPROFAC NUMBER(5,3),
TIPPERACA CHAR(1 BYTE)
);
CAPITULO I

 ESQUEMA
CAPITULO I

 CREACION DE TABLAS
Ejercicios: Crear la tabla Alumno, Curso y Matrícula.
 RESTRICCION PRIMARY KEY
 Sintaxis

Clave primaria de la tabla Alumno.


ALTER TABLE ALUMNO
ADD CONSTRAINT PK_ALUMNO
PRIMARY KEY (IDALUMNO)
Ejercicio: Crear la PK de la tabla Curso y Matrícula.
CAPITULO I

RESTRICCION FOREIGN KEY


 Sintaxis

1ERA Clave foránea de la tabla Matrícula.


ALTER TABLE MATRICULA
ADD CONSTRAINT FK_MATRI_CURSO
FOREIGN KEY (IDCURSO)
REFERENCES CURSO;

Ejercicio: Crear la 2DA FK de para la tabla matrícula..


CAPITULO I

RESTRICCION DEFAULT : Valores por defecto


 Sintaxis

Ejemplo: El número de vacantes por defecto en cualquier curso debe ser de


30.
ALTER TABLE CURSO
MODIFY (VACANTES DEFAULT 20);
CAPITULO I

RESTRICCION NOT NULL


 Sintaxis

Ejemplo: El teléfono del alumno no debe permitir valores nulos.


ALTER TABLE ALUMNO
MODIFY (TELEFONO NOT NULL);
NOTA: Si ingresamos desde este momento valores nulos en teléfono Oracle nos
arrojará un error.
CAPITULO I

RESTRICCION UNIQUE (VALORES UNICOS)


 Sintaxis

Alter Table NombreTabla


Add Constraint U_NombreTabla_NombreColumna
Unique (Columna 1, Columna 2, ….);

Ejemplo: No pueden haber dos cursos con el mismo nombre.


ALTER TABLE CURSO
ADD CONSTRAINT U_CURSO_NOMCURSO
UNIQUE (NOMCURSO);

NOTA: Puede existir más de un campo con valores únicos por tabla, esto
dependerá de las restricciones lógicas, y de las reglas de negocio.
CAPITULO I

RESTRICCION CHECK (REGLAS DE VALIDACION)


 Sintaxis

Ejemplo: El precio de la matrícula no puede tener valores negativos.


ALTER TABLE MATRICULA
ADD CONSTRAINT CK_MAT_PRECIO
CHECK (PRECIO >=0);

NOTA: Si intentamos ingresar valores negativos después de ejecutado el cambio


ORACLE nos arrojará un error indicando que estamos violando la validación.
CAPITULO I

USAR EL
ESQUEMA
HR
CAPITULO I

 DML Y USO DE COMMIT


 INSERTANDO DATOS
 SINTAXIS
INSERT INTO NOMBRE TABLA (COLUM 1, COLUM 2, …. COLUM N)
VALUES (VALOR 1, VALOR 2, ….. VALOR N);
COMMIT;

Ejercicio: Insertar sus nombres en la tabla Employees


INSERT INTO EMPLOYEES VALUES
(‘300’,’Cristofer’,’VargasMorales’,’crisfer_73@hotmail.com’,’567-
0867’,sysdate,’AC_ACCOUNT’,2500,NULL,30,20);
COMMIT;
NOTA: El uso del COMMIT se realiza después de un INSERT, UPDATE,
DELETE, pues estas alteraciones suponen transacciones y deben
confirmarse. De no colocar COMMIT las sentencias que hayamos
hecho no se ejecutarán.
CAPITULO I

 DML Y USO DE COMMIT


 COPIANDO DATOS DESDE OTRA TABLA
Crear una tabla EmployeeBackup (lo creará el expositor) en el esquema HR:
CREATE TABLE EmployeeBackup
(ID NUMBER(6) PRIMARY KEY,
name VARCHAR2(20),
salary NUMBER(8,2) );

Ejemplo: Insertar en la tabla EmployeeBackup los empleados (tabla


Employees) del departamento 30.

INSERT INTO EmplyeeBackup (ID,name,salary)


SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM EMPLOYEES
WHERE DEPARTMENT_ID =30;
COMMIT;
CAPITULO I

 DML Y USO DE COMMIT


 COPIANDO EN MULTIPLES TABLAS
Crear 3 tablas (lo hará el expositor)
Create table employee_test1
(id NUMBER(6) PRIMARY KEY,
name VARCHAR2(20),
salary NUMBER (8,2));
Create table employee_test2
(id NUMBER(6) PRIMARY KEY,
name VARCHAR2(20),
salary NUMBER (8,2));
Create table employee_test3
(id NUMBER(6) PRIMARY KEY,
name VARCHAR2(20),
salary NUMBER (8,2));
CAPITULO I

 DML Y USO DE COMMIT


 COPIANDO EN MULTIPLES TABLAS
Ejemplo: Insertar datos en las 3 tablas creadas, en employee_test1 los empleados del
departamento 10, en employee_test2 los del departamento 20 y en employees_test3
los demás.
INSERT ALL
WHEN department_id=10 THEN
into employee_test1(id,name,salary)
values (employee_id,first_name,salary)
WHEN department_id=20 THEN
into employee_test1(id,name,salary)
values (employee_id,first_name,salary)
ElSE
into employee_test3(id,name,salary)
values (employee_id,first_name,salary)
Select departmanet_id,employee_id,first_name,salary from employees;
COMMIT;
CAPITULO I

 DML Y USO DE COMMIT


 MODIFICANDO DATOS
 SINTAXIS
UPDATE NOMBRE_TABLA
SET NOM_COLUM=VALOR
WHERE IDENTIFICADOR =VALOR_IDENTIFCADOR

NOTA: Si no colocamos la condición “WHERE” la actualización se hará en


toda los registros de la tabla.

Ejemplo: Incrementar el salario de todos los empleados en 10% en la tabla


employees del esquema HR.
UPDATE EMPLOYEES
SET SALARY=SALARY*1.1;
COMMIT;
CAPITULO I

 DML Y USO DE COMMIT


 ACTUALIZANDO VARIAS COLUMNAS CON SUBCONSULTAS
Ejemplo: Cristofer Vargas Morales (employee_id=300) ha sido trasladado al
departamento del empleado 200, y su salario tiene que ser el máximo permitido en su
puesto de trabajo actual.
UPDATE EMPLOYEES
SET deparment_id=(select deparment_id from employees
where employee_id=200),
salary = (select max_salary from jobs
where jobs.job_id=employees.job_id)
WHERE employee_id=300;
COMMIT;

Ejercicio: Al igual que el ejemplo anterior cada uno actualizar sus


registros con el departamento y con el salario que se le dirá durante la
exposición.
CAPITULO I

 DML Y USO DE COMMIT


 ELIMINANDO FILAS
 SINTAXIS
DELETE FROM NOMBRE_TABLA
WHERE IDENTIFICADOR =VALOR_IDENTIFCADOR

NOTA: Si no colocamos la condición “WHERE” la eliminación de data se


hará en toda los registros de la tabla.

Ejemplo: Eliminar los empleados que tienen el salario máximo en cada


puesto de trabajo en la tabla employees.
DELETE FROM employees
WHERE salary in (select max(salary) from jobs
where jobs.job_id=employees.job_id );
COMMIT;
CAPITULO II

 FUNCIONES PARA CARACTERES


CAPITULO II
CAPITULO II

 FUNCIONES NUMERICAS
CAPITULO II

 FUNCIONES NUMERICAS
CAPITULO II

 OPERADORES DE COMPARACION
IGUAL (=)
CAPITULO II

 OPERADORES DE COMPARACION
DIFERENTE (!=,<>)
CAPITULO II

 OPERADORES DE COMPARACION
MENOR O IGUAL QUE (<=)
CAPITULO II

 OPERADORES DE COMPARACION
MAYOR O IGUAL QUE (>=)
CAPITULO II

 OPERADORES DE COMPARACION
AMY O SOME
CAPITULO II

 OPERADORES LOGICOS
NOT

 AND
CAPITULO II

 OPERADORES LOGICOS
OR

Ejercicio: Obtener los departamentos cuyo department_id sea 30 o sea


menor a 20
CAPITULO II

 OTROS OPERADORES
IN Y NOT IN
CAPITULO II

 OTROS OPERADORES
BETWEEN
CAPITULO II

 OTROS OPERADORES
IN NULL Y IS NOT NULL
CAPITULO II

 OTROS OPERADORES
LIKE Y NOT LIKE

Ejercicio: Retornar aquellas personas cuyo first_name no empiece con la


inicial del nombre de Ud. y cuyo last_name tenga en el segundo carácter
la letra ‘A’. Puede no haber coincidencias.
CAPITULO II

 ORDENANDO FILAS
CAPITULO II

 ORDENANDO FILAS

NOTA: El ordenamiento de varias columnas implica que un ordenamiento


basado en una columna sea dependiente del ordenamiento basado en la
columna anterior.
CAPITULO II

 LA EXPRESION CASE
CASO 1:
CAPITULO II

 LA EXPRESION CASE
CASO 2:
CAPITULO II

 FUNCIONES DE FECHA
ADD_MONTHS: Adiciona un número de meses a una determinada fecha.
CAPITULO II

 FUNCIONES DE FECHA
EXTRACT: Extrae el día (1,2,3,…..31), mes (1,2,3…12) y año de una fecha.

Ejercicio: Obtener la suma de el día, mes y año de la fecha actual usando la


función extract y el operador +.
CAPITULO II

 FUNCIONES DE FECHA
LAST_DAY: Retorna el último día del mes con el formato actual de fecha.

MONTHS_BETWEEN: Retorna el número de meses entre dos fechas.


CAPITULO II

 FUNCIONES DE FECHA
SYSDATE: Retorna la fecha y hora actual.
CAPITULO II

 FUNCIONES DE CONVERSION
CAST: Convierte una expresión a un tipo de dato específico.

TO_CHAR: Convierte un dato de tipo fecha a una cadena con un formato


específico.
CAPITULO II

 FUNCIONES DE CONVERSION
TO_DATE: Convierte una cadena con una fecha a un dato tipo fecha.

Ejercicio 1: Mostrar el resultado de agregar 3 meses a la fecha de su cumpleaños.

Ejercicio 2: Obtener la suma de: los meses que hay entre su fecha de nacimiento y
la fecha actual, más el día, el mes y el año de la fecha actual.

Nota: Para el ejercicio 1 usar add_months y to_date. Para el ejercicio 2 usar la


función extract, el operador + y la tabla DUAL.
CAPITULO II

 FUNCIONES DE GRUPO
AVG: Obtiene el promedio de una columna o expresión.

COUNT: Cuenta las filas de una consulta, Puede usarse distinct.


CAPITULO II

 FUNCIONES DE GRUPO
MAX: Obtiene el máximo valor de una determinada columna.

MIN: Obtiene el mínimo valor de una determinada expresión o columna.


CAPITULO II

 FUNCIONES DE GRUPO
SUM: Obtiene la suma de los valores de una columna o expresión. Puede
usarse DISTINCT.

.
A continuación usaremos las funciones group by y having.
En una tabla la estructura es:
select …….. from tabla
where condicion
group by columna
having condicion_filtro
CAPITULO II

 FUNCIONES DE GRUPO
GROUP BY: Se utiliza para agrupar data en base a una o más columnas,
para aplicar funciones de grupo.
Ejemplo 1: Cantidad de empleados por departamento.

.
CAPITULO II

 FUNCIONES DE GRUPO
Ejercicio: Obtener la cantidad de empleados por puesto de trabajo en los departamentos
50 y 80. Mostrar el department_id, el job_id y la cantidad de empleados.
HAVING: Permite limitar mediante un condición después de aplicar el group
by. Es similar al where pero después de usar el group by, HAVING no puede
existir sin un group by.

.
CAPITULO II

 FUNCIONES DE GRUPO.
HAVING: Permite limitar mediante un condición después de aplicar el group
by. Es similar al where pero después de usar el group by, HAVING no puede
existir sin un group by.

Ejemplo: Mostrar los departamentos que tiene más de 10 empleados.

.
CAPITULO II

 FUNCIONES DE GRUPO.

Ejercicio: Usando la cláusula HAVING obtener los puestos de trabajo de los


que sólo hay un empleado.

.
CAPITULO II

 FUNCIONES DE GRUPO.

FUNCION ROLLUP: Permite que se realice en una instrucción SQL el cálculo


de múltiples niveles a través de los subtotales de un grupo de dimensiones.
También se calcula un total general. ROLLUP es una simple prórroga de la
cláusula GROUP BY,

.
CAPITULO II

 FUNCIONES DE GRUPO.

FUNCION CUBE: Función Multidimensional, un "cubo" es una cruz-Resumen


tabulado de las filas de detalle. CUBE permite en un SELECT calcular los
subtotales de todas las combinaciones posibles de un grupo de dimensiones.
También se calcula un total general. Es más específico que el ROLLUP.

.
CAPITULO II

 FUNCIONES DE GRUPO.

.
CAPITULO II

 FUNCIONES DE GRUPO.

PREGUNTAS:
1. ¿SERIA LO MISMO USAR LA FUNCION SUM (salary), AGRUPANDO POR
DEPARTAMENTO Y TRABAJO USANDO SÓLO GROUP BY QUE USANDO
ROLLUP?
2. ¿ENTRE ROLLUP Y CUBE CUAL ES MAS DETALLADO Y POR QUÉ?

También podría gustarte