Elaboracin de
sentencias SQL y
Diccionario de Datos
Ing. Marcos Montesinos Yarlequ
(pmmontes@cibertec.edu.pe)
Ing. Marcos Montesinos
Logro de la Sesin
Al trmino de la unidad, el alumno desarrolla consultas
que obtienen la informacin solicitada, utilizando el
diccionario de datos y las principales vistas de la Metadata
de la Base de Datos Oracle utilizando las mejores prcticas
en la elaboracin de sentencias SQL.
Ing. Marcos Montesinos
Temario
2.1. Tema 2: Elaboracin de Sentencias SQL
2.1.1. Introduccin a SQL
2.1.2. Instrucciones DML y operadores
2.1.3. Consultando dos o ms tablas
2.1.4. Funciones predefinidas
2.2. Tema 3: Diccionario de Datos
2.2.1 Introduccin al Diccionario de Datos
2.2.2 Estructura del Diccionario
2.2.3 Uso del Diccionario de Datos
Ing. Marcos Montesinos
Introduccin a SQL
La historia de SQL empieza en 1974, cuando un grupo
de IBM desarroll un lenguaje para la especificacin de
las caractersticas de las bases de datos que
adoptaban el modelo relacional. Este lenguaje se
llamaba SEQUEL (Structured English Query Language).
Sin embargo, fue ORACLE quien lo introdujo por
primera vez en 1979 en un programa comercial.
El SEQUEL terminara siendo el antecesor del SQL. En
1986 es estandarizado por el ANSI, dando lugar a la
primera versin estndar de este lenguaje, el SQL-86.
Al ao siguiente, en 1987, este estndar es tambin
adoptado por la ISO.
Ing. Marcos Montesinos
Ing. Marcos Montesinos
Categorias
DML
SELECT
INSERT
UPDATE
DELETE
DDL
CREATE
ALTER
DROP
RENAME
TRUNCATE
TC
COMMIT
ROLLBACK
SAVEPOINT
DCL
GRANT
REVOKE
Ing. Marcos Montesinos
Componentes Sintcticos
La mayora de sentencias SQL tienen la misma estructura.
Todas comienzan por un verbo (select, insert, update, create), a
continuacin le sigue una o ms clausulas que nos dicen los datos
con los que vamos a operar (from, where), algunas de estas son
opcionales y otras obligatorias como es el caso del from.
Ing. Marcos Montesinos
Otras Condiciones de Comparacin
Operador
Significado
BETWEEN
...AND...
Entre dos valores (ambos inclusive),
IN(set)
Coincide con cualquiera de una lista de valores
LIKE
Coincide con un patrn de caracteres
IS NULL
Es un valor nulo
Ing. Marcos Montesinos
Condiciones Lgicas
Operador
Significado
AND
Devuelve TRUE si las dos condiciones
componentes son verdaderas
OR
Devuelve TRUE si alguna de las
condiciones componentes es verdadera
NOT
Devuelve TRUE si la siguiente
condicin es falsa
Ing. Marcos Montesinos
Reglas de Prioridad
SELECT
FROM
WHERE
OR job
AND
ename, job, sal
emp
job = 'SALESMAN'
= 'MANAGER'
sal > 1500;
SELECT
FROM
WHERE
OR
AND
ename, job, sal
emp
( job = 'SALESMAN'
job = 'MANAGER' )
sal > 1500;
Ing. Marcos Montesinos
GROUP BY
Las funciones de grupo operan sobre
juegos de filas para proporcionar un
resultado por grupo.
El salario
mximo en
la tabla
EMPLOYEES.
Ing. Marcos Montesinos
Tipos de Funciones de Grupo
AVG
...PROMEDIO
COUNT ...CUENTA
MAX
...MAXIMO
MIN
...MINIMO
STDDEV ...DESVIAC STD
SUM
...SUMA
VARIANCE..VARIANZA
Ing. Marcos Montesinos
Uso GROUP BY
SELECT job, SUM(sal)
FROM
emp
GROUP BY
job;
Ing. Marcos Montesinos
Sintaxis de Subconsulta
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM
table);
La subconsulta (consulta interna) se ejecuta una vez
antes de la consulta principal.
El resultado de la subconsulta lo utiliza la consulta
principal (consulta externa).
Ing. Marcos Montesinos
Uso de una Subconsulta
SELECT ename
FROM
emp
WHERE sal >
(SELECT sal
FROM
emp
WHERE ename =
'SCOTT');
Ing. Marcos Montesinos
Sintaxis de la Sentencia INSERT
Agregue nuevas filas a una tabla
mediante la sentencia INSERT.
INSERT
INSERT
VALUES
VALUES
INTO
INTO table
table [(column
[(column [,
[, column...])]
column...])]
(value
(value [,
[, value...]);
value...]);
Con esta sintaxis slo se inserta una
fila cada vez.
Ing. Marcos Montesinos
Ejemplo
INSERT INTO emp (empno,
ename, job,
mgr, hiredate,
sal, comm, deptno
)
VALUES
(1234,
'CURTIS', 'MANAGER',
1111, SYSDATE,
6900, 200, 10);
1 row created.
Ing. Marcos Montesinos
Creacin de un Archivo de Comandos
Utilice la sustitucin & en una sentencia
SQL para solicitar valores.
& es una variable pendiente de
asignacin para el valor de la
variable.
INSERT INTO dept
(deptno, dname, loc)
VALUES
(&deptno, '&dname', '&loc')
Ing. Marcos Montesinos
Copia de Filas desde otra Tabla *
Escriba la sentencia INSERT con una
subconsulta.
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM
employees
WHERE job_id LIKE '%REP%';
No utilice la clusula VALUES.
Haga coincidir el nmero de columnas de
la clusula INSERT con el de la
subconsulta.
Ing. Marcos Montesinos
Sintaxis Sentencia UPDATE
Modifique las filas existentes con la
sentencia UPDATE.
UPDATE
UPDATEtable
table
SET
column
SET
column == value
value [,
[, column
column == value,
value, ...]
...
[WHERE
condition];
[WHERE
condition];
Actualice ms de una fila cada vez si
es necesario.
Ing. Marcos Montesinos
Actualizacin de las Filas de una Tabla
Si incluye la clusula WHERE, las filas
especficas se modifican.
UPDATE emp
SET
sal = 2000
WHERE ename = 'CURTIS';
UPDATE
UPDATE emp
emp
SET
mgr=
SET
mgr= 123;
123;
Se modifican todas las filas de la tabla
si omite la clusula WHERE.
Ing. Marcos Montesinos
Actualizacin de Filas
Basndose en otra Tabla *
Utilice subconsultas en sentencias UPDATE
para actualizar las filas de una tabla
basndose en valores de otra tabla.
UPDATE
SET
copy_emp
department_id
WHERE
job_id
=
=
(SELECT department_id
FROM employees
WHERE employee_id = 100)
(SELECT job_id
FROM employees
WHERE employee_id = 200);
Ing. Marcos Montesinos
La Sentencia DELETE
Puede eliminar las filas existentes de una
tabla utilizando la sentencia DELETE.
DELETE
table
DELETE [FROM]
[FROM]
table
[WHERE
condition];
[WHERE
condition];
Ing. Marcos Montesinos
Supresin de Filas de una Tabla
Se suprimen filas especficas si incluye
la clusula WHERE.
DELETE
DELETE
WHERE
WHERE
FROM
FROM emp
emp
ename
ename == 'CURTIS';
'CURTIS';
DELETE
DELETE FROM
FROM emp;
emp;
Ing. Marcos Montesinos
Supresin de Filas Basndose
en otra Tabla *
Utilice subconsultas en sentencias DELETE
para eliminar las filas de una tabla
basndose en los valores de otra tabla.
DELETE FROM employees
WHERE department_id =
(SELECT department_id
FROM
departments
WHERE department_name LIKE '%Public%')
Ing. Marcos Montesinos
Creacin de Uniones con la Clusula JOIN
La condicin de unin para la unin
natural es bsicamente una unin de
igualdad de todas las columnas con
el mismo nombre.
Para especificar condiciones arbitrarias
o especificar columnas para unir, se
utiliza la clusula ON.
La condicin de unin se separa de
otras condiciones de bsqueda.
La clusula ON facilita la comprensin
Ing. Marcos Montesinos
del cdigo.
Recuperacin de Registros con la
Clusula JOIN
SELECT e.empno, e.ename,
e.deptno, d.dname
FROM
emp e JOIN dept d
ON
(e.deptno = d.deptno);
SELECT e.empno, e.ename,
e.deptno, d.dname
FROM
emp e, dept d
WHERE e.deptno = d.deptno;
SELECT e.empno, e.ename,
e.deptno, d.dname
FROM
emp e, dept d
WHERE e.deptno(+) = d.deptno;
Ing. Marcos Montesinos
Funciones de Caracteres
Funciones de
Caracteres
Funciones de manipulacin
de maysculas/minsculas
LOWER
UPPER
INITCAP
Funciones de manipulacin
de caracteres
CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
Ing. Marcos Montesinos
Funciones de Manipulacin de
Maysculas/Minsculas
Estas funciones convierten las
maysculas/minsculas para cadenas de
caracteres.
Function
Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL
Sql Course
Course')
Ing. Marcos Montesinos
Funciones de Manipulacin de
Caracteres
Estas funciones manipulan cadenas de
caracteres:
Funcin
CONCAT('Hello', 'World')
SUBSTR('HelloWorld',1,5)
LENGTH('HelloWorld')
INSTR('HelloWorld', 'W')
LPAD(salary,10,'*')
RPAD(salary, 10, '*')
TRIM('H' FROM 'HelloWorld')
Resultado
HelloWorld
Hello
10
6
*****24000
24000*****
elloWorld
Ing. Marcos Montesinos
Funciones Numricas
ROUND: Redondea el valor a los decimales especificados.
ROUND(45.926, 2)
TRUNC:
45.93
Trunca el valor a los decimales especificados.
TRUNC(45.926, 2)
45.92
MOD: Devuelve el resto de la divisin.
MOD(1600, 300)
100
ABS: Calcula el valor absoluto de n.
ABS(-16)
16
CEIL: Calcula el menor numero entero mayor o igual que n.
CEIL(16.7)
17
FLOOR: Calcula el mayor numero entero menor o igual que n.
FLOOR(16.7)
16
POWER: Devuelve m elevado a la n potencia, n debe ser entero
POWER(3,2)
Ing. Marcos Montesinos
Trabajo con Fechas
La base de datos Oracle almacena fechas
en un formato numrico interno: siglo,
ao, mes, da, horas, minutos,
segundos.
El formato de visualizacin de fecha por
defecto es
DD-MON-RR.
Le permite almacenar fechas del siglo XXI en
el siglo XX especificando solamente los
dos ltimos dgitos del ao.
Le permite almacenar fechas del siglo XX en
el siglo XXI de la misma forma.
Ing. Marcos Montesinos
Trabajo con Fechas
SYSDATE es una funcin que devuelve:
Fecha
Hora
Ing. Marcos Montesinos
Funciones de Fecha
Funcin
Descripcin
MONTHS_BETWEEN
Nmero de meses
entre dos fechas
ADD_MONTHS
Suma meses de calendario a
una fecha
NEXT_DAY
Siguiente da de la fecha
especificada
LAST_DAY
ltimo da del mes
ROUND
Redondea la fecha
TRUNC
Trunca la fecha
Ing. Marcos Montesinos
Uso de Funciones de Fecha
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
19.6774194
ADD_MONTHS ('11-JAN-94',6)
'11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY')
'08-SEP-95'
LAST_DAY('01-FEB-95')
'28-FEB-95'
Ing. Marcos Montesinos
Uso de Funciones de Fecha
Asuma SYSDATE = '25-JUL-95':
ROUND(SYSDATE,'MONTH')
AUG-95
ROUND(SYSDATE ,'YEAR')
96
TRUNC(SYSDATE ,'MONTH')
JUL-95
TRUNC(SYSDATE ,'YEAR')
JAN-95
0101-JAN0101-
Ing. Marcos Montesinos
Conversin Explcita de Tipos de Dato
TO_NUMBER
NUMBER
TO_CHAR
TO_DATE
CHARACTER
DATE
TO_CHAR
Ing. Marcos Montesinos
Uso de la Funcin TO_CHAR con Fechas
TO_CHAR(date,
TO_CHAR(date, 'format_model')
'format_model')
El modelo de formato:Se debe escribir entre
comillas sencillas y es sensible a
maysculas/minsculas.
Puede incluir cualquier elemento de formato de
fecha vlido.
Tiene un elemento fm para eliminar espacios
rellenados o suprimir ceros a la izquierda.
Se separa del valor de fecha con una coma.
Ing. Marcos Montesinos
Elementos del Modelo de Formato
de Fecha
YYYY
Ao completo en nmeros
YEAR
Aos en letra
MM
Valor de dos dgitos para el mes
MONTH
Nombre completo del mes
MON
Abreviatura de tres letras del mes
DY
Abreviatura de tres letras del da de la
semana
DAY
Nombre completo del da de la
semana
DD
Da del mes en nmero
Ing. Marcos Montesinos
Elementos del Modelo de Formato
de Fecha
Los elementos de hora formatean la
porcin de hora de la fecha.
HH24:MI:SS AM
15:45:32 PM
Agregue cadenas de caracteres
escribindolas entre comillas dobles.
DD "of" MONTH
12 of OCTOBER
Ing. Marcos Montesinos
Uso de la Funcin TO_CHAR con Fechas
SELECT ename,
TO_CHAR(hiredate, 'fmDD Month YYYY')
AS HIREDATE
FROM
emp;
Ing. Marcos Montesinos
Uso de la Funcin TO_CHAR con
Nmeros
TO_CHAR(number,
TO_CHAR(number, 'format_model')
'format_model')
Estos son algunos de los elementos de formato
que puede utilizar con la funcin TO_CHAR para
mostrar un valor numrico como carcter:
9
Representa un nmero.
Obliga a mostrar un cero.
Coloca un signo de dlar flotante.
Utiliza el smbolo de divisa local flotante.
Imprime una coma decimal.
Imprime un indicador de miles. Ing. Marcos Montesinos
Uso de la Funcin TO_CHAR con
Nmeros
SELECT TO_CHAR(sal, '99,999.00') SALARY
FROM
emp
WHERE ename = 'SCOTT';
Ing. Marcos Montesinos
Uso de las Funciones TO_NUMBER y
TO_DATE
Convierta una cadena de caracteres en formato
numrico utilizando la funcin TO_NUMBER:
TO_NUMBER(char[,
TO_NUMBER(char[, 'format_model'])
'format_model'])
Convierta una cadena de caracteres en formato de fecha utilizando
la funcin TO_DATE:
TO_DATE(char[,
TO_DATE(char[, 'format_model'])
'format_model'])
Estas funciones tienen un modificador fx que
especifica la coincidencia exacta para el argumento
de caracteres y un modelo de formato de fecha de
una funcin TO_DATE.
Ing. Marcos Montesinos
Preguntas ?
Ing. Marcos Montesinos
Laboratorio
Ing. Marcos Montesinos