Tema 2 My Sql. RestriccióN Y ClasificacióN De Los Datos
1. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
TEMA 2: RESTRICCIÓN Y CLASIFICACIÓN DE LOS DATOS
• LIMITAR FILAS POR MEDIO DE SELECCIONES
- Podemos restringir las filas recuperadas mediante la cláusula
WHERE.
- La cláusula WHERE se escribe después de la cláusula FROM.
- Sintaxis: WHERE <condición de filtrado>
La condición consta de tres elementos:
- Nombre de columna
- Operador de comparación
- Nombre de columna, constante o lista de valores.
- WHERE -> restringe la consulta a las filas que cumplen la condición.
- Ejemplo 1.
• USO DE LA CLÁUSULA WHERE
- Las cadenas de caracteres no son "case sensitive", es decir no son
sensibles a mayúsculas / minúsculas. Ver ejemplos 2 y 3.
- Los valores de tipo fecha son sensibles al formato.
- Las cadenas de caracteres y las fechas se encierran entre comillas
simples o dobles. Ver ejemplos 2 y 4.
- MySql almacena las fechas en formato numérico interno,
representado por siglo, año, mes, día, hora, minutos y segundos. La
fecha por defecto se visualiza como yyyy-mm-dd.
- En el tema 3 veremos como cambiar el formato de la fecha.
• OPERADORES DE COMPARACIÓN
- Los operadores de comparación se utilizan en las condiciones que
comparan una expresión con otra. Se utilizan en la cláusula WHERE
con el siguiente formato:
...WHERE <expresión> <operador> <valor>
- Operadores y su significado:
OPERADOR SIGNIFICADO
= Igual a
> Mayor que
>= Mayor o igual
que
< Menor que
<= Menor o igual
que
<> Distinto que
- Ejemplos: del 5 al 13
02/07/09 Pàgina 1 de 12
2. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
• OTROS OPERADORES DE COMPARACIÓN
- Otros operadores de comparación y su significado:
OPERADOR SIGNIFICADO
BETWEEN... AND ... Entre dos valores
(ambos inclusive)
IN Lista de valores
LIKE Se ajusta a un patrón
IS NULL Es un valor nulo
- Uso del operador BETWEEN … AND …
- Sirve para visualizar las filas que se encuentran dentro de
un rango de valores.
- Sintaxis: BETWEEN <límite_inferior> AND <límite
superior>
- Ver ejemplo 14
- Los ejemplos 14 y 15 son equivalentes.
- Uso del operador IN
- Sirve para evaluar los valores dentro de una lista
especificada.
- Sintaxis: IN (lista de valores).
- Si se usan caracteres o fechas en la lista, se deben
encerrar entre comillas simples.
- El operador IN puede utilizarse con cualquier tipo de
datos.
- Ver ejemplos 16 y 18
- Los ejemplos 16 y 17 son equivalentes. Lo mismo pasa con
los ejemplos 18 y 19.
- Uso del operador LIKE
- Sirve para ejecutar búsquedas en cadenas de caracteres
que incluyan comodines.
- Las condiciones de búsqueda pueden contener caracteres
o números. Además se pueden utilizar dos símbolos para
construir la búsqueda:
- % representa cualquier secuencia de cero o más
caracteres
- _ representa un solo carácter.
- Los símbolos % y _ pueden ser utilizados en cualquier
combinación con caracteres literales. Ver ejemplos 20, 21 y
22.
- Se pueden combinar los símbolos % y _ en el patrón de
búsqueda. Ver ejemplos 23, 24 y 25.
02/07/09 Pàgina 2 de 12
3. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
- Uso del operador IS NULL
- Sirve para verificar la presencia de valores nulos.
- Un valor nulo significa que el valor es inaccesible, sin valor,
desconocido o inaplicable. Por tanto no se puede
comparar con el operador =.
- Ver ejemplo 27.
• OPERADORES LÓGICOS
- Un operador lógico combina el resultado de dos condiciones para
producir un único resultado o para invertir el resultado de una
condición simple.
- Podemos utilizar varias condiciones en la cláusula WHERE utilizando
los operadores AND y OR.
OPERADOR SIGNIFICADO
AND Devuelve TRUE si ambas
condiciones son TRUE
OR Devuelve TRUE si alguna de
las condiciones es TRUE
NOT Devuelve TRUE si la
siguiente condición es
FALSE
- Uso del operador AND
- Requiere que ambas condiciones sean TRUE.
- La siguiente tabla muestra el resultado de combinar dos
expresiones con el operador AND:
AND VERDADERO FALSO NULL
VERDADERO VERDADERO FALSO NULL
FALSO FALSO FALSO FALSO
NULL NULL FALSO NULL
- Ver ejemplo 28
- Uso del operador OR
- Requiere que alguna condición sea TRUE.
- La siguiente tabla muestra el resultado de combinar dos
expresiones con el operador OR:
OR VERDADERO FALSO NULL
VERDADERO VERDADERO VERDADERO VERDADERO
FALSO VERDADERO FALSO NULL
NULL VERDADERO NULL NULL
- Ver ejemplo 29
- Uso del operador NOT
- Invierte el resultado de una condición simple.
02/07/09 Pàgina 3 de 12
4. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
- El operador NOT también puede utilizarse con otros
operadores SQL como BETWEEN, LIKE y IS NULL.
- La siguiente tabla muestra el resultado de aplicar el
operador NOT a una condición:
NOT VERDADERO FALSO NULL
FALSO VERDADERO NULL
- Ver ejemplos 30, 31, 32 y 33.
- Reglas de precedencia
- El NOT tiene preferencia sobre el AND y el OR. El AND
tiene preferencia sobre el OR:
ORDEN OPERADOR
evaluado
1 Todos los operadores de
comparación
2 NOT
3 AND
4 OR
- Ver ejemplo 34.
- Utilizar paréntesis para modificar las reglas de precedencia.
Comparar ejemplo 35 y ejemplo 36.
• CLASIFICACIÓN DE LAS FILAS
- La cláusula ORDER BY
- Para ordenar las filas que devuelve una consulta.
- La cláusula ORDER BY va siempre al final del SELECT.
- ASC orden ascendente; constituye la opción por defecto
DESC orden descendente
- Para ordenar, se puede especificar una columna, una
expresión, un alias o un marcador numérico de
posición.
- Clasificación en orden ascendente (ASC) o descendente (DESC)
- El orden por defecto es el ascendente.
- Orden ascendente:
- valores numéricos: desde el valor más bajo hasta
el más alto. Ver ejemplo 38.
- valor caracteres: en orden alfabético. Ver ejemplo
39.
- valores fecha: desde la fecha más antigua a la
más actual. Ver ejemplo 40.
- valores nulos: los últimos en las secuencias
ascendentes (ASC) y los primeros en las
02/07/09 Pàgina 4 de 12
5. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
secuencias descendentes(DESC). Ver ejemplos 48
y 49.
- Orden Descendente: especificar la palabra clave DESC
después del nombre de columna en la cláusula ORDER
BY. Ver ejemplos 41, 42 y 43.
- Clasificación por alias de columna
- Podemos utilizar un alias de columna en la cláusula
ORDER BY.
- Ver ejemplo 50.
- Clasificación por marcador numérico de columna
- Podemos utilizar un marcador numérico de columna (o
más de uno) en la cláusula ORDER BY.
- Ver ejemplo 26.
- Clasificación por múltiples columnas
- Podemos ordenar el resultado de una consulta por más de
una columna. El límite es la cantidad de columnas de la
tabla.
- Cuando se ordena por una o más columnas, éstas pueden
o no aparecer en la cláusula SELECT.
- Ver ejemplos 44, 45, 46 y 47.
• RESUMEN
SELECT [DISTINCT] {*, nom_columna [alias], …}
FROM nom_tabla
[WHERE condicion(es)]
[ORDER BY {nom_columna, expresión, alias}] [ASC|
DESC];
02/07/09 Pàgina 5 de 12
6. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
EJEMPLOS
1. SELECT *
FROM emp
WHERE deptno=10;
2. SELECT ename, deptno
FROM emp
WHERE job=’CLERK’; cadenas de caracteres entre comillas simples
3. SELECT ename, deptno
FROM emp
WHERE job=”clerk”;
4. SELECT empno, ename, deptno
FROM emp
WHERE hiredate=’1981-2-20’; fechas entre comillas simples
5. SELECT *
FROM emp
WHERE ename ='SMITH';
6. SELECT *
FROM emp
WHERE sal >1350;
7. SELECT *
FROM emp
WHERE sal >=1350;
8. SELECT *
FROM emp
WHERE sal <1350;
9. SELECT *
FROM emp
WHERE sal <=1350;
10.SELECT ename, job, sal
FROM emp
WHERE job <>’SALESMAN’;
02/07/09 Pàgina 6 de 12
7. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
11.SELECT ename, hiredate
FROM emp
WHERE hiredate > ‘1982-12-31’; ---> respecto al año de la fecha, acepta
con 2 dígitos, pero mejor indicar los 4.
12.SELECT ename, hiredate
FROM emp
WHERE hiredate <= ‘1980-12-31’;
13.SELECT ename, sal, comm
FROM emp
WHERE sal<=comm; se comparan dos columnas
14.SELECT ename, job, sal, comm
FROM emp
WHERE sal BETWEEN 1000 AND 1400;
15.SELECT ename, job, sal, comm
FROM emp
WHERE sal >=1000 AND sal <=1400; condición del where
equivalente a la del ejemplo anterior
16.SELECT empno, ename, mgr
FROM emp
WHERE mgr IN (7902, 7566, 7788);
17.SELECT empno, ename, mgr
FROM emp
WHERE mgr =7902 OR mgr=7566 OR mgr=7788; condición del
where equivalente a la del ejemplo anterior
18.SELECT empno, ename, job
FROM emp
WHERE job IN (‘MANAGER’, ‘ANALYST’);
19.SELECT empno, ename, job
FROM emp
02/07/09 Pàgina 7 de 12
8. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
WHERE job =‘MANAGER OR job=‘ANALYST’; condición del where
equivalente a la del ejemplo anterior
20.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘S%’; el nombre debe empezar por la letra S
21.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘%A’; el nombre debe acabar por la letra A
22.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘%A%’; el nombre debe contener una A
23.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘%A%A%’; el nombre debe contener dos A's
24.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘_A%’; el nombre debe contener una A en la
segunda posición
25.SELECT empno, ename
FROM emp
WHERE ename LIKE ‘%T_’; el nombre debe tener una T como
penúltimo carácter
26.SELECT empno, ename, hiredate, job
FROM emp
WHERE hiredate> ‘1981-3-1’
order by 3,4;
27.SELECT ename , mgr
FROM emp
WHERE mgr IS NULL;
WHERE mgr = NULL; incorrecto
28.SELECT empno, ename , job, sal
FROM emp
02/07/09 Pàgina 8 de 12
9. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
WHERE sal >=1100
AND job=’CLERK’;
29.SELECT empno, ename , job, sal
FROM emp
WHERE sal >=1100
OR job=’CLERK’;
30.SELECT ename, job
FROM emp
WHERE job NOT IN (‘MANAGER’, ‘ANALYST’, ‘CLERK’);
31.SELECT ename, job, sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 1500;
32.SELECT ename, job
FROM emp
WHERE ename NOT LIKE '%A%';
33.SELECT ename, job, comm
FROM emp
WHERE comm IS NOT NULL;
34.SELECT ename, job
FROM emp
WHERE job <>‘MANAGER AND job<>‘ANALYST’ AND job<> ‘CLERK’;
condición del where equivalente a la del ejemplo 30
35.SELECT ename, job, sal
FROM emp
WHERE sal < 1000 OR sal > 1500; condición del where equivalente
a la del ejemplo 31
¡Ojo!, no olvidar de repetir la columna
36.SELECT ename, job, sal
FROM emp
WHERE job ='SALESMAN' OR job ='PRESIDENT' AND sal >1500;
segundo primero
37.SELECT ename, job, sal
02/07/09 Pàgina 9 de 12
10. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
FROM emp
WHERE (job ='SALESMAN' OR job ='PRESIDENT' ) AND sal >1500;
primero segundo
38.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY sal;
39.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY job;
40.SELECT ename, hiredate
FROM emp
WHERE deptno=10
ORDER BY hiredate;
41.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY sal DESC;
42.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY job DESC;
43.SELECT ename, hiredate
FROM emp
WHERE deptno=10
ORDER BY hiredate DESC;
44.SELECT ename, comm
FROM emp
WHERE deptno=10
ORDER BY job, sal ;
45.SELECT ename, job, sal, comm
FROM emp
02/07/09 Pàgina 10 de 12
11. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
WHERE deptno=10
ORDER BY job, sal DESC;
46.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY job DESC , sal;
47.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY job DESC, sal DESC;
48.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY comm;
49.SELECT ename, job, sal, comm
FROM emp
WHERE deptno=10
ORDER BY comm DESC;
50.SELECT empno, ename, sal*12 AS sal_anual alias de columna
FROM emp
WHERE deptno=10
ORDER BY sal_anual; alias de columna
51. Supón que tenemos la consulta:
SELECT ename, job, sal
FROM emp
ORDER BY ....;
Si las filas que contiene la tabla EMP son las siguientes:
02/07/09 Pàgina 11 de 12
12. ETPC. Ensenyaments Professionals
CFGS Híbrid DAI/ASI-1
Crèdit 7. Sistemes Gestors de BDs Relacionals
Professora: Mª Paz Olañeta
EMP
ename job ... sal
Pepito Clerk ... 1000
Joana Clerk ... 1500
Andrea Clerk ... 2100
Joaquim Manager ... 3000
Anna Manager ... 3200
Indica en cada caso (a, b, c o d), cuál será el resultado de la consulta
a) ORDER BY job, sal;
b) ORDER BY job, sal DESC;
c) ORDER BY job DESC, sal;
d) ORDER BY job DESC , sal DESC;
02/07/09 Pàgina 12 de 12