Restricciones de PostgreSQL: tipos con ejemplo

¿Qué es Restricción?

Los tipos de datos se utilizan para limitar el tipo de información que se puede almacenar en una tabla. Pero hay dos problemas con este enfoque.

  • 1 tema: Las restricciones impuestas por los tipos de datos no son adecuadas para determinadas aplicaciones. Por ejemplo, una columna que contiene el precio de un artículo solo debe aceptar valores positivos. Sin embargo, no existe un tipo de datos específico que solo acepte el número positivo.
  • Problema 2: Es posible que desee limitar la información en los datos de una fila/columna en relación con otras columnas o filas. Por ejemplo, una tabla que contiene información de elementos debe tener solo una fila para cada restricción de columna única.

Para superar estos problemas y definir estas reglas, puede utilizar restriccións en PostgreSQL. En términos simples, las restricciones son reglas que sus datos deben seguir. Agregar restricciones a la tabla permite que el sistema de base de datos aplique la integridad de los datos.

Por lo tanto, si un usuario intenta almacenar datos en una columna que viola una restricción definida, debería mostrarse un mensaje de error.

Tipo de restricciones de PostgreSQL

Echemos un vistazo a varios tipos de restricciones de PostgreSQL que puede crear para garantizar la corrección de los datos:

  • Unique
  • No nulo
  • de restricción de comprobación
  • Clave primaria
  • Clave externa
  • Restricción de ejecución

1) Restricción única de PostgreSQL

Las restricciones únicas le ayudan a garantizar que los datos contenidos en una columna o en un grupo de restricciones de columnas sean únicos.

Ejemplo

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

2) Restricciones NO nulas

Una restricción no nula define que una columna nunca debe tener un valor nulo. Este tipo de restricción es muy similar a la creación de una restricción de verificación. Sin embargo, PostgreSQL crea una restricción no nula, que es más eficiente. El problema con este método es que no se pueden dar nombres explícitos a restricciones no nulas.

La restricción no nula no es un estándar PostgreSQL predeterminado y no debe usarse en aplicaciones portátiles. Posteriormente se agregó en PostgreSQL para hacerlo compatible con algún otro sistemas DBMS. Muchos lo usan porque facilita alternar la restricción en un archivo de script.

Sintaxis:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

3) Restricciones de verificación de PostgreSQL

Una restricción de verificación le ayuda a especificar que el valor de alguna columna debe ser una expresión booleana.

La restricción de verificación de PostgreSQL consta de la palabra clave CHECK, seguida de una expresión entre paréntesis. La restricción de verificación de Postgres debería involucrar la columna que debería estar restringida, de lo contrario no tendría ningún sentido.

Sintaxis:

CREATE TABLE Item(
Item_id INTEGER PRIMARY KEY,
name VARCHAR(20),
Item_price NUMERIC CHECK(price>0)
);

Ejemplo:

CREATE TABLE Emp(
ID	INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l) check(gender gender='M'),
Salary INTEGER NOT NULL,
Dept_Num INTEGER
);
CREATE TABLE ITEM(
Id INTEGER PRIMARY KEY,
name VARCHAR(15),
price numeric CHECK (price > 0)
);

4) Restricciones de clave primaria

Una restricción de clave principal le permite utilizar una columna o grupo de columnas como identificador único para las filas de la tabla. Para definir restricciones de clave principal, los valores declarados deben ser únicos y no nulos. Esto permite que dos definiciones de tablas acepten los mismos datos.

Sintaxis:

Create Table Item(
Item_no, integer PRIMARY KEY,
Item_name text,
Item_Price numeric
);

Ejemplo 1:

CREATE TABLE Employee(
ID INTEGER PRIMARY KEY
Fname VARCHAR(20),
Lname VARCHAR(20),
Gender CHAR(l),
Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME)
);

Ejemplo 2:

CREATE TABLE first(
A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl)
);
Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER.
);

Ejemplo 3:

CREATE TABLE Items (
Item_no integer UNIQUE NOT NULL, name text, price numeric
CREATE TABLE Items (
Items_no no integer PRIMARY KEY, name text, price numeric

5) Restricciones de clave externa

Una restricción de clave externa especifica que los valores de una columna o un grupo de columnas deben coincidir con los valores que aparecen en alguna fila de otra tabla. Esto le permite establecer la integridad referencial entre dos tablas asociadas.

Supongamos que tiene una tabla que almacena pedidos de diferentes productos. Desea asegurarse de que la tabla contenga pedidos de productos que existen. Entonces, aquí debe definir una restricción de clave externa en la tabla de pedidos que haga referencia a la tabla de productos.

Sintaxis:

CREATE TABLE	(
id INTEGER PRIMARY KEY. name VARCHAR(IO)
>;
CREATE TABLE testable
Id INTEGER PRIMARY KEY
read INTEGER REFERENCES	(id)
);

Ejemplo 2:

CREATE TABLE Student (
Std_ID INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l),
Steam, VARCHAR(20),
Dept_NUM INTEGER REFERENCES Department
);

6) Restricciones de exclusión

Las restricciones de exclusión le ayudan a asegurarse de que si dos filas cualesquiera se comparan entre sí en las columnas o expresiones especificadas con operadores especificados, al menos una de estas comparaciones de operadores devolverá un valor nulo o falso. Agregar esta restricción de PostgreSQL creará automáticamente un índice del tipo especificado en la declaración de restricción.

Ejemplo:

Por ejemplo, el siguientewing La declaración PostgreSQL crea una nueva tabla llamada Escuela y agrega cinco columnas.

CREATE TABLE SCHOOL6(
STDID INT PRIMARY KEY NOT NULL,
STDNAME TEXT NOT NULL,
STDAGE INT NOT NULL,
FEEDBACK CHAR(50),
STANDARD INT NOT NULL,

Por ejemplo, el siguientewing La declaración PostgreSQL crea una nueva tabla llamada Rama, que agrega tres columnas. La columna STD_ID es la clave externa y hace referencia al campo ID de la tabla SCHOOL6.

CREATE TABLE BRANCH (
BRANCHCODE INT PRIMARY KEY NOT NULL,
BRAMCHNAME CHAR(50) NOT NULL,
STD_ID INT references SCHOOL6(ID)
);