Sunteți pe pagina 1din 30

Parte 3

Condicionando y
Ordenando datos

Condicionando y ordenando datos 33-1

SQL Server Bsico

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

Condicionando y ordenando datos 33-2

SQL Server Bsico

Limitando los Renglones utilizando


una Seleccin
EMP
EMPNO ENAME
7839
7698
7782
7566
...

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

Condicionando y ordenando datos 33-3

DEPTNO
10
10
10

SQL Server Bsico

Limitando los renglones utilizando una seleccin.


En el ejemplo se muestran todos los empleados del departamento 10. Slo los
registros con un valor de 10 en la columna DEPTNO sean mostrados. Esta forma
de restriccin es la base de la clusula WHERE en SQL.

Limitando Renglones
Para restringir los renglones utilice la clusula
WHERE.
SELECT
FROM
[WHERE

[DISTINCT] {*, column [alias], ...}


table
condition(s)];

La clusula WHERE se coloca despus de la


clusula FROM.

Condicionando y ordenando datos 33-4

SQL Server Bsico

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

registra la consulta, y muestre solo aquellos que


cumplan la condicin.

Condition

esta compuestas por nombres de columnas,


expresiones, constantes y operadores de comparacin

Utilizando la clusula WHERE


SELECT ename, job, deptno
FROM
emp
WHERE job='CLERK';

ename
---------JAMES
SMITH
ADAMS
MILLER

job
deptno
--------- --------CLERK
30
CLERK
20
CLERK
20
CLERK
10

Condicionando y ordenando datos 33-5

SQL Server Bsico

Utilizando la clusula WHERE


En el ejemplo, la consulta recupera el nombre, el puesto y el nmero de
departamento de aquellos empleados cuyo puesto sea CLERK.
Note que la palabra CLERK fue especificada en maysculas, para que existan
renglones que cumplan la condicin.

Cadenas de caracteres y fechas


Las cadenas de caracteres y fechas se encierran
entre comillas simples
Las cadenas de caracteres son sensibles a las
maysculas

SELECT
SELECT
FROM
FROM
WHERE
WHERE

ename,
ename, job,
job, deptno
deptno
emp
emp
ename
ename == 'JAMES';
'JAMES';

Condicionando y ordenando datos 33-6

SQL Server Bsico

Cadenas de Caracteres y fechas


Las cadenas de caracteres y fechas en la clusula WHERE deben ir entre comillas
simples, las constantes numricas no.
Las comparaciones con cadenas son sensibles a las maysculas. En el siguiente
ejemplo, ningn rengln es mostrado debido a que los datos de la tabla EMP
fueron almacenados en maysculas.

SELECT
FROM
WHERE

ename, empno, job, deptno


emp
job= clerk

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

>=

Mayor o igual que

<

Menor que

<=

Menor o igual que

<>

Diferente

Condicionando y ordenando datos 33-7

SQL Server Bsico

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

expr. Operator value

Utilizando los Operadores de


Comparacin
SELECT ename, sal, comm
FROM
emp
WHERE sal<=comm;

ename
sal
comm
---------- --------- --------MARTIN
1250
1400

Condicionando y ordenando datos 33-8

SQL Server Bsico

Utilizando los Operadores de Comparacin


En el ejemplo, las instrucciones SELECT recupera el nombre y comisin para
aquellos empleados cuyo salario es menor o igual a su comisin.
En este ejemplo no se utilizaron valores constantes, por lo que los valores se
toman por cada registro que vaya procesando.

Otros Operadores de Comparacin

Operador

Descripcin

BETWEEN
...AND...

Entre dos valores (inclusive)

IN(list)

Coincida con uno de la lista

LIKE

Igual al patrn de caracteres

IS NULL

Es un valor null

Condicionando y ordenando datos 33-9

SQL Server Bsico

Utilizando el Operador BETWEEN

Utilice el operador BETWEEN para condicionar


renglones basados en rangos de valores.
SELECT
FROM
WHERE

ename, sal
emp
sal BETWEEN 1000 AND 1500;

ename
sal
---------- --------MARTIN
1250
TURNER
1500
WARD
1250
ADAMS
1100
MILLER
1300

Condicionando y ordenando datos 33-10

Lmite

Lmite

inferior

superior

SQL Server Bsico

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

empno, ename, sal, mgr


emp
mgr IN (7902, 7566, 7788);

ename
sal
mgr
---------- --------- --------FORD
3000
7566
SMITH
800
7902
SCOTT
3000
7566
ADAMS
1100
7788

Condicionando y ordenando datos 33-11

SQL Server Bsico

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.

SELECT empno, ename, mgr, deptno


FROM
emp
WHERE ename IN (FORD, ALLEN);

Utilizando el Operador LIKE


Utilice el operador LIKE para realizar
bsquedas con caracteres comodines.
Las condiciones de bsqueda pueden
contener tanto caracteres como nmeros.
% indica cero o ms caracteres
_ indica un caracter
SELECT
FROM
WHERE

ename
emp
ename LIKE 'S%';

Condicionando y ordenando datos 33-12

SQL Server Bsico

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.

Utilizando el Operador LIKE


Puede combinar el patrn de caracteres como se
muestra en el ejemplo :
SELECT
FROM
WHERE

ename
emp
ename LIKE '_A%';

ENAME
---------JAMES
WARD
MARTIN

Condicionando y ordenando datos 33-13

SQL Server Bsico

Utilizando el Operador LIKE


Puede utilizar los smbolos comodines % y _ en combinacin para hacer ms
exacta la bsqueda. En el ejemplo se obtienen aquellos empleados que en el
nombre tengan como segunda letra una A.

Utilizando el Operador IS NULL


Verifique los valores nulos con el
operador IS NULL
SELECT
FROM
WHERE

ename, mgr
emp
mgr IS NULL;

ename
mgr
---------- --------KING
NULL

Condicionando y ordenando datos 33-14

SQL Server Bsico

Utilizando el Operador IS NULL


El operador IS NULL verifica si existe un valor nulo, entonces devuelve Verdadero.
Puede utilizar tambin el operador =, que es equivalente a IS NULL o != para IS
NOT NULL. El ejemplo obtiene los empleados que no tienen manager (jefe).
Por ejemplo, para desplegar el nombre, puesto y comisin para aquellos
empleados que no ganan una comisin:
SELECT
FROM
WHERE

ename, job, comm


emp
comm IS NULL;

ename
job
comm
--------- ------------------KING PRESIDENT NULL
BLAKE MANAGER NULL
CLARK MANAGER NULL

Operadores Lgicos

Operador

Descripcin

AND

Devuelve TRUE si ambos


componentes son TRUE

OR

Devuelve TRUE si al menos uno de


los componentes es TRUE

NOT

Devuelve el valor negado segn el


valor de la expresin evaluada

Condicionando y ordenando datos 33-15

SQL Server Bsico

Utilizando el operator AND


AND requiere que ambas condiciones
sean TRUE
SELECT
FROM
WHERE
AND
empno
--------7876
7934

empno, ename, job, sal


emp
sal>=1100
job='CLERK';

ename
---------ADAMS
MILLER

Condicionando y ordenando datos 33-16

job
sal
--------- --------CLERK
1100
CLERK
1300

SQL Server Bsico

Utilizando el operador AND


En el ejemplo ambas condiciones deben ser verdaderas para que un registro sea
mostrado. De tal forma que, si un empleado tiene el puesto de CLERK y gana ms
de $1 100 ser seleccionado.

Utilizando el operador OR
OR requiere que al menos una condicin
sea TRUE.
SELECT
FROM
WHERE
OR

empno, ename, job, sal


emp
sal >= 2000
job = 'CLERK';

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

SQL Server Bsico

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.

Utilizando el operador NOT


SELECT ename, job
FROM
emp
WHERE job NOT IN ('CLERK','MANAGER','ANALYST');

ename
---------KING
MARTIN
ALLEN
TURNER
WARD

job
--------PRESIDENT
SALESMAN
SALESMAN
SALESMAN
SALESMAN

Condicionando y ordenando datos 33-18

SQL Server Bsico

Utilizando el operador NOT


En el ejemplo se muestran los nombres y puestos de los empleados que no se
encuentren en la lista (CLERK, MANAGER, ANALYST)
El operador NOT puede ser utilizado con otros operadores de SQL tales como
BETWEEN, LIKE y NULL.

WHERE NOT job IN (CLERK, ANALYST)


WHERE sal NOT BETWEEN 1000 AND 1500
WHERE ename NOT LIKE %A%
WHERE comm IS NOT NULL

Reglas de Precedencia
Orden
1
2
3
4

Operador
Todos los operadores
de comparacin
NOT
AND
OR

Utilice parntesis para modificar el orden de


evaluacin

Condicionando y ordenando datos 33-19

SQL Server Bsico

Reglas de Precedencia
SELECT
FROM
WHERE
OR
AND

ename
ename
------------------KING
KING
MARTIN
MARTIN
ALLEN
ALLEN
TURNER
TURNER
WARD
WARD

ename, job, sal


emp
job='SALESMAN'
job='PRESIDENT'
sal>1500;

job
sal
job
sal
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1250
SALESMAN
1250
SALESMAN
1600
SALESMAN
1600
SALESMAN
1500
SALESMAN
1500
SALESMAN
1250
SALESMAN
1250

Condicionando y ordenando datos 33-20

SQL Server Bsico

En el ejemplo, existen dos condiciones:


La primera condicin es que el puesto sea SALESMAN y el salario mayor a
$1500
La segunda condicin es que tenga el puesto PRESIDENT

La consulta se puede leer de la siguiente forma:


Obtener los empleados que sean PRESIDENTES y ganen mas de $1500 o
aquellos que sean VENDEDORES.

Reglas de Precedencia
Usando parntesis para forzar la prioridad.
SELECT
FROM
WHERE
OR
AND

ename
ename
------------------KING
KING
ALLEN
ALLEN

ename, job, sal


emp
(job='SALESMAN'
job='PRESIDENT')
sal>1500;

job
sal
job
sal
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1600
SALESMAN
1600

Condicionando y ordenando datos 33-21

SQL Server Bsico

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)

Condicionando y ordenando datos 33-22

SQL Server Bsico

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] ];

ORDER BY especifica el orden en el que sern mostrados los


renglones
column, exp el o los atributos por los que se van a ordenar
ASC ordena en forma ascendente. Este es el ordenamiento
por default
DESC
ordena en forma descendente

Ordenando en forma descendente

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)

Condicionando y ordenando datos 33-23

SQL Server Bsico

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

Ordenando con Alias


SELECT
empno, ename, sal*12 ann_sal
FROM
emp
ORDER BY ann_sal;
empno ename
ann_sal
--------- ---------- --------7369 SMITH
9600
7900 JAMES
11400
7876 ADAMS
13200
7654 MARTIN
15000
7521 WARD
15000
7934 MILLER
15600
7844 TURNER
18000
...
(14 row(s) affected)
Condicionando y ordenando datos 33-24

SQL Server Bsico

Ordenando con Alias


Puede utilizar una columna renombrada con un alias en la clusula ORDER BY. El
ejemplo anterior ordena los datos por el salario anual.

Ordenando con Mltiples Columnas


Utilice varias columnas para establecer diferentes
criterios de ordenamiento.
SELECT
ename, deptno, sal
FROM
emp
ORDER BY deptno, sal DESC;
ename
deptno
sal
---------- --------- --------KING
10
5000
CLARK
10
2450
MILLER
10
1300
FORD
20
3000
...
(14 row(s) affected)

Puede ordenar por columnas que no aparezcan en la consulta


Condicionando y ordenando datos 33-25

SQL Server Bsico

Ordenando con Mltiples Columnas


Puede ordenar los resultados de la consulta con una o mas columnas, las
cuales se toman como criterios de ordenamiento, el lmite es el nmero de de
columnas que tenga la tabla.
En una clusula ORDER BY, especifique las columnas separadas por comas, si
desea cambiar el orden por default utilice DESC despus de cada columna que
desee cambiar del orden.
En el ejemplo el primer criterio de ordenamiento es por nmero de departamento
(en forma ascendente, default) y luego por salario en forma descendente.
Nota: Si utiliza mas de un criterio de ordenamiento, tome en cuenta que el primer
criterio debe contener valores repetidos para que la consulta tenga sentido. Como
sigue:
SELECT *
FROM
emp
ORDER BY empno, deptno, sal DESC;
No tiene sentido ya que el primer criterio es un atributo el cual no contiene valores
repetidos, para que los dems puedan afectar el resultado.

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

Condicionando y ordenando datos 33-26

SQL Server Bsico

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

9. Muestre el nombre, el salario y la comisin de los empleados que ganan comisin.


Ordene los datos en forma descendente por salario y comisin.
Ename
sal
comm
------------ -------------- ---------------------ALLEN
1600.00
300.00
TURNER
1500.00
.00
MARTIN
1250.00
1400.00
WARD
1250.00
500.00
10. Muestre el nombre de los empleados cuya tercer letra del nombre sea una A.
ename
----------BLAKE
CLARK
ADAMS
11. Muestre el nombre de los empleados que tengan dos Ls en su nombre.
Ename
----------ALLEN
MILLER

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

S-ar putea să vă placă și