AnteriorPosterior

7 - Valores nulos

Por: Nacho Cabanes
Actualizado: 17-04-2019 10:53
Tiempo de lectura estimado: 4.5 min.

 

SQL y MySQL

7.1 Cero y valor nulo

En ocasiones querremos dejar un campo totalmente vacío, sin valor.

Para las cadenas de texto, existe una forma "parecida" de conseguirlo, que es con una cadena vacía, indicada con dos comillas que no contengan ningún texto entre ellas (ni siquiera espacios en blanco): ''

En cambio, para los números, no basta con guardar un 0 para indicar que no se sabe el valor: no es lo mismo un importe de 0 euros que un importe no detallado. Por eso, existe un símbolo especial para indicar cuando no existe valor en un campo (tanto en valores numéricos como en textos).

Este símbolo especial es la palabra NULL. Por ejemplo, añadiríamos datos parcialmente en blanco a una tabla haciendo

INSERT INTO personas
  (nombre, direccion, edad)
VALUES (
 'pedro', '', NULL
);

 

En el ejemplo anterior, y para que sea más fácil comparar las dos alternativas, he conservado las comillas sin contenido para indicar una dirección vacía, y he usado NULL para la edad, pero sería más correcto usar NULL en ambos casos para indicar que no existe valor, así:

INSERT INTO personas
  (nombre, direccion, edad)
VALUES (
 'pedro', NULL, NULL
);

Para saber si algún campo está vacío, compararíamos su valor con NULL, pero de una forma un tanto especial: no con el símbolo "igual" (=), sino con la palabra IS. Por ejemplo, sabríamos cuales de las personas de nuestra bases de datos tienen dirección usando

SELECT * FROM personas
  WHERE direccion IS NOT NULL;

Y, de forma similar, sabríamos quien no tiene dirección, así:

SELECT * FROM personas
  WHERE direccion IS NULL;

En el momento de crear la tabla, a no ser que se indique lo contrario, los valores de cualquier campo podrán ser nulos, excepto para las claves primarias. Si se desea que algún campo no pueda tener valores nulos, se puede añadir NOT NULL en el momento de definir la tabla, así:

CREATE TABLE ciudades (
  codigo varchar(3) PRIMARY KEY,
  nombre varchar(30) NOT NULL
);

7.2. Ejercicios propuestos

(Estos ejercicios también parten de la base de datos "ejercicio5" o "ejercicio4").

  • 7.1. Crea una base de datos "ejercicio7", con una única tabla "ciudades". Cada ciudad tendrá un código (clave primaria), un nombre (no nulo) y una cantidad de habitantes (que sí podrá tener valores nulos).
  • 7.2. Añade las ciudades: Boston (código BO, 4.180.000 habitantes) y Kyoto (código KY, sin indicar el número de habitantes).
  • 7.3. Intenta añadir la ciudad Astana, sin código.
  • 7.4. Intenta añadir la ciudad de código ELX pero de la que aún no sabemos el nombre.
  • 7.5. Muestra el nombre y población de todas las ciudades para las que sabemos la cantidad de habitantes, ordenadas de la menos poblada a la más poblada.
  • 7.6. Muestra el nombre de las ciudades que tienen 0 habitantes, ordenadas alfabéticamente.
  • 7.7. Muestra el nombre de las ciudades para las que no conocemos la cantidad de habitantes, ordenadas alfabéticamente.

337 visitas desde el 17-04-2019

AnteriorPosterior