Está en la página 1de 9

04/05/2012

Objetivos

ESCRITURA DE SENTENCIAS SQL


Introduccin a Oracle :SQL
ING. CARLOS PARRA TERRAZOS

Enumerar las capacidades de las sentencias SQL SELECT Ejecutar una sentencia SELECT bsica

checarlitosssss@yahoo.com.pe

Ing. Carlos Parra Terrazos

AGENDA
Comandos Capacidades de las Sentencias SQL SELECT Expresiones Aritmticas Mejora de visualizacin de consultas Uso de la clausula WHERE Otras Condiciones de Comparacin Condiciones Lgicas Reglas de Prioridad Clusula ORDER BY Resumen Fin
Ing. Carlos Parra Terrazos

Visualizacin del esquema de una Tabla


Utilice el comando DESCRIBE de iSQL*Plus para ver la estructura de una tabla.
DESC[RIBE] tablename

Ing. Carlos Parra Terrazos

Visualizacin del Esquema de una Tabla


DESCRIBE employees

Sentencias SELECT Bsicas

SELECT FROM

*|{[DISTINCT] column|expression [alias],...} ],...} table;

SELECT identifica las columnas what FROM identifica la tabla which

Ing. Carlos Parra Terrazos

Ing. Carlos Parra Terrazos

04/05/2012

Seleccin de Todas las Columnas


SELECT * FROM departments;

Seleccin de Columnas Especficas


SELECT department_id, location_id FROM departments;

Ing. Carlos Parra Terrazos

Ing. Carlos Parra Terrazos

Sintaxis de Sentencias SQL


Las sentencias SQL no son sensibles a maysculas/minsculas. Las sentencias SQL pueden ocupar una o ms lneas. Las palabras clave no se pueden abreviar ni dividir entre lneas. Las clusulas suelen estar colocadas en lneas separadas. Los sangrados se utilizan para mejorar la legibilidad. Ing. Carlos Parra Terrazos

Valores por Defecto de Cabecera de Columna


iSQL*Plus:
Justificacin de cabecera por defecto: Centro Visualizacin de cabecera por defecto: Maysculas

SQL*Plus:
Las cabeceras de la columna de fecha y carcter estn justificadas a la izquierda Las cabeceras de columna de nmero estn justificadas a la derecha Visualizacin de cabecera por defecto: 10 Maysculas Ing. Carlos Parra Terrazos

Expresiones Aritmticas
Cree expresiones con datos de nmero y fecha mediante operadores aritmticos.
Operador + * / Descripcin Suma Resta Multiplicacin Divisin

Uso de Operadores Aritmticos


SELECT last_name, salary, salary + 300 FROM employees;

Ing. Carlos Parra Terrazos

11

Ing. Carlos Parra Terrazos

12

04/05/2012

Prioridad de Operador
_ * / +
La multiplicacin y la divisin tienen prioridad sobre la suma y la resta. Los operadores de idntica prioridad se evalan de izquierda a derecha. Los parntesis se utilizan para forzar evaluaciones prioritarias y para clarificar sentencias.
Ing. Carlos Parra Terrazos

Prioridad de Operador
SELECT last_name, salary, 12*salary+100 FROM employees;

13

Ing. Carlos Parra Terrazos

14

Uso de Parntesis
SELECT last_name, salary, 12*(salary+100) FROM employees;

Mejora de visualizacin de consultas


Valor Nulo Alias de Columna Operador de Concatenacin Cadenas de Caracteres Literales Filas Duplicadas

Ing. Carlos Parra Terrazos

15

Ing. Carlos Parra Terrazos

16

Definicin de un Valor Nulo


Un valor nulo es un valor no disponible, no asignado, desconocido, o no aplicable. Un valor nulo no es lo mismo que cero ni que un espacio en blanco.
SELECT last_name, job_id, salary, commission_pct FROM employees;

Valores Nulos en Expresiones Aritmticas


Las expresiones aritmticas que contienen un valor nulo tienen una evaluacin nula.
SELECT last_name, 12*salary*commission_pct FROM employees;


Ing. Carlos Parra Terrazos


17
Ing. Carlos Parra Terrazos

18

04/05/2012

Definicin de un Alias de Columna


Un alias de columna: Cambia el nombre de una cabecera de columna. Resulta til con clculos. Se sita inmediatamente detrs del nombre de la columna, tambin puede existir la palabra clave opcional AS entre el nombre de la columna y el alias. Requiere comillas dobles si contiene espacios, caracteres especiales o si es sensible a maysculas/minsculas.
Ing. Carlos Parra Terrazos

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;

19
Ing. Carlos Parra Terrazos

20

Operador de Concatenacin
Un operador de concatenacin: Concatena columnas o cadenas de caracteres a otras columnas. Est representado por dos barras verticales (||). Crea una columna resultante que es una expresin de caracteres.

Uso del Operador de Concatenacin


SELECT FROM last_name||job_id AS "Employees" employees;

Ing. Carlos Parra Terrazos

21

Ing. Carlos Parra Terrazos

22

Cadenas de Caracteres Literales


Un literal es un carcter, un nmero o una fecha incluida en la lista SELECT. Los valores literales de caracteres y fecha se deben escribir entre comillas simples. Cada cadena de caracteres tiene una salida para cada fila devuelta.

Uso de Cadenas de Caracteres Literales


SELECT last_name||' is a '||job_id AS "Employee Details"
FROM employees;

Ing. Carlos Parra Terrazos

23

Ing. Carlos Parra Terrazos

24

04/05/2012

Filas Duplicadas
La visualizacin por defecto de las consultas son todas las filas, incluidas las filas duplicadas.
SELECT department_id FROM employees;

Eliminacin de Filas Duplicadas


Elimine filas duplicadas mediante la palabra clave DISTINCT de la clusula SELECT.
SELECT DISTINCT department_id FROM employees;

Ing. Carlos Parra Terrazos

25

Ing. Carlos Parra Terrazos

26

Limitando Filas de una Seleccin


EMPLOYEES EMPLOYEE_I LAST_NAME D 100 King 101 Kochhar 102 De Haan 103 Hunold JOB_ID AD_PRES AD_VP AD_VP IT_PROG DEPARTMENT_ID 90 90 90 60 60 60 50 DEPARTMENT_I D 90 90 27 90

Limitacin de Filas Seleccionadas


Podemos restringir las filas devueltas utilizando la clusula WHERE.
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)] ;

104 Ernst IT_PROG 107 Lorentz IT_PROG recuperar124 Mourgos todos los empleados ST_MAN

del departamento 90
EMPLOYEE_I LAST_NAME JOB_ID D 100 King AD_PRES 101 Kochhar AD_VP 102 De Haan Ing. Carlos Parra Terrazos AD_VP

La clusula WHERE sigue a la clusula FROM.


Ing. Carlos Parra Terrazos

28

Uso de la Clusula WHERE


SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;

Cadenas de Caracteres y Fechas


Las cadenas de caracteres y los valores de fechas se escriben entre comillas simples. Los valores de caracteres son sensibles a maysculas/minsculas. Los valores de fecha son sensibles al formato. El formato de fecha por defecto es DDMON-RR.
SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen ; Ing. Carlos Parra Terrazos

EMPLOYEE_I LAST_NAME D 100 King 101 Kochhar 102 De Haan

JOB_ID AD_PRES AD_VP AD_VP

DEPARTMENT_ID 90 90 90

Ing. Carlos Parra Terrazos

29

30

04/05/2012

Condiciones de Comparacin
Operador = > >= < <= <> Significado Igual que Mayor que Mayor o igual que Menor que Menor o igual que No igual a

Ejemplos con Condiciones de Comparacin


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

LAST_NAME Matos Vargas

SALARY 2600 2500

Ing. Carlos Parra Terrazos

31

Ing. Carlos Parra Terrazos

32

Otras Condiciones de Comparacin


Operador BETWEEN ...AND... IN(set) LIKE IS NULL Significado Entre dos valores (ambos inclusive),

La Condicin BETWEEN
Usamos la condicin BETWEEN para mostrar filas incluidas en un rango de valores.
SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500 ; Lmite inferior
LAST_NAME Rajs Davies Matos Vargas
33
Ing. Carlos Parra Terrazos

Coincide con cualquiera de una lista de valores Coincide con un patrn de caracteres Es un valor nulo

Lmite superior
SALARY 3500 3100 2600 2500
34

Ing. Carlos Parra Terrazos

La Condicin IN
Usaremos la condicin IN de pertenencia para comprobar si hay valores en una lista.
SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201) ;
EMPLOYEE_I D 202 200 205 101 102 124 149 201 LAST_NAME Fay Whalen Higgins Kochhar De Haan Mourgos Zlotkey Harstein SALARY 6000 4400 12000 17000 17000 5800 10500 13000 MANAGER_ID 201 101 101 100 100 100 100 35 100

La Condicin LIKE
Empleamos la condicin LIKE para realizar bsquedas con comodines de valores vlidos de la cadena de bsqueda. Las condiciones de bsqueda pueden contener caracteres literales o nmeros:
% indica cero o muchos caracteres. _ indica un carcter.
SELECT first_name FROM employees WHERE first_name LIKE S% ;
Ing. Carlos Parra Terrazos

Ing. Carlos Parra Terrazos

36

04/05/2012

Ejemplos con la Condicin LIKE


Podemos combinar caracteres de coincidencia de patrones.
SELECT last_name FROM employees WHERE last_name LIKE '_o%' ;
LAST_NAME Kochhar Lorentz Mourgos

Empleo de Condiciones NULL


Comprobemos si hay valores nulos con el operador IS NULL.
SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL ;
LAST_NAME King MANAGER

Tambin podemos emplear el identificador ESCAPE para buscar los smbolos % y _ reales.
Ing. Carlos Parra Terrazos

37

Ing. Carlos Parra Terrazos

38

Condiciones Lgicas
Operador Significado Devuelve TRUE si las dos AND condiciones componentes son verdaderas OR Devuelve TRUE si alguna de las condiciones componentes es verdadera Devuelve TRUE si la siguiente condicin es falsa

El Operador AND
AND requiere que las dos condiciones sean
verdaderas.
SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >=10000 AND job_id LIKE '%MAN%' ;

NOT

EMPLOYEE_I LAST_NAME D 149 Zlotkey 201 Harstein

JOB_ID SA_MAN MK_MAN

SALARY 10500 13000


40

Ing. Carlos Parra Terrazos

39

Ing. Carlos Parra Terrazos

El Operador OR
OR requiere que una de las condiciones sea verdadera.
SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%' ;
EMPLOYEE_I D 100 101 102 124 149 174 201 205 LAST_NAME King Kochhar De Haan Mourgos Zlotkey Abel Harstein Higgins JOB_ID SALARY 24000 17000 17000 5800 10500 11000 13000 41 12000 AD_PRES AD_VP AD_VP ST_MAN SA_MAN SA_REP MK_MAN Ing. Carlos Parra Terrazos AC_MGR

El Operador NOT
SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
LAST_NAME King Kochhar De Haan Mourgos Zlotkey Whalen Harstein Fay Higgins Gietz JOB_ID AD_PRES AD_VP AD_VP ST_MAN SA_MAN AD_ASST MK_MAN MK_REP AC_MGR AC_ACCOUNT Ing. Carlos Parra Terrazos

42

04/05/2012

Reglas de Prioridad
Orden de Evaluacin 1 2 3 4 5 6 7 8 Operador Operadores aritmticos Operador de concatenacin Condiciones de comparacin IS [NOT] NULL, LIKE, [NOT] IN [NOT] BETWEEN Condicin Lgica NOT Condicin Lgica AND Condicin Lgica OR

Reglas de Prioridad
SELECT last_name, job_id, salary FROM employees WHERE job_id = 'SA_REP' OR job_id = 'AD_PRES' AND salary > 15000;
LAST_NAME King Abel Taylor Grant
43

JOB_ID AD_PRES SA_REP SA_REP SA_REP


Ing. Carlos Parra Terrazos

SALARY 24000 11000 8600 7000


44

Las reglas de prioridad se sustituyen mediante el uso de parntesis.


Ing. Carlos Parra Terrazos

Reglas de Prioridad
Debemos Utilizar parntesis para forzar la prioridad.
SELECT last_name, job_id, salary FROM employees WHERE (job_id = 'SA_REP' OR job_id = 'AD_PRES') AND salary > 15000;
LAST_NAME King JOB_ID AD_PRES SALARY 24000

Clusula ORDER BY
Ordenamos filas con la clusula ORDER BY
ASC: orden ascendente, por defecto DESC: orden descendente

La clusula ORDER BY aparece en ltimo lugar en la sentencia SELECT.


SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ;
LAST_NAME King Whalen Kochhar Hunold Ernst DEPARTMENT_I D AD_PRES 90 AD_ASST 10 AD_VP 90 IT_PROG Carlos Parra Terrazos 60 Ing. IT_PROG 60 JOB_ID HIRE_DATE 17-JUN-87 17-SEP-87 21-SEP-89 03-JAN-90 21-MAY-91

Ing. Carlos Parra Terrazos

45

46

Ordenacin en Orden Descendente


SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ;
LAST_NAME Zlotkey Mourgos Grant Lorentz Vargas Taylor Matos Fay Davies JOB_ID SA_MAN ST_MAN SA_REP IT_PROG ST_CLERK SA_REP ST_CLERK MK_REP ST_CLERK DEPARTMENT_ID HIRE_DATE 80 29-JAN-00 50 16-NOV-99 24-MAY-99 60 07-FEB-99 50 09-JJUL-98 80 24-MAR-98 50 15-MAR-98 20 17-AUG-97 50 29-JAN-97

Ordenacin segn Alias de Columna


SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal ;
EMPLOYEE_ID 144 143 142 141 107 200 124 104 202 178 LAST_NAME Vargas Matos Davies Rajs Lorentz Whalen Mourgos Ernst Fay Grant Carlos Parra Terrazos Ing. ANNSAL 30000 31200 37200 42000 50400 52800 69600 72000 72000 84000 48

Ing. Carlos Parra Terrazos

47

04/05/2012

Ordenacin segn Mltiples Columnas


El orden de la lista ORDER BY es el de
SELECT last_name, department_id, salary ordenacin. FROM employees ORDER BY department_id, salary DESC;
LAST_NAME Whalen Harstein Fay Mourgos Rajs Davies DEPARTMENT_ID 10 20 20 50 50 50 SALARY 6000 4400 12000 17000 17000 5800

Resumen
En la clase hemos aprendido a: Utilizar el entorno iSQL*Plus para escribir, guardar y ejecutar sentencias SQL y comandos iSQL*Plus.

Utilizar la sentencia SELECT

Usar la clusula WHERE para restringir filas de salida


Utilizar las condiciones de comparacin
Utilizar las condiciones BETWEEN, IN, LIKE y NULL y los operadores lgicos AND, OR y NOT Utilizar la clusula ORDER BY para ordenar filas de salida
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)] [ORDER BY {column, expr, alias} [ASC|DESC]] ;
Ing. Carlos Parra Terrazos

Podemos ordenar segn una columna que no se encuentre en la lista SELECT. 49


Ing. Carlos Parra Terrazos

50

Ing. Carlos Parra Terrazos

51