Documente Academic
Documente Profesional
Documente Cultură
Condicionando y
Ordenando datos
Objetivos
Al completar esta leccin, deber ser
capaz de hacer lo siguiente :
Limitar los renglones recuperados
por una consulta
Ordenar los renglones recuperados
por una consulta
KING
BLAKE
CLARK
JONES
JOB
...
DEPTNO
PRESIDENT
MANAGER
MANAGER
MANAGER
10
30
10
20
"recupera
todos los
empleados del
departamento 10"
EMP
EMPNO ENAME
JOB
...
7839 KING
PRESIDENT
7782 CLARK MANAGER
7934 MILLER CLERK
DEPTNO
10
10
10
Limitando Renglones
Para restringir los renglones utilice la clusula
WHERE.
SELECT
FROM
[WHERE
Limitando Renglones
Puede restringir los renglones retornados por una consulta utilizando la clusula
WHERE. Una clusula WHERE contienen una condicin que debe ser cumplida
por cada registro en cada tabla, y va despus de la clusula FROM
Sintaxis:
WHERE
Condition
ename
---------JAMES
SMITH
ADAMS
MILLER
job
deptno
--------- --------CLERK
30
CLERK
20
CLERK
20
CLERK
10
SELECT
SELECT
FROM
FROM
WHERE
WHERE
ename,
ename, job,
job, deptno
deptno
emp
emp
ename
ename == 'JAMES';
'JAMES';
SELECT
FROM
WHERE
Los valores de tipo fecha son almacenados internamente por Microsoft SQL
Server como dos enteros de 4 bytes. Los primeros 4 bytes almacenan el nmero
de das despus de la fecha base, January 1, 1900. los otros 4 bytes almacenan la
hora del di representando como la cantidad de milisegundos transcurridos
despus de la media noche.
Operadores de Comparacin
Operador
Descripcin
Igual
>
Mayor que
>=
<
Menor que
<=
<>
Diferente
Operadores de Comparacin
Los operadores de comparacin son utilizados para comparar expresiones con
otras. Se utilizan en la clusula SELECT con el siguiente formato.
Sintaxis
WHERE
Ejemplos
WHERE hiredate =01-JAN-95
WHERE sal>=1500
WHERE ename =SMITH
ename
sal
comm
---------- --------- --------MARTIN
1250
1400
Operador
Descripcin
BETWEEN
...AND...
IN(list)
LIKE
IS NULL
Es un valor null
ename, sal
emp
sal BETWEEN 1000 AND 1500;
ename
sal
---------- --------MARTIN
1250
TURNER
1500
WARD
1250
ADAMS
1100
MILLER
1300
Lmite
Lmite
inferior
superior
El operador BETWEEN
Puede desplegar renglones basados en rangos de valores utilizando el operador
BETWEEN. Los rangos que especifique contienen limites inferior y superior.
Notes que el ejemplo anterior obtiene los empleados que ganan entre $1000 y $
1500.
Utilizando el Operador IN
Utilice el operador IN para igualar valores dentro de
la lista.
SELECT
FROM
WHERE
empno
--------7902
7369
7788
7876
ename
sal
mgr
---------- --------- --------FORD
3000
7566
SMITH
800
7902
SCOTT
3000
7566
ADAMS
1100
7788
El operador IN
Para verificar si un valor especfico se encuentra en una lista, utilice el operador
IN.
El ejemplo anterior muestra el nmero de empleado, el nombre, el salario y su
respectivo manager para aquellos empleados cuyos jefes sean 7902, 7566 o
7788.
El operador IN puede ser utilizado con otros tipos de datos. El siguiente ejemplo
retorna los empleados cuyos nombres estn en la lista.
ename
emp
ename LIKE 'S%';
El Operador LIKE
En muchas ocasiones conocer el valor exacto a buscar. Puede seleccionar
renglones que coincidan con un patrn de caracteres utilizando el operador LIKE.
Se puede utilizar dos caracteres (comodines) para la realizacin de bsquedas
con patrones.
Smbolo
%
_
Descripcin
Representa una secuencia de cero o ms
caracteres
Representa un solo carcter
La consulta anterior retorna el nombre del empleado para aquellos cuyo nombre
inicie con una S. Nombres que inicien con una s no sern mostrados.
ename
emp
ename LIKE '_A%';
ENAME
---------JAMES
WARD
MARTIN
ename, mgr
emp
mgr IS NULL;
ename
mgr
---------- --------KING
NULL
ename
job
comm
--------- ------------------KING PRESIDENT NULL
BLAKE MANAGER NULL
CLARK MANAGER NULL
Operadores Lgicos
Operador
Descripcin
AND
OR
NOT
ename
---------ADAMS
MILLER
job
sal
--------- --------CLERK
1100
CLERK
1300
Utilizando el operador OR
OR requiere que al menos una condicin
sea TRUE.
SELECT
FROM
WHERE
OR
empno ename
job
sal
--------- ---------- --------- --------7839
7698
7782
7566
KING
BLAKE
CLARK
JONES
PRESIDENT
MANAGER
MANAGER
MANAGER
5000
2850
2450
2975
...
(10 row(s) affected)
Condicionando y ordenando datos 33-17
Utilizando el operador OR
En el ejemplo, ya sea que aquellos empleados que ganen de $2000 en adelante o
tengan el puesto de CLERK sern seleccionados.
ename
---------KING
MARTIN
ALLEN
TURNER
WARD
job
--------PRESIDENT
SALESMAN
SALESMAN
SALESMAN
SALESMAN
Reglas de Precedencia
Orden
1
2
3
4
Operador
Todos los operadores
de comparacin
NOT
AND
OR
Reglas de Precedencia
SELECT
FROM
WHERE
OR
AND
ename
ename
------------------KING
KING
MARTIN
MARTIN
ALLEN
ALLEN
TURNER
TURNER
WARD
WARD
job
sal
job
sal
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1250
SALESMAN
1250
SALESMAN
1600
SALESMAN
1600
SALESMAN
1500
SALESMAN
1500
SALESMAN
1250
SALESMAN
1250
Reglas de Precedencia
Usando parntesis para forzar la prioridad.
SELECT
FROM
WHERE
OR
AND
ename
ename
------------------KING
KING
ALLEN
ALLEN
job
sal
job
sal
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1600
SALESMAN
1600
Usando Parntesis
En el ejemplo, existen dos condiciones:
La primer condicin es que el puesto sea PRESIDENT o SALESMAN
La segunda condicin es que el salario sea mayor a $1500
La consulta se puede leer de la siguiente forma:
Obtener los empleados que sean PRESIDENTES o VENDEDORES y ganen mas
de $1500.
Clusula ORDER BY
Ordene la salida con la clusula ORDER BY
ASC: ordn ascendente, default
DESC: ordn descendente
La clusula ORDER BY siempre debe ser la
ltima en una instruccin SELECT.
SELECT
ename, job, deptno, hiredate
FROM
emp
ORDER BY hiredate;
ename
---------SMITH
ALLEN
...
(14 row(s)
job
deptno hiredate
--------- --------- -----------------------CLERK
20 1980-12-17 00:00:00.000
SALESMAN
30 1981-02-20 00:00:00.000
affected)
Clausula ORDER BY
El orden en que se muestran los renglones de una tabla no esta definido, de
hecho aparecen en el orden en el que los registros fueron almacenados por
primera vez en la tabla.
Puede especificar una expresin o un alias para ordenar
Sintaxis
SELECT
FROM
[WHERE
[ORDER BY
Donde:
expr
table
condition (s) ]
{column, expr} [ASC|DESC] ];
SELECT
ename, job, deptno, hiredate
FROM
emp
ORDER BY hiredate DESC;
ename
---------ADAMS
SCOTT
...
(14 row(s)
job
deptno hiredate
--------- --------- -----------------------CLERK
20 1983-01-12 00:00:00.000
ANALYST
20 1982-12-09 00:00:00.000
affected)
Ordenando datos
El orden por default es ascendente
Los valores numricos son mostrados del menor al mayor
Las fechas son mostradas con el valor de la fecha mas pasada, por
ejemplo, 01-JAN-95 que es primero que 01-JAN-95
Las cadenas de caracteres son desplegadas en orden alfabtico
Los valores nulos aparecen al final cuando es ascendente y al principio
cuando es descendente el ordenamiento
Prctica
Seleccionar datos y cambiar el orden en
que son mostrados
Elimine renglones utilizando WHERE
Utilice diferentes criterios de
ordenamiento
Utilice alias en ORDER BY
Practica 3
1.-Haga una consulta para desplegar el nombre y salario de los empleados que ganen mas
de $2850. Grabe el query con el nombre s03q01.sql
ENAME
----------KING
JONES
SAL
--------5000
2975
FORD
SCOTT
3000
3000
2. Cree un Query para mostrar el nombre del empleado y departamento para el empleado
7566.
ENAME
---------JONES
DEPTNO
----------20
3. Modifique el Query s03q01.sql para desplegar el nombre y salario para todos los
Empleados cuyo salario este fuera del rango de $1500 y $2850. Grabe el Query con el
nombre s03q03.sql
ENAME
SAL
-------------------KING
5000
JONES
2975
MARTIN
1250
JAMES
950
WARD
1250
FORD
3000
SMITH
800
SCOTT
3000
ADAMS
1100
MILLER
1300
(10 row(s) affected)
Practica 3 (continuacin)
4. Muestre el nombre de empleado, puesto y fecha de ingreso de aquellos empleados que
hayan ingresado ente el 20 de febrero de 1981 y el 1ro de mayo de 1981
ename
--------------ALLEN
WARD
JONES
BLAKE
job
---------------SALESMAN
SALESMAN
MANAGER
MANAGER
hidedate
--------------------------------1981-02-20 00:00:00.000
1981-03-22 00:00:00.000
1981-04-02 00:00:00.000
1981-05-01 00:00:00.000
5. Muestre el nombre del empleado y nmero del departamento para aquellos empleados
que se encuentren en los departamentos 10 o 30 ordenados alfabticamente por nombre
ENAME
DEPTNO
-------------------ALLEN
30
BLAKE
30
CLARK
10
JAMES
30
KING
10
MARTIN
30
MILLER
10
TURNER
30
WARD
30
(9 row(s) affected)
6.-Modifique el script s03q03.sql para listar el nombre y el salario de los empleados que
ganen mas de $1500 y esten en los departamentos 10 o 30. Etiquete las columnas como
Employee y Month Salary, respectivamente. Guarde el script con el nombre s03q06.sql
EMPLOYEE
------------------ALLEN
BLAKE
CLARK
KING
(9 row(s) affected)
*MONTH SALARY
-------------------------1600.00
2850.00
2450.00
5000.00
Practica 3 (continuacion)
7. Muestre el nombre y fecha de ingreso de cada empleado que haya ingresado en 1982
ename
--------------SCOTT
MILLER
hiredate
----------------------------------1982-12-09 00:00:00.000
1982-01-23 00:00:00.000
(2 row(s) affected)
8. Muestre el nombre y el puesto de cada empleado que no sean empleados de alguien
ename
-------------KING
job
-------------------------------PRESIDENT
Practica 3 (continuacin)
12. Muestre el nombre, puesto y salario de aquellos empleados cuyo puesto sea CLERK o
ANALYST y su salario no sea $1000, $3000 o $5000. Ordene la salida por salario
descendente.
Ename
-----------MILLER
ADAMS
JAMES
SMITH
job
------------CLERK
CLERK
CLERK
CLERK
sal
-------------------1300.00
1100.00
950.00
800.00
13. Modifique el script s03q06.sql para mostrar el nombre, salario, el 30% del salario y
comisin para aquellos que su pago de comisin sea mayor que el 30% de su salario. Salve
su query como s03q13.sql.
ename
------------WARD
MARTIN
sal
-------------1250.00
1250.00
30%
-------------375.000
375.000
comm
-----------------500.00
1400.00