PostgreSQL Begrensninger: Typer med eksempel
Hva er begrensning?
Datatyper brukes for å begrense hva slags informasjon som kan lagres i en tabell. Men det er 2 problemer med denne tilnærmingen.
- Utgave 1: Begrensninger håndhevet av datatyper er ikke tilstrekkelige for visse applikasjoner. For eksempel bør en kolonne som inneholder en varepris bare akseptere positive verdier. Det er imidlertid ingen spesifikk datatype som bare godtar det positive tallet.
- Issue 2: Det kan være lurt å begrense informasjonen i en rad/kolonne data i forhold til andre kolonner eller rader. For eksempel skal en tabell som inneholder vareinformasjon bare ha én rad for hver unike kolonnebegrensning.
For å overvinne slike problemer og definere disse reglene, kan du bruke begrensnings i PostgreSQL. Enkelt sagt er begrensninger regler som dataene dine må følge. Å legge til tabellbegrensninger gjør det mulig for databasesystemet å håndheve dataintegritet.
Derfor, hvis en bruker prøver å lagre data i en kolonne som bryter med en definert begrensning, bør en feilmelding vises.
Type av PostgreSQL begrensninger
La oss ta en titt på ulike typer PostgreSQL begrensning du kan opprette for å sikre datakorrekthet:
- Unik
- Ikke null
- Sjekk begrensning
- Primærnøkkel
- Foreign Key
- Utførelsesbegrensning
1) PostgreSQL Unik begrensning
Unike begrensninger hjelper deg å sikre at dataene i en kolonne, eller en gruppe med kolonnebegrensninger, er unike.
Eksempel
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) IKKE nullbegrensninger
En ikke-null-begrensning definerer at en kolonne aldri skal være en nullverdi. Denne typen begrensninger ligner veldig på å lage en sjekkbegrensning. Imidlertid PostgreSQL skaper en ikke-null-begrensning, som er mer effektiv. Problemet med denne metoden er at du ikke kan gi eksplisitte navn til ikke-null-begrensninger.
Ikke null-begrensningen er ikke en standard PostgreSQL standard og bør ikke brukes i bærbare applikasjoner. Den ble senere lagt til PostgreSQL for å gjøre den kompatibel med noe annet DBMS-systemer. Mange bruker det fordi det gjør det enkelt å veksle mellom begrensningen i en skriptfil.
Syntaks:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Sjekk begrensninger
En kontrollbegrensning hjelper deg å spesifisere at verdien i en kolonne må være et boolsk uttrykk.
Ocuco PostgreSQL check constraint består av CHECK nøkkelordet, som etterfølges av et uttrykk i parentes. Kontrollbegrensningen Postgres bør involvere kolonnen som skal være begrenset, ellers gir det 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økkelbegrensninger
En primærnøkkelbegrensning lar deg bruke en kolonne eller gruppe med kolonner som en unik identifikator for rader i tabellen. For å definere primærnøkkelbegrensninger, bør de deklarerte verdiene være både unike og ikke null. Dette lar to tabelldefinisjoner godta de samme dataene.
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) Utenlandske nøkkelbegrensninger
En fremmednøkkelbegrensning spesifiserer at verdiene i en kolonne eller en gruppe med kolonner må samsvare med verdiene som vises i en rad i en annen tabell. Dette lar deg etablere referanseintegriteten mellom to tilknyttede tabeller.
La oss anta at du har en tabell som lagrer bestillinger for forskjellige produkter. Du vil sikre at tabellen inneholder bestillinger av produkter som finnes. Så her må du definere en fremmednøkkelbegrensning i ordretabellen som 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) Ekskluderingsbegrensninger
Ekskluderingsbegrensninger hjelper deg å sørge for at hvis to rader sammenlignes med hverandre på de angitte kolonnene eller uttrykkene med spesifiserte operatorer, vil minst én av disse operatorsammenlikningene returnere en null eller falsk verdi. Legger til dette PostgreSQL constraint vil automatisk opprette en indeks av typen spesifisert i constraint-erklæringen.
Eksempel:
For eksempel følgende PostgreSQL statement oppretter en ny tabell kalt Skole og legger til 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 oppretter en ny tabell kalt Branch, som legger til tre kolonner. Kolonnen STD_ID er fremmednøkkelen, og den refererer til ID-feltet til tabellen SCHOOL6.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );