A continuación, vamos a hablar de valores nulos. Un valor nulo representa un estado desconocido Utiliza NOT NULL en la definición de una columna cuando la columna debe contener solo valores de datos conocidos. Por ejemplo, tenemos la tabla Staff, tiene varias columnas algunas de ellas, al igual que la primera, la columna ID se definen como NOT NULL, significa que siempre deberás proporcionar un valor para esa columna. Luego tenemos la columna denominada DEPT y ésta se define como no nula. Pero cuando no proporciones un valor DB2 colocará el valor de 10. Así que cuando se coloca "with default 10” significa que el valor por defecto será 10 cuando no se proporciona ningún valor. Así, por ejemplo, no nulos son necesarios cuando se están definiendo las claves principales de DB2. Ahora vamos a hablar acerca de las tablas de catálogo del sistema. DB2 crea automáticamente las tablas de catálogo del sistema cuando se crea una base de datos. Siempre residen en el espacio de tablas syscat. Las tablas del catálogo del sistema contienen información de todos los objetos de la base de datos. Por ejemplo, cuando se crea un espacio de tablas esta información será almacenada en una o más tablas de catálogo cuando este espacio de tablas es referenciado en una operación posterior DB2 comprueba las tablas de catálogo correspondientes para ver si existe el espacio de tabla y si la operación está permitida. Sin las tablas del catálogo del sistema DB2 no es capaz de funcionar. Parte de la información contenida en las tablas de catálogo del sistema incluyen lo siguiente: definiciones de todos los objetos de la base de datos, tipos de datos de columna de las tablas y vistas, restricciones definidas, privilegios de objeto, dependencias de objetos, etc. Las tablas o vistas de catálogo del sistema utilizan los esquemas SYSIBM, SYSCAT o SYSSTAT. El esquema SYSIBM se utiliza para las tablas base del catálogo del sistema. El esquema SYSCAT se utiliza para las vistas definidas en base a las tablas de catálogo del sistema. Los usuarios de DB2 normalmente consultan las vistas de SYSCAT en vez de las tablas de SYSIBM tablas buscando información. El esquema SYSCAT se utiliza para las vistas que contienen información sobre estadísticas de base de datos, también está basado en las tablas del catálogo del sistema. Aunque no se pueden actualizar las tablas y vista de los esquemas SYSIBM y SYSCAT Si se pueden actualizar las vistas del esquema SYSCAT. Actualizaciones de estas vistas, a veces puede influir en el optimizador de DB2 para elegir un camino de acceso a los datos diferente. Ahora vamos a hablar de los espacios de tabla temporales de usuario. Las tablas temporales de usuario, pueden almacenar datos temporales que son los datos que serán destruidos después de una sesión o cuando la conexión termine. Las tablas temporales se utilizan normalmente en situaciones en las cuales se necesita realizar una operación sobre un conjunto de resultados grande lo requieres para almacenar el conjunto de resultados temporalmente y posteriormente procesarlo Aunque el registro (logging) de transacciones se permite con las tablas temporales, la mayoría de los usuarios no necesitan registrar los datos temporales. De hecho, al no haber registro de transacciones para este tipo de tablas, mejora el rendimiento. Las tablas temporales sólo existen para una conexión, por lo tanto, no hay concurrencia o problemas de bloqueo. Hay dos tipos de tablas temporales 'declare global temporary table' o DGTT y 'create global temporary table' o CGTT. Ambos son tablas temporales, pero las DGTT desaparecen por completo incluyendo la definición de la tabla. después que la aplicación se desconecta de la base de datos mientras que las CGTT mantienen la definición de la tabla aunque la tabla esté vacía.