Documente Academic
Documente Profesional
Documente Cultură
Parte II
Captulos
1. Sentencias Bsicas de SQL
2. Restriccin y Ordenamiento de Datos
3. Funciones de SQL
4. Obteniendo Datos desde Mltiples Tablas
5. Obteniendo Datos usando Funciones de Agrupacin
6. Sub-Consultas
7. Manejo de los Valores de Entrada con SQL*Plus
8. Manipulando Datos
9. Creacin y Manipulacin de Tablas
10. Restricciones de Integridad
11. Vistas
12. Secuencias, ndices y Sinnimos
Captulo 1
Sentencias Bsicas de SQL
Parte II - SQL
Sentencias Bsicas Restriccin y
Funciones de SQL
de SQL Ordenamiento de Datos
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
Tabla 1 Tabla 2
Estructura de una Sentencia SQL
SELECT [distinct] {*| columnas [alias]| ...}
FROM tabla
[WHERE condicion(es)];
NOMBRE APELLIDO
----------------------------------
JUAN PEREZ
MARIA SILEZ
RICARDO QUIROGA
Definicin de una Columna Alias
Renombra el ttulo de una columna
Es til con clculos
Es lo que sigue despus del nombre de una
columna; opcionalmente se puede escribir AS entre
el nombre de la columna y el alias
Requiere doble comilla si el alias contiene espacios o
caracteres especiales
Columnas Alias
SQL> SELECT nombre Nombre, salario Sueldo,
2 lugar_nac Lugar de Nacimiento
3 FROM empleados ;
Operador Descripcin
+ Adicin
- Sustraccin
* Multiplicacin
/ Divisin
Operadores Aritmticos
SQL> SELECT nombre, salario, salario+20
2 FROM empleados;
Nombres
--------------------------------
JUANPEREZ
MARIASILEZ
RICARDOQUIROGA
Funcion To_Char
Convierte un nmero o fecha a una cadena de
caracteres VARCHAR2 de acuerdo al formato
especificado en la mscara
NOMBRE TO_CHAR(FECHA_NAC,DD-MM-YY)
--------------------------------------------
JUAN 12-11-70
MARIA 08-04-75
RICARDO 25-06-77
Cadena de Caracteres Literales
Detalle de Empleados
--------------------------------
JUAN tiene un salario de 500
MARIA tiene un salario de 350
RICARDO tiene un salario de 120
Tipo Date
Almacena una fecha vlida segn el formato
establecido en una mscara
Fecha y tiempo comprendida entre el 1 de enero del
4712 A.C. y el 31 de diciembre del 9999 D.C.
Todo literal que sea fecha debe de estar encerrado
entre comillas simples
Funciones
To_Date
Funcion To_Date
Convierte una cadena de caracteres representando una
fecha a un valor fecha de acuerdo al formato especificado
en la mscara (si el formato es omitido, el formato ser
DD-MON-YY)
VACACIONES
--------------------------------------------
JUAN estar de vacacin el 20-12-02
MARIA estar de vacacin el 20-12-02
RICARDO estar de vacacin el 20-12-02
Filas Duplicadas
Los resultados obtenidos de las consultas son todas las
filas, incluyendo duplicados
LUGAR_NAC
---------------------------
COCHABAMBA
LA PAZ
COCHABAMBA
Eliminacin de Filas Duplicadas
Se pueden eliminar las filas duplicadas escribiendo
DISTINCT en la clusula SELECT
LUGAR_NAC
---------------------------
COCHABAMBA
LA PAZ
SQL*Plus
SQL*Plus es una herramienta de Oracle que
reconoce y acepta las sentencias SQL en el Servidor
Oracle para su ejecucin
Contiene adems su propio lenguaje de comandos
Capacidades de SQL*Plus
Describe la estructura de las tablas
Permite ejecutar sentencias SQL
Guarda y aade sentencias SQL en archivos
Ejecuta archivos guardados
Carga comandos desde un archivo al buffer para
editar
Interaccin entre SQL y SQL*Plus
Sentencias SQL Sentencias SQL
Buffer
SQL*Plus Servidor
BD
Comandos Resultado
SQL*Plus Consulta
Reporte con
Formato
Sentencias SQL Vs. Comandos
SQL*Plus
SQL SQL*Plus
Un lenguaje Un ambiente
ANSI standard Propio de Oracle
Palabras reservadas no Palabras reservadas
pueden ser abreviadas pueden ser abreviadas
Sentencias manipulan Comandos no permiten
datos y definiciones de la manipulacin de
tablas en la base de valores en la base de
datos datos
Ingreso SQL*Plus
Desde un Ambiente Windows:
sqlplus[username[/password[@database]]]
Mostrando la Estructura de las
Tablas
DESC[RIBE] tabla
Mostrando la Estructura de las
Tablas
SQL> DESCRIBE empleados;
SQL> EXIT;
Captulo 2
Restriccin y Ordenamiento de Datos
Parte II - SQL
Sentencias Bsicas Restriccin y
Funciones de SQL
de SQL Ordenamiento de Datos
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
NOMBRE APELLIDO
--------------------------------
MARIA SILEZ
Uso de la Clusula WHERE
Puede estar compuesta por varias condiciones
Operador Descripcin
= Igual a
> Mayor que
>= Mayor que o igual a
< Menor que
<= Menor que o igual a
<> Diferente
Otros Operadores de Comparacin
BETWEEN se usa para mostrar las filas
...AND... basndose en un rango de
valores
IN (lista) se usa para ir probando o
comparando con los valores de la
lista
LIKE se usa para realizar bsquedas
sensibles
- % denota cero o mas caracteres
- _ denota un caracter
IS NULL se usa para probar con valores
nulos
Operador BETWEENAND
Se usa para recuperar filas basndose en un rango
de valores
En el rango se tiene que especificar el valor mnimo
y el valor mximo
NOMBRE SALARIO
-------------------------
JUAN 500
Valor mnimo Valor mximo
MARIA 350
JOSE 800
...
Operador IN (lista)
Se usa para ir probando o comparando con los
valores de la lista
Este operador puede ser usado con cualquier tipo
NOMBRE NOMBRE
------------------- -------------------
JUAN MARIA
JOSE JANNETH
... ...
Operador IS NULL
Se usa para probar con valores nulos
No se podra usar un = porque un valor nulo no es
mismo que un nmero o un caracter o cualquier tipo
de dato
NOMBRE LUGAR_NAC
------------------------------
JOSE
FERNANDO
...
Operadores Lgicos
Un operador lgico combina el resultado de dos
condiciones para producir un solo resultado
basndose en ambas, o para invertir el resultado de
una sola condicin
Operador Descripcin
AND Retorna TRUE si ambas
condiciones son verdaderas
OR Retorna TRUE si por lo
menos una condicin es
verdadera
NOT Retorna TRUE si la
condicin es falsa
Operador AND
Retorna TRUE si ambas condiciones son
verdaderas
SELECT expr
FROM tabla
[WHERE condicion(es)]
[ORDER BY {columna, expr}[ASC|DESC]];
Uso de la Clusula ORDER BY
La clusula ORDER BY siempre debe de estar al final de
una sentencia SELECT
Se puede ordenar por una columna que no est en la lista
SELECT
Se puede ordenar no solo por una columna sino tambin
por varias, vale decir:
ORDER BY columna1, columna2, ...
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
Funciones
nombreFuncion(columna|expresion,[arg1, arg2,...])
Caracteres Conversiones
Nmeros Fechas
Funciones para Manipular Caracteres
Se dividen en:
Funciones para Conversin de Maysculas-
Minsculas
- LOWER
- UPPER
- INITCAP
Funciones para Manipulacin de Cadenas de
Caracteres
- CONCAT
- SUBSTR
- LENGTH
- INSTR
- LPAD
Funciones para Convertir
Maysculas-Minsculas
Funcin Descripcin
LOWER(columna|expresion) Convierte una cadena de
caracteres a minsculas
UPPER(columna|expresion) Convierte una cadena de
caracteres a maysculas
INITCAP(columna|expresion) Convierte el primer
caracter de cada palabra
a mayscula y los dems
a minsculas
Funciones para Convertir
Maysculas-Minsculas
Funcin Resultado
LOWER(CADENA caracter) cadena caracter
UPPER(CADENA caracter) CADENA CARACTER
INITCAP(CADENA caracter) Cadena Caracter
Funciones para Manipulacin de
Cadenas de Caracteres
Funcin Descripcin
CONCAT(columna1|expresion1, Permite concatenar dos cadenas
columna2|expresion2) de caracteres
SUBSTR(columna|expresion,m[,n]) Retorna caracteres especficos
empezando desde la posicin m,
n caracteres adelante
LENGTH(columna|expresion) Retorna la longitud de la cadena
de caracteres
INSTR(columna|expresion,c) Retorna la posicin del caracter c
en la cadena
LPAD(columna|expresion,n,cadena) Si es que el primer argumento
tiene una longitud menor que n
se completar desde derecha a
izquierda con cadena
Funciones para Manipulacin de
Cadenas de Caracteres
Funcin Resultado
CONCAT(Cadena, Grande) CadenaGrande
SUBSTR(Cadena, 1, 3) Cad
LENGTH(Cadena) 6
INSTR(Cadena, e) 4
LPAD(salario,10,*) *******500
Funciones para Manipular Nmeros
Funcin Descripcin
ROUND(columna| Redondea la columna,
expresin, n) expresin o valor a n lugares
decimales o si n es omitido,
sin lugares decimales
TRUNC(columna| Trunca la columna, expresin
expresin, n) o valor a n lugares decimales
o si n es omitido, sin lugares
decimales
MOD (m , n) Retorna el residuo de la
divisin de m entre n
Funciones para Manipular Nmeros
Funcin Resultado
ROUND(24.416, 2) 24.42
TRUNC(24.416, 2) 24.41
MOD(150, 20) 10
Funciones para Manipular Fechas
Funcin Descripcin
MONTHS_BETWEEN Numero de meses entre dos
fechas
ADD_MONTHS Aade un mes calendario a
una fecha
NEXT_DAY Siguiente da en una fecha
especifica
LAST_DAY Ultimo da del mes
ROUND Redondea una fecha
TRUNC Trunca un fecha
Funciones para Manipular Fechas
MONTHS_BETWEEN(fecha1, fecha2)
Encuentra el nmero de meses entre la fecha1 y la fecha2. El
resultado puede ser positivo como negativo. Si la fecha1 es mayor
que la fecha2, es resultado es positivo, si es menor el resultado
ser negativo
ADD_MONTHS(fecha, n)
Aade n nmeros de meses calendario a la fecha. El valor de n
debe ser entero y puede ser negativo
NEXT_DAY(fecha, caracter)
Encuentra la fecha del siguiente da de la semana especificado en
caracter a partir de fecha
LAST_DAY(fecha)
Encuentra la fecha del ltimo da del mes que contiene fecha
Funciones para Manipular Fechas
Funcin Resultado
MONTHS_BETWEEN(01-SEP-95,11-JAN-94) 19.6774194
ADD_MONTHS(05-JAN-99, 6) 05-JUL-99
NEXT_DAY(14-SEP-98,FRIDAY) 18-SEP-98
LAST_DAY(09-NOV-98) 30-NOV-98
Funciones para Manipular Fechas
ROUND(fecha[,fmt])
Retorna la fecha redondeada a la unidad especificada por el
formato fmt (que puede ser aos, meses). Si el formato fmt
es omitido, la fecha ser redondeada al da ms cercano
TRUNC(fecha[,fmt])
Retorna la fecha con el tiempo truncado a la unidad
especificada por el formato fmt (que puede ser aos,
meses). Si el formato fmt es omitido, la fecha ser truncada
al da ms cercano
Funciones para Manipular Fechas
Funcin Resultado
ROUND(25-JUL-98,MONTH) 01-AUG-98
ROUND(25-JUL-98,YEAR) 01-JAN-99
TRUNC(25-JUL-98,MONTH) 01-JUL-98
TRUNC(25-JUL-98,YEAR) 01-JAN-98
Funciones para Realizar Conversiones
Funcin Descripcin
TO_CHAR(numero|fecha[,fmt]) Convierte un numero o fecha a una
cadena de caracteres VARCHAR2
con el formato fmt
TO_NUMBER(cadena[,fmt]) Convierte una cadena de
caracteres conteniendo dgitos a
un numero con el formato opcional
fmt
TO_DATE(cadena[,fmt]) Convierte una cadena de
caracteres representando una
fecha a un valor fecha de acuerdo
al formato fmt especificado(si el
formato fmt es omitido, el formato
ser DD-MON-YY)
Funciones para Realizar Conversiones
Funcin Resultado
TO_CHAR(8500, 99,999) 8,500
TO_NUMBER(1435) 1435
TO_DATE(06-02-97,DD/MON/YYYY) 06/FEB/1997
Funciones Anidadas
Las funciones pueden estar anidadas en cualquier
nivel
Las funciones anidadas son evaluadas desde del
nivel mas interno al mas externo
F3(F2(F1(columna,arg1),arg2),arg3)
Resultado1
Resultado2
Resultado3
Funciones Anidadas
Funcin Resultado
ADD_MONTHS(TO_DATE(05-JAN-99,DD-MON-YY ),6) 05-JUL-99
TO_CHAR(NEXT_DAY(14-SEP-98,FRIDAY),DD/MM/YYYY) 18/09/1998
TO_CHAR(ROUND(25-JUL-98,MONTH),DD-MM-YYYY) 01-08-1998
Captulo 4
Obteniendo Datos desde Mltiples Tablas
Parte II - SQL
Sentencias Bsicas Restriccin y
Funciones de SQL
de SQL Ordenamiento de Datos
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
EMPLEADOS SUCURSALES
COD NOMBRE APELLIDO SALARIO FECHA_NAC ... CATEGORIA FECHA_MIN FECHA-MAX AUMENTO
----------------------------------------------- -------------------------------------------
5 JUAN PEREZ 500 12-NOV-70 1 01-JAN-70 31-DIC-75 15
7 MARIA SILEZ 350 08-ABR-75 2 01-JAN-76 31-DIC-81 10
9 RICARDO QUIROGA 120 25-JUN-77 3 01-JAN-82 31-DIC-87 5
14 JIMENA TORRICO 380 01-DIC-76 4 01-JAN-88 31-DIC-93 1
18 JOSE VARGAS 800 19-JUN-78 ...
...
CLIENTE(TITULAR) CLIENTE(AUTORIZADO)
COD CI NOMBRE APELLIDO ... CLI_COD COD CI NOMBRE APELLIDO ... CLI_COD
---------------------------------------- ----------------------------------------
14 4587962 GUSTAVO ALVAREZ 31 4854896 KAREN ACHA 10
19 4788965 MARCELA SANCHEZ 41 4755166 MARCO ALCOCER 14
22 4155877 CARLOS ZENTENO 66 4877514 PAOLA CACERES 35
35 3587442 HERMAN CACERES 87 4621547 LUIS CACERES 35
... ...
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
EMPLEADOS
MIN(FECHA_NAC) EMPLEADOS
--------------
19-JUN-78
Funcin COUNT
COUNT(*) devuelve el nmero de filas en una tabla.
Tiene dos formatos:
- COUNT(*) incluye nulos
- COUNT(expr) No toma en cuenta nulos
SQL> SELECT COUNT(*)
2 FROM empleados
3 WHERE suc_cod = 3;
EMPLEADOS
3 14
18
JIMENA TORRICO
JOSE VARGAS
3
3
Creando Grupos de Datos
EMPLEADOS
SUC_COD AVG(SALARIO)
----------------------------
2 350
3 400
5 333.33
7 260
Uso de la Clusula HAVING
Se usa la clusula HAVING para restringir los grupos
obtenidos
- Primero las filas son agrupadas
- La funcin de agrupacin es aplicada
- Los grupos que cumplen la clusula HAVING sern mostrados
EMPLEADOS
SUC_COD MAX(SALARIO) COD ... SALARIO SUC_COD
--------------------- ------------------------------
7 350 2
15 120 2
3 500 5 500 3
18 400 3
7 400 14 350 3
21 350 3
2 350 5
17 300 5
22 350 5
9 120 7
11 400 7
Funciones de Agrupacin Anidadas
As como las funciones de SQL, las funciones de
agrupacin pueden ser anidadas
MAX(AVG(SALARIO))
AVG(SALARIO)
------------------- ----------------
235
400 400
333.33
260
Captulo 6
Sub-Consultas
Parte II - SQL
Sentencias Bsicas Restriccin y
Funciones de SQL
de SQL Ordenamiento de Datos
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
NOMBRE
---------------------
JUAN
MARIA
...
Uso de una Sub-Consulta
SQL> SELECT nombre
Siempre tiene que
2 FROM empleados e, tener un alias
3 ( SELECT salario
4 FROM empleados
5 WHERE cod = 9) sueldo9
120
6 WHERE e.salario > sueldo9.salario;
NOMBRE
---------------------
JUAN
MARIA
...
Al usar una Sub-Consulta
Encerrar las sub-consultas entre parntesis
Colocar las sub-consultas del lado derecho del
operador de comparacin
No escribir la clusula ORDER BY en una sub-
consulta
Usar operadores que devuelven una fila con sub-
consultas que devuelven una fila
Usar operadores que devuelven mas de una fila con
sub-consultas que devuelven mas de una fila
Clases de Sub-Consultas
Sincrnicas
Existen columnas de la consulta principal en la sub-consulta
Retorna
Sub Consulta JUAN
Retorna
Sub Consulta JUAN
MARIA
Retorna
JUAN 500
Sub Consulta
MARIA 350
Sub-Consultas que devuelven
una fila
Retornan solo una fila
Se pueden usar los siguientes operadores:
Operador Descripcin
= Igual a
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
<> Diferente
Ejecutando Sub-Consultas que
devuelven una fila
SQL> SELECT nombre, lugar_nac
2 FROM empleados
COCHABAMBA
3 WHERE lugar_nac =
4 ( SELECT lugar_nac
5 FROM empleados
6 WHERE cod = 9)
7 AND salario > 500
8 ( SELECT salario
9 FROM empleados
10 WHERE cod = 5);
NOMBRE LUGAR_NAC
----------------------
JUAN COCHABAMBA
Sub-Consultas que devuelven
ms de una fila
Retornan ms de una fila
Se puede usar los siguientes operadores:
Operador Descripcin
IN Igual a cualquier elemento de
una lista
ANY Compara un valor con cada
valor resultante de la sub-
consulta
ALL Compara un valor con todos
los valores resultantes de la
sub-consulta
Ejecutando Sub-Consultas que
devuelven ms de una fila
SQL> SELECT nombre, salario, suc_cod
2 FROM empleados
3 WHERE salario IN
4 ( SELECT MIN(salario)
5 FROM empleados
6 GROUP BY suc_cod);
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
1 row created.
La Sentencia UPDATE
Para modificar las filas de una tabla se usa la
sentencia UPDATE
UPDATE tabla
SET columna = valor [, columna = valor]
[WHERE condicion];
ROLLBACK to Savepoint B
ROLLBACK to Savepoint A
ROLLBACK
Captulo 9
Creacin y Manipulacin de Tablas
Parte II - SQL
Sentencias Bsicas Restriccin y
Funciones de SQL
de SQL Ordenamiento de Datos
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
Se debe de especificar:
- Nombre de la tabla
- Nombre de columna, tipo de dato de la columna y longitud de
la columna
Uso de la Sentencia CREATE TABLE
Creacin de una tabla
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
columna, ...
[CONSTRAINT nombre_constraint] tipo_constraint
(columna, ...),
Restriccin de Integridad NOT NULL
Asegura que valores nulos no sean ingresados en las
columnas
EMPLEADOS
COD NOMBRE APELLIDO LUGAR_NAC ... SUC_COD
5 JUAN PEREZ COCHABAMBA 3
7 MARIA SILEZ LA PAZ 2
9 RICARDO QUIROGA COCHABAMBA 7
90 OSCAR VARGAS 7
...
Restriccin NOT NULL (las filas Ausencia de la restriccin NOT NULL Restriccin NOT
no pueden contener un valor (cualquier fila puede contener un NULL
nulo para esta columna) valor nulo para esta columna)
Restriccin de Integridad NOT NULL
Definida solo para nivel de columnas
INSER INTO
6 ACCION No permitido (ACCION ya existe)
7 INFANTIL
Permitido
Restriccin de Integridad UNIQUE
COD DESCR
1 DRAMA
2 ACCION
3 COMEDIA
4 TERROR
5 SUSPENSO
INSER INTO
2 CIENCIA FICCION
No permitido (el cdigo 20 ya existe)
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
90 OSCAR VARGAS 7
...
VISTA EMPLEADOSVI
90 OSCAR VARGAS
ERROR at line 1:
ORA-01402: VIEW CHECK OPTION where-clause violation
Denegando Operaciones DML
Se puede asegurar que operaciones DML no ocurran
usando la opcin WITH READ ONLY
Cualquier intento de realizar una operacin DML llevar
a un mensaje del Servidor Oracle
Obteniendo Datos
Obteniendo Datos
Usando Funciones de Sub-Consultas
desde Mltiples Tablas
Agrupacin
Manualmente
Los usuarios pueden crear ndices no nicos en las
columnas para acelerar el tiempo de acceso a las filas
Sentencia CREATE INDEX
Se puede crear un ndice para una o ms columnas
Eliminar el sinnimo