Programación de Bases de Datos con SQL 3-1: Comparaciones Lógicas y
Reglas de Precedencia
Actividades de Práctica
Objetivos
• Evaluar las comparaciones lógicas para restringir las filas devueltas en función de dos o más
condiciones
• Aplicar las reglas de prioridad para determinar el orden en el que se evalúan y calculan las
expresiones
Terminología
Identifique el término para cada una de las siguientes definiciones.
NOT Invierte el valor de la condición
AND Ambas condiciones deben ser verdaderas para que se pueda
seleccionar un registro.
REGLAS DE PRIORIDAD Reglas que determinan el orden en el que se evalúan y calculan
las expresiones
OR Cualquier condición puede ser verdadera para que se pueda
seleccionar un registro
Inténtelo/Resuélvalo
1. Ejecute las dos consultas siguientes. ¿Por qué producen dos resultados diferentes estas
sentencias casi idénticas? Indique cuál es la diferencia y explique la causa.
SELECT code, description
FROM d_themes
WHERE code >200 AND description IN('Tropical', 'Football', 'Carnival');
SELECT code, description
FROM d_themes
WHERE code >200 OR description IN('Tropical', 'Football', 'Carnival');
La diferencia radica en los operadores usados mientras que en la sentencia superior usan
and, que solo arrojara resultados si code es mayor a 200 y además en la descripción
tiene tropical o football o carnaval, es decir se tienen que cumplir 2 condiciones con este
operados, mientras que en la sentencia inferior al usar el operador or arrojara resultados
si code es mayor a 200 o en la
descripción contiene tropical o
football o int, por lo tanto
solo debe cumplir una de las dos
condiciones.
si code es mayor a 200 o en la descripción contiene tropical o football o int, por lo tanto
solo debe cumplir una de las dos condiciones.
2. Muestre los apellidos de todos los empleados de Global Fast Foods que tienen una “e” y una “i”
en sus apellidos.
SELECT LAST_NAME
FROM F_STAFFS
WHERE LAST_NAME LIKE '%e%'
AND LAST_NAME LIKE '%i%';
Miller
SELECT LAST_NAME
FROM F_STAFFS
WHERE LAST_NAME LIKE '%e%' AND LAST_NAME LIKE '%i%';
3. Necesito saber quiénes son los empleados de Global Fast Foods que ganan más de 6,50 $/hora
cuyo cargo no sea tomador de pedidos.
SELECT FIRST_NAME
FROM F_STAFFS
WHERE SALARY >6.50 AND STAFF_TYPE <> 'Order Taker';
Bob
Monique
4. Utilizando la tabla employees, escriba una consulta para mostrar todos los empleados cuyos
apellidos empiezan por “D” y tienen una “a” y una “e” en cualquier lugar en su apellido.
Davies
De Haan
5. ¿En qué lugares ha celebrado eventos DJs on Demand que no eran casas particulares?
4 Mahogany Drive, Boston, MA 10010
87 Park Avenue, San Diego, CA 28978
200 Pennsylvania Ave, Washington D.C. 09002
6. ¿Qué lista de operadores tiene el orden correcto de mayor a menor prioridad?
a. AND, NOT, OR
b. NOT, OR, AND
c. NOT, AND, OR
Para las preguntas 7 y 8, escriba las sentencias SQL que producirán la salida deseada.
7. ¿Quién soy?
Fui contratado por Oracle después de mayo de 1998, pero antes de junio de 1999. Mi
salario es inferior a 8000 $ al mes y tengo una “en” en mi apellido.
SELECT LAST_NAME,
FIRST_NAME
FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN
'01-Jun-1998' AND '31-May-1999'
AND SALARY
<8000 AND LAST_NAME LIKE
'%en%';
Lorentz Diana
SELECT LAST_NAME, FIRST_NAME
FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN '01-Jun-1998' AND '31-May-1999' AND SALARY
<8000 AND LAST_NAME LIKE '%en%';
Lorentz
Diana
8. ¿Cuál es mi dirección de correo electrónico?
Debido a que he estado trabajando para Oracle desde el inicio de 1996, gano más de 9000 $ al
mes. Como gano un sueldo tan alto, no recibo comisión.
Hartstein Michael
SELECT LAST_NAME,
FIRST_NAME
FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN
'01-Jan-1996' AND '31-Dec-1996'
AND SALARY >9000
AND COMMISSION_PCT IS
NULL
Hartstein Michael
SELECT LAST_NAME, FIRST_NAME
FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN '01-Jan-1996' AND '31-Dec-1996' AND SALARY >9000
AND COMMISSION_PCT IS NULL