Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EJERCICIO 1:
----------------------------------------------
-- 1. CREACION DE CONSTRAINT A NIVEL DE CAMPO
----------------------------------------------
CREATE TABLE CURSO_01
( IDCURSO INTEGER PRIMARY KEY, -- constraint: pk
DESCRIPCION CHAR(50) NOT NULL, -- constraint: not null
ESTADO INTEGER default 1 ); -- constraint: default
----------------------------------------------
-- 2. CREACION DE CONSTRAINT A NIVEL DE TABLA
----------------------------------------------
CREATE TABLE CURSO_02
( IDCURSO INTEGER ,
DESCRIPCION CHAR(50) NOT NULL,
ESTADO INTEGER ,
CONSTRAINT CONS_PK_CURSO_02 -- yo le coloco el nombre al constraint, sino oracle se lo asigna
PRIMARY KEY (IDCURSO));
----------------------------------------------
-- 3. CONSULTANDO LOS CONSTRAINTS
----------------------------------------------
SELECT * FROM DBA_CONSTRAINTS WHERE TABLE_NAME = 'CURSO_02'
----------------------------------------------
-- 4. PRIMARY KEY, NOT NULL, DEFAULT, CHECK
----------------------------------------------
CREATE TABLE ALUMNO
( IDALUMNO INTEGER PRIMARY KEY,
PATERNO CHAR(50) NOT NULL,
MATERNO CHAR(50) NOT NULL,
NOMBRE CHAR(50) NOT NULL,
DNI CHAR(8) UNIQUE,
FECNAC DATE NOT NULL,
EDAD INTEGER CHECK( EDAD > 18 ),
ESTADO INTEGER DEFAULT 1 );
---------------------
create user VENTAS_DESTINO IDENTIFIED BY "123"
DEFAULT TABLESPACE USERS
QUOTA UNLIMITED ON USERS;
-- 2 PROCESO DE IMPORTACION
From: HR To: RRHH
-- 3 VERIFICAR
Seleccionar en el "Schema Browser" el combo del usuario RRHH
(si no se muestra, refresacar con el boton de la derecha)
----------------------------
----------------------------------
-- 5. LISTA DE DATOS NO REPETIDOS ( SIN DUPLICADOS )
----------------------------------
SELECT COUNTRY_ID FROM LOCATIONS;
SELECT DISTINCT COUNTRY_ID FROM LOCATIONS; -- resultados unicos
-- puedo hacerlo para 2 campos también, me muestra campos unicos
----------------------------------
-- 6. CONSULTA CON CAMPOS CALCULADOS
----------------------------------
SELECT LAST_NAME, SALARY SUELDO, SALARY * 1.1 "SUELDO CON AUMENTO"
FROM EMPLOYEES;
----------------------------------
-- 7. CONSULTA CON FILTRO CONDICIONAL
-- OPERADOR DE COMPARACION
-- = / >= / <= / > / < / <>
----------------------------------
----------------------------------
-- 8. BETWEEN ... AND
----------------------------------
SELECT *
FROM EMPLOYEES
WHERE SALARY BETWEEN 7000 AND 9000 ; -- incluye los limites
----------------------------------
-- 10. LIKE
----------------------------------
SELECT * FROM EMPLOYEES WHERE JOB_ID LIKE 'SA%'
----------------------------------
-- 11. IS NULL
----------------------------------
SELECT * FROM EMPLOYEES WHERE COMMISSION_PCT IS NULL;
----------------------------------
-- 12. ORDER BY
----------------------------------
SELECT LAST_NAME , FIRST_NAME, SALARY FROM EMPLOYEES ORDER BY LAST_NAME; -- ASC es por defecto
----------------------------
- CONSULTAS MULTIPLES
----------------------------
-- NATURAL JOINS : ES SOLO PARA 2 TABLAS, EL CAMPO RELACIONADO DEBE TENER IGUAL NOMBRE
SELECT LAST_NAME , SALARY, DEPARTMENT_NAME FROM EMPLOYEES
NATURAL JOIN DEPARTMENTS
----------------------------
SELECT DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_ID, CITY
FROM DEPARTMENTS NATURAL JOIN LOCATIONS ORDER BY 1
----------------------------
-- USING CLAUSE: se especifica
----------------------------
SELECT EMPLOYEE_ID, LAST_NAME, LOCATION_ID, DEPARTMENT_ID
FROM EMPLOYEES
JOIN DEPARTMENTS USING (DEPARTMENT_ID)
WHERE DEPARTMENT_ID = 100;
----------------------------
-- LEFT - JOIN
-- CONSULTAR EMPLEADOS Y DPTOS (107 registros)
SOLUCION:
----------------------------
- RIGHT - JOIN
-- CONSULTAR EMPLEADOS Y DPTOS
SOLUCION:
----------------------------
-- FULL - JOIN
-- CONSULTAR EMPLEADOS Y DPTOS
SOLUCION:
----------------------------
--REPORTE DE EMPLEADOS Y LAS CIUDADES
SOLUCION:
------------------------------
-- Ejercicio: Reporte
-----------------------------
-- APELLIDOS, NOMBRE, PUESTO, DEPARTAMENTO (106 registros)
-- 106 REGISTROS
SELECT LAST_NAME , FIRST_NAME , J.JOB_TITLE , D.DEPARTMENT_NAME FROM EMPLOYEES E
JOIN JOBS J ON ( E.JOB_ID = J.JOB_ID ) JOIN DEPARTMENTS D ON ( E.DEPARTMENT_ID = D.DEPARTMENT_ID )
TABLA RECURSIVA
----------------------------------
-- 5. JOINS A LA MISMA TABLA ( RECURSIVIDAD )
----------------------------------
SELECT TRABAJADOR.LAST_NAME APE_TRABAJADOR , TRABAJADOR.FIRST_NAME NOM_TRABAJADOR
, JEFE.LAST_NAME APE_JEFE
FROM EMPLOYEES TRABAJADOR
JOIN EMPLOYEES JEFE ON ( TRABAJADOR.MANAGER_ID = JEFE.EMPLOYEE_ID )
SELECT * FROM (
SELECT ENAME , SAL
FROM SCOTT.EMP ORDER BY SAL )
WHERE ROWNUM < 5
----------------------------------
-- 11. PIVOT
----------------------------------
CREATE TABLE VENTAS
( VENTA_ID NUMBER,
VENDEDOR CHAR(10),
MONTO NUMBER,
FECHA DATE );
RESULTADO:
mes ALBERTO_TOTAL SOFIA_TOTAL JUAN_TOTAL
09 1200 3000
10 1200 5000
RESULTADO:
AÑO ST_MAN ST_CLERK SH_CLERK
2000 0 2 2
1987 0 0 0
1997 2 6 4
1994 0 0 0
----------------------------------
-- 12. CASE
----------------------------------
SELECT LAST_NAME , SALARY, JOB_ID, SALARY * 1.1 FROM EMPLOYEES;