Copyright Oracle Corporation, 1998. All rights reserved.
22
Restricción y Clasificación de los Datos
Restricción y Clasificación de los Datos
2-2 Copyright Oracle Corporation, 1998. All rights reserved.
ObjetivosObjetivos
Al completar esta lección, debería ser capaz de hacer lo siguiente:
• Limitar los registros recuperados por una consulta
• Clasificar los registros recuperados por una consulta
Al completar esta lecciAl completar esta leccióón, debern, deberíía ser a ser capaz de hacer lo siguiente:capaz de hacer lo siguiente:
• Limitar los registros recuperados por una consulta
• Clasificar los registros recuperados por una consulta
2-3 Copyright Oracle Corporation, 1998. All rights reserved.
Limitar Filas por medio de Selecciones
Limitar Filas por medio de Selecciones
“…“…recupera todos recupera todos los empleados del los empleados del departamento 10departamento 10””
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10
7782 CLARK MANAGER 10
7934 MILLER CLERK 10
2-4 Copyright Oracle Corporation, 1998. All rights reserved.
Limiting Rows SelectedLimiting Rows Selected
• Restringir las filas recuperadas usando la cláusula WHERE.
• La cláusula WHERE se escribe después de la cláusula FROM.
• Restringir las filas recuperadas usando la cláusula WHERE.
• La cláusula WHERE se escribe después de la cláusula FROM.
SELECT [DISTINCT] {*, column [alias], ...}
FROM table
[WHERE condition(s)];
2-5 Copyright Oracle Corporation, 1998. All rights reserved.
Uso de la Claúsula WHEREUso de la Claúsula WHERE
SQL> SELECT ename, job, deptno
2 FROM emp
3 WHERE job='CLERK';
ENAME JOB DEPTNO
---------- --------- ---------
JAMES CLERK 30
SMITH CLERK 20
ADAMS CLERK 20
MILLER CLERK 10
2-6 Copyright Oracle Corporation, 1998. All rights reserved.
Cadenas de Caracteres y FechasCadenas de Caracteres y Fechas
•• Las cadenas de caracteres o las fechas se Las cadenas de caracteres o las fechas se encierran entre comillas simples.encierran entre comillas simples.
•• Los valores de tipo caracter son sensibles a Los valores de tipo caracter son sensibles a maymayúúsculas/minsculas/minúúsculas y los valores de tipo sculas y los valores de tipo fecha son sensibles al formato.fecha son sensibles al formato.
•• El formato de fecha por defecto es 'DDEl formato de fecha por defecto es 'DD--MONMON--YY'.YY'.
SQL> SELECT ename, job, deptno
2 FROM emp
3 WHERE ename = 'JAMES';
SQL> SELECT ename, job, deptno
2 FROM emp
3 WHERE ename = 'JAMES';
2-7 Copyright Oracle Corporation, 1998. All rights reserved.
Operadores de ComparaciónOperadores de Comparación
Operador
=
>
>=
<
<=
<>
Significado
Igual a
Mayor que
Mayor que o igual a
Menor que
Menor que o igual a
No igual a
2-8 Copyright Oracle Corporation, 1998. All rights reserved.
Uso de Operadores de ComparaciónUso de Operadores de Comparación
SQL> SELECT ename, sal, comm
2 FROM emp
3 WHERE sal<=comm;
ENAME SAL COMM
---------- --------- ---------
MARTIN 1250 1400
2-9 Copyright Oracle Corporation, 1998. All rights reserved.
Otros Operadores de ComparaciónOtros Operadores de Comparación
Operador
BETWEEN
...AND...
IN(list)
LIKE
IS NULL
Significado
Entre dos valores (inclusive)
Lista de valores
Se ajusta a un patrón
Es un valor nulo
2-10 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador BETWEENUso del Operador BETWEEN
ENAME SAL
---------- ---------
MARTIN 1250
TURNER 1500
WARD 1250
ADAMS 1100
MILLER 1300
SQL> SELECT ename, sal
2 FROM emp
3 WHERE sal BETWEEN 1000 AND 1500;
Lowerlimit
Higherlimit
Use el operador BETWEEN para visualizar registros basados en un rango de valores. Use el operador BETWEEN para visualizar Use el operador BETWEEN para visualizar registros basados en un rango de valores. registros basados en un rango de valores.
2-11 Copyright Oracle Corporation, 1998. All rights reserved.
Using the IN OperatorUsing the IN Operator
Use el operador IN para localizar valores coincidentes con una determinada lista.Use el operador IN para localizar valores Use el operador IN para localizar valores coincidentes con una determinada lista.coincidentes con una determinada lista.
SQL> SELECT empno, ename, sal, mgr
2 FROM emp
3 WHERE mgr IN (7902, 7566, 7788);
EMPNO ENAME SAL MGR
--------- ---------- --------- ---------
7902 FORD 3000 7566
7369 SMITH 800 7902
7788 SCOTT 3000 7566
7876 ADAMS 1100 7788
2-12 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador LIKEUso del Operador LIKE
SQL> SELECT ename
2 FROM emp
3 WHERE ename LIKE 'S%';
•• Usar el operador LIKE para ejecutar Usar el operador LIKE para ejecutar bbúúsquedas en cadenas de caracteres squedas en cadenas de caracteres que incluyan comodines.que incluyan comodines.
•• Las condiciones de bLas condiciones de búúsqueda pueden squeda pueden contener caracteres o ncontener caracteres o núúmeros.meros.
–– "%" denota cero o varios caracteres."%" denota cero o varios caracteres.
–– "_" denota un solo caracter."_" denota un solo caracter.
2-13 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador LIKEUso del Operador LIKE
SQL> SELECT ename
2 FROM emp
3 WHERE ename LIKE '_A%';
ENAME
----------
JAMES
WARD
•• Se puede combinar patrones de caracteresSe puede combinar patrones de caracteres
•• Se puede usar el identificador ESCAPE Se puede usar el identificador ESCAPE
para buscar "%" o "_"para buscar "%" o "_"
2-14 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador IS NULLUso del Operador IS NULL
Verificar la presencia de valores nulos con el operador IS NULL.Verificar la presencia de valores nulos Verificar la presencia de valores nulos con el operador IS NULL.con el operador IS NULL.
SQL> SELECT ename, mgr
2 FROM emp
3 WHERE mgr IS NULL;
ENAME MGR
---------- ---------
KING
2-15 Copyright Oracle Corporation, 1998. All rights reserved.
Operadores LógicosOperadores Lógicos
Operador
AND
OR
NOT
Significado
Devuelve TRUE si ambas
condiciones son TRUE
Devuelve TRUE si alguna de las
condiciones es TRUE
Devuelve TRUE si la siguiente
condición es FALSE
2-16 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador ANDUso del Operador AND
AND requiere que ambas condiciones sean TRUEAND requiere que ambas condiciones sean TRUE
SQL> SELECT empno, ename, job, sal
2 FROM emp
3 WHERE sal>=1100
4 AND job='CLERK';
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7876 ADAMS CLERK 1100
7934 MILLER CLERK 1300
2-17 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador ORUso del Operador OR
OR requiere que alguna condición sea TRUEOR requiere que alguna condiciOR requiere que alguna condicióón sea TRUEn sea TRUE
SQL> SELECT empno, ename, job, sal
2 FROM emp
3 WHERE sal>=1100
4 OR job='CLERK';
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7839 KING PRESIDENT 5000
7698 BLAKE MANAGER 2850
7782 CLARK MANAGER 2450
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN 1250
...
14 rows selected.
2-18 Copyright Oracle Corporation, 1998. All rights reserved.
Uso del Operador NOTUso del Operador NOT
SQL> SELECT ename, job
2 FROM emp
3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME JOB
---------- ---------
KING PRESIDENT
MARTIN SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
WARD SALESMAN
2-19 Copyright Oracle Corporation, 1998. All rights reserved.
Reglas de PrecedenciaReglas de Precedencia
Utilice paréntesis para modificar las reglas de precedencia.Utilice parUtilice parééntesis para modificar las ntesis para modificar las reglas de precedencia.reglas de precedencia.
Orden Evaluado Operador
1 Todos los Operadores de Comparación
2 NOT
3 AND
4 OR
2-20 Copyright Oracle Corporation, 1998. All rights reserved.
Reglas de PrecedenciaReglas de Precedencia
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
MARTIN SALESMAN 1250
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
WARD SALESMAN 1250
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
MARTIN SALESMAN 1250
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
WARD SALESMAN 1250
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE job='SALESMAN'
4 OR job='PRESIDENT'
5 AND sal>1500;
2-21 Copyright Oracle Corporation, 1998. All rights reserved.
Reglas de PrecedenciaReglas de Precedencia
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
ALLEN SALESMAN 1600
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
ALLEN SALESMAN 1600
Uso de paréntesis para forzar prioridad.Uso de parUso de parééntesis para forzar prioridad.ntesis para forzar prioridad.
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE (job='SALESMAN'
4 OR job='PRESIDENT')
5 AND sal>1500;
2-22 Copyright Oracle Corporation, 1998. All rights reserved.
La Claúsula ORDER BYLa Claúsula ORDER BY
Ordenar filas con la clOrdenar filas con la clááusula ORDER BY.usula ORDER BY.
•• ASC ASC –– orden ascendente, constituye la opciorden ascendente, constituye la opcióón por n por defecto.defecto.
•• DESC DESC –– orden descendente.orden descendente.
•• La clLa clááusula ORDER BY usula ORDER BY siempresiempre va al final del SELECTva al final del SELECT
SQL> SELECT ename, job, deptno, hiredate
2 FROM emp
3 ORDER BY hiredate;
ENAME JOB DEPTNO HIREDATE
---------- --------- --------- ---------
SMITH CLERK 20 17-DEC-80
ALLEN SALESMAN 30 20-FEB-81
...
14 rows selected.
2-23 Copyright Oracle Corporation, 1998. All rights reserved.
Clasificación en Orden DescendenteClasificación en Orden Descendente
SQL> SELECT ename, job, deptno, hiredate
2 FROM emp
3 ORDER BY hiredate DESC;
ENAME JOB DEPTNO HIREDATE
---------- --------- --------- ---------
ADAMS CLERK 20 12-JAN-83
SCOTT ANALYST 20 09-DEC-82
MILLER CLERK 10 23-JAN-82
JAMES CLERK 30 03-DEC-81
FORD ANALYST 20 03-DEC-81
KING PRESIDENT 10 17-NOV-81
MARTIN SALESMAN 30 28-SEP-81
...
14 rows selected.
2-24 Copyright Oracle Corporation, 1998. All rights reserved.
Clasificación por Alías de ColumnaClasificación por Alías de Columna
SQL> SELECT empno, ename, sal*12 annsal
2 FROM emp
3 ORDER BY annsal;
EMPNO ENAME ANNSAL
--------- ---------- ---------
7369 SMITH 9600
7900 JAMES 11400
7876 ADAMS 13200
7654 MARTIN 15000
7521 WARD 15000
7934 MILLER 15600
7844 TURNER 18000
...
14 rows selected.
2-25 Copyright Oracle Corporation, 1998. All rights reserved.
Clasificación por Múltiples ColumnasClasificación por Múltiples Columnas
• La lista de ORDER BY es el orden de clasificación• La lista de ORDER BY es el orden de clasificación
• Puede ordenar por una columna no seleccionada.• Puede ordenar por una columna no seleccionada.
SQL> SELECT ename, deptno, sal
2 FROM emp
3 ORDER BY deptno, sal DESC;
ENAME DEPTNO SAL
---------- --------- ---------
KING 10 5000
CLARK 10 2450
MILLER 10 1300
FORD 20 3000
...
14 rows selected.
2-26 Copyright Oracle Corporation, 1998. All rights reserved.
ResumenResumen
SELECT [DISTINCT] {*, column [alias], ...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]];
2-27 Copyright Oracle Corporation, 1998. All rights reserved.
Visión General de la PrácticaVisión General de la Práctica
•• Seleccionar datos y cambiar el orden de Seleccionar datos y cambiar el orden de las filas mostradas.las filas mostradas.
•• Restringir las filas usando la clRestringir las filas usando la clááusula usula WHERE.WHERE.
•• Usar el mUsar el méétodo de alias de columna con todo de alias de columna con comillas dobles.comillas dobles.