Vous êtes sur la page 1sur 46

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