martes, 17 de julio de 2007

Definición de variables de Usuario

En iSql*Plus es posible definir variables que se pueden utilizar más adelante en el propio programa. Piense en una variable como en una columna de tabla con una sola fila de datos. Al igual que la columna de una tabla, una variable tiene asignada un tipo de dato (númerico o de caracteres) y contiene datos. Lo importante aquí es es recordar que en un archivo de órdenes puede tener una o más consultas SQL.

Comando define:

DEFINE empleado=’KING’

http://liang.armstrong.edu:5560/isqlplus

Confirmación de la variable:

DEFINE empleado

Listar la definición de todas las variables:

DEFINE

Eliminar Variable de Usuario:

Comando Undefine

UNDEFINE empleado

Debe recordar que:



Todas las variables, independientemente del tipo de dato asignado, son datos de tipo carácter.
Las palabras define y undefine se pueden abreviar a def y undefine.






Variable de Sustitución
Muchas veces, cuando se ejecuta una consulta, no se conoce de antemano qué valor quiere utilizar el usuario para el ínforme (o programa), sino que se desea introducir un valor cuando se inicia la realización del ínforme. Las variables de sustitución son variables de usuarios precedidos por los símbolos & o &&.

Ejemplo:

  • Defina 2 variables de usuario

DEFINE columna=job
DEFINE tabla=emp

Ejemplo:

Select &columna, sal From &tabla
Order By &columna;

Debe recordar que:



En Oracle 10g se presenta las línea old y new cuando sustituye los valores de las variables.
Se puede suprimir esta presentanción con la orden iSql*Plus Set Verify Off ó ( Set Ver Off).
Las variables pueden en cualquier parte de un comando SQL o iSql*Plus excepto como primera palabra del comando.
Cuando se define una variable con convenio &&, en este caso se evita que Oracle pida multiples veces el valor de una variable (Oracle implícitamente define la variable).
Para dar un valor diferente a la variable definida con &&, hay que eliminar (undefine) la variable.





lunes, 16 de julio de 2007

Ordenamiento de Filas

La Cláusula ORDER BY permite ordenar:

  • Ascendentemente
  • Descendentemente
  • Por multiples columnas
  • Por la posición de las columnas

Debe recordar que:
Si no se utiliza la cláusula ORDER BY, el orden no está definido y es posible que el Servidor Oracle no recupere las filas en el mismo orden dos veces para la misma consulta.
Utilice esta cláusula para mostrar las filas en un orden específico.

Ascendente:

  • Mostrar el nombre, el cargo y el salario de todos los empleados que trabajen en el departamento 10.
    Ordenados ascendentemente por salario.

Select ename, job, sal From emp
Where deptno=10
Order By sal;

http://liang.armstrong.edu:5560/isqlplus

Descendente:

  • Mostrar el nombre, el cargo y el salario de todos los empleados que trabajen en el departamento 10.
    Ordenados descendentemente por salario
    .

Select ename, job, sal From emp
Where deptno=10
Order By sal Desc;

Por múltiples columnas:

  • Mostrar el nombre, el cargo y el salario de todos los empleados; ordenando el resultado ascendentemente por cargo, si existe más de un empleado con el mismo cargo ordenarlos de forma descendente por salario.

Select ename, job, sal From emp
Order By job, sal Desc;

Por la posición de las columnas:

  • Mostrar el nombre del empleado, el cargo y el salario de todos los empleados del departamento 20, ordenados ascendentemente por el salario (la columna 3).

Select ename, job, sal From emp
Where deptno = 20
Order By 3;

domingo, 15 de julio de 2007

Reglas de Prioridad

Las reglas de prioridad determinan el orden en el que se evalúan y se calculan las expresiones.

La tabla enumera el orden de prioridad por defecto.

1 Operadores aritméticos
2 Operador de Concatenación
3 Condiciones de comparación
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Condición lógica NOT
7 Condición lógica AND
8 Condición lógica OR

Prioridad del Operador AND

  • En este ejemplo, tenemos dos condiciones:

    • La primera condición es que el cargo es PRESIDENT y el salario mayor que 4000.
  • La segunda condición es que el cargo es SALES.

Select ename, job, sal From emp
Where job= 'SALES' OR job = 'PRESIDENT' AND sal > 4000;

http://liang.armstrong.edu:5560/isqlplus

La sentencia SELECT indica lo siguiente:
“Seleccionar la fila si un empleado es presidente (PRESIDENT) y gana más de 4000 o si el empleado es vendedor (SALES).”

Uso de Paréntesis

  • En este ejemplo, tenemos dos condiciones:

    • La primera condición es que el cargo es PRESIDENT o SALES.
    • La segunda condición es que el salario es mayor que 4000.

Select ename, job, sal From emp
Where (job = 'SALES' OR job = 'PRESIDENT') AND sal> 4000;

La sentencia SELECT indica lo siguiente:
“Seleccionar la fila si un empleado es presidente (PRESIDENT) o vendedor (SALES) y gana más de 4000.”

Debe recordar que:


Puede sustituir el orden por defecto escribiendo entre paréntesis las expresiones que desee calcular en primer lugar.



Operadores Lógicos

Las operadores lógicos combinan el resultado de dos condiciones componentes para producir un resultado único basado en ellas o invierten el resultado de una única condición.

Se devuelve una fila sólo si el resultado global de la condición es verdadero.

En SQL están disponibles tres operadores lógicos:
• AND
• OR
• NOT

Puede utilizar varias condiciones en una cláusula WHERE utilizando los operadores AND y OR.

El Operador AND

  • En el ejemplo, las dos condiciones deben ser verdaderas para que se seleccione un registro.

Select empno, ename, job, sal From emp
Where sal >=1000 AND ename Like '%SC%';

http://liang.armstrong.edu:5560/isqlplus/

El Operador OR

  • En el ejemplo, cualquiera de las dos condiciones puede ser verdadera para que se seleccione un registro.

Select empno, ename, job, sal From emp
Where sal >=3000 OR ename Like '%M%';

El Operador NOT

  • El ejemplo nos muestra el apellido y el cargo de todos los empleados que no sean ANALYST, CLERK o SALESMAN.

Select ename, job From emp
Where job NOT In ('ANALYST', 'CLERK', 'SALESMAN');

Debe recordar que:


El operador NOT también se puede utilizar con otros operadores SQL, como IN, BETWEEN, LIKE y NULL.

sábado, 14 de julio de 2007

Cómo manejar los apóstrofes

Como se sabe, los apóstrofes inician y terminan las cadenas en SQL.
Si se necesita manejar los apóstrofes, la solución depende de en que lugar la comilla es colocada en la cadena.

Tenemos 4 escenarios:


Apostrofe al inicio de la cadena:


Ejemplo:

  • Cuando el apostrofe esta al inicio de la cadena, necesita escribir 3 apóstrofes para que Oracle muestre un apóstrofe.

Select '''Cómo estás?' From dual;

http://liang.armstrong.edu:5560/isqlplus/

Apóstrofe en medio de la cadena:

Ejemplo:

  • Cuando el apóstrofe está en medio de la cadena, necesita escribir 2 apóstrofes para que Oracle muestre un apóstrofe.

Select 'El turista M''c Kensie quedó arrestado en el Aeropuerto.' From dual;

Apóstrofe al fin de la cadena:

Ejemplo:

  • Cuando el apóstrofe esta al fin de una cadena, necesita escribir 3 apóstrofes para que Oracle muestre un apóstrofe.

Select 'Scolari''' From dual;


Apóstrofe concatenada con una cadena:

Ejemplo:

  • Si desea concatenar un apóstrofe en un cadena, necesita escribir 4 apóstrofes para que Oracle muestre un apóstrofe.

Select 'Nos fuimos al M' '''' 'c Donald' From dual;

Valores Nulos

Un valor nulo significa que el valor no está disponible, no está asignado, es desconocido o no es aplicable
No significa cero ni blanco.
Por lo tanto, no puede comprobar con =, pues un valor nulo no puede ser igual o distinto de ningún valor.

Ejemplo:

  • Mostrar todos los empleados cuya comisión es nula.

SQL>Select ename From emp
Where comm IS NULL;

http://liang.armstrong.edu:5560/isqlplus/

Debe recordar que:


Las condiciones NULL incluyen la condición IS NULL y la condición IS NOT NULL
La condición IS NULL comprueba si hay valores nulos.
Muchas expresiones tomarán el valor de NULL si uno de los operandos lo es.





Operadores de Comparación

La siguiente tabla muestra los diferentes operadores de comparación que se pueden utilizar:

= Igual a
! = <> ^= Diferente
> Mayor que
>= Mayor o Igual a
<>

Operador: =

Ejemplo:

  • Mostrar el número de empleado, nombre, salario y la comisión de todos los empleados del departamento 30.

Select empno, ename, sal, comm From emp
Where deptno=30;

http://liang.armstrong.edu:5560/isqlplus

Operador: ! = <> ^=

Ejemplo:

  • Mostrar los nombres de los empleados que no se llaman KING, que no trabajen en el departamento 20 ni cuyo cargo sea SALESMAN.


Select ename, deptno, job From emp

Where ename ! = 'KING' AND deptno <> 20 AND job ^= 'SALESMAN';

Operador: <>

Ejemplo:

  • Mostrar el nombre del empleado, el cargo y el salario de todos los empleados que no sean Analistas (ANALYST).

Select ename, job, sal From emp

Where job<>'ANALYST';

Operadores: >= y <=

Ejemplo:

  • Mostrar el nombre, el número de departamento y el salario de todos los empleados que ganen entre 2500 y 3500 incluyéndolos.

Select ename , dept, sal
From emp
Where sal >= 2800 AND sal <= 3000;