Está en la página 1de 41

DML:

INICIANDO EN CONSULTAS SQL


CAPACIDADES DEL ESTATUTO SELECT

Tabla 1 Tabla 1

Tabla 1 Tabla 2
ESTRUCTURA BÁSICA
Consta de tres cláusulas:
 SELECT se corresponde con la operación de proyección del AR.
Lista qué COLUMNAS va a tener el resultado.
 FROM se corresponde con la operación del producto
cartesiano del AR. Lista de qué TABLAS se va a obtener la
información para el resultado.
 WHERE se corresponde con la selección del AR. Además de
condiciones de filtro, contiene la condición de reunión entre
las tablas de la cláusula FROM.
SELECT A1, A2, … An
FROM r1, r2, …, rm
WHERE P
ESTATUTO SELECT EN ORACLE
No son sensibles a mayúsculas y minúsculas.
Pueden estar en más de una línea.
Las palabras reservadas no pueden ser abreviadas ni
divididas entre líneas.
Las cláusulas, de preferencia, deben estar una por
línea.
Las tabulaciones son usadas para mejorar la lectura y
compresión de los estatutos.
ESTATUTO SELECT EN ORACLE
Dentro de SQL*Plus, los estatutos capturados en el
prompt SQL y las líneas subsecuentes (numeradas), se
almacenan en el SQL Buffer. Sólo un estatuto puede ser
ejecutado en el buffer.
Para terminar una sentencia y ejecutarla se escribe ;
MOSTRANDO COLUMNAS
Para que una columna aparezca en el resultado
escribes su nombre en la lista de la cláusula SELECT.

SELECT nombre_cliente, calle_cliente, ciudad_cliente, telefono


FROM clientes

SELECT employee_id, first_name, last_name,


email, phone_number, hire_date, job_id, salary,
commission_pct, manager_id, department_id
FROM employees
MOSTRANDO COLUMNAS (*)
 Se pueden mostrar todas las columnas de la tabla sin
necesidad de escribir todos los nombres poniendo un *
SELECT *
FROM clientes

SELECT *
FROM employees, departments

SELECT employees.*
FROM employees, departments

SELECT departments.*
FROM employees, departments
MOSTRANDO COLUMNAS (DISTINCT)
Para que muestre sólo los valores diferentes en de las
columnas usamos la palabra reservada DISTINCT.
 Muestra los departamentos de la tabla empleados. Regresa
tantas filas como empleados haya en la tabla
SELECT department_id
FROM employees

 Muestra sólo los distintos valores para el campo


department_id.
SELECT DISTINCT department_id
FROM employees
MOSTRANDO COLUMNAS (ALIAS)
Podemos poner un alias a las columnas del resultado.
SELECT salary*12 AS ˮSalario Anualˮ
FROM employees

La palabra AS es opcional.


Las comillas dobles sólo se usan si el alias:
 Contiene minúsculas
 Incluye caracteres especiales (incluyendo espacios)
SELECT salary salario, salary*12 ˮSalario Anualˮ
FROM employees
MOSTRANDO COLUMNAS (EXPRESIONES)
El SELECT puede contener expresiones que contengan
los operadores +, -, * ó / y/o constantes u otros
atributos.
SELECT salary*12
FROM employees

SELECT salary+300*12
FROM employees

SELECT (salary+300)*12
FROM employees
EVALUACIÓN DE VALORES NULOS
Las expresiones que contengan valores nulos serán
evaluadas como nulas.
SELECT last_name, salary*12+commission_pct,
hire_date, phone_number
FROM employees

En Oracle, la función NVL permite convertir un valor


nulo a uno válido (de acuerdo con su tipo de dato)
SELECT last_name, salary*12+NVL(commission_pct, 0),
NVL(hire_date, ‘2013-05-12’) ,
NVL(phone_number, ‘Sin teléfono’)
FROM employees
CADENAS Y CONSTANTES TIPO CARÁCTER
Una literal es un carácter, expresión, o número incluido
in la lista del SELECT.
Los valores literales de fechas y caracteres deben de ir
encerrados en comilla simple.
Cada cadena de caracteres es una salida por cada una
de las filas regresadas.
CONCATENACIÓN DE CADENAS
Para concatenar cadenas o columnas de tipo carácter a
otra cadena o columna de tipo carácter se utiliza el
operador || ó +, dependiendo del Manejador de BD.
SELECT last_name||first_name
FROM employees

La columna resultante será una expresión de tipo


carácter.
CONCATENACIÓN DE CADENAS Y LITERALES
SELECT last_name||first_name
FROM employees

Empleado
AbelEllen

ZlotkeyEleni

SELECT last_name||’ ‘||first_name


FROM employees

Empleado
Abel Ellen

Zlotkey Eleni
DML: Iniciando en Consultas SQL

Restringiendo las filas del


resultado
EMPLOYEE_ID LAST_NAME FIRST_NAME … DEPARTMENT_ID
100 King Steven … 90
101 Kochhar Neena … 90
103 Hunold Alexander … 60
104 Ernst Bruce … 60
105 Austin David … 60
… … … … …
206 Gietz William … 110

EMPLOYEE_ID LAST_NAME FIRST_NAME … DEPARTMENT_ID


103 Hunold Alexander … 60
104 Ernst Bruce … 60
105 Austin David … 60
… … … … …
LIMITANDO LAS FILAS OBTENIDAS
MEDIANTE UNA SELECCIÓN
Restringe las filas que serán devueltas usando la
cláusula WHERE
SELECT [DISTINCT] {*, columna [alias+*, …+}
FROM tabla [, tabla2, …]
WHERE condiciones

La cláusula WHERE se coloca después de la cláusula


FROM y es equivalente a la operación de selección del
AR.
USANDO LA CLÁUSULA WHERE
SELECT *
FROM employees
WHERE department_id = 60;

EMPLOYEE_ID LAST_NAME FIRST_NAME … DEPARTMENT_ID


103 Hunold Alexander … 60
104 Ernst Bruce … 60
105 Austin David … 60
… … … … …
CADENAS DE CARACTERES Y FECHAS
 Los valores de tipo cadena de caracteres y fecha son encerrados
en comilla simple.
 Los valores tipo cadena de caracteres son sensibles a mayúsculas
y minúsculas.
 Las fechas son sensibles a un formato. Para conocer el formato
por defecto de nuestra base de datos usamos la siguiente
sentencia:
SELECT sysdate
FROM dual;
 Las fechas pueden requerir TO_DATE, una función integrada de
Oracle, para poder ser utilizadas en el WHERE.
OPERADORES DE COMPARACIÓN
Operador Descripción
= Igual
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
<> ó != Diferente
USANDO LOS OPERADORES DE
COMPARACIÓN
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct <= .2;

LAST_NAME SALARY COMMISSION_PCT


Zlotkey 10500 .2
Olsen 8000 .2
Cambrault 7500 .2
Tuvault 7000 .15
Greene 9500 .15
Lee 7200 .1
… … …
OTROS OPERADORES DE COMPARACIÓN
Operador Descripción
BETWEEN … AND … Entre dos valores (inlcusivo)
IN (lista_de_valores) Concuerda con cualquier valor
contenido en la lista
LIKE ‘patron’ Concuerda con un patrón de tipo
carácter
IS NULL Es un valor nulo
NOT Niega cualquiera de los operadores
en esta tabla:
NOT BETWEEN … AND …
NOT IN (lista)
NOT LIKE ‘patron’
IS NOT NULL
USANDO EL OPERADOR BETWEEN
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 15000 AND 25000;

LAST_NAME SALARY
King 24000
Korchhar 17000
De Haan 17000

Se puede usar con cualquier tipo de dato.


USANDO EL OPERADOR IN
SELECT last_name, salary, manager_id
FROM employees
WHERE manager_id IN (120, 123);

SELECT last_name, salary, manager_id


FROM employees
WHERE manager_id NOT IN (120, 123);

Se puede usar con cualquier tipo de dato. Los valores


se separan por comas.
USANDO EL OPERADOR LIKE
Nos sirve para realizar búsquedas con comodines de
cadenas de caracteres. Se puede usar con cadenas o
fechas.
Las condiciones de búsqueda pueden contener literales
o números.
 El símbolo % representa cero o varios caracteres.
 El símbolo _ representa un carácter.

SELECT last_name
FROM employees
WHERE last_name LIKE ‘S%’;
USANDO EL OPERADOR LIKE
Puedes combinar patrones para concordar con la
condición de búsqueda por caracteres.
SELECT last_name
FROM employees
WHERE last_name LIKE ‘_ _r%’;

LAST_NAME
Bernstein
Doran
Errazuriz
Hartstein

USANDO EL OPERADOR IS NULL
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;

LAST_NAME MANAGER_ID
King

SELECT last_name, manager_id


FROM employees
WHERE manager_id IS NOT NULL;
OPERADORES LÓGICOS Y
ORDEN DE EVALUACIÓN
Orden de Operador Función
Evaluación
1 Operadores de comparación El resultado de su evaluación siempre
=, >, >=, <, <=, <> será un valor lógico: Verdadero o
Falso.
2 NOT Regresa Verdadero si lo que le sigue
en la condición es Falso. Y viceversa.
3 AND Regresa verdadero si ambos
componentes de la condición son
verdaderos. Si ambos o alguno es
falso entonces regresa falso.
4 OR Regresa verdadero si cualquiera de
los componentes de la condición es
verdadero; si ambos son verdaderos
también. Si ambos son falsos regresa
falso.
USANDO EL OPERADOR AND
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 11000
AND job_id = ‘SA_MAN’;
USANDO EL OPERADOR OR
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 11000
OR job_id = ‘SA_MAN’;
USANDO EL OPERADOR NOT
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE job_id NOT IN (‘HR_REP’, ‘MK_REP’,
‘SA_REP’,
‘PU_MAN’, ‘MK_MAN’,
‘SA_MAN’,
‘ST_MAN’, ‘SH_CLERK’,
‘PU_CLERK’, ‘ST_CLERK’);
REGLAS DE PROCEDENCIA
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE job_id = ‘SA_MAN’
OR job_id = ‘AD_PRES’
AND salary > 15000;
REGLAS DE PROCEDENCIA
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE (job_id = ‘SA_MAN’
OR job_id = ‘AD_PRES’)
AND salary > 15000;
DML: Iniciando en Consultas SQL

Ordenando las Filas del Resultado


CLÁUSULA ORDER BY
Para ordenar las filas que obtenemos como resultado
usamos la cláusula ORDER BY.
ASC: ordena de manera ascendente (valor por defecto.)
DESC: ordena de manera descendente.
La cláusula ORDER BY siempre se coloca al final de un
estatuto SELECT, siempre debe de ser la última línea.

SELECT last_name apellido, salary*12 salanual,


department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY hire_date;
ORDENANDO DE MANERA DESCENDENTE.
SELECT last_name apellido, salary*12 salanual,
department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY hire_date DESC;
ORDENANDO DE ACUERDO
AL ALIAS DE UNA COLUMNA

SELECT last_name apellido, salary*12 salanual,


department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY "fecha contrato";
ORDENANDO DE ACUERDO A
MÚLTIPLES COLUMNAS
El orden que se especifica en la lista del ORDER BY será
el orden en el que se ordenen las filas de resultado.
SELECT last_name apellido, salary*12 salanual,
department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY depto, "fecha contrato";
ORDENANDO DE ACUERDO A
COLUMNAS NO PROYECTADAS
Puedes ordenar las filas del resultado por medio de
columnas que no se encuentren en la lista del SELECT.
SELECT last_name apellido, salary*12 salanual,
department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY job_id;

SELECT last_name apellido, salary*12 salanual,


department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY depto, "fecha contrato" DESC, job_id;
ORDENANDO DE ACUERDO A
EXPRESIONES
Puedes ordenar las filas del resultado por medio de
resultado de expresiones (se encuentren o no en el
SELECT.)

SELECT last_name apellido, salary*12 salanual,


department_id depto, hire_date "fecha contrato"
FROM employees
ORDER BY salary*12;
RESUMEN

SELECT [DISTINCT] {*, columna [alias+*, …+}


FROM tabla [, tabla2, …]
[WHERE condiciones]
[ORDER BY {columna(s), exp, alias} [ASC|DESC]]

También podría gustarte