buscador

Visita

jueves, 29 de diciembre de 2022

SQL Capitulo 2 : Restricci贸n y Ordenaci贸n de Datos SQL

Sean bienvenidos a esta secci贸n donde se revisa de como restringir y ordenar datos de un consulta SQL SELECT, recuerden estas sentencias estan siendo ejecutadas en SQL developer administrador de la Base de datos Oracle.

Objetivos de la publicaci贸n:
Al finalizar esta lecci贸n, deber铆a estar capacitado para lo siguiente:
  • Limitar las filas recuperadas por una consulta
  • Ordenar las filas recuperadas por una consulta
  • Usar la sustituci贸n con ampersand para restringir y ordenar la salida en tiempo de ejecuci贸n


Al recuperar los datos de la base de datos, puede que necesite realizar las siguientes acciones:
  • Restringir las filas de datos que se muestran 
  • Especificar el orden en el que aparecen las filas
Esta secci贸n se explica las sentencias SQL que se utilizan para realizar las acciones anteriores.

Limitaci贸n de filas con:
  • Cl谩usula WHERE
  • Condiciones de comparaci贸n con las condiciones =, <=, BETWEEN, IN, LIKE y NULL
  • Condiciones l贸gicas mediante los operadores AND, OR y NOT

Consultas SELECT de toda la Tabla HR.EMPLOYEES.

SELECT EMPLOYEE_ID,LAST_NAME,JOB_ID,DEPARTMENT_ID 
FROM HR.EMPLOYEES;

Resultado de la Sentencia Select.

Recuperar todos los empleados del departamento 90 con la CLAUSULA WHERE.
SELECT EMPLOYEE_ID,LAST_NAME,JOB_ID,DEPARTMENT_ID 
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID 90 ;

Resultado de la sentencia.



En el ejemplo suponga que desea mostrar todos los empleados del departamento 90. 
Las filas con un valor de 90 de la columna DEPARTMENT_ID son las 煤nicas que se devuelve.
Este m茅todo de restricci贸n es la base de la cl谩usula WHERE en SQL.

  • Restringir las filas devueltas al utilizar la cl谩usula WHERE:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM   table
[WHERE condition(s)];
  • La cl谩usula WHERE sigue a la cl谩usula FROM.
Puede restringir las filas que devuelve la consulta al utilizar la cl谩usula WHERE. Una cl谩usula WHERE contiene una condici贸n que se debe cumplir e, inmediatamente despu茅s, le sigue la cl谩usula FROM. Si la condici贸n es verdadera, se devolver谩 la fila que cumpla con la condici贸n.
En la sintaxis:
WHERE restringe la consulta a filas que cumplan con una condici贸n.
condition est谩 compuesto por nombres de columna, expresiones, constantes y un operador de comparaci贸n. Una condici贸n especifica una combinaci贸n de una o m谩s expresiones y operadores l贸gicos (booleanos) y devuelve un valor de TRUE, FALSE o UNKNOWN.

La cl谩usula WHERE puede comparar valores en columnas, literales, expresiones aritm茅ticas o funciones. Consta de tres elementos:
  1. Nombre de la columna
  2. Condici贸n de comparaci贸n
  3. Nombre de la columna, constante o lista de valores
Uso de la Cl谩usula WHERE
SELECT EMPLOYEE_ID,LAST_NAME,JOB_ID,DEPARTMENT_ID 
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID=90 ;

Resultado:



En el ejemplo, la sentencia SELECT recupera el ID de empleado, apellido, ID de cargo y n煤mero de departamento de todos los empleados del departamento 90.

Nota: puede utilizar el alias de columna en la cl谩usula WHERE.

Fechas y Cadenas de Caracteres
Las cadenas de caracteres y valores de fecha se incluyen entre comillas simples.
Los valores de caracteres son sensibles a may煤sculas/min煤sculas y los valores de datos son sensibles a formato.
El formato de visualizaci贸n de la fecha por defecto es DD-MON-RR.

--recuperar datos con cadenas de caracteres
SELECT EMPLOYEE_ID,LAST_NAME,JOB_ID,DEPARTMENT_ID 
FROM HR.EMPLOYEES
WHERE LAST_NAME = 'Whalen';

Resultado:

--recuperar datos con fechas
SELECT EMPLOYEE_ID,LAST_NAME,HIRE_DATE
FROM HR.EMPLOYEES
WHERE HIRE_DATE = '17-JUN-03';

Resultado:
Las fechas y cadenas de caracteres de la cl谩usula WHERE se deben incluir entre comillas simples (' '). Sin embargo, las constantes num茅ricas no se deben incluir entre comillas simples.
Todas las b煤squedas de caracteres son sensibles a may煤sculas/min煤sculas. En el siguiente ejemplo, no se devuelve ninguna fila porque la tabla HR.EMPLOYEES almacena todos los apellidos en min煤scula y en may煤scula:

SELECT EMPLOYEE_ID,LAST_NAME,JOB_ID,DEPARTMENT_ID 
FROM HR.EMPLOYEES
WHERE LAST_NAME = 'WHALEN';

Las bases de datos Oracle almacenan fechas en un formato num茅rico interno que representa el siglo, el a帽o, el mes, las horas, los minutos y los segundos. La visualizaci贸n de la fecha por defecto es DD-MON-RR.
 
Nota: para obtener m谩s informaci贸n sobre el formato RR y sobre c贸mo cambiar el formato de fecha por defecto, consulte la secci贸n publicada titulada “Uso de Funciones de Una Sola Fila para Personalizar la Salida”. Adem谩s, aprender谩 acerca del uso de funciones de una sola fila como UPPER y LOWER para sustituir la sensibilidad a may煤sculas/min煤sculas en la misma lecci贸n.

Operadores de Comparaci贸n
Los operadores de comparaci贸n se utilizan en condiciones que comparan una expresi贸n con otra expresi贸n o valor. Se utilizan en la cl谩usula WHERE en el siguiente formato:
Sintaxis
  ... WHERE expr operator value
Ejemplo
... WHERE hire_date = '01-JAN-95'
... WHERE salary >= 6000
... WHERE last_name = 'Smith'
Recuerde, un alias no se puede utilizar en la cl谩usula WHERE.

Nota: los s铆mbolos != y ^= tambi茅n pueden representar la condici贸n no igual a (not equal to) o diferente de.


Uso de Operadores de Comparaci贸n
SELECT last_name, salary
FROM   HR.EMPLOYEES
WHERE  salary <= 3000 ;

Resultado:
En el ejemplo, la cl谩usula SELECT recupera el apellido y el salario de la tabla HR.EMPLOYEES para cualquier empleado cuyo salario sea menor o igual que 3.000 d贸lares. Tenga en cuenta que existe un valor expl铆cito proporcionado a la cl谩usula WHERE. El valor expl铆cito de 3000 se compara con el valor de salario de la columna SALARY de la tabla HR.EMPLOYEES.

Uso de Condiciones de Rango mediante el Operador BETWEEN
Utilizar el operador BETWEEN para mostrar las filas basadas en un rango de valores:
SELECT last_name, salary
FROM   HR.EMPLOYEES
WHERE  salary BETWEEN 2500           AND       3500;
                         Limite inferior Limite Superior

Resultado

Puede utilizar las filas basadas en un rango de valores utilizando la condici贸n de rango BETWEEN. El rango que especifique contiene un l铆mite inferior y un l铆mite superior.
La sentencia SELECT devuelve filas de la tabla HR.EMPLOYEES para cualquier empleado cuyo salario est茅 entre 2.500 y 3.500 d贸lares.
Tambi茅n se incluyen los valores que se especifiquen con el operador BETWEEN. Debe especificar primero el l铆mite inferior.
Tambi茅n puede utilizar la condici贸n BETWEEN en los valores de caracteres:
SELECT last_name 
FROM   HR.EMPLOYEES 
WHERE  last_name BETWEEN 'King' AND 'Smith';

Condici贸n de Miembro mediante el Operador IN
Utilizar el operador IN para probar los valores de una lista:

--Condici贸n de Miembro mediante el Operador IN
SELECT employee_id, last_name, salary, manager_id
FROM   HR.EMPLOYEES
WHERE  manager_id IN (100, 101, 201) ;

Para probar valores de un juego especificado de valores, utilice el operador IN. La condici贸n definida mediante el operador IN tambi茅n se denomina condici贸n de miembro.
El ejemplo muestra los n煤meros de empleado, apellidos, salarios y n煤meros de empleado de los gestores de todos los empleados cuyo n煤mero de empleado del gestor sea 100, 101 o 201.

Nota: el juego de valores se puede especificar en cualquier orden aleatorio (por ejemplo, 201,100,101).
La condici贸n IN se puede utilizar con cualquier tipo de dato. El siguiente ejemplo devuelve una fila de la tabla HR.EMPLOYEES para cualquier empleado cuyo apellido est茅 incluido en la lista de nombres de la cl谩usula WHERE:



SELECT employee_id, manager_id, department_id
FROM   HR.EMPLOYEES
WHERE  last_name IN ('Hartstein', 'Vargas');

Resultado:
Si los caracteres o fechas se utilizan en la lista, se deben incluir entre comillas simples (' ').

Nota: el servidor de Oracle eval煤a el operador IN internamente como un juego de condiciones OR, como a=value1 o a=value2 o a=value3. Por lo tanto, el uso del operador IN no tiene ninguna ventaja de rendimiento y s贸lo se utiliza para la simplicidad l贸gica.

Coincidencia de Patrones mediante el Operador LIKE
Utilizar el operador LIKE para realizar b煤squedas con comodines de valores de cadena de b煤squeda v谩lidos.
Las condiciones de b煤squeda pueden contener caracteres literales o n煤meros:
  • % indica cero o varios caracteres.
  • _ indica un car谩cter.
--Coincidencia de Patrones mediante el Operador LIKE
SELECT first_name
FROM HR.EMPLOYEES
WHERE first_name LIKE 'S%' ;

Resultado :

Puede que no siempre conozca el valor exacto que debe buscar. Puede seleccionar filas que coincidan con un patr贸n de caracteres utilizando la condici贸n LIKE. Se hace referencia a la operaci贸n de coincidencia de patr贸n de caracteres como b煤squeda con comodines. Para crear la cadena de b煤squeda se pueden utilizar dos s铆mbolos. 

La sentencia SELECT  devuelve el nombre del empleado de la tabla HR.EMPLOYEES de cualquier empleado cuyo nombre empiece por la letra “S”. Observe que se trata de la “S” may煤scula. No se devolver谩n los nombres que empiecen por “s” min煤scula. 
La condici贸n LIKE se puede utilizar como un m茅todo abreviado para algunas comparaciones BETWEEN. El siguiente ejemplo muestra los apellidos y fechas de contrataci贸n de los empleados que comenzaron a trabajar entre enero y diciembre de 1995: 

SELECT last_name, hire_date
FROM   HR.EMPLOYEES
WHERE  hire_date LIKE '%95';

Combinaci贸n de Caracteres Comod铆n
Puede combinar los dos caracteres comod铆n (%, _) con caracteres literales para la coincidencia de patrones:
--Combinaci贸n de Caracteres Comod铆n
SELECT last_name
FROM   HR.EMPLOYEES
WHERE  last_name LIKE '_o%' ;

Resultado:
Puede utilizar el identificador ESCAPE para buscar los s铆mbolos % y _ reales.

Los s铆mbolos % y _ se pueden utilizar en cualquier combinaci贸n con los caracteres literales. El ejemplo muestra los nombres de todos los empleados cuyos apellidos tengan la letra “o” como segundo car谩cter.

Identificador ESCAPE
Cuando necesite tener una coincidencia exacta para los caracteres % y _ reales, utilice el identificador ESCAPE. Esta opci贸n especifica lo que representa el car谩cter de escape. Si desea buscar cadenas que contengan SA_, puede utilizar la siguiente sentencia SQL:

SELECT employee_id, last_name, job_id
FROM   HR.EMPLOYEES 
WHERE  job_id LIKE '%SA\_%' ESCAPE '\';

Resultado:

El identificador ESCAPE identifica la barra invertida (\) como car谩cter de escape. En la sentencia SQL, el car谩cter de escape precede al gui贸n bajo (_). Esto hace que el servidor de Oracle interprete el car谩cter de subrayado literalmente.



Uso de las Condiciones NULL
Probar condiciones nulas con el operador IS NULL.
--Uso de las Condiciones NULL
SELECT last_name, manager_id
FROM   HR.EMPLOYEES
WHERE  manager_id IS NULL ;

Resultado:
Las condiciones NULL incluyen las condiciones IS NULL e IS NOT NULL.

La condici贸n IS NULL prueba las condiciones nulas. Un valor nulo significa que el valor no est谩 disponible, no est谩 asignado, se desconoce o no es aplicable. Por lo tanto, no puede probar con = porque un valor nulo no puede ser igual o desigual a cualquier valor. El ejemplo recupera los apellidos y gestores de todos los empleados que no tienen un gestor.

Aqu铆 se muestra otro ejemplo: Para mostrar un apellido, ID de cargo y comisi贸n de todos los empleados que no tienen derecho a recibir una comisi贸n, utilice la siguiente sentencia SQL:

SELECT last_name, job_id, commission_pct
FROM   employees
WHERE  commission_pct IS NULL;

Definici贸n de Condiciones mediante los Operadores L贸gicos


Una condici贸n l贸gica combina el resultado de dos condiciones de componentes para producir un resultado 煤nico basado en dichas condiciones o invierte el resultado de una condici贸n 煤nica. Se devuelve una fila s贸lo si el resultado global de la condici贸n es verdadera. 
En SQL, est谩n disponibles tres operadores l贸gicos:
  1. AND
  2. OR
  3. NOT
Todos los ejemplos indicados hasta ahora han especificado s贸lo una condici贸n en la cl谩usula WHERE. Puede utilizar varias condiciones en una 煤nica cl谩usula WHERE mediante los operadores AND y OR.

Uso del Operador AND
AND necesita que ambas condiciones sean verdaderas:

--Uso del Operador AND
SELECT employee_id, last_name, job_id, salary
FROM   HR.EMPLOYEES
WHERE  salary >= 10000
AND    job_id LIKE '%MAN%' ;

Resultado :

En el ejemplo, ambas condiciones deben ser verdaderas para poder seleccionar cualquier registro. Por lo tanto, s贸lo se seleccionan los empleados que tengan un puesto que contenga la cadena ‘MAN’ y que ganen 10.000 d贸lares o m谩s.

Todas las b煤squedas de caracteres son sensibles a may煤sculas/min煤sculas, es decir, no se devuelve ninguna fila si ‘MAN’ no est谩 en may煤sculas. Las cadenas de caracteres se deben incluir entre comillas simples.

Uso del Operador OR
OR necesita que cualquier condici贸n sea verdadera:
--Uso del Operador OR
SELECT employee_id, last_name, job_id, salary
FROM   HR.EMPLOYEES
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%' ;

Resultado:
En el ejemplo, cualquier condici贸n de componente debe ser verdadera para poder seleccionar cualquier registro. Por lo tanto, s贸lo se seleccionan los empleados que tengan un ID de trabajo que contenga la cadena ‘MAN’ o que ganen 10.000 d贸lares o m谩s.

Uso del Operador NOT
SELECT last_name, job_id
FROM   HR.EMPLOYEES
WHERE  job_id 
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

Resultado:

En el ejemplo se muestra el apellido y el ID de trabajo de todos los empleados cuyo ID de trabajo no sea IT_PROG, ST_CLERK o SA_REP.

Nota: el operador NOT tambi茅n se puede utilizar con otros operadores SQL, como BETWEEN, LIKE y NULL.

... WHERE  job_id    NOT  IN ('AC_ACCOUNT', 'AD_VP')
... WHERE  salary    NOT  BETWEEN  10000 AND  15000
... WHERE  last_name NOT  LIKE '%A%'
... WHERE  commission_pct  IS   NOT  NULL


Reglas de prioridad de los operadores en una expresi贸n
Reglas de Prioridad

Puede utilizar los par茅ntesis para sustituir las reglas de prioridad.
Las reglas de prioridad determinan el orden en el que se eval煤an y calculan las expresiones. La tabla de muestra el orden de prioridad por defecto. Sin embargo, puede sustituir el orden por defecto utilizando par茅ntesis en las expresiones que desee calcular primero.




Resultado:

Consulta con reglas de prioridad.

Resultados:

1. Prioridad del Operador AND
Ejemplo 
En este ejemplo, hay dos condiciones:
La primera condici贸n es que el ID de cargo sea AD_PRES y que el salario sea superior a 15.000         d贸lares.
La segunda condici贸n es que el ID de cargo sea SA_REP.
Por lo tanto, la sentencia SELECT ser铆a la siguiente:
“Seleccione la fila si un empleado es presidente y gana m谩s de $15,000, o si el empleado es                     representante de ventas.”

2. Uso de Par茅ntesis:
 Ejemplo 
En este ejemplo, hay dos condiciones:
La primera condici贸n es que el ID de trabajo sea AD_PRES o SA_REP.
La segunda condici贸n es que el salario sea superior a 15.000 d贸lares.
Por lo tanto, la sentencia SELECT ser铆a la siguiente:
“Seleccione la fila si un empleado es presidente o representante de ventas y si el empleado gana m谩s de $15,000”

Ordenaci贸n de filas mediante la cl谩usula ORDER BY
Uso de la Cl谩usula ORDER BY
Ordenar las filas recuperadas con la cl谩usula ORDER BY:
ASC: orden ascendente, valor por defecto
DESC: orden descendente

La cl谩usula ORDER BY es la 煤ltima en una sentencia SELECT:
SELECT   last_name, job_id, department_id, hire_date
FROM     HR.employees
ORDER BY hire_date ;

Resultado:

El orden de las filas devueltas en un resultado de consulta no est谩 definido. La cl谩usula ORDER BY se puede utilizar para ordenar las filas. Sin embargo, si utiliza la cl谩usula ORDER BY, debe ser la 煤ltima cl谩usula de la sentencia SQL. Adem谩s, puede especificar una expresi贸n, un alias o una posici贸n de columna como la condici贸n de ordenaci贸n.
Sintaxis
  SELECT           expr 
  FROM   Tabla
  [WHERE   condition(s)]
  [ORDER BY {column, expr, numeric_position} [ASC|DESC]];

En la sintaxis:
ORDER BY especifica el orden en el que aparecen las filas recuperadas.
ASC ordena las filas en orden ascendente (orden por defecto).
DESC ordena las filas en orden descendente.

Si la cl谩usula ORDER BY no se utiliza, el orden no est谩 definido y puede que el servidor de Oracle no recupere dos veces las filas en el mismo orden para la misma consulta. Utilice la cl谩usula ORDER BY para mostrar las filas en un orden espec铆fico.

Nota: utilice las palabras clave NULLS FIRST o NULLS LAST para especificar si las filas devueltas que contengan valores nulos deben aparecer en primer o en 煤ltimo lugar en la secuencia de ordenaci贸n.

Ordenaci贸n
Ordenar en orden descendente:
--Ordenar en orden descendente (de mayor a menor)
SELECT   last_name, job_id, department_id, hire_date
FROM     HR.employees
ORDER BY hire_date DESC ;

Ordenar por alias de columna:
--Ordenar por alias de columna
SELECT employee_id, last_name, salary*12 annsal
FROM   HR.employees
ORDER BY annsal ;

Los valores de fecha se muestran con el primer valor en primer lugar (por ejemplo, 01-ENE-92 antes de 01-ENE-95).
Los valores de caracteres se muestran en orden alfab茅tico (por ejemplo, primero la “A” y por 煤ltimo la “Z”).
Los valores nulos se muestran al final para las secuencias ascendentes y al principio para las secuencias descendentes.
Puede ordenar por una columna que no est茅 en la lista SELECT.
Ejemplos
1. Para invertir el orden en el que se muestran las filas, especifique la palabra clave DESC despu茅s del nombre de columna en la cl谩usula ORDER BY. El ejemplo ordena el resultado por el empleado contratado m谩s recientemente.
2. Tambi茅n puede utilizar un alias de columna en la cl谩usula ORDER BY. El ejemplo ordena los datos por salario anual.

Nota: la palabra clave DESC que se utiliza aqu铆 para la ordenaci贸n en orden descendente no se debe confundir con la palabra clave DESC utilizada para describir las estructuras de tabla.

Ordenaci贸n
Ordenar por posici贸n num茅rica de la columna:
SELECT   last_name, job_id, department_id, hire_date
FROM     HR.employees
ORDER BY 3;

Ordenar por varias columnas:
SELECT last_name, department_id, salary
FROM   HR.employees
ORDER BY department_id, salary DESC;


3. Puede ordenar los resultados de la consulta especificando la posici贸n num茅rica de la columna en la cl谩usula SELECT. El ejemplo ordena el resultado por department_id, esta columna est谩 en la tercera posici贸n en la cl谩usula SELECT.

4. Puede ordenar los resultados de la consulta por m谩s de una columna. El l铆mite de ordenaci贸n es el n煤mero de columnas de la tabla determinada. En la cl谩usula ORDER BY, especifique las columnas y separe los nombres de columna con comas. Si desea invertir el orden de una columna, especifique DESC despu茅s del nombre. El resultado del ejemplo de consulta que se muestra en la imagen est谩 ordenado por department_id en orden ascendente y por salary en orden descendente.

Variables de sustituci贸n
Hasta ahora las sentencias SQL se han ejecutado con columnas y condiciones predeterminadas y sus valores. Supongamos que desea realizar una consulta que muestre los empleados con diferentes cargos, excepto aqu茅llos cuyo job_ID no sea SA_REP. Puede editar la cl谩usula WHERE para proporcionar un valor diferente cada vez que ejecute el comando, pero existe tambi茅n una forma m谩s sencilla. 
Si se utiliza una variable de sustituci贸n en lugar de los valores exactos en la cl谩usula WHERE, puede ejecutar la misma consulta para diferentes valores. 
Puede crear informes que soliciten a los usuarios que proporcionen sus propios valores para restringir el rango de datos devuelto utilizando las variables de sustituci贸n. Puede embeber las variables de sustituci贸n en un archivo de comandos o en una 煤nica sentencia SQL. Una variable se puede considerar como un contenedor en el que se almacenan los valores temporalmente. Cuando se ejecuta la sentencia, el valor se sustituye.

Utilizar variables de sustituci贸n para:
Almacenar valores temporalmente con una sustituci贸n de un solo ampersand (&) y de dos ampersands (&&)

Utilizar las variables de sustituci贸n para complementar:
Condiciones WHERE
Cl谩usulas ORDER BY
Expresiones de columna
Nombres de tabla
Sentencias SELECT completas

Puede utilizar variables de sustituci贸n de un solo ampersand (&) para almacenar valores temporalmente. 
Tambi茅n puede predefinir variables mediante el comando DEFINE. DEFINE crea y asigna un valor a una variable.
Rangos de Datos Restringidos: Ejemplos
Informes de cifras s贸lo del trimestre actual o de un rango de fechas espec铆fico 
Informes sobre datos relevantes s贸lo del usuario que solicita el informe
Visualizaci贸n del personal de s贸lo un departamento determinado
Otros Efectos Interactivos
Los efectos interactivos no est谩n restringidos para dirigir la interacci贸n del usuario a la cl谩usula WHERE. Los mismos principios se pueden utilizar tambi茅n para conseguir otros objetivos, como:
Obtener los valores de entrada de un archivo en lugar de obtenerlos de una persona
Transferir valores de una sentencia SQL a otra.

Nota: tanto SQL Developer como SQL* Plus soportan las variables de sustituci贸n y los comandos DEFINE/UNDEFINE. Ni SQL Developer ni iSQL*Plus soportan las comprobaciones de validaci贸n (excepto para tipos de dato) en la entrada de usuario. Si se utilizan en scripts que se despliegan a usuarios, las variables de sustituci贸n se pueden manipular para ataques de inyecci贸n de SQL.

Uso de la Variable de Sustituci贸n de Un Solo Ampersand
Utilizar una variable prefijada con un ampersand (&) para solicitar al usuario un valor:
SELECT employee_id, last_name, salary, department_id
FROM   HR.employees
WHERE  employee_id = &employee_num ;

Al ejecutar :

Al ejecutar un informe, los usuarios a menudo desean restringir los datos que se devuelve de forma din谩mica. SQL*Plus o SQL Developer proporciona esta flexibilidad con las variables de usuario. Utilice un ampersand (&) para identificar cada variable en la sentencia SQL. Sin embargo, no es necesario que defina el valor de cada variable.

El ejemplo crea una variable de sustituci贸n de SQL Developer para un n煤mero de empleado. Al ejecutar la sentencia, SQL Developer solicita al usuario un n煤mero de empleado y, a continuaci贸n, muestra el n煤mero de empleado, apellido, salario y n煤mero de departamento de ese empleado.
Con un solo ampersand, si la variable no existe, se pregunta al usuario cada vez que se ejecuta el comando.

Al indicar un numero de empleado por ejemplo el ID 101, muestra los datos de ese empleado.
Nota : Cuando SQL Developer detecte que la sentencia SQL contiene un ampersand, se le solicitar谩 que introduzca un valor para la variable de sustituci贸n que se menciona en la sentencia SQL.
Despu茅s de introducir un valor y hacer clic en el bot贸n OK, los resultados aparecen en el separador Results de la sesi贸n de SQL Developer.

Valores de Fecha y Car谩cter con Variables de Sustituci贸n
Utilizar las comillas simples para los valores de fecha y car谩cter:
SELECT last_name, department_id, salary*12
FROM   hr.employees
WHERE  job_id = '&job_title' ;

Resultado de la busqueda:

En la cl谩usula WHERE, los valores de fecha y car谩cter se deben incluir entre comillas simples. La misma regla se aplica a las variables de sustituci贸n.
Incluya la variable entre comillas simples en la sentencia SQL en s铆.
La imagen muestra una consulta para recuperar los nombres de los empleados, n煤meros de departamento y salarios anuales de todos los empleados seg煤n el valor del puesto de la variable de sustituci贸n SQL Developer.

Especificaci贸n de Nombres de Columna, Expresiones y Texto
SELECT employee_id, last_name, job_id,&column_name
FROM   hr.employees
WHERE  &condition
ORDER BY &order_column ;

No s贸lo puede utilizar las variables de sustituci贸n en la cl谩usula WHERE de una sentencia SQL, sino tambi茅n como sustituci贸n de nombres de columna, expresiones o texto.
Ejemplo
El ejemplo muestra el n煤mero de empleado, apellido, puesto y cualquier otra columna especificada por el usuario en tiempo de ejecuci贸n de la tabla HR.EMPLOYEES. Para cada variable de sustituci贸n de la sentencia SELECT, se le solicitar谩 que introduzca un valor y, a continuaci贸n, tendr谩 que hacer clic en el bot贸n OK para continuar.
Si no introduce un valor para la variable de sustituci贸n, obtendr谩 un error cuando ejecute la sentencia anterior.

Nota: una variable de sustituci贸n se puede utilizar en cualquier lugar de la sentencia SELECT, excepto como la primera palabra introducida en el s铆mbolo del sistema.

Uso de Variables de Sustituci贸n de Dos Ampersands
Usar dos ampersands (&&) si se desea reutilizar el valor de la variable sin preguntar siempre al usuario:
SELECT   employee_id, last_name, job_id, &&column_name
FROM     hr.employees
ORDER BY &column_name ;

Resultado:

Puede utilizar la variable de sustituci贸n de dos ampersands (&&) si desea reutilizar el valor de la variable sin preguntar siempre al usuario. El usuario visualiza la solicitud del valor s贸lo una vez. En el ejemplo, se le solicita al usuario que proporcione el valor para la variable column_name una vez. El valor proporcionado por el usuario (department_id) se utiliza para la visualizaci贸n y el orden de los datos. Si vuelve a ejecutar la consulta, no se le pedir谩 el valor de la variable.
SQL Developer almacena el valor proporcionado con el comando DEFINE; lo vuelve a utilizar cada vez que haga referencia al nombre de la variable. Despu茅s de que una variable de usuario est茅 colocada, necesitar谩 utilizar el comando UNDEFINE para suprimirla de la siguiente forma: 
UNDEFINE column_name.

Comandos DEFINE y VERIFY
Uso del Comando DEFINE
Usar el comando DEFINE para crear y asignar un valor a una variable.
Usar el comando UNDEFINE de iSQL*Plus para eliminar una variable.

Ejemplo:
DEFINE employee_num = 200

SELECT employee_id, last_name, salary, department_id
FROM   hr.employees
WHERE  employee_id = &employee_num ;

UNDEFINE employee_num

El ejemplo mostrado crea una variable de sustituci贸n para un n煤mero de empleado utilizando el comando DEFINE. En tiempo de ejecuci贸n, muestra el n煤mero de empleado, nombre, salario y n煤mero de departamento de ese empleado.
Debido a que la variable se crea utilizando el comando DEFINE de SQL Developer, no se le solicita al usuario introducir un valor para el n煤mero de empleado. En su lugar, el valor de la variable definida se sustituye autom谩ticamente en la sentencia SELECT.
La variable de sustituci贸n EMPLOYEE_NUM est谩 en la sesi贸n hasta que el usuario anula su definici贸n o si sale de la sesi贸n de SQL Developer.

Uso del Comando VERIFY
Usar el comando VERIFY para cambiar la visualizaci贸n de la variable de sustituci贸n, antes y despu茅s de que SQL Developer sustituya las variables de sustituci贸n con los valores:

SET VERIFY ON
SELECT employee_id, last_name, salary
FROM   hr.employees
WHERE  employee_id = &employee_num;


Para confirmar los cambios en la sentencia SQL, utilice el comando VERIFY. La definici贸n de SET VERIFY ON fuerza a SQL Developer a mostrar el texto de un comando despu茅s de que sustituya las variables de sustituci贸n por valores. Para ver la salida de VERIFY, debe utilizar el icono Run Script (F5) en la hoja de trabajo de SQL. SQL Developer muestra el texto de un comando despu茅s de que sustituya las variables de sustituci贸n por valores, en el separador Script Output como se muestra en la diapositiva. 
El ejemplo muestra el nuevo valor de la columna EMPLOYEE_ID en la sentencia SQL seguida de la salida.

Variables del Sistema SQL*Plus
SQL*Plus utiliza varias variables del sistema que controlan el entorno de trabajo. Una de esas variables es VERIFY. Para obtener una lista completa de todas las variables del sistema, puede emitir el comando SHOW ALL en el s铆mbolo del sistema de SQL*Plus.

En esta publicaci贸n se abordan los siguientes temas:
Selecci贸n de datos y cambio del orden de las filas que se muestran.
Restricci贸n de filas mediante la cl谩usula WHERE.
Ordenaci贸n de filas mediante la cl谩usula ORDER BY.
Uso de las variables de sustituci贸n para agregar .



Nota : en esta publicaci贸n se crean m谩s informes, incluidas sentencias que utilizan las cl谩usulas WHERE y ORDER BY. Puede hacer que las sentencias SQL sean m谩s reutilizables y gen茅ricas incluyendo la sustituci贸n con ampersand.

Sentencias SQL revisarado en esta publicaci贸n.

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Im谩genes del tema de fpm. Con tecnolog铆a de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!