SQL | PATIKRINTI apribojimą

SQL | PATIKRINTI apribojimą

The CHECK SQL apribojimas įgyvendina taisykles stulpelių reikšmėms, ribodamas duomenų, kuriuos galima įterpti arba atnaujinti. Tai užtikrina, kad vertės atitiktų nurodytas sąlygas. Jei reikšmė pažeidžia sąlygą, operacija atmetama. CHECK galima pridėti kuriant ar modifikuojant lentelę.

CHECK apribojimo sintaksė

The PATIKRINTI apribojimą gali būti apibrėžti kuriant lentelę arba pridėti vėliau naudojant ALTER teiginį.

1. Naudojant CHECK su CREATE TABLE :

 CREATE TABLE table_name (   
column1 datatype
column2 datatype CHECK (condition)
...
);

2. Naudojant CHECK su ALTER TABLE

 ALTER TABLE table_name   
ADD CONSTRAINT constraint_name CHECK (condition);

Pagrindiniai punktai apie CHECK apribojimą:

  • Domeno vientisumas: Tai užtikrina, kad stulpelio reikšmės atitiktų nurodytas sąlygas, taip padedant išlaikyti galiojančius duomenis duomenų bazėje.
  • Naudojamas su CREATE arba ALTER: CECK apribojimą galima apibrėžti kuriant lentelę arba pridėti prie esamos lentelės.
  • Galima derinti su kitais apribojimais: Galite naudoti CHECK kartu su kitais apribojimais, pvz PIRMINIS RAKTAS FOREIGN KEY ir NOT NULL, kad apibrėžtumėte išsamesnes lentelės duomenų taisykles.
  • Eilučių lygio apribojimai: Skirtingai nuo stulpelio lygio apribojimų, kurie turi įtakos atskiriems stulpeliams, CHECK apribojimas gali būti taikomas keliems stulpeliams vienu metu, jei reikia.

CHECK apribojimo naudojimo pavyzdžiai

Pažvelkime į keletą praktinių pavyzdžių, kad geriau suprastume, kaip veikia CHECK apribojimas SQL .

1 pavyzdys: CHECK taikymas viename stulpelyje

Šiame pavyzdyje sukuriame lentelę Klientai su stulpeliu Amžius, kuriame turi būti reikšmės nuo 18 iki 120. TIKRINIMO apribojimas užtikrina, kad į lentelę nebūtų įterptas netinkamas amžius.

Užklausa:

 CREATE TABLE Customers (   
CustomerID INT PRIMARY KEY
Name VARCHAR(50)
Age INT CHECK (Age >= 18 AND Age <= 120)
);


-- Valid insert
INSERT INTO Customers (CustomerID Name Age)
VALUES (1 'John Doe' 25);

-- Invalid insert
INSERT INTO Customers (CustomerID Name Age)
VALUES (2 'Jane Smith' 15); -- This will fail due to the CHECK constraint

Stulpelyje Amžius yra TIKRINIMO apribojimas, užtikrinantis, kad reikšmė turi būti nuo 18 iki 120. Jei bandysite įterpti amžių už šio diapazono ribų, duomenų bazė parodys klaidą.

2 pavyzdys: PATIKRINTI apribojimą su keliais stulpeliais

Taip pat galime naudoti CHECK apribojimą keliuose stulpeliuose. Pavyzdžiui, tarkime, kad turime Darbuotojų lentelė ir mes norime užtikrinti, kad atlyginimas būtų teigiamas, o amžius - didesnis arba lygus 18 metų.

Užklausa:

 CREATE TABLE Employee (   
EmployeeID INT PRIMARY KEY
Name VARCHAR(50)
Age INT
Salary DECIMAL(10 2)
CHECK (Age >= 18 AND Salary > 0)
);


-- Valid insert
INSERT INTO Employee (EmployeeID Name Age Salary)
VALUES (1 'Alice Johnson' 30 50000);

-- Invalid insert (age < 18)
INSERT INTO Employee (EmployeeID Name Age Salary)
VALUES (2 'Bob Lee' 16 45000); -- This will fail due to the CHECK constraint

CECK apribojimas užtikrina, kad tenkinamos abi sąlygos. darbuotojas turi būti ne jaunesnis nei 18 metų, o atlyginimas turi būti didesnis nei 0. Toks apribojimas yra naudingas, kai taisyklėje yra keli stulpeliai.

3 pavyzdys: CHECK apribojimo pridėjimas naudojant ALTER TABLE

Galime pridėti CHECK apribojimą į esamą lentelę naudodami ALTER TABLE teiginį.

Užklausa:

 ALTER TABLE Employee   
ADD CONSTRAINT chk_salary CHECK (Salary >= 30000);

Taip į lentelę Darbuotojas pridedamas CHECK apribojimas, pavadintas chk_salary, užtikrinant, kad stulpelio Atlyginimas minimali reikšmė būtų 30 000. Jei bandysite įterpti arba atnaujinti įrašą, kurio atlyginimas mažesnis nei 30 000, operacija nepavyks.

Siūloma viktorina Redaguoti viktoriną 5 klausimai

Ką užtikrina CHECK apribojimas SQL?

  • A

    Stulpelis priima vertes be jokių taisyklių

  • B

    Stulpelis priima vertes tik tada, kai jos yra unikalios

  • C

    Stulpelis priima vertes tik tada, kai jos nėra nulio

  • D

    Stulpelis priima reikšmes, atitinkančias nurodytą taisyklę

Paaiškinimas:

CHECK įgyvendina stulpelių verčių sąlygą, atmetdama bet kokius duomenis, kurie pažeidžia apibrėžtą taisyklę.

Kada SQL neleidžia INSERT naudojant CHECK?

  • A

    Kai reikšmė pasikartoja stulpelyje

  • B

    Kai vertė pažeidžia apibrėžtą sąlygą

  • C

    Kai lentelė neturi pirminio apribojimo

  • D

    Kai reikšmė yra NULL, o stulpelis leidžia nulį

Paaiškinimas:

Jei įterpti arba atnaujinti duomenys sugenda, sąlyga CHECK SQL atšaukia operaciją.

Kur galima apibrėžti CHECK apribojimą?

  • A

    Tik užklausos SELECT sintaksėje

  • B

    Tik paskelbus pirminį raktą

  • C

    Lentelės kūrimo ar modifikavimo metu

  • D

    Tik skaitiniams stulpeliams su diapazonais

Paaiškinimas:

CHECK galima pridėti kuriant lentelę arba vėliau naudojant teiginį ALTER TABLE.

Kas nutinka kelių stulpelių CHECK apribojime?

  • A

    Sąlyga gali nurodyti tik vieną stulpelį

  • B

    Sąlyga gali nurodyti kelis stulpelius

  • C

    Sąlyga veikia tik skaitiniuose stulpeliuose

  • D

    Sąlyga įterpiant nepaiso reikšmių

Paaiškinimas:

CHECK gali taikyti taisykles naudodama du ar daugiau stulpelių, užtikrinančių bendrą patvirtinimą.

Kuris intarpas neatitinka CHECK (amžius ≥ 18) apribojimo?

  • A

    Amžiaus vertė mažesnė nei penkiolika metų

  • B

    Amžiaus reikšmė lygi aštuoniolikai

  • C

    Amžiaus reikšmė didesnė nei dvidešimt penkeri

  • D

    Amžiaus reikšmė saugoma kaip NULL leidžiama

Paaiškinimas:

Bet kuri mažesnė nei 18 reikšmė pažeidžia CHECK taisyklę ir sukelia įterpimo gedimą.

SQL | PATIKRINTI apribojimąViktorina sėkmingai atlikta jūsų balas:   2 /5 Tikslumas:  0 % Prisijunkite, kad pamatytumėte paaiškinimą 1 /5 1 /5 < Previous Kitas >