PostgreSQL Begrænsninger: Typer med eksempel

Hvad er begrænsning?

Datatyper bruges til at begrænse den type information, der kan gemmes i en tabel. Men der er 2 problemer med denne tilgang.

  • Udgave 1: Begrænsninger håndhævet af datatyper er ikke tilstrækkelige til visse applikationer. For eksempel bør en kolonne, der indeholder en varepris, kun acceptere positive værdier. Der er dog ingen specifik datatype, som kun accepterer det positive tal.
  • Issue 2: Du vil muligvis begrænse oplysningerne i en række/kolonne data i forhold til andre kolonner eller rækker. For eksempel bør en tabel, der indeholder vareoplysninger, kun have én række for hver unik kolonnebegrænsning.

For at overvinde sådanne problemer og definere disse regler, kan du bruge tvangsi PostgreSQL. Enkelt sagt er begrænsninger regler, som dine data skal følge. Tilføjelse af tabelbegrænsninger gør det muligt for databasesystemet at håndhæve dataintegritet.

Derfor, hvis en bruger forsøger at gemme data i en kolonne, der overtræder en defineret begrænsning, skal der vises en fejlmeddelelse.

Type PostgreSQL Begrænsninger

Lad os tage et kig på forskellige typer PostgreSQL begrænsning, du kan oprette for at sikre datakorrekthed:

  • Enestående
  • Ikke Nul
  • Tjek begrænsning
  • Primærnøgle
  • Fremmed nøgle
  • Udførelsesbegrænsning

1) PostgreSQL Unik begrænsning

Unikke begrænsninger hjælper dig med at sikre, at dataene i en kolonne eller en gruppe af kolonnebegrænsninger er unikke.

Eksempel

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

2) IKKE nul-begrænsninger

En ikke-null-begrænsning definerer, at en kolonne aldrig må være en null-værdi. Denne type begrænsning minder meget om at oprette en tjekbegrænsning. Imidlertid, PostgreSQL skaber en ikke-nul begrænsning, hvilket er mere effektivt. Problemet med denne metode er, at du ikke kan give eksplicitte navne til ikke-null-begrænsninger.

Ikke null-begrænsningen er ikke en standard PostgreSQL standard og bør ikke bruges i bærbare applikationer. Det blev senere tilføjet PostgreSQL for at gøre det kompatibelt med noget andet DBMS systemer. Mange bruger det, fordi det gør det nemt at skifte mellem begrænsningen i en scriptfil.

Syntaks:

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

3) PostgreSQL Tjek begrænsninger

En kontrolbegrænsning hjælper dig med at angive, at værdien i en kolonne skal være et boolesk udtryk.

PostgreSQL check constraint består af nøgleordet CHECK, som efterfølges af et udtryk i parentes. Check-begrænsningen Postgres bør involvere den kolonne, der skal begrænses, ellers giver den ingen mening.

Syntaks:

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

Eksempel:

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) Primære nøglebegrænsninger

En primær nøglebegrænsning giver dig mulighed for at bruge en kolonne eller gruppe af kolonner som en unik identifikator for rækker i tabellen. For at definere primærnøglebegrænsninger skal dine deklarerede værdier være både unikke og ikke null. Dette gør det muligt for to tabeldefinitioner at acceptere de samme data.

Syntaks:

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

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

Eksempel 2:

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

Eksempel 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) Udenlandske nøglebegrænsninger

En fremmednøgle-begrænsning angiver, at værdierne i en kolonne eller en gruppe af kolonner skal matche de værdier, der vises i en række i en anden tabel. Dette giver dig mulighed for at etablere referenceintegriteten mellem to tilknyttede tabeller.

Lad os antage, at du har et bord, der gemmer ordrer på forskellige produkter. Du vil sikre dig, at tabellen indeholder ordrer af produkter, der findes. Så her skal du definere en fremmednøglebegrænsning i ordretabellen, der refererer til produkttabellen.

Syntaks:

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

Eksempel 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) Udelukkelsesbegrænsninger

Ekskluderingsbegrænsninger hjælper dig med at sikre, at hvis to rækker sammenlignes med hinanden i de angivne kolonner eller udtryk med specificerede operatorer, så vil mindst én af disse operatorsammenligninger returnere en nul- eller falsk værdi. Tilføjer dette PostgreSQL constraint vil automatisk oprette et indeks af den type, der er angivet i constraint-erklæringen.

Eksempel:

For eksempel følgende PostgreSQL statement opretter en ny tabel kaldet Skole og tilføjer fem kolonner.

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

For eksempel følgende PostgreSQL statement opretter en ny tabel kaldet Branch, som tilføjer tre kolonner. Kolonnen STD_ID er fremmednøglen, og den refererer til ID-feltet i tabellen SCHOOL6.

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