sábado, 24 de diciembre de 2016

CONSTRAINT al crear una tabla con SQL en LibreOffice Base (XX)

LibreOffice Base
las CONSTRAINT  son también unas restricciones que se aplican a la tabla  pero se definen de forma diferente a la hora de crear una tabla en  nuestra base de datos de LibreOffice Base con la instrucción CREATE TABLE de SQL.

Estas restricciones definen condiciones que deben cumplirse cuando se introducen datos.




Observe la siguiente instrucción:

CREATE TABLE "Socios" ("ID" INT GENERATED BY DEFAULT AS IDENTITY
(START WITH  1, INCREMENT BY 1) PRIMARY KEY,
"Apellidos" VARCHAR(50) NOT NULL,
"Nombre" VARCHAR(50) NOT NULL,
"Especialidad" VARCHAR(100),
"Número socio"  INT NOT NULL,
"Fecha Alta" DATE  DEFAULT TODAY,
"Fecha Baja" DATE  DEFAULT TODAY,
"Estado" BOOLEAN,
"Ingresos" INT NOT NULL,
CONSTRAINT "comprobaciones" UNIQUE ("Número socio"),
CHECK ("Ingresos">999 AND "Ingresos"<10001));

Con esta instrucción crearemos una tabla llamada Especialistas, el campo clave será ID que se lo hemos indicado con la cláusuala PRIMARY KEY, la cláusula GENERATED BY DEFAULT AS IDENTITY (START WITH  1, INCREMENT BY 1), indicará que es un campo autoincremental, que comienza en el valor uno y se incrementa en uno.

Seguidamente hemos declarado varios campos con la cláusula NOT NULL, los campos no tendrán valores nulos, no confundir con espacios.

La ayuda de LibreOffice lo explica muy bien, NULL es una cadena vacía es una cadena con longitud cero (""). Normalmente, un valor NULL no es lo mismo que una cadena vacía. En general, el termino NULL es usado para denotar un valor indefinido, un valor desconocido, o "un valor no ingresado aun.". Los sistemas de bases de datos varían y pueden manejar un valor NULL de manera diferente. Referirse a las documentaciones de las bases de datos que se están usando.

Para terminar tenemos unos campos tipo DATE, a los cuales les hemos incluido la cláusula DEFAULT TODAY, para que por defecto inserte la fecha del día

Los campos tipo DATE, TIME o TIMESTAMP  puede inicializarlos con CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, TODAY, NOW.

Si desea saber mas sobre los tipos de campos consulte el artículo, LibreOffice Base - Tipos de datos.

Como hemos explicado al comienzo del capítulo, los o las CONSTRAINT definen una serie de condiciones que deben cumplirse cuando se introducen datos, son una restricciones añadidas a la tabla para controlar los datos que van insertándose en los campos de la tabla.

Estas CONSTRAINT se definen de la siguiente forma:

CONSTRAINT "comprobaciones"

Después de esto comenzaremos a definir nuestras restricciones para la tabla, en este caso le hemos aplicado al campo Número socio, que sea único o que no haya otro registro con el mismo va valor.

Otra restricción que hemos aplicado es:

CHECK ("Ingresos">999 AND "Ingresos"<10001))

Para que los valores que se vayan ingresando en el campo Ingresos, sean superiores a 999 y menores de 10001.

En primer lugar introduciremos nuestra instrucción SQL, haga clic en Herramientas - SQL... 

LibreOffice Base y SQL

Nos muestra el siguiente cuadro de diálogo, donde puede introducir sentencias SQL directas, visualizando el resultado en el campo estado y salida.

LibreOffice Base y SQL

Introduzca la sentencia en el campo Orden a ejecutar y haga clic en el botón Ejecutar.

LibreOffice Base y SQL

Nos mostrará el estado de haber ejecutado esta instrucción en el cuadro de texto Estado, haga clic en el botón Cerrar.

LibreOffice Base y SQL

En principio no muestra la nueva tabla que se ha creado.

LibreOffice Base y SQL

Haga clic en la barra de menú en la opción Ver - Actualizar tablas.

LibreOffice Base y SQL

Le mostrará la nueva tabla que creo con la ejecución directa de la  instrucción SQL.

LibreOffice Base y SQL

Haga doble clic sobre ella para comprobar que se creo correctamente. Como hemos dicho al comienzo del capítulo los campos de Apellidos y Nombre pueden ir a espacios pero no los iniciará a nulos, las fecha en caso de no introducirlas las iniciará con la fecha del día.

Puede rellenar los campos en la base de datos, provocaremos un error para comprobar que funciona la definición que hemos definido, dejamos vacío el campo Número de socio e intentamos añadir un nuevo registro a la tabla, para ver que nos muestra.

Al intentar añadir un nuevo registro sin haber terminado de rellenar los campos que les hemos definido una CONSTRAINT, nos muestra este error.

LibreOffice Base y SQL

Si hacemos clic en el botón Más nos amplia la información.

LibreOffice Base y SQL

Seguimos probando y volvemos a provocar otro error, en este caso con el campo Ingresos, vamos a insertar un vamos menor de 1000. Al intentar añadir un nuevo registro sin haber terminado de rellenar los campos que les hemos definido una CONSTRAINT, nos muestra este error.

LibreOffice Base y SQL

SI hacemos clic en el botón Más nos amplia la información.

LibreOffice Base y SQL

Insertamos los datos corrector y pasamos a otro registro.

LibreOffice Base y SQL

En los próximos capítulos iremos viendo algunas variantes de esta instrucción SQL. Le recomiendo leer el artículo ver las CONSTRAINT de una Base de datos en LibreOffice Base con SQL (XXI).

0 comentarios:

Publicar un comentario