SQL apribojimai yra esminiai elementai reliacinės duomenų bazės projektavimas kurios užtikrina vientisumas tikslumu ir patikimumas duomenų bazėje saugomų duomenų. Taikant specialias taisykles lentelės stulpeliams, SQL apribojimai padeda išlaikyti duomenų nuoseklumą, užkertant kelią netinkamiems duomenų įrašams ir optimizuojant užklausos našumą.
Šiame straipsnyje mes išsamiai paaiškinsime dažniausiai pasitaikančius SQL apribojimus, pateikdami aiškius pavyzdžius ir paaiškindami, kaip juos efektyviai įgyvendinti.
Kas yra SQL apribojimai?
SQL apribojimai yra taikomos taisyklės stulpelius arba lenteles a reliacinė duomenų bazė apriboti galimų duomenų tipą įdėta atnaujinta arba ištrintas . Šios taisyklės užtikrina, kad duomenys galioja nuosekliai ir atitinka verslo logiką arba duomenų bazės reikalavimus . Apribojimai gali būti taikomi kuriant lentelę arba vėliau naudojant ALTER TABLE pareiškimas. Jie atlieka gyvybiškai svarbų vaidmenį išlaikant jūsų duomenų bazės kokybę ir vientisumą.
SQL apribojimų tipai
SQL pateikia kelių tipų apribojimus, skirtus įvairiems duomenų vientisumo aspektams valdyti. Šie apribojimai yra būtini siekiant užtikrinti, kad duomenys atitiktų reikalavimus tikslumu nuoseklumas ir galiojimas . Panagrinėkime kiekvieną iš jų su išsamiais paaiškinimais ir pavyzdžiais.
1. NOT NULL apribojimas
The NE NULL apribojimas užtikrina, kad stulpelyje negali būti NULL reikšmių. Tai ypač svarbu stulpeliams, kuriuose reikšmė yra būtina norint identifikuoti įrašus arba atlikti skaičiavimus. Jei stulpelis apibrėžtas kaip NE NULL kiekvienoje eilutėje turi būti to stulpelio reikšmė.
Pavyzdys:
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
ADDRESS varchar(20)
);
Paaiškinimas: Aukščiau pateiktame pavyzdyje tiekIDirNAMEstulpeliai yra apibrėžti su NE NULL apribojimas reiškia, kad kiekvienas studentas turi turėtiIDirNAMEvertė.
2. UNIKALUS apribojimas
The UNIKALUS apribojimas užtikrina, kad visos stulpelio reikšmės būtų skirtingos visose lentelės eilutėse. Skirtingai nuo PIRMINIS RAKTAS kuris reikalauja unikalumo ir neleidžia NULL, UNIQUE apribojimas leidžia NULL reikšmes, bet vis tiek užtikrina unikalumą ne NULL įrašams.
Pavyzdys:
CREATE TABLE Student
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
);
Paaiškinimas : ČiaIDstulpelyje turi būti unikalių verčių, užtikrinančių, kad du mokiniai negalėtų dalytis to patiesID. Galime turėti ne vieną UNIKALUS apribojimas lentelėje.
3. PAGRINDINIS RAKTO apribojimas
A PIRMINIS RAKTAS apribojimas yra derinys NE NULL ir UNIKALUS suvaržymus. Jis unikaliai identifikuoja kiekvieną lentelės eilutę. Lentelėje gali būti tik viena PIRMINIS RAKTAS ir jis negali priimti NULL reikšmių. Paprastai tai naudojama stulpeliui, kuris bus naudojamas kaip įrašų identifikatorius.
Pavyzdys:
CREATE TABLE Student
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
PRIMARY KEY(ID)
);
Paaiškinimas: Šiuo atvejuIDstulpelis nustatytas kaip pagrindinis raktas, užtikrinantis, kad kiekvieno mokinio ID yra unikalus ir negali būti NULL.
4. UŽSIENIO RAKTŲ apribojimas
A UŽSIENIS RAKTAS apribojimas susieja stulpelį vienoje lentelėje su pirminis raktas kitoje lentelėje. Šis ryšys padeda išlaikyti referentinis vientisumas užtikrinant, kad vertė užsienio raktas stulpelis atitinka galiojantį įrašą nurodytoje lentelėje.
Užsakymų lentelė:
| O_ID | UŽSAKYMAS_NR | C_ID |
|---|---|---|
| 1 | 2253 | 3 |
| 2 | 3325 | 3 |
| 3 | 4521 | 2 |
| 4 | 8532 | 1 |
Klientų lentelė:
| C_ID | VARDAS | ADRESAS |
|---|---|---|
| 1 | RAMESH | DELIS |
| 2 | SURESH | NOIDA |
| 3 | DHARMESAS | GURGAONAS |
Kaip matome aiškiai, kad laukas C_ID in Užsakymų lentelė yra pirminis raktas Klientų lentelėje, t. y. ji unikaliai identifikuoja kiekvieną eilutę Klientai stalo. Todėl tai yra užsienio raktas užsakymuose.
Pavyzdys:
CREATE TABLE Orders
(
O_ID int NOT NULL
ORDER_NO int NOT NULL
C_ID int
PRIMARY KEY (O_ID)
FOREIGN KEY (C_ID) REFERENCES Customers(C_ID)
)
Paaiškinimas: Šiame pavyzdyjeC_IDstulpelyjeOrderslentelė yra išorinis raktas, nurodantisC_IDstulpelyjeCustomersstalo. Taip užtikrinama, kad į failą būtų galima įterpti tik galiojančius klientų IDOrdersstalo.
5. PATIKRINTI apribojimą
The PATIKRINTI apribojimas leidžia mums nurodyti sąlygą, kurią turi atitikti duomenys, prieš juos įterpiant į lentelę. Tai gali būti naudojama taisyklėms įgyvendinti, pvz., užtikrinti, kad stulpelio vertė atitiktų tam tikrus kriterijus (pvz., amžius turi būti didesnis nei 18 metų).
Pavyzdys:
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int NOT NULL CHECK (AGE >= 18)
);
Paaiškinimas: Aukščiau pateiktoje lentelėje PATIKRINTI suvaržymas užtikrina, kad į lentelę gali būti įterpiami tik 18 metų ir vyresni mokiniai.
6. NUMATYTOJI apribojimas
The NUMATYTOJI apribojimas suteikia numatytąją stulpelio reikšmę, kai įterpiant nenurodoma jokia reikšmė. Tai naudinga siekiant užtikrinti, kad tam tikri stulpeliai visada turėtų prasmingą vertę, net jei vartotojas jos nepateikia
Pavyzdys:
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int DEFAULT 18
);
Paaiškinimas: Čia, jei nenurodyta vertėAGEįterpimo metu numatytoji reikšmė 18 bus priskirta automatiškai.
Kaip nurodyti apribojimus SQL
Apribojimai gali būti nurodyti lentelės kūrimo proceso metu naudojant CREATE TABLE pareiškimas. Be to, apribojimus galima keisti arba pridėti prie esamų lentelių naudojantALTER TABLEpareiškimas.
Apribojimų kūrimo sintaksė:
CREATE TABLE lentelės_pavadinimas
(
1 stulpelio duomenų_tipas [apribojimo_pavadinimas]
2 stulpelio duomenų_tipas [apribojimo_pavadinimas]
3 stulpelio duomenų_tipas [apribojimo_pavadinimas]
...
);
Sukūrę lentelę taip pat galime pridėti arba pašalinti apribojimus:
string.yra java
Pavyzdys, kaip pridėti apribojimą:
ALTER TABLE Student
ADD CONSTRAINT unique_student_id UNIQUE (ID);
Išvada
SQL apribojimai yra būtini norint išlaikyti duomenų vientisumas ir reliacinių duomenų bazių nuoseklumo užtikrinimas. Veiksmingas šių apribojimų supratimas ir įgyvendinimas padės sukurti patikimas duomenų bazes be klaidų. Naudojant svertą NE NULL UNIKALUS PAGRINDINIS RAKTAS UŽSIENIO RAKTŲ PATIKRINIMAS NUMATYTOJI IR INDEKSAS galite užtikrinti, kad jūsų duomenų bazė yra optimizuota tikslumu ir pasirodymas .
Sukurti viktoriną