Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
1. Introducción
2. Recuperación de datos mediante la instrucción SQL Select.
3. Restricción y ordenación de datos.
4. Uso de las funciones de una sola fila para personaliza salida.
5. Uso de las funciones de conversión y expresiones condicionales.
6. Informes agregados de datos mediante funciones de grupo.
7. Visualización de datos de varias tablas.
8. Subconsultas para resolver consultas.
9. Uso de operadores SET.
10. Administración de tablas utilizando sentencias DML.
11. Introducción a Data Definition Language
1. Introducción a bases de datos relacionales
Una base de datos es una recopilación organizada de información o datos estructurados, que
normalmente se almacena de forma electrónica en un sistema informático. Normalmente, una
base de datos está controlada por un sistema de gestión de bases de datos (DBMS). En
conjunto, los datos y el DBMS, junto con las aplicaciones asociadas a ellos, reciben el
nombre de sistema de bases de datos, abreviado normalmente a simplemente base de datos.
Tablas: Las tablas son estructuras, formadas por campos y registros (Columnas y Filas),
que van a permitir almacenar de forma organizada la información.
Relaciones: Una relación es una conexión entre dos o más entidades en una base de
datos.
Elementos Principales de una base de datos
Campos
Tabla
Registro
Base de Datos
2. Lenguaje SQL
El DML es una de las partes fundamentales del lenguaje SQL. Lo forman las instrucciones
capaces de consultar y modificar (añadir, cambiar o eliminar) los datos de las tablas.
Al conjunto de instrucciones DML que se ejecutan consecutivamente, se le llama transacción. Lo
interesante de las transacciones es que podemos anularlas, ya que forman una unidad lógica de
trabajo que hasta que no se acepten, sus resultados no serán definitivos.
En todas las instrucciones DML, el único dato devuelto por el sistema es el número de filas que se
han modificado al ejecutar la instrucción.
SELECT: Obtener registros (filas) de una tabla de acuerdo con ciertos criterios
INSERT : Añadir Datos a una Tabla
DELETE: Borrar Datos de Una tabla
UPDATE : Actualizar datos de una tabla
Clausula SELECT
• Obtener datos de ciertas columnas de una tabla (proyección)
• Obtener registros (filas) de una tabla de acuerdo con ciertos criterios (selección)
• Mezclar datos de tablas diferentes (asociación, join)
• Realizar cálculos sobre los datos
• Agrupar datos
- Puede ser usados las veces necesarias, como cadenas se deseen concatenar
- Convierte implícitamente fecha y números a texto
select *
from HR.EMPLOYEES
where EMPLOYEE_ID = 100
Clausula WHERE, Operadores de Comparación
- Los operadores de condición que pueden ser usados, son los siguientes:
Operador Significado
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
= Igual
<> Distinto
!= Distinto
- Se pueden utilizar para comparar números, textos y fechas, sin embargo, se debe tener en
cuenta que los elementos a comparar deben tener el mismo tipo de datos
select * select *
from HR.EMPLOYEES from HR.EMPLOYEES
where SALARY > 100 where SALARY > FIRST_NAME
Clausula WHERE, Operadores Lógicos
- Los operadores lógicos comprueban la veracidad de una condición, devuelven Verdadero,
Falso o Nulo:
Operador Significado
AND Devuelve verdadero si las expresiones a su izquierda y derecha son ambas verdaderas
OR Devuelve verdadero si cualquiera de las dos expresiones a izquierda y derecha del OR, son verdaderas
NOT Invierte la lógica de la expresión que está a su derecha. Si era verdadera, mediante NOT pasa a ser falso.
- Se pueden utilizar para comparar números, textos y fechas, sin embargo, se debe tener en
cuenta que los elementos a comparar deben tener el mismo tipo de datos
select * select * select *
from HR.EMPLOYEES from HR.EMPLOYEES from HR.EMPLOYEES
where SALARY > 1000 where SALARY > 1000 where not ( SALARY > 1000
and SALARY < 20000; or SALARY < 20000; and SALARY < 20000 )
Clausula WHERE, Operadores BETWEEN
- El operador BETWEEN permite obtener datos en un rango de valores, aplica sobre
números, fechas y texto
select *
from HR.EMPLOYEES
where SALARY between 10000 and 20000;
select *
from HR.EMPLOYEES
where EMAIL between 'A' and 'D’;
select *
from HR.EMPLOYEES
where HIRE_DATE between to_date( '20000101', 'YYYYMMDD' )
and to_date( '20011231', 'YYYYMMDD' )
- Se debe tener en cuenta que los elementos a comparar deben tener el mismo tipo de datos
Clausula WHERE, Operadores IN
- El operador IN permite obtener valores contenidos en una lista de valores
select *
from HR.EMPLOYEES
where MANAGER_ID in (100, 101);
select *
from HR.EMPLOYEES
where MANAGER_ID in (select EMPLOYEE_ID
from HR.EMPLOYEES
where EMPLOYEE_ID in (100, 101));
- Se debe tener en cuenta que los elementos a comparar deben tener el mismo tipo de datos
Clausula WHERE, Operadores LIKE
- El operador LIKE se usa para obtener registros a partir de filtros que cumplan
coincidencias exactas o similares. Usa caracteres especiales para indicar si uno o varios
caracteres pueden variar en la comparación.
Símbolo Significado
% Una serie cualquiera de caracteres
_ Un carácter cualquiera
Ejemplos:
select *
from HR.EMPLOYEES
where FIRST_NAME like '%ex%’;
select *
from HR.EMPLOYEES
where FIRST_NAME like '_ex%'
Clausula WHERE, Operadores IS NULL
- El operador ISNULL se usa para filtras columnas con valor nulo, o vacío. Es de aclarar que
en NULL representa valores vacíos, o campos sin valor asignado. Contrario a lo primero
que se nos podría ocurrir, las columnas vacías no se filtran a través de el valor ‘’
Ejemplos:
select *
from HR.EMPLOYEES
where COMMISSION_PCT = ‘’
select *
from HR.EMPLOYEES
where COMMISSION_PCT is null
Clausula WHERE, Precedencia de Operadores
- En ocasiones, para obtener los resultados esperados por una consulta, es necesario utilizar
una gran cantidad de operadores, el motor de base de datos resolverá la cláusula WHERE
de acuerdo a la siguiente tabla de prioridad de operadores.
1 *(Multiplicar) /(dividir)
2 + (Suma) - (Resta)
3 || (Concatenación)
4 Comparaciones (>, <, !=, ...)
5 IS NULL, IS NOT NULL, LIKE, IN, NOT IN
6 NOT, NOT BETWEEN
7 NOT
8 AND
9 OR
- Sin embargo, la prioridad podría ser alterada por medio del uso de parentesis. Por otra
parte, esta es una práctica recomendada, debido a que facilita el entendimiento de la
cláusula
Clausula WHERE, Precedencia de Operadores
Ejemplos:
select *
from HR.EMPLOYEES
where COMMISSION_PCT is null
and HIRE_DATE > to_date( '20050101', 'YYYYMMDD’ )
or SALARY > 10000;
select *
from HR.EMPLOYEES
where ( COMMISSION_PCT is null
and HIRE_DATE > to_date( '20050101', 'YYYYMMDD' ))
or SALARY < 10000
Clausula ORDER BY
- En esa cláusula se coloca una lista de campos por los que queremos ordenar los
resultados. Se ordena primero por el primer campo de la lista, si hay coincidencias por el
segundo, si ahí también las hay por el tercero, y así sucesivamente.
- Se puede colocar las palabras ASC O DESC (por defecto se toma ASC). Esas palabras
permiten ordenar en ascendente (de la A a la Z, de los números pequeños a los grandes) o
en descendente (de la Z a la a, de los números grandes a los pequeños) respectivamente.
Por defecto, si no se indica nada, la ordenación es ascendente.
Sintaxis:
SELECT {* | [DISTINCT] {columna | expresión} [[AS] alias], ... }
FROM tabla
[WHERE condición]
[ORDER BY expresión1 [,expresión2,…][{ASC|DESC}]];
Clausula ORDER BY, ASC y DESC
- Se puede usar el nombre de las columnas para ordenar:
select *
from HR.EMPLOYEES
order by SALARY DESC;
- También se puede usar el alias de las columnas para ordenar
select SALARY as SALARIO
from HR.EMPLOYEES
order by SALARIO DESC
- También se puede usar el numero de las columnas para ordenar
select A.EMPLOYEE_ID, SALARY, COMMISSION_PCT,
SALARY * ( 1 + COMMISSION_PCT ) SALARIO_TOTAL
from HR.EMPLOYEES A
order by 1 ASC
- También se puede usar el numero, los nombres y los alias de las columnas para ordenar
select A.EMPLOYEE_ID, SALARY, COMMISSION_PCT,
SALARY * ( 1 + COMMISSION_PCT ) SALARIO_TOTAL
from HR.EMPLOYEES A
order by 1 ASC , SALARIO_TOTAL desc
Clausula ORDER BY, Valores Nulos
- Al igual que la clausula WHERE, los valores nulos no cumplen las clausulas de ordenación
- Por defecto los resultados nulos siempre van al final
- Se puede indicar si se desean mostrar los valores nulos al inicio o al final, con las claúsulas
NULLS FIRST
NULLS LAST
Ejemplos:
select A.EMPLOYEE_ID, SALARY, COMMISSION_PCT,
SALARY * ( 1 + COMMISSION_PCT ) SALARIO_TOTAL
from HR.EMPLOYEES A
order by COMMISSION_PCT NULLS FIRST
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP, HR.DEPARTMENTS
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
(Asociaciones Simples Sintaxis 1992)
- La consulta anterior puede NO traer los resultados esperados
- La forma correcta es asociar los empelados a los departamentos
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP, HR.DEPARTMENTS DEP
where EMP.DEPARTMENT_ID = DEP.DEPARTMENT_ID
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
(Unión de mas de 2 tablas)
- Se pueden unir mas de dos tablas, teniendo las siguientes consideraciones
- Deberemos añadir las tablas que contienen los datos que necesitemos
- Además deberemos añadir las tablas necesarias para asociar correctamente a las tablas
anteriores
Ejemplo:
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
(Unión de mas de 2 tablas)
select EMPLOYEES.EMPLOYEE_ID,
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
JOBS.JOB_TITLE,
DEPARTMENTS.DEPARTMENT_NAME
from HR.EMPLOYEES, HR.DEPARTMENTS, HR.JOBS
where ( ( DEPARTMENTS.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID )
and ( JOBS.JOB_ID = EMPLOYEES.JOB_ID ) )
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
(Asociaciones Simples Sintaxis 1999)
- Esta nueva sintaxis busca mejorar la comprensión de los SQL
- Permite separar las condiciones de filtro de las condiciones de unión entre tablas
- La forma correcta es asociar los empelados a los departamentos
Sintaxis:
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP
cross join
HR.DEPARTMENTS;
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
NATURAL JOIN
- Devuelve los registros haciendo JOIN por medio de las columnas que tengan el mismo
nombre:
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP
natural join
HR.DEPARTMENTS;
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
JOIN USING
- Devuelve los resultados, cruzando las tablas por medio de la columna indicada en el
USING, la cual debe existir en ambas tablas
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP
join
HR.DEPARTMENTS
using (DEPARTMENT_ID);
OBTENCIÓN DE RESULTADOS DE VARIAS TABLAS
JOIN ON
- Devuelve los resultados, cruzando las tablas por medio de las columnas indicadas en el ON
Ejemplo:
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
DEPARTMENT_NAME
from HR.EMPLOYEES EMP
join
HR.DEPARTMENTS DEP
on ( EMP.DEPARTMENT_ID = DEP.DEPARTMENT_ID )
FUNCIONES DE AGREGACIÓN
Las funciones de cálculos de totales para datos agrupados son las siguientes:
Función Significado
• El uso de subconsultas es una técnica que permite utilizar el resultado de una tabla
SELECT en otra consulta SELECT.
• Las subconsultas simples son aquellas que devuelven una única fila. Si además devuelven
una única columna, se las llama subconsultas escalares, ya que devuelven un único valor.
Sintaxis
SELECT listaExpresiones
FROM tabla
WHERE expresión OPERADOR
(SELECT listaExpresiones
FROM tabla);
• En ocasiones se requiere que una consulta dependa de una subconsulta que devuelve
varios resultados. Por Ejemplo:
select *
from HR.EMPLOYEES
where DEPARTMENT_ID in (select DEPARTMENT_ID
from HR.DEPARTMENTS
where DEPARTMENT_NAME like ‘A%');
SUBCONSULTAS CORRELACIONADAS
select *
from HR.EMPLOYEES E
where exists (select 1
from HR.DEPARTMENTS D
where E.DEPARTMENT_ID) = D.DEPARTMENT_ID);
SUBCONSULTAS en las clausulas FROM o JOIN
• El resultado de una operación de tipo SELECT es una vista (aunque sea temporal, ya que
no se almacena de forma permanente). Y las vistas pueden ser utilizadas dentro de otras
vistas (al igual que las tablas).
• Ejemplo:
• Las subconsultas escalares, al igual que las simples son aquellas que devuelven una única
fila, pero además devuelven una única columna.
• Estas subconsultas son muy útiles porque se pueden utilizar en muchas partes del lenguaje
SELECT. Concretamente:
• Ejemplo
Sintaxis
select DEPARTMENT_ID,
DEPARTMENT_NAME,
( select sum( SALARY )
from HR.EMPLOYEES E
where E.DEPARTMENT_ID = D.DEPARTMENT_ID )
from HR.DEPARTMENTS D
Hablemos
E-mail: sandra.lopez@bmind.com
Tel (57) 3176689110
Síguenos en redes