Manual Oracle SQL 2016 Definitivo
Manual Oracle SQL 2016 Definitivo
Caracas, 14-04-2016.
Pág.
INTRODUCCIÓN 1
2
Introducción
3
CAPITULO I
Existen base de datos del tipo Relacional, jerárquica, de red, en el caso de Oracle
es un tipo de Base de Datos de tipo relacional.
4
A continuación definiremos algunos conceptos básicos relacionados a Base de
Datos:
Esquema de una Bd: Es la representación gráfica de la estructura de la BD,
es la que define las tablas, campos, relaciones.
Campo: Es la unidad mínima de referencia, también podemos definirla como el
conjunto de columnas o categorías verticales.
Registros: Son las filas o agrupaciones horizontales de datos de campos.
ORACLE
Este gestor de Base de datos es utilizado por grandes Empresas ya que maneja
grandes volúmenes de datos por ende su mantenimiento es muy costoso y por ende
requiere de licencia.
5
Tipos de datos en Oracle
6
Tipo DATE de Oracle que contiene información de año, mes, día, hora,
minuto y segundo.
Existen otros tipos de datos que permiten guardar información de gran
Tamaño (gigabytes) tanto de tipo binario como de tipo alfanumérico. Estos tipos
tampoco se definen en la norma ANSI y por lo cual los fabricantes los
implementan de forma diferente.
En el apartado de anexos se indica una equivalencia entre los tipos de
datos ANSI y DB2 de IBM y los tipos de Oracle.
Una vez lo hayan descargado, para el caso del instalador Oracle 11g XE
seleccionan el ejecutable y se sugiere Ejecutar como administrador para evitar
problemas durante la instalación. Ver Anexo 3
8
Anexo 3. Ejecutando Instalador de Oracle 11g XE.
9
CONSOLA DE
COMANDOS SQL
10
con la clave que establezcas: en el ejemplo t usuario es TELECOM y clave :123 tal
como se observa en el ANEXO 6.
1.3.2._SQL DEVELOPER.
http://www.oracle.com/technetwork/es/developer-tools/sql-
developer/downloads/index.html
11
Ejecutor de Java versión 7
La versión de Windows.
Programa portable
Ejecutor
12
Si al abrir el sql developer, le despliega una ventanita como esta en el anexo
(ANEXO 10), debes indicarle donde está ubicado el JDK de java si no lo ha
encontrado el automáticamente.
Una vez puesto el path del Java JDK el programa SQL Developer arrancará.
Podrán probar la conexión por el sql developer, se crearan una conexión de un
esquema haciendo click en archivo en la opción Nuevo --- conexión base de
datos.
Si desean realizarlo con el usuario del Sistema del XE es colocar usuario: SYSTEM
y la clave con la que registro la instalación. Ver ANEXO 10
13
ANEXO 10. Conexión desde Sql Developer
14
CAPITULO II
2._Características Sql
2.1._Qué es S.Q.L.
2.3._Conceptos Generales.
15
debido a que las tablas son los contenedores de toda la información, es importante
incluir la sintaxis CREATE TABLE en este manual de Sql para Oracle.
La sentencia CREATE TABLE se utiliza para crear una tabla en una base de datos
existente.
16
2.4._Las CONSTRAINTS: son restricciones que se utilizan para limitar el tipo de
dato que puede recibir una columna de una tabla.
Las restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o
posteriormente con la sentencia ALTER TABLE.
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
UNIQUE
NOT NULL
Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).
La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por
ejemplo por las columnas 'identificador' y 'nombre', entonces se define así:
La clave primaria también se puede definir después de haber creado la tabla, para
eso utilizaremos el comando ALTER TABLE
17
Ejemplo PRIMARY KEY CON ALTER TABLE:
La restricción CHECK se utiliza para limitar el rango de valores que puede tener una
columna.
Se pueden definir varias restricciones CHECK en una tabla
Ejemplo CHECK en ORACLE, SQLSERVER y ACCESS:
Si no se especifica un valor al insertar una fila, entonces se podrá el valor por defecto
(DEFAULT) que tenga cada columna.
CREATE TABLE pedidos ( idpedido int, producto int, cantidad int, fecha date
DEFAULT GETDATE() );
La clave externa o FOREIGN KEY, es una columna o varias columnas, que sirven
para señalar cual es la clave primaria de otra tabla.
La columna o columnas señaladas como FOREIGN KEY, solo podrán tener valores
que ya existan en la clave primaria PRIMARY KEY de la otra tabla.
18
Ejemplo de FOREIGN KEY
Si la clave externa o foránea (FOREIGN KEY) está compuesta por varias columnas
o queremos ponerle un nombre, utilizaremos la fórmula siguiente:
Para borrar un clave externa (FOREIGN KEY) utilizamos DROP, pero varía según
la base de dato:
19
2.5_La sentencia SELECT
La sentencia SELECT nos permite consultar los datos almacenados en una tabla
de la base de datos. Ver ANEXO 11.
20
A continuación los Elementos básicos de la Sentencia “SELECT”:
3.6.1.1._ Igual que “ = ”, mayor que “ > ”, menor que “ < ” y distinto de
“ =! ”
Ejemplo: Recuperar los empleados con código de departamento menor que
45.
21
2.5.3_._LIKE, NOT LIKE
Este operador se utiliza para comprobar si existe un valor en una columna de una
fila.
Tema IS NULL - La columna Tema está vacía.
Tema IS NOT NULL - La columna Tema tiene información
Ejemplo: Recuperar los empleados sin comisión.
22
Anexo 14. Uso de NULL, NOT NULL
23
2.6._SQL JOIN
Un SQL Join es una sentencia que se utiliza combinar registros de dos o más
tablas en una base de datos Relacional.
En Oracle existen dos formas de hacer una unión entre tablas, la clásica, que
está disponible en todas las versiones, pero no cumple con los estándares ANSI
y la estándar, que se puede usar a partir de Oracle 9i y cumple con la regulación
SQL: 1999
2.6.1._Producto Cartesiano
Cuando se intenta unir dos tablas y la condición no es válida o no existe, se produce
un producto cartesiano, que consiste en una combinación de las filas de las dos
tablas independientemente de si están relacionadas o no. Para evitar este tipo de
operaciones, que son tremendamente costosas para el servidor y ofrecen
informaciones que en muy raras ocasiones son relevantes, no se debe omitir la
cláusula WHERE y una condición válida al unir tablas entre sí. En el Anexo 18
podemos observar un ejemplo de esta consulta donde se devuelve un registro de
la tabla lugar por cada registro de la tabla país, aunque no haya relación entre ellos.
24
Anexo 18. Ejemplo de un Producto Cartesiano
25
En el caso de la Sintaxis clásica la forma como se escribe es de forma Implícita,
recordemos que la sintaxis implícita fue establecido en SQL-89 y ocurre cuando a
continuación de la cláusula FROM escribimos una coma.
26
Anexo 21. Uso de clausula Where , AND u Or.
Nota: Otras condiciones como <= y >= pueden ser utilizadas, pero es mas sencillo
el BETWEEN. Recuerde especificar primeramente el rango menor que el mayor en
la clausula BETWEEN. Los alias de tablas han sido utilizados en el ejemplo por
razones de desempeño, no por un posible caso de ambigüedad.
27
2.6.5._Uniones Externas (Outer Join Explicitos):
Los registros que no cumplen las condiciones de unión entre las tablas, no aparecen
en los resultados de las consultas, sin embargo, es posible mostrar estos registros
utilizando las uniones externas.
Estas uniones muestran tanto los registros que cumplen las condiciones como los
que no las cumplen, mostrando la información que falta como valores nulos.
28
Anexo 24. Consulta Right Outer Join.
En el anexo 24 observamos el (+) en el lado izquierdo del “=”, lo cual indica un
Right outer join. Se observa que el retorno de la consulta son todos los atributos de
tabla_B (derecha) y solo los atributos que cumplen con la condición que definimos
de tabla_A.
29
Anexo 25. Consulta Left Outer Join.
En el anexo 25 observamos el (+) en el lado Derecho del “=”, lo cual indica un
Left outer join. Se observa que el retorno de la consulta son todos los atributos de
tabla_A (Izquierda) y solo los atributos que cumplen con la condición que definimos
de tabla_B
30
Restricciones del OUTER JOIN:
El operador outer Join puede aparecer en un solo lado de la expresión en el
lado que tenga ausencia de información. Esto regresa aquellas filas de una
tabla que no tenga una correspondencia con la otra tabla.
Una condición que involucra un Outer Join no puede utilizar el Operador In o
ser vinculado con otra condición por el operador OR.
En ocasiones puede ser necesario unir una tabla consigo misma para obtener un
resultado determinado, para ello, se debe instar la tabla dos veces en la cláusula
FROM, asignándole un alias diferente. Por ejemplo, para obtener todos los datos
del mismo perfil que Beatriz González, deberemos unir la tabla viajeros consigo
misma:
31
2.6.6._Unión de tablas usando sintaxis estándar (SQL: 1999)
2.6.6.1_CROSS JOIN
Equivale al producto cartesiano en la unión de dos tablas.
32
Anexo 28. Consulta usando CROSS JOIN.
33
2.6.6.3._LEFT OUTER JOIN EXPLICITO
Recupera todos los resultados de la tabla situada a la izquierda de la condición,
aunque no haya coincidencias con la tabla que está a la derecha.
34
Anexo 31. Consulta usando RIGHT OUTER JOIN EXPLICITO
35
Anexo 32. Consulta usando Cláusula USING
36
b._Cláusula ON:
2.7._SUBCONSULTAS
Se puede incluir una sentencia SELECT como parte de la cláusula WHERE de una
sentencia SELECT principal. Esta sentencia se denomina “subconsulta” y debe ir
entre paréntesis.
Primero se ejecuta la subconsulta, y el resultado obtenido se evalúa con la sentencia
principal.
37
Ejemplo:
38
2.7.2._Subconsultas que generan listas de valores.
Cuando las sub-consultas recuperan más de un valor es necesario utilizar los
operadores IN, NOT IN, ALL, ANY/SOME que manejan listas de valores.
39
CAPITULO III
Nombr Funcionalidad
e
|| (Concatenación) Une dos cadenas de caracteres.
Como podemos observar el || es útil para concatenar valores, en este caso se concateno el
valor “Luis” con “Jiménez” y se uso un espacio en blanco, adicional se concatena una “,”
seguido de comillas simples, el cual se invoca con el CHAR (39), este tipo de
concatenaciones son muy útiles para el uso de los SQL(s) Dinámicos, el cual trataremos más
adelante durante los talleres.
INITCA Cambia las primeras letras de las palabras de una cadena de caracteres.
P
40
UPPER Convierte todas las letras de la cadena a mayúsculas.
RPAD Aumenta el tamaño de una cadena, añadiendo un conjunto de caracteres en la parte derecha.
41
LTRIM Suprime un conjunto de caracteres de la parte izquierda de la cadena.
42
3.8_FUNCIONES DE MANIPULACION DE NUMEROS
Estas funciones sirven para operar con los datos numéricos recuperados en las
consultas. Se agrupan en tres tipos: las que trabajan con valores simples, las que
trabajan con grupos de valores y las que trabajan con listas de valores.
Algunas funciones modifican los valores originales, otras generan un resultado
que indica algo sobre los ellos.
3.8.1._Funciones de Valores Simples:
Nombre Funcionalidad
Valor1 + valor2 Suma
Valor1 – valor2 Resta.
Valor1 * valor2 Multiplicación.
Valor1 / valor2 División.
43
VSIZE(valor) Tamaño de almacenamiento de valor.
LN(valor) Logaritmo en base e de valor.
LOG(valor) Logaritmo en base 10 de valor.
Nombre Funcionalidad
AVG(valor) Media de valor para un grupo de filas.
COUNT(valor) Cuenta las filas.
MAX(valor) Máximo de valor para un grupo de filas.
MIN(valor) Mínimo de valor para un grupo de filas.
STDDEV(valor) Desviación estándar de valor para un grupo de filas.
SUM(valor) Suma de valor para un grupo de filas.
VARIANCE(valor) Varianza de valor para un grupo de filas.
Nombre Funcionalidad
GREATEST(valor1) Mayor valor de la lista
LEAST(valor1) Menor valor de la lista
3.9.1._SYSDATE
La variable del sistema o pseudo-columna SYSDATE, permite recuperar la fecha
y hora del sistema. Se utiliza como una columna especial.
44
3.9.2._ Funciones de fechas
Nombre Funcionalidad
ADD_MONTHS(fecha Suma n meses a fecha.
GREATEST(fecha1 Mayor fecha de la lista.
LEAST(fecha1 Menor fecha de la lista.
LAST_DAY(fecha) Último día del mes de la fecha.
MONTHS_BETWEEN(fecha1,fech Meses entre dos fechas
a2)
NEXT_DAY(fecha, ’ddd’) Fecha del día de la siguiente semana identificado
por ddd.
NEW_TIME(fecha1, ’eee’, ’fff’) Fecha de la zona horaria fff ,cuando en la zona
horaria eee la fecha es igual fecha1
TO_CHAR(fecha, ’máscara’) Cambia una fecha a un valor tipo carácter con el
formato indicado en la máscara
TO_DATE(cadena, ’máscara’) Cambia una cadena a una fecha con el formato
indicado en la máscara.
45
3.9.4._ Formatos de máscaras de fechas
Estos formatos se utilizan con TO_CHAR y con TO_DATE;
Cuando se inserta o actualiza una fecha por medio de un literal se le asigna por
Omisión a la hora el valor de 12 A.M.(Medianoche).
La función ROUND sobre una fecha, pasa la hora a 12 A.M del día si la hora es
46
anterior al mediodía, y a las 12 A.M. del día siguiente si la hora es posterior al
Mediodía.
La función TRUNC se comporta de forma similar, pero con la diferencia que
sempre pasa la hora a las 12 A.M.
RESUMEN:
Existe una variable del sistema o pseudo-columna SYSDATE con la que se
recupera del sistema la fecha y hora actual.
Con las funciones ADD_MONTHS, LAST_DAY, GREATEST, LEAST, etc.
se modifican las fechas de las columnas de tipo DATE.
47
Las funciones TRUNC y ROUND redondea la hora a las 12 A.M. en las
fechas de las columnas de tipo DATE.
La función TO_CHAR transforma una cadena de caracteres en una fecha
(DATE).
La función TO_DATE transforma una fecha (DATE) en una cadena de
Caracteres.
48
CAPITULO IV
4.1.1_ TRANSLATE
Es una función que hace una sustitución carácter a carácter en una cadena.
Notación: TRANSLATE (cadena, existe, cambia)
Recorre cada carácter de ‘cadena’ y lo busca en ‘existe’, y si lo encuentra lo
Sustituye por el carácter que ocupa la misma posición en ‘cambia’.
Ejemplo: Sustituir en 43789: los 2 por C, los 4 por H, los 5 por K, los 7 por P y
los 8 por L.
4. 1.2._DECODE
Se puede considerar como una sustitución valor a valor. Para cada ‘valor’
DECODE comprueba si coincide con ‘si_valx’ y en este caso lo cambia por
‘entoncesx’, si no coincide con ninguno lo cambia por si_no_val_def.
Notación: DECODE(valor, si_val1,entonces1,
si_val2, entonces2,
si_val3, entonces3,
si_no_val_def )
Esta función es equivalente a IF, ELSIF y ELSE.
49
Ejemplo: Sustituir los valores de la columna dgsitlab por literales.
4.2.1._GROUP BY:
50
departamento, sumando los salarios y contando las filas (empleados)
con salarios y las filas (empleados) de cada departamento.
51
4.2.2._HAVING
Selecciona las filas generadas con la cláusula GROUP BY que cumplen una
condición.
Notación: HAVING condición
Ejemplo: Agrupar los empleados que trabajan en Madrid, por su código de
departamento, sumando los salarios y contando los empleados con salarios y los
empleados de cada departamento, seleccionando sólo los grupos con código de
departamento > 12.
52
4.3.1._INSERT:
Ejemplo: Insertar tres registros en la tabla Países.
Por otra parte se pueden utilizar los “insert” con una sentencia SELECT en otra
tabla.
En el siguiente ejemplo disponemos de tres Tablas: La tabla “CONTINENTE”, la
tabla “PAISES” y una tabla temporal “TMP_PAISES_EUROPEOS” que es la tabla
donde se insertaran solo aquellos países que sean del continente Europeo.
53
Se diseña la consulta primero
54
Es importante que la consulta “SELECT” tenga los mismos campos extraídos
al de la Tabla Destino donde se insertara la información.
4.3.2._DELETE
Con esta sentencia se borran filas en una tabla. La cláusula WHERE es necesaria
para eliminar sólo las filas deseadas.
4.3.3._._UPDATE
Con esta sentencia se actualizan las filas seleccionadas de una tabla, con los
valores asignados a las columnas en la cláusula SET.
Las filas se seleccionan con la cláusula WHERE.
55
4.4._SQL DINAMICO:
Son sentencias que son generadas durante los scripts, es decir se itera una misma
sentencia Sql según registros se procesen para generar el script sql
4.5._COMMIT y ROLLBACK.
4.5.2_ROLLBACK
Con ROLLBACK se deshacen todas las modificaciones realizadas por el usuario
desde el anterior COMMIT.
Commit implícito y rollback automático
Cuando se realizan alguna de las siguientes acciones se realiza un commit implícito:
QUIT, EXIT, CREATE TABLE, DROP TABLE, CREATE VIEW, DROP , VIEW,
CONNECT, DISCONNECT,GRANT, REVOKE y ALTER.
Si se produce un fallo en el ordenador y existen actualizaciones sin validar, el SGBD
hace un rollback automático (deshace las actualizaciones sin validar) cuando
arranca de nuevo.
56
Resumen
Con las sentencias SQL: INSERT, UPDATE y DELETE, se modifica el contenido de
las tablas de la base de datos. Hay que tener cuidado con las condiciones de la
cláusula WHERE de las sentencias UPDATE y DELETE, para que las
actualizaciones sólo afecten a las filas deseadas. Las modificaciones no se guardan
en la base de datos de una forma
definitiva hasta que no se validan con un COMMIT.Con la sentencia ROLLBACK se
pueden deshacer las modificaciones realizas desde el anterior COMMIT.
57