PostgreSQL Constrângeri: Tipuri cu Exemplu

Ce este constrângerea?

Tipurile de date sunt folosite pentru a limita tipul de informații care pot fi stocate într-un tabel. Dar există 2 probleme cu această abordare.

  • Problema 1: Restricțiile impuse de tipurile de date nu sunt adecvate pentru anumite aplicații. De exemplu, o coloană care conține un preț al articolului ar trebui să accepte numai valori pozitive. Cu toate acestea, nu există un tip de date specific care acceptă doar numărul pozitiv.
  • 2 problemă: Poate doriți să limitați informațiile dintr-un rând/coloană de date în raport cu alte coloane sau rânduri. De exemplu, un tabel care conține informații despre articol ar trebui să aibă doar un rând pentru fiecare constrângere de coloană unică.

Pentru a depăși astfel de probleme și a defini aceste reguli, puteți utiliza constrângeres în PostgreSQL. În termeni simpli, constrângerile sunt reguli pe care datele dvs. trebuie să le respecte. Adăugarea de constrângeri la tabel permite sistemului bazei de date să impună integritatea datelor.

Prin urmare, dacă un utilizator încearcă să stocheze date într-o coloană care încalcă o constrângere definită, ar trebui să fie afișat un mesaj de eroare.

Tip de PostgreSQL Constrângerile

Să aruncăm o privire asupra diferitelor tipuri de PostgreSQL constrângere pe care o puteți crea pentru a asigura corectitudinea datelor:

  • Unic
  • Nu nul
  • Verificați constrângerea
  • Cheia principala
  • Cheie externă
  • Constrângere de execuție

1) PostgreSQL Constrângere unică

Constrângerile unice vă ajută să vă asigurați că datele conținute într-o coloană sau într-un grup de constrângeri pe coloană sunt unice.

Exemplu

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

2) NU Constrângeri nule

O constrângere nenulă definește că o coloană nu trebuie să fie niciodată o valoare nulă. Acest tip de constrângere este foarte asemănător cu crearea unei constrângeri de verificare. In orice caz, PostgreSQL creează o constrângere nu nulă, care este mai eficientă. Problema cu această metodă este că nu puteți da nume explicite constrângerilor care nu sunt nule.

Constrângerea not null nu este implicită PostgreSQL standard și nu trebuie utilizat în aplicații portabile. A fost adăugat ulterior PostgreSQL pentru a-l face compatibil cu altele sisteme DBMS. Mulți îl folosesc pentru că facilitează comutarea constrângerii într-un fișier script.

Sintaxă:

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

3) PostgreSQL Verificați Constrângeri

O constrângere de verificare vă ajută să specificați că valoarea dintr-o coloană trebuie să fie o expresie booleană.

PostgreSQL constrângerea de verificare constă din cuvântul cheie CHECK, care este urmat de o expresie între paranteze. Constrângerea de verificare Postgres ar trebui să implice coloana care ar trebui să fie constrânsă, altfel nu are niciun sens.

Sintaxă:

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

Exemplu:

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) Constrângeri cheie primară

O constrângere a cheii primare vă permite să utilizați o coloană sau un grup de coloane ca identificator unic pentru rândurile din tabel. Pentru a defini constrângerile cheii primare, valorile dvs. declarate ar trebui să fie atât unice, cât și nu nule. Acest lucru permite două definiții de tabel să accepte aceleași date.

Sintaxă:

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

Exemplu 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)
);

Exemplu 2:

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

Exemplu 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) Constrângeri de cheie străină

O constrângere de cheie externă specifică faptul că valorile dintr-o coloană sau dintr-un grup de coloane trebuie să se potrivească cu valorile care apar pe un rând al altui tabel. Acest lucru vă permite să stabiliți integritatea referențială între două tabele asociate.

Să presupunem că aveți un tabel care stochează comenzi pentru diferite produse. Doriți să vă asigurați că tabelul conține comenzi de produse care există. Deci, aici, trebuie să definiți o constrângere de cheie străină în tabelul de comenzi care face referire la tabelul de produse.

Sintaxă:

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

Exemplu 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) Constrângeri de excludere

Constrângerile de excludere vă ajută să vă asigurați că, dacă oricare două rânduri sunt comparate între ele pe coloanele sau expresiile specificate cu operatori specificați, atunci cel puțin una dintre aceste comparații de operator va returna o valoare nulă sau falsă. Adăugând asta PostgreSQL constraint va crea automat un index de tipul specificat în declarația de constrângere.

Exemplu:

De exemplu, următoarele PostgreSQL declarația creează un nou tabel numit School și adaugă cinci coloane.

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

De exemplu, următoarele PostgreSQL instrucțiunea creează un nou tabel numit Branch, care adaugă trei coloane. Coloana STD_ID este cheia externă și face referire la câmpul ID din tabelul SCHOOL6.

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

Buletin informativ zilnic Guru99

Începe-ți ziua cu cele mai recente și importante știri despre inteligența artificială, livrate chiar acum.