Documentos de Académico
Documentos de Profesional
Documentos de Cultura
II
DML
HR Schema
BASE DE DATOS II
Tabla EMPLOYEES
BASE DE DATOS II
Tabla EMPLOYEES
EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,…)
BASE DE DATOS II
Tabla EMPLOYEES
RESTRICCIONES
DE DOMINIO
EMPLOYEES(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,…)
BASE DE DATOS II
Tabla EMPLOYEES
DESCRIBE EMPLOYEES;
BASE DE DATOS II
SQL
Structured Query Language
(Lenguaje estructurado de consultas)
BASE DE DATOS II
SQL
Structured Query Language
(Lenguaje estructurado de consultas)
BASE DE DATOS II
COMENTARIOS
-- ESTO ES UN COMENTARIO
/* ESTO ES
UN COMENTARIO
MULTILINEA */
BASE DE DATOS II
DML – SELECT
BASE DE DATOS II
DML – SELECT
--SOLO 2 CAMPOS
--TODOS LOS REGISTROS
SELECT FIRST_NAME, EMAIL
FROM EMPLOYEES;
BASE DE DATOS II
DML – SELECT
BASE DE DATOS II
DML – SELECT
/*
* SOLO 2 CAMPOS
* FILTRANDO REGISTROS (SIN MANAGER ASIGNADO)
* ORDENADO
*/
SELECT FIRST_NAME, EMAIL
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL
ORDER BY EMPLOYEE_ID;
BASE DE DATOS II
DML – SELECT
/*
* SOLO 2 CAMPOS
* FILTRANDO REGISTROS (SIN MANAGER ASIGNADO)
* ORDENADO
*/
SELECT FIRST_NAME, EMAIL
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL
ORDER BY EMPLOYEE_ID;
BASE DE DATOS II
Tabla DUAL
SELECT *
FROM DUAL;
BASE DE DATOS II
FECHAS
--FECHA ACTUAL
SELECT SYSDATE
FROM DUAL;
--CONCATENACION
SELECT 'Hoy es ' || SYSDATE AS FECHA
FROM DUAL;
BASE DE DATOS II
FECHAS
BASE DE DATOS II
FECHAS
--FECHA ACTUAL
SELECT SYSDATE
FROM DUAL; FUNCIONES BUILT-IN
--CONCATENACION
SELECT 'Hoy es ' || SYSDATE AS FECHA
FROM DUAL;
BASE DE DATOS II
Funciones BUILT-IN
ENTRADA
[ PARAMETROS ]
FUNCION
[ COMPORTAMIENTO ]
SALIDA
[ RESULTADO ]
BASE DE DATOS II
Funciones BUILT-IN
ENTRADA
FUNCION
SALIDA
BASE DE DATOS II
Funciones BUILT-IN
▪ NVL
▪ TO_CHAR
▪ TO_DATE
▪ TO_NUMBER
▪ SUBSTR
▪ TRIM
▪ UPPER / LOWER / INITCAP
http://www.techonthenet.com/oracle/functions/
BASE DE DATOS II
NVL Function
string1
The string to test for a null value.
replace_with
The value returned if string1 is null.
--EJEMPLO
SELECT NVL(STATE_PROVINCE,'DESCONOCIDA')
FROM LOCATIONS;
BASE DE DATOS II
TO_CHAR Function
value
A number or date that will be converted to a string.
format_mask
Optional. This is the format that will be used to convert value to a string.
nls_language
Optional. This is the nls language used to convert value to a string.
--EJEMPLO
SELECT TO_CHAR(HIRE_DATE,'MONTH') AS MES,
TO_CHAR(SALARY) AS SALARIO
FROM EMPLOYEES;
BASE DE DATOS II
TO_CHAR Function
value
A number or date that will be converted to a string.
format_mask
Optional. This is the format that will be used to convert value to a string.
nls_language
Optional. This is the nls language used to convert value to a string.
--EJEMPLO
SELECT TO_CHAR(HIRE_DATE,'MONTH') AS MES,
TO_CHAR(SALARY) AS SALARIO
FROM EMPLOYEES;
BASE DE DATOS II
TO_CHAR Function
--EJEMPLOS TO_CHAR FROM NUMBER
SELECT SALARY AS SALARIO1,
TO_CHAR(SALARY) AS SALARIO2,
TO_CHAR(SALARY,'$99,999.00') AS SALARIO3,
TO_CHAR(SALARY,’$9,999.00’) AS SALARIO4
FROM EMPLOYEES;
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510
BASE DE DATOS II
TO_CHAR Function
--EJEMPLOS TO_CHAR FROM DATE
SELECT HIRE_DATE AS FECHA_INGRESO,
TO_CHAR(HIRE_DATE,'MONTH') AS MES_INGRESO,
TO_CHAR(HIRE_DATE,
'MONTH’,
'nls_date_language=Spanish') MES_INGRESO_ESP
FROM EMPLOYEES;
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510
BASE DE DATOS II
TO_CHAR Function
format_mask - DATE
BASE DE DATOS II
TO_DATE Function
string1
The string that will be converted to a date.
format_mask
Optional. This is the format that will be used to convert string1 to a date.
nls_language
Optional. This is the format that will be used to convert string1 to a date.
--EJEMPLO
SELECT TO_DATE('20190101','YYYYMMDD')
FROM DUAL;
BASE DE DATOS II
TO_NUMBER Function
string1
The string that will be converted to a number.
format_mask
Optional. This is the format that will be used to convert string1 to a number.
nls_language
Optional. This is the nls language used to convert string1 to a number.
--EJEMPLO
SELECT POSTAL_CODE,TO_NUMBER(POSTAL_CODE)
FROM LOCATIONS
WHERE CITY = 'Roma';
BASE DE DATOS II
SUBSTR Function
string
The source string.
start_position
The starting position for extraction. The first position in the string is always 1.
length
Optional. It is the number of characters to extract. If this parameter is omitted, the
SUBSTR function will return the entire string.
--EJEMPLO
SELECT STREET_ADDRESS,
SUBSTR(STREET_ADDRESS,5),
SUBSTR(STREET_ADDRESS,5,3)
FROM LOCATIONS;
BASE DE DATOS II
DML – Operadores
--OPERADORES DE COMPARACION
= igual
<> distinto –-otra opción !=
> mayor
< menor
>= mayor o igual
<= menor o igual
LIKE '%STRING%'
NOT LIKE '%STRING%'
BASE DE DATOS II
DML – Operadores
--EJEMPLO 1
SELECT *
FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'Da%';
--EJEMPLO 2
SELECT *
FROM EMPLOYEES
WHERE SALARY >= 7000;
BASE DE DATOS II
DML – Operadores
--EJEMPLO 3
SELECT *
FROM EMPLOYEES
WHERE FIRST_NAME NOT LIKE 'Da%';
--EJEMPLO 4
SELECT *
FROM EMPLOYEES
WHERE SALARY <> 7000;
BASE DE DATOS II
DML – Condiciones
WHERE condition1
AND condition2
...
OR condition_n;
BASE DE DATOS II
DML – Condiciones
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR ( FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 );
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR ( FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 );
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%'
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE ( JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%' )
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE ( JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%' )
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – Condiciones
SELECT JOB_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE ( JOB_ID = 'FI_ACCOUNT'
OR FIRST_NAME LIKE 'Da%' )
AND SALARY >= 7000 ;
BASE DE DATOS II
DML – ORDER BY
SELECT expressions
FROM tables
[ WHERE conditions ]
ORDER BY expression [ ASC | DESC ];
expressions
The columns or calculations that you wish to retrieve.
tables
The tables that you wish to retrieve records from. There must be at least one table listed in the
FROM clause.
WHERE conditions
Optional. The conditions that must be met for the records to be selected.
ASC (DEFAULT)
Optional. It sorts the result set in ascending order by expression (default, if no modifier is
provider).
DESC
Optional. It sorts the result set in descending order by expression.
BASE DE DATOS II
DML – ORDER BY
SELECT expressions
FROM tables
[ WHERE conditions ]
ORDER BY expression [ ASC | DESC ];
expressions
The columns or calculations that you wish to retrieve.
tables
The tables that you wish to retrieve records from. There must be at least one table listed in the
FROM clause.
WHERE conditions
Optional. The conditions that must be met for the records to be selected.
ASC (DEFAULT)
Optional. It sorts the result set in ascending order by expression (default, if no modifier is
provider).
DESC
Optional. It sorts the result set in descending order by expression.
BASE DE DATOS II
DML – ORDER BY
--EJEMPLO 1
SELECT *
FROM EMPLOYEES
ORDER BY 2,6 DESC;
--EJEMPLO 2
SELECT *
FROM EMPLOYEES
ORDER BY FIRST_NAME,HIRE_DATE DESC;
BASE DE DATOS II
DML – ORDER BY
--EJEMPLO 2
SELECT *
FROM EMPLOYEES
ORDER BY FIRST_NAME,HIRE_DATE DESC
FETCH FIRST 3 ROWS ONLY;
BASE DE DATOS II
DML – SELECT (Ejercicios)
BASE DE DATOS II
DML – SELECT (Ejercicio 1)
1. Elaborar una consulta SQL que muestre todos los empleados que perciban un
salario menor a 5000.
2. Ordenar el resultado alfabéticamente por Apellido del empleado (campo
LAST_NAME) en forma descendente.
BASE DE DATOS II
DML – SELECT (Ejercicio 2)
1. Elaborar una consulta SQL que muestre todos los empleados que perciban un
salario mayor a 5000 y pertenezcan al departamento 50 (Shipping).
2. Ordenar el resultado alfabéticamente por Nombre del empleado (campo
FIRST_NAME) en forma ascendente.
BASE DE DATOS II
DML – SELECT (Ejercicio 3)
1. Elaborar una consulta SQL que muestre todos los empleados que ingresaron
en el año 2002.
BASE DE DATOS II
WARNING
SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE >= '01-JAN-02’
AND HIRE_DATE <= '31-DEC-02';
BASE DE DATOS II
WARNING
SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE >= '01-JAN-07’
AND HIRE_DATE <= '31-DEC-07';
FECHA TEXTO
BASE DE DATOS II
DML – INSERT
BASE DE DATOS II
DML – INSERT
BASE DE DATOS II
DML – INSERT
SELECT *
FROM COUNTRIES;
BASE DE DATOS II
DML – INSERT
SELECT *
FROM COUNTRIES;
BASE DE DATOS II
DML – INSERT
BASE DE DATOS II
DML – INSERT
--OPCION 1: DETALLO SOLO VALORES
INSERT INTO NOMBRE_TABLA
VALUES (VALOR1,VALOR2,VALOR3);
BASE DE DATOS II
DML – INSERT (Ejemplos)
--INSERT ERRONEO 1
INSERT INTO NOMBRE_TABLA
VALUES ('ABC',123);
Error SQL: ORA-00947: not enough values
--INSERT ERRONEO 2
INSERT INTO NOMBRE_TABLA(CAMPO1_NUM,CAMPO2_TXT)
VALUES ('DEF',456);
Error SQL: ORA-01722: invalid number
BASE DE DATOS II
DML – INSERT (Ejemplos)
--INSERT ERRONEO 1
INSERT INTO NOMBRE_TABLA
VALUES ('ABC',123);
Error SQL: ORA-00947: not enough values
--INSERT ERRONEO 2
INSERT INTO NOMBRE_TABLA(CAMPO1_NUM,CAMPO2_TXT)
VALUES ('DEF',456);
Error SQL: ORA-01722: invalid number
--AUTOCONVERSION
INSERT INTO NOMBRE_TABLA(CAMPO1_NUM,CAMPO2_TXT)
VALUES ('111',999);
BASE DE DATOS II
DML – INSERT (Ejercicio)
BASE DE DATOS II
DML – INSERT (Ejercicio)
1. Insertar la región Oceania en la tabla REGIONS
2. Insertar países New Zeland y Samoa pertenecientes a Oceania en la tabla
COUNTRIES
3. Insertar las oficinas de Melbourne y Kelston – Tabla LOCATIONS
BASE DE DATOS II
DML – Sentencia UPDATE
UPDATE EMPLOYEES
SET SALARY = SALARY * 1.1
WHERE EMPLOYEE_ID = 100 ;
BASE DE DATOS II
DML – Sentencia UPDATE
EXPRESION
UPDATE EMPLOYEES
SET SALARY = SALARY * 1.1
WHERE EMPLOYEE_ID = 100 ;
EXPRESION
PREDICADO
BASE DE DATOS II
DML – UPDATE
--UPDATE MASIVO (TODOS LOS REGISTROS)
UPDATE NOMBRE_TABLA
1
SET CAMPO_X = 'ABC';
BASE DE DATOS II
DML – UPDATE
--UPDATE MASIVO (TODOS LOS REGISTROS)
UPDATE NOMBRE_TABLA
1
SET CAMPO_X = 'ABC';
BASE DE DATOS II
DML – UPDATE
--UPDATE MASIVO (TODOS LOS REGISTROS)
UPDATE NOMBRE_TABLA
1
SET CAMPO_X = 'ABC';
BASE DE DATOS II
DML – UPDATE (Ejemplos)
BASE DE DATOS II
DML – UPDATE (Ejemplos)
BASE DE DATOS II
DML – UPDATE (Ejercicio)
BASE DE DATOS II
DML – UPDATE (Ejercicio)
1. Actualizar la región de Australia para que pertenezca a Oceania
→ Tabla COUNTRIES
COUNTRIES LOCATIONS
BASE DE DATOS II
DML – DELETE
DELETE
FROM NOMBRE_TABLA;
DELETE
FROM NOMBRE_TABLA
WHERE CAMPO = VALOR;
BASE DE DATOS II
DML – DELETE vs TRUNCATE
BASE DE DATOS II
COMMIT / ROLLBACK
COMMIT
Graba en forma permanente los datos en las tablas.
ROLLBACK
Deshace los cambios realizados recientemente (desde el
último commit).
BASE DE DATOS II
Resumen DML
DELETE DELETE
FROM CLIENTE
WHERE cod_cliente = 1;
SELECT SELECT *
FROM CLIENTE
WHERE cod_cliente = 1;
BASE DE DATOS II