PostgreSQL Contraintes : types avec exemple
Qu'est-ce que la contrainte ?
Les types de données sont utilisés pour limiter le type d'informations pouvant être stockées dans une table. Mais il y a 2 problèmes avec cette approche.
- Problème 1: Les restrictions imposées par les types de données ne sont pas adaptées à certaines applications. Par exemple, une colonne contenant le prix d'un article ne doit accepter que des valeurs positives. Cependant, il n’existe pas de type de données spécifique qui accepte uniquement le nombre positif.
- Problème 2: Vous souhaiterez peut-être limiter les informations contenues dans les données d'une ligne/colonne par rapport à d'autres colonnes ou lignes. Par exemple, une table contenant des informations sur les éléments ne doit comporter qu'une seule ligne pour chaque contrainte de colonne unique.
Pour surmonter ces problèmes et définir ces règles, vous pouvez utiliser contraintes dans PostgreSQL. En termes simples, les contraintes sont des règles que vos données doivent suivre. L'ajout de contraintes de table permet au système de base de données de garantir l'intégrité des données.
Par conséquent, si un utilisateur tente de stocker des données dans une colonne qui viole une contrainte définie, un message d'erreur doit s'afficher.
Type de PostgreSQL contraintes
Jetons un coup d'oeil à différents types de PostgreSQL contrainte que vous pouvez créer pour garantir l’exactitude des données :
- Unique
- Non nul
- Vérifiez Constraint
- Clé primaire
- Clé étrangère
- Contrainte d'exécution
1) PostgreSQL Contrainte unique
Les contraintes uniques vous aident à garantir que les données contenues dans une colonne ou un groupe de contraintes de colonne sont uniques.
Exemple
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) Contraintes NON NULLes
Une contrainte non nulle définit qu'une colonne ne doit jamais avoir une valeur nulle. Ce type de contrainte est très similaire à la création d’une contrainte de vérification. Cependant, PostgreSQL crée une contrainte non nulle, qui est plus efficace. Le problème avec cette méthode est que vous ne pouvez pas donner de noms explicites aux contraintes non nulles.
La contrainte non nulle n'est pas une contrainte par défaut PostgreSQL standard et ne doit pas être utilisé dans les applications portables. Il a été ajouté plus tard dans PostgreSQL pour le rendre compatible avec d'autres Systèmes SGBD. Beaucoup l'utilisent car il permet de basculer facilement la contrainte dans un fichier de script.
syntaxe:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Vérifier les contraintes
Une contrainte de vérification vous aide à spécifier que la valeur d'une colonne doit être une expression booléenne.
Votre partenaire PostgreSQL La contrainte check se compose du mot-clé CHECK, qui est suivi d'une expression entre parenthèses. La contrainte de vérification Postgres devrait impliquer la colonne qui devrait être contrainte, sinon cela n'a aucun sens.
syntaxe:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
Mise en situation :
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) Contraintes clés primaires
Une contrainte de clé primaire vous permet d'utiliser une colonne ou un groupe de colonnes comme identifiant unique pour les lignes de la table. Pour définir des contraintes de clé primaire, vos valeurs déclarées doivent être à la fois uniques et non nulles. Cela permet à deux définitions de table d'accepter les mêmes données.
syntaxe:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
1 Exemple:
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) );
2 Exemple:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
3 Exemple:
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) Contraintes de clé étrangère
Une contrainte de clé étrangère spécifie que les valeurs d'une colonne ou d'un groupe de colonnes doivent correspondre aux valeurs apparaissant dans une ligne d'une autre table. Cela permet d'établir l'intégrité référentielle entre deux tables associées.
Supposons que vous disposiez d'une table qui stocke les commandes de différents produits. Vous voulez vous assurer que le tableau contient des commandes de produits qui existent. Donc, ici, vous devez définir une contrainte de clé étrangère dans la table des commandes qui fait référence à la table des produits.
syntaxe:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
2 Exemple:
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) Contraintes d'exclusion
Les contraintes d'exclusion vous aident à vous assurer que si deux lignes sont comparées l'une à l'autre sur les colonnes ou expressions spécifiées avec les opérateurs spécifiés, au moins une de ces comparaisons d'opérateurs renverra une valeur nulle ou fausse. L'ajout de ceci PostgreSQL la contrainte créera automatiquement un index du type spécifié dans la déclaration de contrainte.
Mise en situation :
Par exemple, ce qui suit PostgreSQL L'instruction crée une nouvelle table appelée School et ajoute cinq colonnes.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
Par exemple, ce qui suit PostgreSQL L'instruction crée une nouvelle table appelée Branch, qui ajoute trois colonnes. La colonne STD_ID est la clé étrangère et fait référence au champ ID de la table SCHOOL6.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );