Está en la página 1de 15

Comparaciones con valores NULL y lgica de tres valores

SQL tiene varias reglas para tratar con los valores NULL. NULL se utiliza para representar la ausencia de un valor, aunque normalmente tiene una de tres interpretaciones diferentes: valor desconocido (existe, pero no se conoce), valor no disponible (existe, pero no se especifica a propsito), o atributo no aplicable (no definido para esta tupla). A veces no es posible determinar el significado que se pretende.

Comparaciones con valores NULL y lgica de tres valores


En general, cada NULL es considerado diferente a cualquier otro NULL de la base de datos. Cuando en una comparacin se ve implicado un NULL, se considera que el resultado es UNKNOWN, o desconocido (podra ser TRUE o podra ser FALSE). Por tanto, SQL utiliza una lgica de tres valores con los valores TRUE, FALSE y UNKNOWN, en lugar de la lgica estndar de dos valores con TRUE o FALSE.

Comparaciones con valores NULL y lgica de tres valores


Las filas y las columnas representan los valores de los resultados de las expresiones booleanas (condiciones de comparacin) de tres valores, que normalmente aparecen en la clusula WHERE de una consulta SQL. Cada resultado de una expresin tendra un valor de TRUE, FALSE o UNKNOWN.

Comparaciones con valores NULL y lgica de tres valores


El resultado de combinar los dos mediante el conector lgico AND.

Comparaciones con valores NULL y lgica de tres valores


El resultado de utilizar OR.

Comparaciones con valores NULL y lgica de tres valores


El resultado de la operacin lgica NOT.

En la lgica booleana estndar, slo estn permitidos los valores TRUE o FALSE; no existe el valor UNKNOWN.

Comparaciones con valores NULL y lgica de tres valores


En las consultas seleccin-proyeccinconcatenacin, la regla general es que slo se seleccionan las combinaciones de tuplas que evalan la expresin lgica de la consulta como TRUE. Las combinaciones de tuplas que hacen una evaluacin de FALSE o UNKNOWN no son seleccionadas. Sin embargo, hay excepciones a esta regla con ciertas operaciones, como las concatenaciones externas. SQL permite consultas que comprueban si el

Comparaciones con valores NULL y lgica de tres valores


En lugar de utilizar = o <> para comparar el valor de un atributo con NULL, SQL utiliza IS o IS NOT. Esto es as porque SQL considera cada valor NULL distinto a cualquier otro valor NULL, por lo que la comparacin de igualdad no es apropiada. Resulta que cuando se especifica una condicin de concatenacin, las tuplas con valores NULL en los atributos de concatenacin no se incluyen en el resultado

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Algunas consultas requieren obtener valores existentes en la base de datos para usarlos despus en una condicin de comparacin. Dichas consultas se pueden formular convenientemente mediante consultas anidadas, que son bloques select-from-where completos dentro de la clusula WHERE de otra consulta. Esa otra consulta es la que se conoce como consulta externa.

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Si una consulta anidada devuelve un solo atributo y una sola tupla, el resultado de la consulta ser un solo valor (escalar). En estos casos, est permitido utilizar = en lugar de IN como operador de comparacin. En general, la consulta anidada devolver una tabla (relacin), que es un conjunto o un multiconjunto de tuplas. SQL permite el uso de tuplas de valores en las comparaciones colocndolas entre parntesis.

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Adems del operador IN, es posible utilizar otros operadores de comparacin para comparar un solo valor v (normalmente el nombre de un atributo) con un conjunto o multiconjunto V(normalmente, una consulta anidada). El operador = ANY (o = SOME) devuelve TRUE si el valor v es igual a algn valor del conjunto V y, por tanto, es equivalente a IN. Las palabras clave ANY y SOME tienen el mismo significado.

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


La palabra clave ALL tambin se puede combinar con cada uno de estos operadores. Por ejemplo, la condicin de comparacin (v_> ALL V) devuelve TRUE si el valor v es mayor que todos los valores del conjunto (o multiconjunto) V. En general, podemos tener varios niveles de consultas anidadas.

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Una vez ms nos podemos enfrentar a una posible ambigedad con el nombre de los atributos si existen varios atributos con el mismo nombre: uno en una relacin de la clusula FROM de la consulta externa, y otro en una relacin de la clusula FROM de la consulta anidada. La norma es que una referencia a un atributo sin calificar se refiere a la relacin declarada en la consulta anidada ms interna.

Consultas anidadas, tuplas y comparaciones conjunto/multiconjunto


Existen reglas que son parecidas a las reglas de mbito de las variables de programacin en la mayora de los lenguajes de programacin que permiten procedimientos y funciones anidados. Es generalmente aconsejable crear variables de tupla (alias) para todas las tablas referenciadas en una consulta SQL a fin de evitar errores y ambigedades potenciales.

También podría gustarte