logo

SQL | AINUTLAATUINEN rajoitus

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.
Suositeltu tietokilpailu Muokkaa tietokilpailua 6 kysymystä

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

Selitys:

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

Selitys:

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

Selitys:

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

Selitys:

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

Selitys:

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

Selitys:

UNIQUE vahvistaa, että alikysely ei tuota päällekkäisiä monikoita – jokaisen palautetun rivin on erottava vähintään yhden määritteen osalta.

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