SQLite - Restricciones

Las restricciones son las reglas que se aplican a las columnas de datos de la tabla. Se utilizan para limitar el tipo de datos que pueden incluirse en una tabla. Esto asegura la precisión y confiabilidad de los datos en la base de datos.

Las restricciones pueden ser de nivel de columna o de tabla. Las restricciones a nivel de columna se aplican solo a una columna, mientras que las restricciones a nivel de tabla se aplican a toda la tabla.

A continuación, se muestran las restricciones de uso común disponibles en SQLite.

  • NOT NULL Constraint - Asegura que una columna no pueda tener un valor NULL.

  • DEFAULT Constraint : Proporciona un valor predeterminado para una columna cuando no se especifica ninguno.

  • UNIQUE Constraint - Garantiza que todos los valores de una columna sean diferentes.

  • PRIMARY Key - Identifica de forma única cada fila / registro en una tabla de base de datos.

  • CHECK Constraint - Garantiza que todos los valores de una columna cumplan determinadas condiciones.

Restricción NOT NULL

De forma predeterminada, una columna puede contener valores NULL. Si no desea que una columna tenga un valor NULL, entonces debe definir dicha restricción en esta columna especificando que NULL ahora no está permitido para esa columna.

Un NULL no es lo mismo que sin datos, sino que representa datos desconocidos.

Ejemplo

Por ejemplo, la siguiente declaración SQLite crea una nueva tabla llamada EMPRESA y agrega cinco columnas, tres de las cuales, ID, NOMBRE y EDAD, especifican no aceptar NULL.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Restricción POR DEFECTO

La restricción DEFAULT proporciona un valor predeterminado a una columna cuando la instrucción INSERT INTO no proporciona un valor específico.

Ejemplo

Por ejemplo, la siguiente instrucción SQLite crea una nueva tabla llamada EMPRESA y agrega cinco columnas. Aquí, la columna SALARIO se establece en 5000,00 de forma predeterminada, por lo tanto, en caso de que la instrucción INSERT INTO no proporcione un valor para esta columna, esta columna se establecerá de forma predeterminada en 5000,00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Restricción ÚNICA

La restricción UNIQUE evita que dos registros tengan valores idénticos en una columna en particular. En la tabla EMPRESA, por ejemplo, es posible que desee evitar que dos o más personas tengan la misma edad.

Ejemplo

Por ejemplo, la siguiente instrucción SQLite crea una nueva tabla llamada EMPRESA y agrega cinco columnas. Aquí, la columna EDAD se establece en ÚNICA, por lo que no puede tener dos registros con la misma edad:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Restricción de CLAVE PRIMARIA

La restricción PRIMARY KEY identifica de forma única cada registro en una tabla de base de datos. Puede haber más columnas ÚNICAS, pero solo una clave principal en una tabla. Las claves primarias son importantes al diseñar las tablas de la base de datos. Las claves primarias son ID únicos.

Los usamos para referirnos a las filas de la tabla. Las claves primarias se convierten en claves externas en otras tablas, al crear relaciones entre tablas. Debido a una 'supervisión de codificación de larga data', las claves primarias pueden ser NULL en SQLite. Este no es el caso de otras bases de datos.

Una clave primaria es un campo en una tabla que identifica de forma única cada fila / registro en una tabla de base de datos. Las claves primarias deben contener valores únicos. Una columna de clave principal no puede tener valores NULL.

Una tabla solo puede tener una clave principal, que puede constar de uno o varios campos. Cuando se utilizan varios campos como clave principal, se denominancomposite key.

Si una tabla tiene una clave primaria definida en cualquier campo, entonces no puede tener dos registros que tengan el mismo valor de ese campo.

Ejemplo

Ya ha visto varios ejemplos arriba en los que hemos creado la tabla EMPRESA con el ID como clave principal.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

VERIFICAR Restricción

CHECK Constraint habilita una condición para verificar el valor que se ingresa en un registro. Si la condición se evalúa como falsa, el registro viola la restricción y no se ingresa en la tabla.

Ejemplo

Por ejemplo, el siguiente SQLite crea una nueva tabla llamada EMPRESA y agrega cinco columnas. Aquí, agregamos un CHEQUE con la columna SALARIO, para que no pueda tener SALARIO Cero.

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Dejar caer la restricción

SQLite admite un subconjunto limitado de ALTER TABLE. El comando ALTER TABLE en SQLite permite al usuario cambiar el nombre de una tabla o agregar una nueva columna a una tabla existente. No es posible cambiar el nombre de una columna, eliminar una columna o agregar o eliminar restricciones de una tabla.