Está en la página 1de 42

Lenguaje de Manipulacin de Datos

Ing. M.C. Pilar del Rosario Ros Campos


Fundamentos de Base de datos

OBJETIVOS DE LA SESIN
Objetivo General:

Utilizar el LMD como medio de recuperacin y manipulacin de datos

Objetivos Especficos:
Al finalizar esta sesin, el participante debera estar capacitado para:

Enumerar las capacidades de las sentencias SELECT de SQL

Ejecutar una sentencia SELECT bsica

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 clusula HAVING

Fundamentos de Base de datos

SQL (Structured Query Language)

Fundamentos de Base de datos

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

D -> Data
D -> Definition
L -> Lenguage

D -> Data
M -> Manipulation
L -> Lenguage

D -> Data
C -> Control
L -> Lenguage

CREATE
ALTER
DROP

SELECT
INSERT
UPDATE
DELETE

GRANT
REVOKE
COMMIT
ROLLBACK

Fundamentos de Base de datos

SQL: Lenguaje de Manipulacin de Datos


Operacin de consulta o recuperacin:
SELECT
Operaciones de actualizacin:
INSERT
UPDATE
DELETE

Fundamentos de Base de datos

Recuperacin de Datos mediante


la Sentencia SELECT de SQL

Fundamentos de Base de datos

Sentencia Select
Sintaxis
SELECT {* | [DISTINCT ] <columna> [, <columna> ] | <expresin>}
FROM <tabla>[, <tabla>]
[WHERE <condicin> [<condicin>]
[GROUP BY <columna> [, <columna>]
[HAVING <condicin> [<condicin>] ]]
[ORDER BY <columna> [, <columna>] [ASC|DESC] ] ];
Consideraciones:

GROUP BY<columna> [, <columna>] : agrupa el resultado de la consulta por las


columnas especificadas.
HAVING <condicin> [<condicin>] : restricciones de los grupos de salida (anloga
a WHERE).
ORDER BY <columna> [, <columna>] [ASC|DESC] : variacin del orden por defecto.

Fundamentos de Base de datos

Sentencia Select
Consideraciones:
<condicin> :
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

Sentencia Select
Consideraciones:
Entre las condiciones del WHERE debern incluirse las
condiciones de combinacin de las tablas :
Combinacin comn : operador de igualdad.
Combinacin no comn: operadores <, >, <>, BETWEEN,...
Autocombinacin : combinacin de una tabla consigo
misma.
Combinacin exterior : selecciona, adems, las filas de una
tabla que no tienen correspondencia con alguna de la otra.
(columnaI = columnaJ(+)).

Fundamentos de Base de datos

Sentencia Select
Consideraciones:
El orden de ejecucin es:
Se eligen las tuplas que cumplen las condiciones de la
clusula WHERE
Se realizan los grupos basados en la clusula GROUP BY
Se calculan los resultados de las funciones de grupo para
cada grupo
Se eliminan aquellos grupos que no cumplen la condicin del
HAVING
Y luego se ordenan por las columnas especificadas en el
ORDER BY

Fundamentos de Base de datos

10

EJERCICIOS DE APLICACIN

Fundamentos de Base de datos

11

Seleccin de Todas las Columnas


- Mostrar todos los departamentos existentes
SELECT *
FROM
departments;

Fundamentos de Base de datos

12

Seleccin de Columnas Especficas


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 visualizacin por defecto de las consultas es todas
las filas, incluidas las filas duplicadas.
SELECT department_id
FROM
employees;

SELECT DISTINCT department_id


FROM
employees;

Fundamentos de Base de datos

15

Uso de la Clusula 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 Comparacin


SELECT last_name, salary
FROM
employees
WHERE salary <= 3000 ;

Fundamentos de Base de datos

17

Uso de la Condicin BETWEEN


Utilice la condicin BETWEEN para mostrar filas basadas en
un rango de valores:
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
Lmite inferior

Lmite superior

Fundamentos de Base de datos

18

Uso de la Condicin IN
Utilice la condicin 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 Condicin LIKE


Utilice la condicin LIKE para realizar bsquedas con
comodines de valores vlidos de cadenas de
bsqueda.
Las condiciones de bsqueda pueden contener
literales de nmeros o caracteres:
% denota cero o muchos caracteres.
_ denota un carcter.
SELECT
FROM
WHERE

first_name
employees
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
FROM
WHERE
AND

employee_id, last_name, job_id, salary


employees
salary >=10000
job_id LIKE '%MAN%' ;

Fundamentos de Base de datos

22

Reglas de Prioridad

Puede utilizar parntesis para sustituir las reglas de prioridad.


Fundamentos de Base de datos

23

Reglas de Prioridad
SELECT
FROM
WHERE
OR
AND

last_name, job_id, salary


employees
job_id = 'SA_REP'
job_id = 'AD_PRES'
salary > 15000;

SELECT
FROM
WHERE
OR
AND

last_name, job_id, salary


employees
(job_id = 'SA_REP'
job_id = 'AD_PRES')
salary > 15000;

Fundamentos de Base de datos

24

Uso de la Clusula ORDER BY


Para ordenar las filas recuperadas, utilice la clusula ORDER BY:
ASC: orden ascendente, por defecto
DESC: orden descendente
La clusula 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

Ordenacin
Ordenacin en orden descendente:
SELECT
last_name, job_id, department_id, hire_date
FROM
employees
1
ORDER BY hire_date DESC ;

Ordenacin por alias de columna:


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

Ordenacin por varias columnas:


SELECT last_name, department_id, salary
FROM
employees
ORDER BY department_id, salary DESC;
Fundamentos de Base de datos

3
26

Qu son las Funciones de Grupo?


Las funciones de grupo operan en juegos de filas para dar
un resultado por grupo.
EMPLOYEES

Salario mximo en
la tabla EMPLOYEES

Fundamentos de Base de datos

27

Tipos de Funciones de Grupo

AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE

Group
functions

Fundamentos de Base de datos

28

Funciones de Grupo: Sintaxis


SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY

[column,] group_function(column), ...


table
condition]
column]
column];

Fundamentos de Base de datos

29

Uso de las Funciones AVG y SUM


Puede utilizar AVG y SUM para datos numricos.
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 numricos, de
carcter y de fecha.
SELECT MIN(hire_date), MAX(hire_date)
FROM
employees;

Fundamentos de Base de datos

31

Uso de la Funcin COUNT


COUNT(*) devuelve el nmero de filas en una
tabla:

SELECT COUNT(*)
FROM
employees
WHERE department_id = 50;

COUNT(expr) devuelve el nmero de filas con


valores no nulos para expr:

SELECT COUNT(commission_pct)
FROM
employees
WHERE department_id = 80;

Ejemplos:
1. Se muestra el nmeroFundamentos
de empleados delde
departamento
50.
Base de datos
2. Se muestra el nmero de empleados del departamento 80 que ganan comisin.

32

Creacin de Grupos de Datos


EMPLOYEES
4400
9500

3500

6400

Salario medio
de la tabla
EMPLOYEES
para cada
Departamento

10033

Fundamentos de Base de datos

33

Uso de la Clusula GROUP BY


Todas las columnas de la lista SELECT que no sean funciones
de grupo se deben incluir en la clusula GROUP BY.
SELECT
department_id, AVG(salary)
FROM
employees
GROUP BY department_id ;

Fundamentos de Base de datos

34

Uso de la Clusula 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

Agrupacin por Ms 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 Clusula 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

Restriccin de Resultados de Grupos


EMPLOYEES

Salario
mximo por
departamento
cuando es
superior a
10.000 dlares

Fundamentos de Base de datos

38

Restriccin de Resultados de Grupos


con la Clusula HAVING
Si se utiliza la clusula HAVING, Oracle Server restringe
los grupos as:
1. Se agrupan las filas.
2. Se aplica la funcin de grupo.
3. Se muestran los grupos que satisfacen la clusula
HAVING.
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

column, group_function
table
condition]
group_by_expression]
group_condition]
column];
Fundamentos de Base de datos

39

Uso de la Clusula HAVING


SELECT
FROM
GROUP BY
HAVING

department_id, MAX(salary)
employees
department_id
MAX(salary)>10000 ;

Fundamentos de Base de datos

40

Uso de la Clusula HAVING


SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

job_id, SUM(salary) NOMINA


employees
job_id NOT LIKE '%REP%'
job_id
SUM(salary) > 13000
SUM(salary);

Fundamentos de Base de datos

41

Bibliografa
Silberschatz A., Korth H., Sudarshan S., Fundamentos de Bases de Datos, 5/e,
McGraw-Hill, Madrid, Espaa, 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., Implementacin y Operacin de una Base de Datos , Empresa
Editora Macro, Lima, Per, 2006
www.oracle.com/education
Fundamentos de Base de datos