SQL:n UNIQUE-rajoitus varmistaa, että sarakkeen tai sarakejoukon arvot ovat erillisiä, mikä estää päällekkäisyydet. Toisin kuin PRIMARY KEY, se sallii useita NULL-arvoja, koska jokaista NULL-arvoa käsitellään ainutlaatuisena, kun taas ensisijainen avain edellyttää, että kaikki arvot ovat yksilöllisiä ja ei-NULL-arvoja.
Ominaisuudet:
- Varmistaa, että sarakkeilla on yksilölliset arvot.
- Useat NULL-arvot ovat sallittuja.
- Voidaan soveltaa yhteen tai useampaan sarakkeeseen.
- Ei luo automaattisesti hakemistoa (vaikka monet tietokannat tekevät sen suorituskyvyn vuoksi).
- Voidaan lisätä tai poistaa käyttämällä ALTER TABLE.
Syntaksi:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
Yllä olevassa syntaksissa:
- CREATE TABLE table_name: luo uuden taulukon.
- sarake1 tietotyyppi UNIQUE: määrittää sarakkeen tietotyypillä ja pakottaa yksilölliset arvot.
- sarake2 tietotyyppi: määrittää toisen sarakkeen ilman ainutlaatuista rajoitusta.
- Toista tarvittaessa muille sarakkeille.
Esimerkki SQL:n UNIQUE-rajoitteen käytöstä
Esimerkki 1: Taulukon luominen YKSILÖISET rajoitukset
Luodaan Asiakkaat-taulukko, jossa Sähköposti-sarakkeen on oltava yksilöllinen.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
Tässä tapauksessa jokaisella asiakkaalla tulee olla yksilöllinen sähköpostiosoite. Jos yrität lisätä kaksoissähköpostin SQL aiheuttaa virheen.
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (1 'John Doe' '[email protected]' 'USA');
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (2 'Jane Smith' '[email protected]' 'Canada');
-- This will fail because '[email protected]' already exists
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (3 'Alice Johnson' '[email protected]' 'UK');
Kolmas lisäys epäonnistuu, koska Sähköposti [email protected] on jo olemassa Asiakkaat-taulukossa.
Esimerkki 2: UNIQUE:n käyttö useiden sarakkeiden kanssa
Voimme myös soveltaa UNIQUE-rajoitetta useisiin sarakkeisiin varmistaaksemme, että näiden sarakkeiden yhdistelmä on ainutlaatuinen.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
Tässä esimerkissä asiakastunnuksen ja tuotetunnuksen yhdistelmän on oltava yksilöllinen, mikä tarkoittaa, että asiakas ei voi tilata samaa tuotetta useammin kuin kerran.
Esimerkki 3: Yksilöllisten arvojen tarkistaminen alikyselyillä
SQL:n avulla voit tarkistaa alikyselyiden ainutlaatuisuuden. Voit käyttää alikyselyssä UNIQUE-avainsanaa varmistaaksesi, että tulokset eivät sisällä päällekkäisiä arvoja.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
Tässä esimerkissä tarkistamme, onko Tilaukset-taulukossa kullekin asiakkaalle päällekkäisiä OrderID-arvoja. Jos alikysely palauttaa yksilöllisiä arvoja, asiakastunnus valitaan.
Tärkeitä kohtia
- Arvioi arvon tosi tyhjässä alikyselyssä.
- Palauttaa arvon tosi vain, jos alikyselyn tuloksena on uniikkeja monikoita (kaksi monikkoa ovat yksilöllisiä, jos näiden kahden monikon jonkin attribuutin arvo eroaa).
- Palauttaa tosi, jos alikyselyssä on kaksi päällekkäistä riviä, joissa vähintään yksi attribuutti on NULL.
Mitä YKSILÖLLINEN rajoite varmistaa SQL:ssä?
- A
Sarake tallentaa vain arvot, jotka eivät ole päällekkäisiä
- B
Sarake sallii arvot tarkistamatta kaksoiskappaleita
- C
Sarake hyväksyy useita identtisiä arvoja riveissä
- D
Sarake tallentaa vain arvot, jotka eivät aina ole NULL-arvoja
YKSILÖLLINEN varmistaa, että kaikkien sarakkeen (tai sarakeryhmän) arvojen on oltava erillisiä, jotta estetään päällekkäiset merkinnät.
Miten AINUTLAATUINEN eroaa ENSISIJAISEN AVAIN?
- A
UNIQUE sallii monia NULL-arvoja; ensisijainen avain ei
- B
UNIQUE poistaa NULL:t; ensisijainen avain tallentaa aina NULL:n
vertaa merkkijonoja java
- C
UNIQUE joukkojen indeksointi; ensisijainen avain estää indeksit
- D
UNIQUE valvoo lajittelua; ensisijainen avain välttää tilaamisen
UNIQUE sallii useita NULL-arvoja, koska jokaista NULL-arvoa pidetään erilaisena toisin kuin PRIMARY KEY, joka kieltää NULL-arvot kokonaan.
Mitä tapahtuu, kun yksityiskohtaiseen sarakkeeseen lisätään päällekkäinen arvo?
- A
SQL hyväksyy kaksoisrivin ja tallentaa molemmat arvot
- B
SQL korvaa aiemman arvon viimeksi lisätyllä arvolla
- C
SQL hylkää kaksoiskappaleen ja luo eheysvirheen
- D
SQL muuntaa kaksoisarvon automaattisesti NULL-arvoksi
Jos arvo rikkoo YKSILÖLLINEN rajoitusta, SQL estää lisäyksen tai päivityksen ja raportoi virheestä.
Mikä väite koskien UNIQUE ja NULL on oikein?
- A
UNIQUE käsittelee kaikkia NULL-arvoja yhtäläisinä kaksoiskappaleina
- B
UNIQUE käsittelee kaikkia NULL-arvoja erillisinä yksilöllisinä riveinä
- C
UNIQUE muuntaa kaikki NULL-merkinnät tyhjiksi merkkijonoiksi
- D
UNIQUE sallii NULL-arvon vain, kun sarakkeessa ei ole tietoja
Useat NULL-arvot ovat sallittuja, koska jokainen NULL-arvo arvioidaan erilliseksi verrattomaksi arvoksi UNIQUE-kohdassa.
Miksi monet tietokannat luovat indeksin UNIQUElle?
- A
Järjestä arvot aakkosjärjestykseen ennen lisäämistä
- B
Numeeristen tietojen muotoilu ennen tallentamista taulukkoon
- C
Muuntaa NULL-arvot ainutlaatuisiksi peräkkäisiksi arvoiksi
- D
Parantaa kaksoiskappaleiden tarkistusta validoinnin aikana
Indeksi auttaa moottoria havaitsemaan nopeasti päällekkäiset arvot, mikä tekee ERIKOISTEN rajoitusten täytäntöönpanosta tehokkaampaa.
Mitä YKSILÖLLINEN avainsana tarkistaa alikyselyssä?
- A
Varmistaa, että alikysely palauttaa täsmälleen yhden numeerisen sarakkeen
- B
Varmistaa, että alikyselyn tulos sisältää vain erillisiä rivejä
- C
Varmistaa, että alikysely vertaa arvoja ilman liitoksia
- D
Varmistaa, että alikysely ohittaa rivit, jotka sisältävät NULL-arvon
UNIQUE vahvistaa, että alikysely ei tuota päällekkäisiä monikoita – jokaisen palautetun rivin on erottava vähintään yhden määritteen osalta.
Tietokilpailu suoritettu onnistuneesti pisteesi: 2/6Tarkkuus: 0 %Kirjaudu sisään nähdäksesi selityksen 1/6 1/6 < Previous Seuraava >