You are on page 1of 42

Lenguaje de Manipulacin de Datos

Ing. M.C. Pilar del Rosario Ros Campos


Fundamentos de Base de datos 1
OBJETIVOS DE LA SESIN

Objetivo General:

UtilizarelLMDcomomedioderecuperacinymanipulacindedatos

Objetivos Especficos:

Alfinalizarestasesin,elparticipantedeberaestarcapacitadopara:

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 2


SQL(StructuredQueryLanguage)

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:LenguajedeManipulacindeDatos

Operacin de consulta o recuperacin:


SELECT

Operaciones de actualizacin:
INSERT
UPDATE
DELETE

Fundamentos de Base de datos 5


RecuperacindeDatosmediante
laSentenciaSELECTdeSQL

Fundamentos de Base de datos 6


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:
GROUPBY<columna>[,<columna>]:agrupaelresultadodelaconsultaporlas
columnasespecificadas.

HAVING<condicin>[<condicin>]:restriccionesdelosgruposdesalida(anlogaa
WHERE).

ORDERBY<columna>[,<columna>][ASC|DESC]:variacindelordenpordefecto.
Fundamentos de Base de datos 7
Sentencia Select
Consideraciones:

<condicin>:
condicionesbooleanas(<, >, =, ...IS NULL|NOT NULL,
LIKE).
condicionesbooleanasencadenadasporORoAND.
<columna>IN|NOT IN <rango_de_valores>.
<columna>BETWEENmin_valANDmax_val.

Fundamentos de Base de datos 8


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 9


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


EJERCICIOSDEAPLICACIN

Fundamentos de Base de datos 11


SeleccindeTodaslasColumnas
- Mostrar todos los departamentos existentes
SELECT *
FROM departments;

Fundamentos de Base de datos 12


SeleccindeColumnasEspecficas
SELECT department_id, location_id
FROM departments;

Fundamentos de Base de datos 13


UsodeAliasdeColumna
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


FilasDuplicadas
Lavisualizacinpordefectodelasconsultasestodas
lasfilas,incluidaslasfilasduplicadas.
SELECT department_id
FROM employees;
1


SELECT DISTINCT department_id
FROM employees; 2


Fundamentos de Base de datos 15
UsodelaClusulaWHERE
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

Fundamentos de Base de datos 16


UsodeCondicionesdeComparacin

SELECT last_name, salary


FROM employees
WHERE salary <= 3000 ;

Fundamentos de Base de datos 17


UsodelaCondicinBETWEEN
UtilicelacondicinBETWEENparamostrarfilasbasadasenunrango
devalores:
SELECTlast_name,salary
FROMemployees
WHEREsalaryBETWEEN2500AND3500;

Lmite inferior Lmite superior

Fundamentos de Base de datos 18


UsodelaCondicinIN
UtilicelacondicinINdemiembropara
comprobarlosvaloresincluidosenunalista:
SELECTemployee_id,last_name,salary,manager_id
FROMemployees
WHEREmanager_idIN(100,101,201);

Fundamentos de Base de datos 19


UsodelaCondicinLIKE
UtilicelacondicinLIKEpararealizarbsquedascon
comodinesdevaloresvlidosdecadenasdebsqueda.
Lascondicionesdebsquedapuedencontener
literalesdenmerosocaracteres:
%denotaceroomuchoscaracteres.
_denotauncarcter.

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
UsingtheNULLConditions
CompruebesihayvaloresnulosconeloperadorISNULL.

SELECT last_name, manager_id


FROM employees
WHERE manager_id IS NULL ;

Fundamentos de Base de datos 21


UsodelOperadorAND
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


ReglasdePrioridad

Puede utilizar parntesis para sustituir las reglas de prioridad.

Fundamentos de Base de datos 23


ReglasdePrioridad
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


UsodelaClusulaORDERBY
Paraordenarlasfilasrecuperadas,utilicelaclusulaORDERBY:
ASC:ordenascendente,pordefecto
DESC:ordendescendente
LaclusulaORDERBYsecolocaalfinaldelasentenciaSELECT:

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date ;

Fundamentos de Base de datos 25


Ordenacin
Ordenacinenordendescendente:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
1

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

Ordenacinporvariascolumnas:
SELECT last_name, department_id, salary
FROM employees 3
ORDER BY department_id, salary DESC;
Fundamentos de Base de datos 26
QusonlasFuncionesdeGrupo?
Lasfuncionesdegrupooperanenjuegosdefilasparadarun
resultadoporgrupo.
EMPLOYEES

Salariomximoen
latablaEMPLOYEES


Fundamentos de Base de datos 27
TiposdeFuncionesdeGrupo
AVG
COUNT
MAX
Group
MIN
STDDEV
functions
SUM
VARIANCE

Fundamentos de Base de datos 28


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

Fundamentos de Base de datos 29


UsodelasFuncionesAVGySUM
PuedeutilizarAVGySUMparadatosnumricos.

SELECT AVG(salary), MAX(salary),


MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';

Fundamentos de Base de datos 30


UsodelasFuncionesMINyMAX
PuedeutilizarMINyMAXparatiposdedatosnumricos,decarcter
ydefecha.
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;

Fundamentos de Base de datos 31


UsodelaFuncinCOUNT
COUNT(*) devuelve el nmero de filas en una
tabla:
SELECT COUNT(*)
1 FROM employees
WHERE department_id = 50;

COUNT(expr) devuelve el nmero de filas con


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

Ejemplos:
1.Semuestraelnmerodeempleadosdeldepartamento50.
Fundamentos de Base de datos 32
2.Semuestraelnmerodeempleadosdeldepartamento80queganancomisin.
CreacindeGruposdeDatos
EMPLOYEES
4400

9500

3500 Salariomedio
delatabla
EMPLOYEES
6400 paracada
Departamento
10033

Fundamentos de Base de datos 33


UsodelaClusulaGROUPBY
TodaslascolumnasdelalistaSELECTquenoseanfuncionesde
gruposedebenincluirenlaclusulaGROUPBY.

SELECT department_id, AVG(salary)


FROM employees
GROUP BY department_id ;

Fundamentos de Base de datos 34


UsodelaClusulaGROUPBY
LacolumnaGROUPBYnotienequeestarenlalistaSELECT.

SELECT AVG(salary)
FROM employees
GROUP BY department_id ;

Fundamentos de Base de datos 35


AgrupacinporMsdeUnaColumna
EMPLOYEES

Sumelos
salariosde
latabla
EMPLOYEESpara
cadapuesto,
agrupadospor
departamento

Fundamentos de Base de datos 36


UsodelaClusulaGROUPBY
enVariasColumnas
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;

Fundamentos de Base de datos 37


RestriccindeResultadosdeGrupos

EMPLOYEES

Salario
mximopor
departamento
cuandoes
superiora
10.000dlares

Fundamentos de Base de datos 38


RestriccindeResultadosdeGrupos
conlaClusulaHAVING

SiseutilizalaclusulaHAVING,OracleServerrestringe
losgruposas:
1.Seagrupanlasfilas.
2.Seaplicalafuncindegrupo.
3.SemuestranlosgruposquesatisfacenlaclusulaHAVING.

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


UsodelaClusulaHAVING
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;

Fundamentos de Base de datos 40


UsodelaClusulaHAVING
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


Bibliografa
SilberschatzA.,KorthH.,SudarshanS.,FundamentosdeBasesdeDatos,5/e,
McGraw-Hill,Madrid,Espaa,2006,953p.

GreenbergN.OracleOracleDatabase10g:SQLFundamentalsI,Vol.I.
StudentGuide,2/e,Oracle,California,EstadosUnidos,2011.

Miguel,A.De,Piattini,M.FundamentosymodelosdeBasesdeDatos,Ed.
Rama,1999

CrovettoH.,BasedeDatosOracle10g,GrupoEditorialMegabyte,Lima,
Per,2005

MatsukawaS.,ImplementacinyOperacindeunaBasedeDatos,Empresa
EditoraMacro,Lima,Per,2006

www.oracle.com/education

Fundamentos de Base de datos

You might also like