PostgreSQL Rajoitukset: Tyypit esimerkillä

⚡ Älykäs yhteenveto

PostgreSQL Rajoitukset valvovat kuutta sisäänrakennettua eheyssääntöä tietokantatasolla: UNIQUE, NOT NULL, CHECK, PRIMARY KEY, FOREIGN KEY ja EXCLUSION. Lesskohdat kattavat syntaksin, esimerkit ja sen, milloin kutakin sääntöä sovelletaan.

  • 🛡️ Integrity Säännöt: Estää virheelliset tiedot tietokantatasolla.
  • 🔑 Pääavain: UNIQUE plus NOT NULL; yksi taulukkoa kohden.
  • 🔗 Vieras avain: Viittaa UNIQUE- tai PRIMARY-AVAIMEEN muualla.
  • TARKISTAA: Boolen rivikohtainen tarkistus.
  • 🚫 EI TYHJÄ: Hylkää NULL-arvot.
  • 🎯 POISSUOJAMINEN: AINUTLAATUINEN mukautetuilla operaattoreilla.

PostgreSQL rajoitteet

Mikä on rajoitus?

Tietotyyppejä käytetään rajoittamaan taulukkoon tallennettavien tietojen tyyppiä. Mutta tähän lähestymistapaan liittyy 2 ongelmaa.

  • Numero 1: Tietotyyppien määräämät rajoitukset eivät ole riittäviä tietyille sovelluksille. Esimerkiksi nimikkeen hinnan sisältävän sarakkeen tulee hyväksyä vain positiivisia arvoja. Ei kuitenkaan ole olemassa tiettyä tietotyyppiä, joka hyväksyy vain positiivisen luvun.
  • Issue 2: Haluat ehkä rajoittaa rivin/sarakkeen tietoja suhteessa muihin sarakkeisiin tai riveihin. Esimerkiksi nimiketiedot sisältävässä taulukossa tulisi olla vain yksi rivi kutakin yksilöllistä sarakerajoitetta kohden.

Voit voittaa tällaiset ongelmat ja määrittää nämä säännöt käyttämällä rajoites PostgreSQL. Yksinkertaisesti sanottuna rajoitukset ovat sääntöjä, joita tietojesi on noudatettava. Lisäämällä taulukkorajoituksia tietokantajärjestelmä voi valvoa tietojen eheyttä.

Siksi, jos käyttäjä yrittää tallentaa tietoja sarakkeeseen, joka rikkoo määritettyä rajoitusta, näyttöön tulee virheilmoitus.

Tyyppi PostgreSQL rajoitteet

Katsotaanpa eri tyyppejä PostgreSQL rajoitus, jonka voit luoda tietojen oikeellisuuden varmistamiseksi:

  • Ainutlaatuinen
  • Ei tyhjä
  • Tarkista rajoitus
  • Pääavain
  • viiteavain
  • Suoritusrajoitus

PostgreSQL AINUTLAATUINEN rajoite

Ainutlaatuiset rajoitukset auttavat varmistamaan, että sarakkeen tai sarakerajoitusten ryhmän sisältämät tiedot ovat ainutlaatuisia.

esimerkki

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

PostgreSQL NOT NULL -rajoite

Ei-nolla-rajoitus määrittää, että sarake ei saa koskaan olla nolla-arvo. Tämäntyyppinen rajoitus on hyvin samanlainen kuin tarkistusrajoitteen luominen. Kuitenkin, PostgreSQL luo ei-nolla-rajoitteen, joka on tehokkaampi. Tämän menetelmän ongelmana on, että et voi antaa eksplisiittisiä nimiä ei-null-rajoituksille.

Ei null -rajoitus ei ole oletusarvo PostgreSQL vakiona, eikä sitä tule käyttää kannettavissa sovelluksissa. Se lisättiin myöhemmin PostgreSQL jotta se olisi yhteensopiva jonkun muun kanssa DBMS-järjestelmät. Monet käyttävät sitä, koska sen avulla on helppo vaihtaa rajoitus skriptitiedostossa.

Syntaksi:

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

PostgreSQL TARKISTA Rajoitus

Tarkistusrajoitus auttaa määrittämään, että jossakin sarakkeessa olevan arvon on oltava Boolen lauseke.

PostgreSQL tarkistusrajoitus koostuu CHECK-avainsanasta, jota seuraa lauseke suluissa. Tarkistusrajoitteen Postgres pitäisi sisältää sarake, jota pitäisi rajoittaa, muuten siinä ei ole mitään järkeä.

Syntaksi:

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

Esimerkiksi:

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

PostgreSQL PÄÄAVAIN-rajoitus

Ensisijaisen avaimen rajoituksen avulla voit käyttää saraketta tai sarakeryhmää yksilöllisenä tunnisteena taulukon riveille. Ensisijaisen avaimen rajoitusten määrittämiseksi ilmoitettujen arvojen tulee olla yksilöllisiä eivätkä nollia. Tämä sallii kahden taulukkomäärittelyn hyväksyä samat tiedot.

Syntaksi:

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

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

Esimerkki 2:

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

Esimerkki 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

PostgreSQL Viiteavainten rajoitus

Vieraan avaimen rajoitus määrittää, että sarakkeen tai sarakeryhmän arvojen on vastattava toisen taulukon jollakin rivillä olevia arvoja. Tämän avulla voit määrittää kahden yhdistetyn taulukon välisen viittauksen eheyden.

Oletetaan, että sinulla on taulukko, joka tallentaa eri tuotteiden tilaukset. Haluat varmistaa, että taulukko sisältää olemassa olevia tuotetilauksia. Joten tässä sinun on määritettävä viiteavaimen rajoitus tilaustaulukossa, joka viittaa tuotetaulukkoon.

Syntaksi:

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

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

PostgreSQL POISSULKEMISEN rajoitus

Poissulkemisrajoitukset auttavat varmistamaan, että jos mitä tahansa kahta riviä verrataan toisiinsa määritetyissä sarakkeissa tai lausekkeissa määritetyillä operaattoreilla, vähintään yksi näistä operaattorivertailuista palauttaa nolla- tai väärän arvon. Lisätään tämä PostgreSQL rajoite luo automaattisesti indeksin, jonka tyyppi on määritetty rajoitusilmoituksessa.

Esimerkiksi:

Esimerkiksi seuraavat PostgreSQL lauseke luo uuden taulukon nimeltä School ja lisää viisi saraketta.

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

Esimerkiksi seuraavat PostgreSQL lauseke luo uuden taulukon nimeltä Branch, joka lisää kolme saraketta. Sarake STD_ID on vierasavain, ja se viittaa taulukon SCHOOL6 ID-kenttään.

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

UKK

PÄÄAVAIN, VIITEAVAIN, YKSILÖLLINEN, EI NULL, TARKISTA, POISSULKE.

Tekoälytyökalut, kuten Copilot, luovat CREATE TABLE -lausekkeita rajoituksilla ja CHECK-ehdoilla.

Kyllä. Tekoälytyökalut skannaavat skeemoista orpoja viiteavaimia, puuttuvia NOT NULL -arvoja ja taulukoita, joissa ei ole ensisijaisia ​​avaimia.

PRIMARY KEY yhdistää UNIQUE- ja NOT NULL -avaimet; yksi taulukkoa kohden. UNIQUE sallii useita ja hyväksyy NULL-avaimet.

Käytä ON DELETE CASCADE-, SET NULL- tai RESTRICT-komentoa.

Ei. CHECK viittaa vain saman rivin sarakkeisiin. Käytä viiteavaimia tai liipaisimia.

Käytä EXCLUDE-operaattoria, kun ainutlaatuisuus vaatii muita kuin yhtäsuuruusoperaattoreita (esim. && päällekkäisyyden havaitsemiseksi).ping alueet).

Kyllä. ALTER TABLE ADD CONSTRAINT toimii luomisen jälkeen. Käytä NOT VALID -käskyä ohittaaksesi olemassa olevien rivien tarkistamisen.

Tiivistä tämä viesti seuraavasti: