Jūsu dati ir labi tikai tad, ja varat tiem uzticēties. Izmantojiet datu bāzes ierobežojumus, lai nodrošinātu, ka tā ir precīza, uzticama un nepārkāpj jūsu datu modeli.

Key Takeaways

  • Izmantojiet SQL ierobežojumus, lai saglabātu datu integritāti un nodrošinātu datu bāzes vienveidību. NOT NULL ierobežojums liek kolonnām noraidīt NULL vērtības.
  • Ieviesiet primārās atslēgas ierobežojumus, lai nodrošinātu vērtību unikalitāti kolonnā vai kolonnu kopā. Tas novērš ierakstu dublikātus datu bāzes tabulā.
  • Ārējās atslēgas ierobežojumi izveido attiecības starp tabulām un novērš darbības, kas iznīcinātu saites starp tām. Tie nodrošina, ka ieraksts pakārtotajā tabulā atsaucas uz vecāktabulu.

Datubāze ir būtiska daudzām lietojumprogrammām, taču tā var kļūt netīra, ja jums nav datu glabāšanas un apstrādes vadlīniju.

SQL ierobežojumi nosaka noteikumus datu glabāšanai tabulā. Iestatot ierobežojumus, datu bāze parādīs kļūdu, ja mēģināsit saglabāt datus, kas pārkāpj šos noteikumus. Ierobežojumi palīdz saglabāt datu integritāti un nodrošināt viendabīgumu jūsu datubāzē.

instagram viewer

Ir vairāki SQL ierobežojumu veidi, kurus varat izmantot; šeit ir daži no visnoderīgākajiem.

1. NOT NULL Ierobežojums

Datu bāzes kolonnas pēc noklusējuma pieņem datus ar NULL vērtībām. NULL būtībā nozīmē, ka vērtības nav. NOT NULL ierobežojums liek kolonnai noraidīt NULL vērtības.

Šis ierobežojums nodrošina, ka katrā kolonnā ir jābūt vērtībai. Ierakstu nevar pievienot datu bāzei, nesniedzot datus nevienai kolonnai ar ierobežojumu NOT NULL.

Ņemsim piemēru a Klienti tabula. Ir nepieciešama informācija par katru klientu, ko vēlaties reģistrēt, piemēram, viņa vārds. Pievienojiet NOT NULL ierobežojumu obligātajiem laukiem, lai nodrošinātu, ka klienti sniedz šo informāciju.

Šeit ir piemērs, kas parāda, kā varat izmantot NOT NULL ierobežojumu a PostgreSQL datu bāze:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Mobile_No int NOT NULL,
Age int
);

Ja mēģināt ievietot klienta ierakstu bez Vecums laukā, datu bāze to pieņems bez kļūdām:

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 0723000000);

Tomēr, ja mēģināt ievietot ierakstu bez Vārds laukā, datu bāze to noraidīs ar kļūdas ziņojumu:

ERROR: null value in column "firstname" violates not-null constraint
Detail: Failing row contains (123456, Dior, null, 723000000, null).

2. PRIMARY KEY Ierobežojums

ATSLĒGA ir unikāls atribūts, kas iestatīts kolonnai vai laukam, kas datu bāzes sistēmās identificē tabulas virkni (vai ierakstu). PRIMARY KEY ierobežojums nodrošina vērtību unikalitāti kolonnā vai kolonnu kopā. Tas darbojas kā unikāls identifikators pēc kārtas, novēršot ierakstu dublikātus datu bāzes tabulā.

Primārās atslēgas satur unikālas vērtības, un tās nedrīkst saturēt NULL vērtības. Katrs SQL datu bāzes tabula jābūt tikai vienai primārajai atslēgai. PRIMĀRAJĀ ATSLĒGĀ var būt viena vai vairākas kolonnas.

Piemēram, jūs veidojat klientu ierakstu datu bāzi. Katram klientam ir jāievada savs ID numurs atšķirīgi no visiem pārējiem. Varat lietot primārās atslēgas ierobežojumu, lai nodrošinātu, ka nevienam no jūsu klientiem nav vienāda ID numura.

Šis kods parāda, kā MySQL datu bāzē varat ieviest primārās atslēgas ierobežojumu:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);

Datubāze nepieņems šo vērtību, ja lietotājs ievadīs citu ierakstu ar līdzīgu ID. Tā vietā tiks parādīta kļūda, kas norāda uz dublēšanos. Šajā piemērā lietotājs mēģina ievietot divus ierakstus ar vienu un to pašu ID:

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'John', 'Doe', 35 );

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'Mary', 'Jane', 35 );

Datu bāze parādīs kļūdas ziņojumu:

Duplicate entry '1' for key 'PRIMARY'

Bet, ja maināt otrā klienta ID, datu bāze pieņem ierakstu. Tāpēc primārā atslēga nodrošina, ka jūsu klientu ierakstos nav dublikātu ID.

3. ĀRĒJĀS ATSLĒGAS ierobežojums

Ārējās atslēgas izveidot attiecības starp divām tabulām. Ārējo atslēgu var pievienot laukam/kolonnai vienā tabulā, kas atsaucas uz primāro atslēgu citā tabulā.

Tabula ar primāro atslēgu ir vecāktabula, bet tabula ar ārējo atslēgu ir pakārtotā tabula. Pēc tam ieraksts nevar pastāvēt pakārtotajā tabulā bez atsauces uz vecāktabulu.

Ārējās atslēgas ierobežojums novērš darbības, kas iznīcinātu saites starp tabulām. Piemēram, jūs nevarat NOLIETOT viena tabula, ja tā ir saistīta ar citu ar ārējo atslēgu. Jums būs jāatmet abi galdi uzreiz.

Atšķirībā no primārās atslēgas, jūs varat dublēt ārējo atslēgu, un vienā tabulā ir vairāk nekā viena. Ārējo atslēgu vērtības var būt arī NULL. Nākamajā piemērā jums ir jāizmanto klienta_id lai izveidotu pasūtījumu.

CREATETABLE Customers (
customer_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);

CREATETABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

INSERTINTO Customers(customer_id, first_name, last_name)
VALUES (1, 'Christian', 'Dior');

INSERTINTO Orders(order_id, customer_id, order_date)
VALUES (1, 1, '2023-08-07');

Ja mēģināt izveidot pasūtījumu bez esoša klienta_id, datu bāzē tiek parādīts kļūdas ziņojums:

Cannot add or update a child row: a foreign key constraint fails
(`db_9_4ee205c`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY
(`customer_id`) REFERENCES `customers` (`customer_id`))

4. UNIKĀLS ierobežojums

Šis ierobežojums nodrošina, ka divām rindām nevar būt vienādas vērtības konkrētai kolonnai. Tāpat kā primārās atslēgas, unikāls ierobežojums saglabā datu integritāti un novērš ierakstu dublikātus. Ja strādājat ar slikti izstrādātu datu bāzi bez UNIKĀLA ierobežojuma, jums var nākties to darīt atrodiet un izdzēsiet dublikātus.

Atšķirībā no primārajām atslēgām, vienā tabulā var būt daudz UNIKĀLU ierobežojumu. Piemēram, veidojot a Klienti tabulā, iespējams, vēlēsities izmantot unikālus ID un tālruņu numurus. Lai pievienotu šādu ierobežojumu, izmantojot MySQL serveri, izmantojiet šo sintaksi:

CREATETABLE Customers (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Ja datu bāzē ievietojat ierakstus ar vienu un to pašu mobilā tālruņa numuru, tiks parādīts kļūdas ziņojums.

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 254000000 );

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (7891011, 'Dedan', 'Kimathi', 254000000 );

Kļūdas ziņojums būs apmēram šāds:

Duplicate entry '254000000' for key 'Mobile_No'

Šis UNIKĀLAIS ierobežojums nodrošina, ka datu bāzē nebūs klientu ar vienādiem ID vai mobilā tālruņa numuriem.

5. PĀRBAUDIET ierobežojumu

Ierobežojums CHECK ierobežo kolonnā ievietoto vērtību diapazonu. Pievienojot kolonnai CHECK ierobežojumu, tiks atļautas tikai norādītās vērtības šai kolonnai. Tas nodrošina datu integritāti, nodrošinot, ka lietotājs tabulā ievieto tikai derīgus datus.

Ierobežojumam CHECK ir jānovērtē vērtība kā TRUE vai NEZINĀMS katram norādītajam rindas vai tabulas ierakstam. Ja vērtība ir FALSE, datu bāzē tiek parādīts kļūdas ziņojums.

Piemēram, tabulā Klienti, iespējams, vēlēsities apkalpot tikai klientus, kas vecāki par 18 gadiem. Varat pievienot CHECK ierobežojumu, lai nodrošinātu, ka neapkalpojat nepilngadīgus klientus. Varat pievienot ierobežojumu PostgreSQL datu bāzē, kā parādīts šajā kodā:

CREATETABLE Customers (
ID int NOT NULL,
Age int CHECK(Age>=18),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Tagad, ja mēģināt ievadīt klienta vecumu, kas jaunāks par 18 gadiem:

INSERTINTO Customers (ID, Age, LastName, FirstName, Mobile_No)
VALUES (123456, 15, 'Dior', 'Christian', 1254000000 );

Datu bāze parādīs šādu kļūdas ziņojumu:

ERROR: new row for relation "customers" violates check constraint
"customers_age_check"
Detail: Failing row contains (123456, 15, Dior, Christian, 1254000000)

Kā pievienot un noņemt SQL ierobežojumus no datu bāzēm

SQL ierobežojumi nav iemesti akmenī. Varat pievienot vai noņemt ierobežojumus esošajām tabulām, izmantojot priekšrakstu ALTER TABLE. ALTER paziņojums ļauj strādāt ar ierobežojumiem, lai tie atbilstu jūsu datu vajadzībām.

Ir daudz vairāk SQL ierobežojumu, ko varat iemācīties izveidot datubāzi pēc savas patikas. Varat sākt ar šajā rakstā uzskaitītajiem.