SQLite Restricciones
Las restricciones son reglas aplicadas a las columnas de datos de una tabla. Se utilizan para limitar los tipos de datos que se pueden insertar en la tabla, lo que garantiza la precisión y fiabilidad de los datos en la base de datos.
Las restricciones pueden ser a 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.
Las siguientes son las restricciones más utilizadas en SQLite.
Restricción NOT NULL: asegura que una columna no pueda tener valores NULL.
Restricción DEFAULT: proporciona un valor predeterminado para una columna cuando no se especifica un valor.
Restricción UNIQUE: asegura que todos los valores en una columna sean diferentes.
Restricción PRIMARY KEY: identifica de manera única cada fila/registro en una tabla de base de datos.
Restricción CHECK: la restricción CHECK asegura que todos los valores en una columna cumplan una condición determinada.
Restricción NOT NULL
De forma predeterminada, una columna puede contener valores NULL. Si no desea que una columna tenga valores NULL, debe definir esta restricción en la columna, especificando que no se permiten valores NULL.
NULL no es lo mismo que no tener datos; representa datos desconocidos.
Ejemplo
Por ejemplo, la siguiente instrucción SQLite crea una nueva tabla COMPANY con cinco columnas, donde las columnas ID, NAME y AGE se especifican para no aceptar valores 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 DEFAULT
La restricción DEFAULT proporciona un valor predeterminado para 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 COMPANY con cinco columnas. Aquí, la columna SALARY se establece con un valor predeterminado de 5000.00. Por lo tanto, cuando la instrucción INSERT INTO no proporcione un valor para esa columna, se establecerá 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 UNIQUE
La restricción UNIQUE evita que dos registros tengan el mismo valor en una columna específica. En la tabla COMPANY, 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 COMPANY con cinco columnas. Aquí, la columna AGE se establece como UNIQUE, por lo que no puede haber 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 PRIMARY KEY
La restricción PRIMARY KEY identifica de manera única cada registro en una tabla de base de datos. En una tabla puede haber varias columnas UNIQUE, pero solo una clave primaria. La clave primaria es importante al diseñar tablas de base de datos. La clave primaria es un ID único.
Usamos la clave primaria para hacer referencia a las filas de la tabla. Se pueden crear relaciones entre tablas estableciendo la clave primaria como clave externa de otra tabla. Debido a un "descuido de codificación de larga data", en SQLite la clave primaria puede ser NULL, lo que difiere de otras bases de datos.
La clave primaria es un campo en una tabla que identifica de manera única cada fila/registro en una tabla de base de datos. La clave primaria debe contener valores únicos. La columna de clave primaria no puede tener valores NULL.
Una tabla solo puede tener una clave primaria, que puede constar de uno o más campos. Cuando varios campos actúan como clave primaria, se denominanclave compuesta。
Si una tabla define una clave primaria en cualquier campo, no puede haber dos registros con el mismo valor en esos campos.
Ejemplo
Ya hemos visto varios ejemplos de cómo creamos la tabla COMAPNY con ID como clave primaria:
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
Restricción CHECK
La restricción CHECK permite una condición que se verifica al ingresar un registro. Si el valor de la condición es falso, el registro viola la restricción y no se puede insertar en la tabla.
Ejemplo
Por ejemplo, la siguiente instrucción SQLite crea una nueva tabla COMPANY con cinco columnas. Aquí, agregamos CHECK a la columna SALARY, por lo que el salario no puede ser 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) );
Eliminar restricciones
En SQLite, para eliminar restricciones de una tabla, normalmente se necesita usarALTER TABLEla instrucción y especificar el tipo de restricción a eliminar.
Eliminar la restricción de clave primaria:
ALTER TABLE table_name DROP CONSTRAINT primary_key_name;
Aquí,table_namees el nombre de la tabla sobre la que deseas operar,primary_key_namees el nombre de la restricción de clave primaria que se va a eliminar.
Eliminar la restricción UNIQUE:
ALTER TABLE table_name DROP CONSTRAINT unique_constraint_name;
De manera similar,table_namees el nombre de la tabla,unique_constraint_namees el nombre de la restricción UNIQUE que se va a eliminar.
Eliminar la restricción de clave foránea:
ALTER TABLE table_name DROP CONSTRAINT foreign_key_constraint_name;
Aquí,table_namees el nombre de la tabla,foreign_key_constraint_namees el nombre de la restricción de clave foránea que se va a eliminar.
Otras extensiones