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;

Filtro de Filas (Where)

Cláusula WHERE:
Es utilizada para establecer una (o más) condiciones y de esta forma mostrar sólo aquellas filas que la satisfacen.

Sintaxis:
SELECT *{[DISTINCT] columnexpression [alias],...}
FROM table
[WHERE condition(s)];


En la sintaxis:
WHERE restringe la consulta a las filas que cumplen una condición
condition está formado por nombres de columna, expresiones, constantes y un operador de comparación.

La cláusula WHERE puede comparar valores de columnas, valores literales, expresiones aritméticas o funciones. Consta de tres elementos:

  • Nombre de columna
  • Condición de comparación
  • Nombre de columna, constante o lista de valores

Uso de la Cláusula WHERE
Ejemplo:

  • Mostrar el nombre, el cargo y el número de departamento de todos los empleados cuyos identificadores de cargo (job) sean ANALYST.
Select ename, job, deptno From emp
Where job = 'ANALYST';

http://liang.armstrong.edu:5560/isqlplus/
Debe recordar que:

La cláusula WHERE sigue a la cláusula FROM.
Las constantes de tipo caracter y de tipo fecha deben ir entre comillas simples; pero no las constantes numéricas.
Las constantes de tipo caracter deben colocarse en mayúsculas o minúsculas, según como se encuentren los datos en la base de datos.
Las bases de datos Oracle almacenan fechas en formato numérico interno, representando el siglo, el año, el mes, el día, las horas, los minutos y los segundos. El formato de fecha por defecto es DD-MON-RR.

Uso de Alias de Columna

Dentro de la sentencia SELECT se pueden definir cabeceras o alias como sustitutos de columnas.
Esto no significa que el nombre de la columna cambie en la estructura de la tabla, sólo sirven para mostrarse en el conjunto resultado al momento de la ejecución de la sentencia.

Ejemplo:

  • Mostrar todos los cargos distintos que existen en la tabla Emp poniéndole el alias de Cargos.

Select Distinct job CARGOS From emp;

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

Ejemplo:

  • Mostrar los nombres y las comisiones de todos los empleados.


SELECT ename AS nombre, comm comision
FROM emp;

Debe recordar que:
La palabra clave opcional AS se ha usado delante del nombre alias de columna. El resultado de la consulta es el mismo se utilice la palabra clave AS o no.

La sentencia SQL tiene los nombres, las comisiones y los alias de columna en minúsculas, mientras que el resultado de la consulta muestra la cabecera de columna en mayúsculas. Las cabeceras de columna aparecen en mayúsculas por defecto.

Ejemplo:

  • Mostrar los apellidos y los salarios anuales de todos los empleados.

Select ename "Nombre", sal*12 "Salario Anual "
From emp;

Debe recordar que:

Debido a que Salario Anual contiene un espacio, se ha escrito entre comillas dobles. Observe que la cabecera de columna en el resultado es exactamente igual que el alias de columna.