Professional Documents
Culture Documents
Resumen Unidad II
Gestin de fechas 7
lgebra Relacional 11
Seleccin (Select) 11
Proyeccin (Project) 12
NaturalJoin 13
Funciones de agregacin 18
Subconsultas 22
Vistas 26
Vistas Materializadas 27
Recomendaciones al momento de disear bases de datos:
Las sentencias DDL son las que se utilizan para definir, modificar o eliminar
estructuras o elementos fsicos dentro de la base de datos.
Las sentencias DML son las que se utilizan para insertar, modificar o eliminar
registros o tuplas dentro de la base de datos.
Insertar un registro
UPDATE NOMBRE_TABLA
SET CAMPO_1 = NUEVO_VALOR1,
CAMPO_2 = NUEVO_VALOR2,
[...] ,
CAMPO_N = NUEVO_VALOR_N
WHERE CONDICIONES;
Eliminar un registro
COMMIT;
ROLLBACK;
Consulta bsica (es recomendable siempre, escribir los nombres de los campos
que se necesitan):
SELECT *
FROM NOMBRE_TABLA;
SELECT CAMPO_1,
CAMPO_2,
[...] ,
CAMPO_N
FROM NOMBRE_TABLA;
SELECT CAMPO_1,
CAMPO_2,
[...] ,
CAMPO_N
FROM NOMBRE_TABLA
WHERE CONDICIONES;
Operadores lgicos:
AND
OR
NOT
IN (Retorna los registros que cumplan con una lista especifica de opciones)
Operadores de comparacin:
=
>=
<=
!= <>
BETWEEN
SELECT *
FROM TBL_CLIENTES
WHERE NOMBRE_CLIENTE != 'Maria';
SELECT *
FROM TBL_CLIENTES
WHERE NOMBRE_CLIENTE <> 'Maria';
SELECT *
FROM TBL_CLIENTES
WHERE NOT NOMBRE_CLIENTE = 'Maria';
Gestin de fechas
Para convertir de caracteres a fecha se utiliza la funcin
TO_DATE(CADENA, FORMATO):
TO_CHAR(FECHA, FORMATO):
Siglos y aos
CC Siglo
SCC Siglo. Si es AC (Antes de Cristo), lleva un signo -
YYYY Ao, formato de 4 dgitos
SYYY Ao, formato de 4 dgitos. Si es AC lleva un signo -
YY Ao, formato de 2 dgitos
YEAR Ao, escrito en letras y en ingls (por ejemplo, 'TWO THOUSAND TWO')
SYEAR dem, pero si es AC lleva el signo -
BC Antes o Despus de Cristo (AC o DC) para usar con los anteriores, por
ejemplo YYYY BC
Meses
Q Trimestre: Ene-Mar=1, Abr-Jun=2, Jul-Sep=3, Oct-Dic=4
MM Nmero de mes (1-12)
RM Nmero de mes en nmeros romanos (I-XII)
MONTH Nombre del mes completo rellenado con espacios hasta 10 espacios
(SEPTIEMBRE)
FMMONTH Nombre del mes completo, sin espacios adicionales
YEAR Ao, escrito en letras y en ingls (por ejemplo, 'TWO THOUSAND
TWO')
SYEAR dem, pero si es AC lleva el signo -
BC Antes o Despus de Cristo (AC o DC) para usar con los anteriores, por
ejemplo YYYY BC
Semanas
WW Semana del ao (1-52)
W Semana del mes (1-5)
Das
DDD Da del ao (1-366)
DD Da del mes (1-31)
D Da de la semana (1-7)
DAY Nombre del da de la semana rellenado a 9 espacios (MIRCOLES)
FMDAY Nombre del da de la semana, sin espacios
DY Tres primeras letras del nombre del da de la semana
DDTH Da (ordinal): 7TH
DDSPTH Da ordinal en palabra, en ingls: SEVENTH
Horas
HH Hora del da (1-12)
HH12 Hora del da (1-12)
HH24 Hora del da (1-24)
SPHH Hora del da, en palabra, ingls: SEVEN
AM am o pm, para usar con HH , como 'HH:MI am'
PM am o pm
A.M. a.m. o p.m.
P.M. a.m. o p.m.
Minutos y segundos
MI Minutos (0-59)
SS Segundos (0-59)
SSSS Segundos despus de medianoche (0-86399)
Para crear una secuencia en Oracle mediante SQL utilizaremos el comando create
sequence con la siguiente sintaxis:
Se recomienda utilizar prefijos y que la secuencia tenga el nombre del campo que se requiere que
sea autoincremental, ejemplo: SQ_CAMPO_NUMERICO.
Por ejemplo, si queremos crear una secuencia que empiece en 100 y se incremente de uno en uno
utilizaremos la siguiente consulta SQL:
Para utilizar la secuencia, en primer lugar, crearemos una tabla de prueba (para
insertar un registro y comprobar que la secuencia anterior funciona correctamente):
SQ_NOMBRE_SECUENCIA.CURRVAL
lgebra Relacional
Seleccin (Select)
Este operador se aplica a una relacin R produciendo una nueva relacin con un
subconjunto de tuplas de R. Las tuplas de la relacin resultante son las que
satisfacen una condicin C sobre algn atributo de R. Es decir, selecciona filas
(tuplas) de una tabla segn un cierto criterio C. El criterio C es una expresin
condicional, es booleana esto quiere decir que para cada tupla de R toma el valor
verdadero (true) o falso (false).
Ejemplo:
El operador de Proyeccin se utiliza para producir una nueva relacin desde R. Esta
nueva relacin contiene slo algunos de los atributos de R, es decir, realiza la
seleccin de algunas de las columnas de una tabla R.
Proyeccin en lgebra Relacional se representa por la letra griega pi mediante la
siguiente forma ( , . . . , ), donde , . . . , son las columnas, y la relacin.
Ejemplo:
Algebra relacional: (, )
Ejemplo:
Ejemplo:
Algebra relacional:
Ejemplo:
Algebra relacional: _
SELECT *
SQL: FROM TBL_USUARIOS
INNER JOIN TBL_TIPO_USUARIO
ON (TBL_USUARIOS.CODIGO_TIPO_USUARIO =
TBL_TIPO_USUARIO.CODIGO_TIPO_USUARIO);
Cruces (Joins) Convencionales (INNER JOIN, NATURAL JOIN)
SELECT A.NOMBRE_USUARIO,
A.CORREO,
B.TIPO_USUARIO,
B.DESCRIPCION
FROM TBL_USUARIOS A
INNER JOIN TBL_TIPO_USUARIO B
ON (A.CODIGO_TIPO_USUARIO = B.CODIGO_TIPO_USUARIO);
Utilizando NATURAL JOIN, en el caso de utilizar este tipo de JOIN los campos
deben llamarse igual en ambas tablas:
SELECT A.NOMBRE_USUARIO,
A.CORREO,
B.TIPO_USUARIO,
B.DESCRIPCION
FROM TBL_USUARIOS A
NATURAL JOIN TBL_TIPO_USUARIO B;
SELECT A.NOMBRE_USUARIO,
A.CORREO,
B.TIPO_USUARIO,
B.DESCRIPCION
FROM TBL_USUARIOS A,
TBL_TIPO_USUARIO B
WHERE A.CODIGO_TIPO_USUARIO = B.CODIGO_TIPO_USUARIO;
Usuario de pruebas HR (Human Resources)
Oracle viene por defecto con un esquema de pruebas llamado HR, el cual contiene
un conjunto de tablas relacionadas a un sistema de Recursos Humanos, dicho
esquema por defecto est bloqueado por lo cual se define a continuacin el script
para desbloquearlo y asignar una contrasea.
INNER JOIN:
NATURAL JOIN:
Con la sentencia INNER JOIN existe prdida de informacin cuando el campo que
hace la relacin (llave fornea) es nulo o tiene un valor que no existe (sin integridad
referencial). Los registros que no coinciden, no son tomados en cuenta al momento
de utilizar un INNER JOIN, esto en muchas ocasiones puede ser catastrfico ya que
puede haber prdida de informacin valiosa.
Para evitar este problema se utiliza la sentencia LEFT JOIN o RIGHT JOIN de tal
forma que se incluye los registros de la tabla de la derecha o de la izquierda
(dependiendo del join) de tal forma que no exista prdida de registros para los que
no coincidan con la llave primaria y la llave fornea.
Ejemplo:
Intente probar este script con un INNER JOIN y luego con un LEFT JOIN y podr ver
que existe prdida de informacin utilizando el INNER JOIN mientras que con el otro
se conserva la misma cantidad de registros.
Las funciones de agregacin bsicas que soportan todos los gestores de bases de
datos son las siguientes:
Las funciones anteriores son las bsicas en SQL, pero cada sistema gestor de bases
de datos relacionales ofrece su propio conjunto, ms amplio, con otras funciones de
agregacin particulares. Puede consultar las que ofrecen SQL Server, Oracle y
MySQL.
Todas estas funciones se aplican a una sola columna, que especificaremos entre
parntesis, excepto la funcin COUNT(), que se puede aplicar a una columna o
indicar un *. La diferencia entre poner el nombre de una columna
(COUNT(NOMBRE_CAMPO)) o un * (COUNT(*)) , es que en el primer caso no
cuenta los valores nulos para dicha columna, y en el segundo s.
Jefes
Gerentes
Directores
Analistas
Clientes
Usuarios de soporte
Programadores
Funciones especiales para cadenas
Las siguientes son algunas de las funciones que ofrece Oracle para trabajar con
cadenas de caracteres:
SELECT RTRIM('la casa lila', 'la') FROM DUAL; -- DEVUELVE 'la casa li'
SELECT RTRIM('la casa lila ', 'la') FROM DUAL; -- NO BORRA NADA
SELECT RTRIM('la casa lila ') FROM DUAL; -- RETORNA 'la casa lila'
Una subconsulta es una consulta SELECT que est anidada en una instruccin
SELECT, INSERT, UPDATE o DELETE; o dentro de otra subconsulta. Puede anidarse
dentro de la clusula WHERE o HAVING de una instruccin SELECT, INSERT, UPDATE
o DELETE. En una subconsulta, la instruccin SELECT nos para proporciona un
conjunto de uno o ms valores que se utilizan para evaluar una expresin.
Sintaxis:
SELECT X
FROM Y
WHERE Z;
X: (Un solo campo, un solo registro).
Y: (Hay que tener cuidado al momento de realizar cruces)
Z: (Un solo campo y varios registros Un solo campo, un solo registro)
Los operadores aritmticos de comparacin son:
=, <, >, >=, <=
Por ejemplo: WHERE edad = (SELECT edad FROM tablaX WHERE condicin
que retorna un nico registro).
ETL.
Tablas intermedias.
Backups.
Anlisis aislados en nuevas tablas.
Operadores UNION, UNION ALL, MINUS, INTESECT
Podemos combinar multitud de consultas con los operadores UNION, UNION ALL,
INTERSECT, y MINUS.
Todos estos conjuntos de operadores tienen la misma precedencia, por lo que si una
consulta contiene varios de estos operadores Oracle los evaluar de izquierda a
derecha siempre que no haya parntesis que especifiquen otro orden.
La restriccin para utilizar estos operadores es que las consultas que se combinan
deben de tener la misma cantidad de campos (columnas).
UNION ALL: cuando se aplica sobre dos consultas, el resultado sern los
registros de la primera consulta ms los registros de la segunda consulta.
Incluso los duplicados.
En teora de conjuntos .
En SQL CONSULTA UNION ALL CONSULTA;
MINUS: cuando se aplica sobre dos consultas, el resultado sern los registros
que estn en la primera consulta pero que no aparecen en la segunda
consulta.
En teora de conjuntos .
En SQL CONSULTA MINUS CONSULTA;
Ejemplo:
UNION: La siguiente consulta nos devolver los clientes que han comprado en
el ao 2010 como en el ao 2011, pero sin repetirse:
UNION ALL: La consulta ahora nos devolver los clientes que han comprado
tanto en el ao 2010 como en el ao 2011 (si un cliente compr en ambos
aos, aparecer 2 veces, porque no elimina duplicados):
INTERSECT: Este operador devuelve solo las filas que aparecen en ambas
consultas, es decir los clientes que fueron clientes en el 2011 y en el 2010:
Una vista, es una tabla lgica basada en una o ms tablas o vistas. Una vista no
contiene datos en s, refleja la informacin de las tablas. Las tablas en que se basa
una vista se llaman tablas base.
Las principales razones por las que podemos crear vistas son:
Seguridad: nos pueden interesar que los usuarios tengan acceso a una parte
de la informacin que hay en una tabla, pero no a toda la tabla.
Sintaxis:
Ejemplo:
Ejemplo
Vistas Materializadas
Sintaxis:
CREATE MATERIALIZED VIEW MVW_NOMBRE_VISTA
[TABLESPACE NOMBRE_TS]
[PARALELL (DEGREE n)]
[BUILD {INMEDIATE | DEFERRED}]
[REFRESH {FAST | COMPLETE | FORCE | NEVER | ON COMMIT}]
[{ENABLE | DISABLE} QUERY REWRITE]
AS
(SELECT ...
FROM ...
WHERE ...);
**Nota: Los valores por defecto de las distintas opciones estn subrayados.
Ejemplo:
Ejemplo