Documente Academic
Documente Profesional
Documente Cultură
PROCESANDO INFORMACIN
Restriccin y Ordenacin de Datos
OBJETIVOS
Despus de completar esta leccin, usted debera ser capaz de hacer lo siguiente:
Despus de completar esta leccin, usted debera ser capaz de hacer lo siguiente:
Limitar las filas recuperadas por una consulta.
Ordenar las filas que se recuperan mediante una consulta.
Utilizar sustitucin de ampersand para restringir y ordenar la salida en el tiempo de ejecucin
Al recuperar datos de la base de datos, puede que tenga que hacer lo siguiente:
Esta leccin explica las sentencias SQL que se utilizan para realizar las acciones mencionadas
anteriormente.
LECCIN
EMPLOYEE
"Recuperar todos los empleados del departamento 90"
En el ejemplo de la diapositiva, suponga que desea mostrar a todos los empleados del
departamento 90. Las filas con un valor de 90 en la columna DEPARTMENT_ID son los nicos que
se devuelven. Este mtodo de restriccin es la base de la clusula WHERE en SQL.
Puede restringir las filas que se devuelven desde la consulta mediante la clusula WHERE. Una
clusula WHERE contiene una condicin que debe cumplirse y se sigue directamente a la clusula
FROM. Si la condicin es verdadera, la fila cumple la condicin se devuelve.
En la siguiente sintaxis:
La clusula WHERE puede comparar los valores en las columnas, las expresiones literales,
aritmticas o funciones. Se compone de tres elementos:
Nombre de la columna
Comparacin de condiciones
Nombre de la columna, constante, o lista de valores
En el ejemplo, la instruccin SELECT recupera los campos Employee ID, last name, job ID, y el
nmero de departamento de todos los empleados que estn en el departamento 90.
SELECT last_name
FROM employees
WHERE hire_date =17-FEB-96;
Las cadenas de caracteres y fechas en la clusula WHERE debe estar encerrado entre comillas
simples (' ').
Nota: Para ms detalles sobre el formato RR y sobre cmo cambiar el formato de fecha
predeterminado, consulte la leccin titulada "Uso de una sola fila para personalizar las funciones de
salida." Adems, aprender sobre el uso de funciones de una hilera, como superior e inferior para
anular el entre maysculas y minsculas en la misma leccin.
OPERADORES DE COMPARACIN
Operador Significado
= Igual a
> or que
>= Mayor que o igual a
< Menor que
<= Menor o igual a
<> No igual a
BETWEEN entre dos valores (ambos inclusive)
AND
IN (set) Coincidir cualquiera de una lista de valores
LIKE Coincide una patrn de caracter
IS NULL es un valor nulo
Operadores de comparacin
Los operadores de comparacin se utilizan en condiciones que comparan una expresin a otro
valor o una expresin. Se utilizan en la clusula WHERE en el formato siguiente:
Sintaxis
... WHERE expr operator valor
Ejemplo
... WHERE hire_date = '01-JAN-95 '
... WHERE salary> = 6000
... WHERE last_name = 'Smith'
Utilice el operador BETWEEN para mostrar las filas sobre la base de un rango de valores:
Puede mostrar las filas sobre la base de una serie de valores con el operador BETWEEN. El rango
que especifica contiene un lmite inferior y un lmite superior.
La instruccin SELECT en la diapositiva devuelve las filas de la tabla Employees para cualquier
empleado cuyo salario est entre $ 2.500 y $ 3.500.
Los valores que se especifican con el operador BETWEEN estn incluidos. Sin embargo, debe
especificar el lmite inferior en primer lugar.
Para poner a prueba los valores en un conjunto especfico de valores, utilice el operador IN. La
condicin definida mediante el operador IN tambin se conoce como la condicin de pertenencia.
Nota: Los valores resultantes pueden ser especificados en cualquier orden por ejemplo, (201,
100, 101)
El operador IN puede ser utilizado con cualquier tipo de datos. El ejemplo siguiente devuelve una
fila de la tabla Empleados, para cualquier empleado cuyo apellido est incluido en la lista de
nombres en la clusula WHERE:
Nota: El operador IN est internamente evaluadas por el servidor de Oracle como un conjunto de
condiciones OR, tal como un = valor1 o un = valor2 o un = valor3. Por lo tanto, usando el operador
IN no tiene ventajas de rendimiento y slo se utiliza para la simplicidad lgica.
Utilice el operador LIKE para realizar bsquedas con comodines de valores vlidos de la
cadena de bsqueda.
Las condiciones de bsqueda pueden contener tanto caracteres literales o nmeros:
% Denota cero o muchos personajes.
Denota un carcter.
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';
No siempre se puede saber el valor exacto que desea buscar. Puede seleccionar las filas que
coincidan con un patrn de caracteres utilizando el operador LIKE. El carcter de patrones
operacin se conoce como una bsqueda comodn. Dos smbolos pueden ser utilizados para
construir la cadena de bsqueda.
Smbolo Descripcin
% Representa cualquier secuencia de cero o ms caracteres
_ Representa cualquier Carcter sola
El operador LIKE se puede utilizar como un atajo para algunos entre las comparaciones. El
siguiente ejemplo muestra los apellidos y las fechas de contratacin de todos los empleados que
se incorporaron entre enero de 1995 y diciembre de 1995:
Se pueden combinar los dos caracteres comodn (%, _) con caracteres literales de
coincidencia de patrones:
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%';
Usted puede usar el identificador ESCAPE para buscar los actuales smbolos % real y _.
Los smbolos% y _ se puede utilizar en cualquier combinacin con caracteres literales. El ejemplo
de la diapositiva muestra los nombres de todos los empleados cuyos apellidos tienen la letra "o"
como el segundo carcter.
Identificador ESCAPE
Cuando usted necesita tener una coincidencia exacta de los caracteres reales % y _, utilice el
identificador de ESCAPE.
Esta opcin especifica lo que es el carcter escape. Si desea buscar cadenas que contengan SA_,
puede utilizar la siguiente sentencia SQL:
El IS NULL pruebas de condicin para valores nulos. Un valor nulo significa que el valor no est
disponible, sin asignar, desconocido o inaplicable. Por lo tanto, no se puede probar con =, debido a
un nulo no puede ser igual o diferente a cualquier valor. El ejemplo de la diapositiva recupera los
apellidos y los administradores de todos los empleados que no tienen un gerente.
Aqu hay otro ejemplo: Para mostrar los campos last_name, job_id, y comission para todos los
empleados que no tienen derecho a recibir una comisin, utilice la siguiente instruccin:
Operador Significado
AND devuelve TRUE si ambas condiciones son verdaderas componentes
OR Devuelve TRUE si cualquiera de estas condiciones es cierta
NOT Devuelve TRUE si la condicin es falsa
Una condicin lgica combina el resultado de dos condiciones de los componentes para producir
un resultado nico, basado en esas condiciones o se invierte el resultado de una condicin clave.
Una fila slo se devuelve si el resultado global de la condicin es verdadera.
AND
OR
NOT
Todos los ejemplos hasta el momento se han especificado en una sola condicin en la clusula
WHERE. Puede utilizar una serie de condiciones en una sola clusula WHERE con el operador
AND y OR.
AND requiere que tanto las condiciones de los componentes para ser verdad:
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%' ;
En el ejemplo, ambas condiciones de los componentes debe ser ciertas para cualquier registro a
seleccionar. Por lo tanto, slo aquellos empleados que tienen un puesto de trabajo que contiene
'MAN' de la cadena y gana $ 10,000 o ms son seleccionados.
La siguiente tabla muestra los resultados de combinar dos expresiones con AND:
En el ejemplo, cualquiera de los componentes de las condiciones puede ser cierta para cualquier
registro a seleccionar. Por lo tanto, cualquier empleado que tiene un identificador de trabajo que
contiene 'MAN' de la cadena o gana $ 10.000 o ms se ha seleccionado.
Tabla de verdad OR
La siguiente tabla muestra los resultados de combinar dos expresiones con OR:
Nota: El operador NOT tambin se puede utilizar con otros operadores de SQL, como BETWEEN,
LIKE y NULL.
REGLAS DE PRIORIDAD
Operador Significado
1 Los operadores aritmticos
2 Operadores de concatenacin
3 Condiciones de comparacin
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 No es igual a
7 condicin lgica NOT
8 condicin lgica AND
9 condicin lgica OR
Usted puede utilizar parntesis para modificar las reglas de precedencia.
Reglas de prioridad
Las reglas de precedencia determinan el orden en que las expresiones se evalan y se calculan.
La tabla en la diapositiva muestra el orden de precedencia por defecto. Sin embargo, se puede
reemplazar el orden predeterminado mediante el uso de parntesis en las expresiones que desea
calcular en primer lugar.
REGLAS DE PRIORIDAD
El orden de las filas que se devuelven en un resultado de la consulta no est definido. La clusula
ORDER BY se puede utilizar para ordenar las filas. Sin embargo, si se utiliza la clusula ORDER
BY, debe ser la ltima clusula de la sentencia SQL. Adems, puede especificar una expresin, un
alias, o una posicin de la columna como la condicin de clase.
Sintaxis
SELECT expr
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, numeric_position} [ASC|DESC]];
En la siguiente sintaxis:
Nota: Utilice palabras clave NULLS FIRST o NULLS LAST para especificar si las filas devueltas
que contengan valores nulos debe aparecer primero o el ltimo en la secuencia de orden.
ORDENANDO
Ordenando
Los valores numricos se muestran con el valor ms bajo primero (por ejemplo, de 1 a 999).
Los valores de fecha se muestran con el valor ms temprano como primer valor (por ejemplo,
01-ENE-92 antes del 01-ENE-95).
Los valores de caracteres se muestran en el orden alfabtico (por ejemplo, "A" primero y "Z"
pasado).
Los valores nulos son mostrados en ltima instancia para secuencias ascendentes y como
primera instancia para secuencias descendentes.
Tambin se puede ordenar por una columna que no est en la lista SELECT.
Ejemplos:
1. Para invertir el orden en el que las filas se muestran, especifique la palabra clave DESC
despus del nombre de columna en la clusula ORDER BY. El ejemplo de la diapositiva
ordena el resultado por el empleado ms recientemente contratado.
ORDENANDO
Ejemplos:
4. Puede ordenar los resultados de la consulta por ms de una columna. El lmite de tipo es el
nmero de columnas de la tabla dada. En la clusula ORDER BY, especifique las columnas y
separar los nombres de las columnas con comas. Si desea invertir el orden de una columna,
especifique DESC despus de su nombre. El resultado de la consulta de ejemplo se muestra
en la diapositiva est ordenada por department_id para el ascenso y tambin por el salario en
orden descendente.
VARIABLES DE SUSTITUCIN
Variables de sustitucin
Hasta ahora, todas las sentencias SQL se ejecutan con las columnas predeterminadas, las
condiciones y sus valores. Suponga que desea una consulta que muestra a los empleados con
puestos de trabajo diferentes y no slo aquellos cuya job_id es SA_REP. Puede modificar la
clusula WHERE para proporcionar un valor diferente cada vez que se ejecuta el comando, pero
tambin hay una manera ms fcil.
Mediante el uso de una variable de sustitucin en lugar de los valores exactos de la clusula
WHERE, puede ejecutar la misma consulta para diferentes valores.
Puede crear informes que se piden a los usuarios para suministrar sus propios valores para
restringir el intervalo de los datos devueltos, mediante el uso de variables de sustitucin. Puede
incorporar las variables de sustitucin en un archivo de comandos o en una nica sentencia SQL.
Una variable puede ser considerada como un recipiente en el que los valores se almacenan
temporalmente. Cuando se ejecuta la instruccin, el valor almacenado es sustituido.
VARIABLES DE SUSTITUCIN
Puede utilizar variables de sustitucin de un solo smbolo de unin (&) para almacenar
temporalmente los valores.
Tambin se puede predefinir variables con el comando DEFINE. DEFINE crea y asigna un valor a
una variable.
Los efectos interactivos no se limitan a la interaccin directa del usuario con la clusula WHERE.
Los mismos principios tambin se pueden utilizar para alcanzar otros objetivos, tales como:
Nota: Tanto SQL Developer y SQL * Plus de apoyo a las variables de sustitucin y los comandos
DEFINE / UNDEFINE. Aunque SQL Developer o SQL * Plus no es compatible con los controles de
validacin (excepto para el tipo de datos) en la entrada del usuario.
Utilizar una variable precedido de un signo (&) para pedir al usuario un valor de:
Cuando se ejecuta un informe, los usuarios a menudo quieren restringir los datos que se devuelven
de forma dinmica. SQL * Plus o SQL Developer proporciona esta flexibilidad con las variables de
usuario. Utilice un signo (&) para identificar a cada variable en la instruccin SQL. Sin embargo, no
es necesario para definir el valor de cada variable.
Notacin Descripcin
&user_variable Indica una variable en una sentencia SQL, si la variable no existe, SQL * Plus o
SQL Developer solicita al usuario un valor (la nueva variable se desecha
despus de que se utilice.)
El ejemplo de la diapositiva crea una variable de sustitucin para desarrolladores de SQL Server
para un nmero de empleado. Cuando se ejecuta la instruccin, SQL Developer solicita al usuario
un nmero de empleado y despus muestra el nmero de empleado, el apellido, el salario y
nmero de departamento para ese empleado.
Con el smbolo de unin simple, se solicita al usuario cada vez que se ejecuta el comando si la
variable no existe.
Cuando SQL Developer detecta que la sentencia de SQL contiene un signo, se le pedir que
introduzca un valor para la variable de sustitucin que se menciona en la sentencia SQL.
Despus de introducir un valor y haga clic en el botn Aceptar, los resultados se muestran en la
ficha Resultados de la sesin de SQL Developer.
CARCTER Y VALORES CON FECHA DE VARIABLES DE SUSTITUCIN
En una clusula WHERE, los valores de fecha y el carcter debe estar encerrado entre comillas
simples. La misma regla se aplica a las variables de sustitucin.
La diapositiva muestra una consulta para recuperar los nombres de los empleados, nmeros de
departamento, y salarios anuales de todos los empleados basndose en el valor puesto de trabajo
de la variable de desarrollo de sustitucin de SQL.
Puede utilizar las variables de sustitucin no slo en la clusula WHERE de una sentencia SQL,
sino tambin como la sustitucin de nombres de columnas, expresiones o texto.
Ejemplo:
Nota: Una variable de sustitucin puede ser utilizada en cualquier parte de la instruccin SELECT,
a menos que la palabra entr por primera vez en el prompt de comando.
Utilice doble ampersand (&&) si desea volver a utilizar el valor de la variable sin preguntar al
usuario cada vez que:
SQL Developer almacena el valor que se suministra con el comando DEFINE, sino que la usa de
nuevo cada vez que se hace referencia el nombre de la variable. Despus de una variable de
usuario est en su lugar, es necesario utilizar el comando UNDEFINE para eliminarlo:
UNDEFINE column_name
Utilice el comando VERIFY para alternar la visualizacin de la variable de sustitucin, tanto antes
como despus de SQL Developer sustituye a las variables de sustitucin con los valores:
SET VERIFY ON
SELECT employee_id, last_name, salary
FROM employees
WHERE employee_id = &employee_num;
Para confirmar los cambios en la instruccin SQL, utilice el comando VERIFY. Configuracin de
SET VERIFY ON fuerzas para programadores de SQL para mostrar el texto de un comando
despus de que se sustituye a las variables de sustitucin de los valores. Para ver la salida
VERIFY, se debe utilizar la secuencia de comandos de ejecucin (F5) en el icono de la hoja de
trabajo SQL.
SQL Developer muestra el texto de un comando despus de que se sustituye a las variables de
sustitucin de los valores, en la ficha de salida de secuencia de comandos como se muestra en la
diapositiva.
SQL * Plus utiliza diversas variables del sistema que controlan el entorno de trabajo. Una de las
variables es VERIFY. Para obtener una lista completa de todas las variables del sistema, puede
ejecutar el comando SHOW ALL en el SQL * Plus smbolo del sistema.
EXAMEN
Cul de los siguientes operadores vlidos para la clusula WHERE?
1. >=
2. IS NULL
3. !=
4. IS LIKE
5. IN BETWEEN
6. <>
Respuesta: 1, 2, 3, 6
RESUMEN
Resumen
En esta leccin, usted debe haber aprendido acerca de restringir y ordenar las filas que se
devuelven por la sentencia SELECT. Tambin debera haber aprendido a poner en prctica los
diversos operadores y condiciones.
Mediante el uso de las variables de sustitucin, se puede dar mayor flexibilidad a las sentencias
SQL. Esto permite que las consultas para solicitar la condicin de filtro para las filas en tiempo de
ejecucin.
PRCTICA 2:
Introduccin
Prctica 2: Introduccin
En esta prctica, desarrollara ms informes, incluidas las declaraciones que utilizan la clusula
WHERE y ORDER BY. Usted hace las sentencias SQL ms reutilizables y genricos mediante la
inclusin de la sustitucin de ampersand.
PRCTICA 2
2. Abra una nueva hoja de trabajo SQL. Crear un informe que muestra el apellido y el nmero de
departamento de nmero de empleado 176. Ejecutar la consulta.
3. El departamento de RRHH tiene que encontrar a los empleados de alto sueldo y bajo salario.
Modificar lab_02_01.sql para mostrar el apellido y el salario de cualquier empleado cuyo salario
no est en el rango de $ 5.000 a $ 12.000. Guarde su instruccin SQL como lab_02_03.sql.
4. Crear un informe para mostrar el ltimo nombre, ID de trabajo, y la fecha de inicio para los
empleados con los apellidos de Matos y Taylor. Pide la consulta en orden ascendente por la
fecha de inicio.
6. Modificar lab_02_03.sql para mostrar el apellido y el salario de los empleados que ganan entre
$ 5.000 y $ 12.000, y se encuentran en el departamento 20 o 50. Etiquetar el Empleado
columnas y salario mensual, respectivamente. Vuelva a guardar lab_02_03.sql como
lab_02_06.sql. Ejecute la instruccin en lab_02_06.sql.
9. Crear un informe para mostrar el ltimo nombre, salario y la comisin de todos los empleados
que ganan comisiones. Ordenar datos en orden descendente de sueldos y comisiones.
Utilice la posicin numrica de la columna en la clusula ORDER BY.
10. Los miembros del departamento de recursos humanos quiere tener ms flexibilidad en las
consultas que se estn escribiendo. A ellos les gustara un informe que muestra el apellido y el
salario de los empleados que ganan ms de una cantidad que especifica el usuario despus de
un sistema. Guarde esta consulta en un archivo denominado lab_02_10.sql. Si introduce 12000
cuando se le solicite, el informe muestra los siguientes resultados:
11. El departamento de Recursos Humanos quiere ejecutar informes basados en un gestor. Crear
una consulta que pide al usuario un identificador de administrador y genera la identificacin de
empleado, el apellido, el salario y el departamento para los empleados que gestor. El
departamento de Recursos Humanos quiere que la capacidad de ordenar el informe en una
columna seleccionada. Puedes comprobar los datos con los siguientes valores:
12. Mostrar todos los nombres de los empleados ltimos en los que la tercera letra del nombre es
"a".
13. Mostrar los apellidos de todos los empleados que tienen tanto una "a" y una "e" en su apellido.
14. Mostrar el apellido, el trabajo y el salario para todos los empleados cuyos puestos de trabajo,
ya sea los de un representante de ventas o de un empleado de almacn, y cuyos sueldos no
son iguales a $ 2,500, $ 3,500, o $ 7.000.
15. Modificar lab_02_06.sql para mostrar el ltimo nombre, salario y la comisin para todos los
empleados cuya comisin es del 20%. Vuelva a guardar lab_02_06.sql como lab_02_15.sql.
Vuelva a ejecutar la sentencia en el lab_02_15.sql.