Sei sulla pagina 1di 22

Sesin 9:

Structure Query Language (SQL)


Data Manipulation Language-DML
Ing. Mario Traverzo Vila
Lima-2008

SQL-Lenguaje de Manipulacin de Datos

Objetivos
Conocer el uso de las sentencias SQL para
Manipular Datos (DML)
Lectura de informacin usando sentencias
SELECT

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Contenido

Operadores Relacionales de SGBDR


Sentencia bsica SELECT
Funciones de una Fila
Funciones de Agrupacin de Filas
SubConsultas

Mostrando data de mltiples tablas

Operadores de conjunto
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Structure Query Language


Es un lenguaje estndar (ANSI/ISO) para
interactuar con un SGBDR, permitiendo:
Administrar (crear , modificar y eliminar) los
distintos tipos de objetos del SGBD.
Manipular (insertar, actualizar y eliminar) la
data.
Controlar el acceso (permitir, denegar,
revocar) a la data y tareas administrativas.
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Structure Query Language


Este lenguaje se subdivide en:
DDL - Data Definition Language.
CREATE; ALTER; DROP;

DML - Data Manipulation Languaje.


SELECT; INSERT; UPDATE; DELETE;

DCL Data Control Language.


GRANT; REVOKE; DENY;

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Operadores Relacionales de SGBDR

SELECTION
PROJECTION
JOIN
UNION
INTERSECTION
DIFFERENCE
PRODUCT
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


SELECT: indica las columnas a mostrar
*: indica mostrar todas las columnas
columna|expresion,: especifica
la columna a mostrar
FROM: indica la tabla que contiene
dichas columnas
SELECT * |{columna|expresion
[alias],}FROM tabla;
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


Valores Nulos
NULL es un valor no disponible, no
asignado, desconocido o inaplicable.
NULL no es lo mismo a Cero o Espacio
en blanco
Una expresin aritmtica que contiene
un NULL se reduce a NULL
100+NULL*2 se reduce a NULL
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


Alias de Columnas
Es til en clculos
Se muestra como encabezado de
columna.
Se indica luego de la columna o usando
la palabra AS.
SELECT columna [AS] alias
FROM tabla;
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


DISTINCT
duplicadas

NO

muestra

columnas

SELECT DISTINCT * |
{columna|expresion
[alias],} FROM tabla;

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

10

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


Operadores aritmticos
+,-,*,/

Operador concatenacin
||

Operadores comparacin
=,>,<,>=,<=,IN,ANY,ALL,LIKE,BETWEEN

Operadores Lgicos
AND, OR, NOT

Delimitadores
Cadena,identificador 01
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

11

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


WHERE limita las filas a devolver solo a
las que cumplan una condicin
especificada.
SELECT DISTINCT * |
{columna|expresion
[alias],} FROM tabla
[WHERE condicion];
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

12

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


Operadores de Comparacin.
Igual,Mayor,MayorIgual,Menor,MenorIgual,
Diferente.

=,>,>=,<,<=,<>

Entre dos valores

BETWEEN AND

En una lista de valores

IN(lista), ANY(lista), ALL(lista)

Los que cumplen un patron de caracteres

LIKE %_cad%

Es un valor Nulo

IS NULL

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

13

SQL-Lenguaje de Manipulacin de Datos

Sentencia bsica SELECT


ORDER BY ordena el resultado en base
a las columnas especificadas.
SELECT [DISTINCT] * |
{columna|expresion
[alias],} FROM tabla
[WHERE condicion]
[ORDER BY columna [ASC|DESC]
[,] ];
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

14

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Carcter
LOWER, UPPER, INITCAP
CONCAT, SUBSTR, LENGTH,
TRIM, REPLACE

INSTR,

LPAD,

RPAD,

Numricas
ROUND, TRUNC, MOD

Fecha
MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY,
ROUND, TRUNC

Conversin
TO_CHAR, TO_NUMBER, TO_DATE

General
NVL, NVL2, NULLIF, COALESCE, CASE, DECODE
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

15

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Carcter
LOWER('hola Mundo')

hola mundo

Minsculas

UPPER('hola Mundo')

HOLA MUNDO

Maysculas

INITCAP('hola Mundo')

Hola Mundo

Mayscula
c/primera letra

CONCAT('Ho','las')

Holas

Concatena

SUBSTR('Holas',2,3)

ola

3 letras desde
posicin 2

LENGTH('Holas')

Tamao

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

16

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Carcter
INSTR('Holas','la')

Posicin de
subcadena

LPAD('Holas',7,'*')

**Holas

Completa
por
Izquierda con *

RPAD('Holas',7,'*')

Holas**

Completa
por
Derecha con *

TRIM('H' FROM
'Holas')

olas

Quita subcad de
los extremos

REPLACE('Holas','H', HHolas
'HH')

la

Remplaza subcad
con otra

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

17

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Numricos
ROUND(255.4378,2)

255.44

Redondea a 2 dgitos
decimales

TRUNC(255.4378,2)

255.43

Corta a 2
decimales

ROUND(255.4378,-2)

300

Redondea a 2 dgitos
enteros

TRUNC(255.4378,-2)

200

Corta a
enteros

MOD(10,3)

Residuo de dividir 10
entre 3

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

dgitos

dgitos

18

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Fecha
MONTHS_BETWEEN('10- -12
JUL-07','10-JUL-08')
ADD_MONTHS('10-JUL07',2)
NEXT_DAY('10-JUL07','FRIDAY')
LAST_DAY('10-JUL07')

Meses entre dos


fechas

'10-SEP-07' Adiciona meses


a una fecha
'13-JUL-07' Da prximo
'31-JUL-07' Ultimo da del
mes

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

19

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Fecha
ROUND(TO_DATE('20JUL-07'),'YEAR')
ROUND(TO_DATE('20JUL-07'),'MONTH')
TRUNC(TO_DATE('20JUL-07'),'YEAR')
TRUNC(TO_DATE('20JUL-07'),'MONTH')

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

'01-JAN-08' Primer da del ao


mas cercano
'01-AUG-07' Primer da del mes
mas cercano
'01-JAN-07' Primer da del ao
'01-JUL-07' Primer da del mes

20

10

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Conversin de datos : Modelo de formato
de Fecha
YYYY

Ao en dgitos

YEAR

Ao en letras

MM

Mes en dgitos

MONTH

Mes en Nombre

MON

Mes nombre corto 3 letras

DY

Da de la semana corto 3 letras

DAY

Nombre del da completo

DD

Da en dgitos
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

21

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Conversin de datos : Modelo de formato
de Fecha Hora
HH

Horas en dgitos entre 0 y 12

HH24

Horas en dgitos entre 0 y 24

MI

Minutos

SS

Segundos

AM

Antes Meridiano

PM

Pasado Meridiano

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

22

11

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Conversin de datos : Modelo de formato
de Numero
9

Digito

Fuerza mostrar el cero

Signo del dollar

Smbolo monetario local

Punto decimal

Indicador de miles

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

23

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


Conversin de datos
TO_CHAR(SYSDATE,'YY/MM/D
D HH24:MI'),

'08/07/23
18:14'

Fecha
Carcter

TO_NUMBER('2000.56',
'99999.99'),

2000.56

Carcter
Numero

TO_DATE('08/07/22
17:30','YY/MM/DD
HH24:MI')

'22-JUL-08' Carcter
Fecha

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

24

12

SQL-Lenguaje de Manipulacin de Datos

Funciones de una Fila


General
NVL(NULL,100)

100 Si

NVL2(NULL,100,0)

NULLIF(10,10)

NUL Si ambos argumentos son iguales


devuelve NULL sino el 1er
L

1er argumento
devuelve el 2do

COALESCE(NULL,10,20) 10

es

Nulo

Si 1er argumento NO es Nulo


devuelve el 2do sino el tercero

Devuelve el 1er argumento No


Nulo

CASE WHEN 1>10 THEN 100 Devuelve


una
alternativas
10 ELSE 100 END

de

varias

DECODE(10,10,1,100)

de

varias

Devuelve
una
alternativas

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

25

SQL-Lenguaje de Manipulacin de Datos

Funciones de Agrupacin de Filas


Devuelven un valor en base a evaluacion de
varias Filas
AVG,COUNT,MAX,MIN,STDDEV,SUM,VARIANCE

Se usa la clausula GROUP BY


SELECT [columna,]
funagrupamiento(columna)[,]
FROM tabla
[WHERE condicion]
[GROUP BY columna]
[ORDER BY columna];
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

26

13

SQL-Lenguaje de Manipulacin de Datos

Funciones de Agrupacin de Filas


Ejemplo
SELECT
curso,AVG(nota),COUNT(nota),
MAX(nota),MIN(nota),
STDDEV(nota),SUM(nota),
VARIANCE(nota)
FROM NOTAS GROUP BY curso;

NOTAS
curso
nota
BD01

10

BD01

15

BD01

20

IS01

10

IS01

14
variance

curso

avg

count

max

min

stddev

sum

IS01

12

14

10

2.83

24

BD01

15

20

10

45

25

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

27

SQL-Lenguaje de Manipulacin de Datos

Funciones de Agrupacin de Filas


DISTINCT permite solo considerar valores
distintos al evaluar las funciones.
SELECT COUNT(DISTINCT curso)
FROM NOTAS;
NOTAS
curso
nota
BD01

10

count

BD01

15

BD01

20

IS01

10

IS01

14

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

28

14

SQL-Lenguaje de Manipulacin de Datos


Funciones de Agrupacin de Filas
HAVING
filtra
agrupados

los

resultados

BD01

10

BD01

15

BD01

20

IS01

10

GROUP BY IS01

14

SELECT
curso,AVG(nota),COUNT(nota)
FROM NOTAS GROUP BY curso
HAVING COUNT(nota)>=3;
curso

avg

count

BD01

15

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

HAVING

NOTAS
curso
nota

curso

avg

count

IS01

12

BD01

15

29

SQL-Lenguaje de Manipulacin de Datos

SubConsultas
Una subconsulta esta dentro de una
consulta principal.
Se ejecuta antes de la principal
Devuelve un resultado que es usado
por la consulta principal
SELECT * FROM tabla
WHERE expresion operador (SELECT
columna FROM tabla);
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

30

15

SQL-Lenguaje de Manipulacin de Datos

Mostrando data de mltiples tablas


Tipos de JOINs
NAURAL JOINS
USING
INNER JOIN
FULL|LEFT|RIGHT OUTER JOIN
CROSS JOINS

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

31

SQL-Lenguaje de Manipulacin de Datos

Mostrando data de mltiples tablas


JOINs SQL:1999
SELECT t1.columna, t2.columna
FROM t1
[NATURAL JOIN t2]|
[JOIN t2 USING (columna)]|
[[INNER]
JOIN
t2
(t1.columna=t2.columna)] |
[LEFT|RIGHT|FULL OUTER JOIN
(t1.columna=t2.columna)]|
[CROSS JOIN t2]
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

ON
t2

ON

32

16

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor

NATURAL JOIN: usa todas


las columnas con el mismo
nombre y tipo de dato.
SELECT * FROM vehiculo
NATURAL JOIN conductor

CON_ID

CON_NOMBRE

Juan

CON_ID

VEH_PLACA

CON_NOMBRE

Pedro

IO1234

Pedro

Cesar

WH5544

Juan

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

33

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor

USING: usa solo las columnas


especificadas, deben existir
en ambas tablas.
SELECT * FROM vehiculo
JOIN conductor
USING (con_id)

CON_ID

CON_NOMBRE

Juan

CON_ID

VEH_PLACA

CON_NOMBRE

Pedro

IO1234

Pedro

Cesar

WH5544

Juan

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

34

17

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor

Usando alias de tablas para


simplificar las consultas.
SELECT
v.veh_placa,
c.con_nombre
FROM
vehiculo v JOIN
conductor c
USING (con_id)

CON_ID

CON_NOMBRE

Juan

VEH_PLACA

CON_NOMBRE

Pedro

IO1234

Pedro

Cesar

WH5544

Juan

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

35

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor

Usar
clusula
ON
cualquier condicin.

SELECT
v.veh_placa,
c.con_nombre
FROM
vehiculo v JOIN
conductor c
ON (v.con_id=c.con_id)

CON_ID

CON_NOMBRE

Juan

VEH_PLACA

CON_NOMBRE

Pedro

IO1234

Pedro

Cesar

WH5544

Juan

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

para

36

18

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor
CON_ID

CON_NOMBRE

Juan

Pedro

Cesar

LEFT OUTER, incluye todos


los registros de la izquierda.
SELECT
v.veh_placa,
c.con_nombre
FROM
vehiculo v LEFT
OUTER JOIN conductor c
ON (v.con_id=c.con_id)
VEH_PLACA

CON_NOMBRE

IO1234

Pedro

HE6620

KO2321

WH5544

Juan

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

37

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor
CON_ID

CON_NOMBRE

Juan

Pedro

Cesar

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

RIGH OUTER, incluye todos


los registros de la derecha.
SELECT
v.veh_placa,
c.con_nombre
FROM
vehiculo v RIGHT
OUTER JOIN conductor c
ON (v.con_id=c.con_id)
VEH_PLACA

CON_NOMBRE

IO1234

Pedro

WH5544

Juan

Cesar

38

19

SQL-Lenguaje de Manipulacin de Datos


Mostrando data de mltiples tablas
vehiculo
VEH_PLACA

CON_ID

IO1234

HE6620

KO2321

WH5544

conductor

CROSS
JOIN,
producto
cartesiano de ambas tablas
X*Y.
SELECT
v.veh_placa,
c.con_nombre
FROM
vehiculo v CROSS
JOIN conductor c;

CON_ID

CON_NOMBRE

Juan

IO1234

Juan

Pedro

HE6620

Juan

Cesar

KO2321

Juan

WH5544

Juan

IO1234

Pedro

HE6620

Pedro

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

VEH_PLACA

CON_NOMBRE

4x3=12 filas

39

SQL-Lenguaje de Manipulacin de Datos

Operadores de conjunto
Operadores de conjunto
UNION
UNION ALL
INERSECT
MINUS

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

40

20

SQL-Lenguaje de Manipulacin de Datos


Operadores de conjunto
vendedor
VEN_ID

VEN_NOMBRE

10

Ana

20

Pedro

UNION, une el resultado de


distintas consultas.
SELECT v.ven_nombre
FROM vendedor v
UNION
SELECT c.con_nombre
FROM conductor c;

nombre
nombre

conductor
CON_ID

CON_NOMBRE

NOMBRE

Juan

Ana

Pedro

Pedro

Cesar

Juan
Cesar

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

41

SQL-Lenguaje de Manipulacin de Datos


Operadores de conjunto
vendedor
VEN_ID

VEN_NOMBRE

10

Ana

20

Pedro

conductor

UNION ALL, muestra todo


incluso columnas repetidas.
SELECT v.ven_nombre
FROM vendedor v
UNION ALL
SELECT c.con_nombre
FROM conductor c;

nombre

NOMBRE

CON_NOMBRE

Ana

Juan

Pedro

Pedro

Juan

Cesar

Pedro

CON_ID

nombre

Cesar
FIIS - Base de Datos
Ing. Mario T. Traverzo Vila

42

21

SQL-Lenguaje de Manipulacin de Datos


Operadores de conjunto
vendedor
VEN_ID

VEN_NOMBRE

10

Ana

20

Pedro

INTERSECT, muestra solo si


el registro esta ambas tablas.
SELECT v.ven_nombre
FROM vendedor v
INERSECT
SELECT c.con_nombre
FROM conductor c;

nombre
nombre

conductor
CON_ID

CON_NOMBRE

NOMBRE

Juan

Pedro

Pedro

Cesar

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

43

SQL-Lenguaje de Manipulacin de Datos


Operadores de conjunto
vendedor
VEN_ID

VEN_NOMBRE

10

Ana

20

Pedro

MINUS, muestra solo si el


registro esta ambas tablas.
SELECT v.ven_nombre
FROM vendedor v
MINUS
SELECT c.con_nombre
FROM conductor c;

nombre
nombre

conductor
CON_ID

CON_NOMBRE

NOMBRE

Juan

Ana

Pedro

Cesar

FIIS - Base de Datos


Ing. Mario T. Traverzo Vila

44

22

Potrebbero piacerti anche