Vous êtes sur la page 1sur 42

Lenguaje de Manipulación de Datos

Ing. M.C. Pilar del Rosario Ríos Campos


Fundamentos de Base de datos 1
OBJETIVOS DE LA SESIÓN

Objetivo General:

• Utilizar el LMD como medio de recuperación y manipulación de datos

Objetivos Específicos:

Al finalizar esta sesión, el participante debería estar capacitado para:

• Enumerar las capacidades de las sentencias SELECT de SQL

• Ejecutar una sentencia SELECT básica

• Limitar las filas recuperadas por una consulta

• Ordenar las filas recuperadas por una consulta

• Describir el uso de las funciones de grupo

• Incluir o excluir filas agrupadas utilizando la cláusula HAVING

Fundamentos de Base de datos 2


SQL (Structured Query Language)

Fundamentos de Base de datos 3


SQL
S -> Structured
Q -> Query
L -> Language

D -> Data D -> Data D -> Data


D -> Definition M -> Manipulation C -> Control
L -> Lenguage L -> Lenguage L -> Lenguage

CREATE SELECT GRANT


ALTER INSERT REVOKE
DROP UPDATE COMMIT
DELETE ROLLBACK

Fundamentos de Base de datos 4


SQL: Lenguaje de Manipulación de Datos

Operación de consulta o recuperación:


SELECT

Operaciones de actualización:
INSERT
UPDATE
DELETE

Fundamentos de Base de datos 5


Recuperación de Datos mediante
la Sentencia SELECT de SQL

Fundamentos de Base de datos 6


Sentencia Select
Sintaxis
SELECT {* | [DISTINCT ] <columna> [, <columna> ] | <expresión>}
FROM <tabla>[, <tabla>]
[WHERE <condición> [<condición>]
[GROUP BY <columna> [, <columna>]
[HAVING <condición> [<condición>] ]]
[ORDER BY <columna> [, <columna>] [ASC|DESC] ] ];

Consideraciones:
GROUP BY<columna> [, <columna>] : agrupa el resultado de la consulta por las
columnas especificadas.
HAVING <condición> [<condición>] : restricciones de los grupos de salida (análoga
a WHERE).
ORDER BY <columna> [, <columna>] [ASC|DESC] : variación del orden por defecto.

Fundamentos de Base de datos 7


Sentencia Select
Consideraciones:

<condición> :
condiciones booleanas (<, >, =, ...IS NULL|NOT NULL,
LIKE).
condiciones booleanas encadenadas por OR o AND.
<columna> IN|NOT IN <rango_de_valores>.
<columna> BETWEEN min_val AND max _val.

Fundamentos de Base de datos 8


Sentencia Select
Consideraciones:

Entre las condiciones del WHERE deberán incluirse las


condiciones de combinación de las tablas :
Combinación común : operador de igualdad.
Combinación no común: operadores <, >, <>, BETWEEN,...
Autocombinación : combinación de una tabla consigo
misma.
Combinación exterior : selecciona, además, las filas de una
tabla que no tienen correspondencia con alguna de la otra.
(columnaI = columnaJ(+)).

Fundamentos de Base de datos 9


Sentencia Select
Consideraciones:
El orden de ejecución es:
Se eligen las tuplas que cumplen las condiciones de la
cláusula WHERE
Se realizan los grupos basados en la cláusula GROUP BY
Se calculan los resultados de las funciones de grupo para
cada grupo
Se eliminan aquellos grupos que no cumplen la condición del
HAVING
Y luego se ordenan por las columnas especificadas en el
ORDER BY

Fundamentos de Base de datos 10


EJERCICIOS DE APLICACIÓN

Fundamentos de Base de datos 11


Selección de Todas las Columnas
- Mostrar todos los departamentos existentes
SELECT *
FROM departments;

Fundamentos de Base de datos 12


Selección de Columnas Específicas
SELECT department_id, location_id
FROM departments;

Fundamentos de Base de datos 13


Uso de Alias de Columna
SELECT last_name AS name, commission_pct comm
FROM employees;

SELECT last_name "Name" , salary*12 "Annual Salary"


FROM employees;

Fundamentos de Base de datos 14


Filas Duplicadas
• La visualización por defecto de las consultas es todas
las filas, incluidas las filas duplicadas.
SELECT department_id
FROM employees; 1


SELECT DISTINCT department_id
FROM employees; 2


Fundamentos de Base de datos 15
Uso de la Cláusula WHERE
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

Fundamentos de Base de datos 16


Uso de Condiciones de Comparación

SELECT last_name, salary


FROM employees
WHERE salary <= 3000 ;

Fundamentos de Base de datos 17


Uso de la Condición BETWEEN
• Utilice la condición BETWEEN para mostrar filas basadas en
un rango de valores:
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;

Límite inferior Límite superior

Fundamentos de Base de datos 18


Uso de la Condición IN
• Utilice la condición IN de miembro para
comprobar los valores incluidos en una lista:

SELECT employee_id, last_name, salary, manager_id


FROM employees
WHERE manager_id IN (100, 101, 201) ;

Fundamentos de Base de datos 19


Uso de la Condición LIKE
– Utilice la condición LIKE para realizar búsquedas con
comodines de valores válidos de cadenas de
búsqueda.
– Las condiciones de búsqueda pueden contener
literales de números o caracteres:
– % denota cero o muchos caracteres.
– _ denota un carácter.

SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ;

SELECT last_name, hire_date


FROM employees
WHERE hire_date LIKE '%95';

Fundamentos de Base de datos 20


Using the NULL Conditions
• Compruebe si hay valores nulos con el operador IS NULL.
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL ;

Fundamentos de Base de datos 21


Uso del Operador AND
AND requiere que ambas condiciones sean verdaderas:

SELECT employee_id, last_name, job_id, salary


FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%' ;

Fundamentos de Base de datos 22


Reglas de Prioridad

Puede utilizar paréntesis para sustituir las reglas de prioridad.

Fundamentos de Base de datos 23


Reglas de Prioridad
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP' 1
OR job_id = 'AD_PRES'
AND salary > 15000;

SELECT last_name, job_id, salary


FROM employees
WHERE (job_id = 'SA_REP' 2
OR job_id = 'AD_PRES')
AND salary > 15000;

Fundamentos de Base de datos 24


Uso de la Cláusula ORDER BY
• Para ordenar las filas recuperadas, utilice la cláusula ORDER BY:
– ASC: orden ascendente, por defecto
– DESC: orden descendente
• La cláusula ORDER BY se coloca al final de la sentencia SELECT:

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date ;


Fundamentos de Base de datos 25
Ordenación
– Ordenación en orden descendente:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ; 1

– Ordenación por alias de columna:


SELECT employee_id, last_name, salary*12 annsal
FROM employees 2
ORDER BY annsal ;

– Ordenación por varias columnas:


SELECT last_name, department_id, salary
FROM employees 3
ORDER BY department_id, salary DESC;
Fundamentos de Base de datos 26
¿Qué son las Funciones de Grupo?
• Las funciones de grupo operan en juegos de filas para dar
un resultado por grupo.
EMPLOYEES

Salario máximo en
la tabla EMPLOYEES


Fundamentos de Base de datos 27
Tipos de Funciones de Grupo
– AVG
– COUNT
– MAX Group
– MIN
– STDDEV functions
– SUM
– VARIANCE

Fundamentos de Base de datos 28


Funciones de Grupo: Sintaxis
SELECT [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];

Fundamentos de Base de datos 29


Uso de las Funciones AVG y SUM
• Puede utilizar AVG y SUM para datos numéricos.
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';

Fundamentos de Base de datos 30


Uso de las Funciones MIN y MAX
• Puede utilizar MIN y MAX para tipos de datos numéricos, de
carácter y de fecha.
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;

Fundamentos de Base de datos 31


Uso de la Función COUNT
• COUNT(*) devuelve el número de filas en una
tabla:
SELECT COUNT(*)
1 FROM employees
WHERE department_id = 50;

• COUNT(expr) devuelve el número de filas con


valores no nulos para expr:
SELECT COUNT(commission_pct)
2 FROM employees
WHERE department_id = 80;

Ejemplos:
1. Se muestra el númeroFundamentos
de empleados delde
departamento 50.
Base de datos 32
2. Se muestra el número de empleados del departamento 80 que ganan comisión.
Creación de Grupos de Datos
EMPLOYEES
4400

9500

3500 Salario medio


de la tabla
EMPLOYEES
6400 para cada
Departamento
10033


Fundamentos de Base de datos 33
Uso de la Cláusula GROUP BY
• Todas las columnas de la lista SELECT que no sean funciones
de grupo se deben incluir en la cláusula GROUP BY.

SELECT department_id, AVG(salary)


FROM employees
GROUP BY department_id ;

Fundamentos de Base de datos 34


Uso de la Cláusula GROUP BY
• La columna GROUP BY no tiene que estar en la lista SELECT.

SELECT AVG(salary)
FROM employees
GROUP BY department_id ;

Fundamentos de Base de datos 35


Agrupación por Más de Una Columna
EMPLOYEES

Sume los
salarios de
la tabla
EMPLOYEES para
cada puesto,
agrupados por
departamento

Fundamentos de Base de datos 36


Uso de la Cláusula GROUP BY
en Varias Columnas
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;

Fundamentos de Base de datos 37


Restricción de Resultados de Grupos
EMPLOYEES

Salario
máximo por
departamento
cuando es
superior a
10.000 dólares

Fundamentos de Base de datos 38


Restricción de Resultados de Grupos
con la Cláusula HAVING
Si se utiliza la cláusula HAVING, Oracle Server restringe
los grupos así:
1. Se agrupan las filas.
2. Se aplica la función de grupo.
3. Se muestran los grupos que satisfacen la cláusula
HAVING.
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];

Fundamentos de Base de datos 39


Uso de la Cláusula HAVING
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;

Fundamentos de Base de datos 40


Uso de la Cláusula HAVING
SELECT job_id, SUM(salary) NOMINA
FROM employees
WHERE job_id NOT LIKE '%REP%'
GROUP BY job_id
HAVING SUM(salary) > 13000
ORDER BY SUM(salary);

Fundamentos de Base de datos 41


Bibliografía
•Silberschatz A., Korth H., Sudarshan S., Fundamentos de Bases de Datos, 5/e,
McGraw-Hill, Madrid, España, 2006 , 953 p.

•Greenberg N. OracleOracle Database 10g: SQL Fundamentals I, Vol. I .


Student Guide, 2/e, Oracle, California, Estados Unidos, 2011.

• Miguel, A. De, Piattini, M. Fundamentos y modelos de Bases de Datos, Ed.


Rama, 1999

•Crovetto H., Base de Datos Oracle 10g , Grupo Editorial Megabyte, Lima,
Perú, 2005

•Matsukawa S., Implementación y Operación de una Base de Datos , Empresa


Editora Macro, Lima, Perú, 2006

•www.oracle.com/education

Fundamentos de Base de datos