logo

SQL | TARKISTA rajoitus

TheCHECKSQL:n rajoitus pakottaa sääntöjä sarakearvoille rajoittamalla lisättävien tai päivitettävien tietojen määrää. Se varmistaa, että arvot täyttävät tietyt ehdot. Jos arvo rikkoo ehtoa, toiminto hylätään.CHECKvoidaan lisätä taulukon luomisen tai muokkaamisen aikana.

CHECK-rajoitteen syntaksi

The TARKISTA rajoitus voidaan määrittää taulukkoa luotaessa tai lisätä myöhemmin ALTER-käskyllä.

1. CHECKin käyttö CREATE TABLE:n kanssa :

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

2. CHECKin käyttö ALTER TABLE:n kanssa

ALTER TABLE table_name  
ADD CONSTRAINT constraint_name CHECK (condition);

Tärkeimmät kohdat CHECK-rajoituksesta:



  • Verkkotunnuksen eheys: Se varmistaa, että sarakkeen arvot täyttävät tietyt ehdot, mikä auttaa säilyttämään kelvolliset tiedot tietokannassa.
  • Käytetään CREATE:n tai ALTERin kanssa: CHECK-rajoitus voidaan määrittää luotaessa taulukkoa tai lisätä olemassa olevaan taulukkoon.
  • Voidaan yhdistää muihin rajoituksiin: Voit käyttää CHECKia muiden rajoitusten kanssa, kuten ENSISIJAINEN AVAIN FORIGN KEY ja NOT NULL määrittääksesi kattavammat säännöt taulukkotiedoille.
  • Rivitason rajoitukset: Toisin kuin saraketason rajoitukset, jotka vaikuttavat yksittäisiin sarakkeisiin, CHECK-rajoitusta voidaan tarvittaessa soveltaa useisiin sarakkeisiin kerralla.

Esimerkkejä CHECK-rajoitteen käytöstä

Katsotaanpa joitain käytännön esimerkkejä ymmärtääksemme paremmin, kuinka CHECK-rajoite toimii SQL .

Esimerkki 1: CHECKin käyttäminen yhteen sarakkeeseen

Tässä esimerkissä luomme Asiakkaat-taulukon, jossa on Ikä-sarake, jonka tulee sisältää arvot välillä 18-120. TARKISTA-rajoite varmistaa, että taulukkoon ei lisätä virheellistä ikää.

Kysely:

chown komento
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

Ikä-sarakkeessa on CHECK-rajoitus, joka varmistaa, että arvon on oltava välillä 18-120. Jos yrität lisätä iän tämän alueen ulkopuolelle, tietokanta antaa virheilmoituksen.

Esimerkki 2: TARKISTA rajoitus useilla sarakkeilla

Voimme myös käyttää CHECK-rajoitetta useissa sarakkeissa. Oletetaan esimerkiksi, että meillä on Työntekijätaulukko ja haluamme varmistaa, että Palkka on positiivinen ja Ikä on suurempi tai yhtä suuri kuin 18.

Kysely:

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

CHECK-rajoite varmistaa, että molemmat ehdot täyttyvät. työntekijän on oltava vähintään 18-vuotias ja palkan on oltava suurempi kuin 0. Tällainen rajoitus on hyödyllinen, kun sääntöön liittyy useita sarakkeita.

Esimerkki 3: CHECK-rajoitteen lisääminen ALTER TABLE -toiminnolla

Voimme lisätä CHECK-rajoitteen olemassa olevaan taulukkoon käyttämällä ALTER TABLE -käskyä.

Kysely:

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

Tämä lisää Työntekijä-taulukkoon CHECK-rajoitteen, jonka nimi on chk_salary, ja varmistaa, että Palkka-sarakkeen vähimmäisarvo on 30 000. Jos yrität lisätä tai päivittää tietueen, jonka palkka on alle 30 000, toiminto epäonnistuu.

Suositeltu tietokilpailu Muokkaa tietokilpailua 5 kysymystä

Mitä CHECK-rajoite varmistaa SQL:ssä?

  • A

    Sarake hyväksyy arvot ilman sääntöjä

  • B

    Sarake hyväksyy arvot vain yksilöllisinä

  • C

    Sarake hyväksyy arvot vain silloin, kun se ei ole nolla

  • D

    Sarake hyväksyy arvot, jotka vastaavat annettua sääntöä

Selitys:

CHECK pakottaa sarakearvoille ehdon ja hylkää kaikki tiedot, jotka rikkovat määritettyä sääntöä.

Milloin SQL estää INSERTin suorittamisen CHECKin avulla?

  • A

    Kun arvo on kaksoiskappale sarakkeessa

  • B

    Kun arvo rikkoo määriteltyä ehtoa

  • C

    Kun taulukolla ei ole ensisijaista rajoitusta

  • D

    Kun arvo on NULL ja sarake sallii nollan

Selitys:

Jos lisätyt tai päivitetyt tiedot rikkovat CHECK-ehtoa SQL peruuttaa toiminnon.

Missä CHECK-rajoite voidaan määritellä?

  • A

    Vain SELECT-kyselyn syntaksin sisällä

  • B

    Vasta sen jälkeen, kun ensisijainen avain on ilmoitettu

  • C

    Taulukon luomisen tai muokkauksen aikana

  • D

    Vain numeerisille sarakkeille, joissa on alueita

Selitys:

CHECK voidaan lisätä taulukkoa luotaessa tai myöhemmin käyttämällä ALTER TABLE -käskyä.

Mitä tapahtuu monisarakkeisessa CHECK-rajoitteessa?

  • A

    Ehto voi viitata vain yhteen sarakkeeseen

  • B

    Ehto voi viitata useisiin sarakkeisiin

  • C

    Ehto toimii vain numeerisissa sarakkeissa

  • D

    Ehto jättää arvot huomioimatta lisäyksen aikana

Selitys:

CHECK voi soveltaa sääntöjä käyttämällä kahta tai useampaa saraketta, jotka pakottavat yhdistettyä vahvistusta.

Mikä lisäys epäonnistuu CHECK (Ikä ≥ 18) -rajoituksessa?

  • A

    Ikäarvo alle viisitoista vuotta

  • B

    Ikäarvo täsmälleen yhtä kuin kahdeksantoista

  • C

    Ikäarvo yli kaksikymmentäviisi

  • D

    Ikäarvo tallennettu NULL-arvona sallittu

Selitys:

Mikä tahansa arvo alle 18 rikkoo CHECK-sääntöä ja johtaa lisäysvirheeseen.

SQL | TARKISTA rajoitusTietokilpailu suoritettu onnistuneesti pisteesi:  2/5Tarkkuus: 0 %Kirjaudu sisään nähdäksesi selityksen 1/5 1/5 < Previous Seuraava >