SQL | UNIKALUS apribojimas
UNIKALUS apribojimas SQL užtikrina, kad stulpelio ar stulpelių rinkinio reikšmės būtų skirtingos, kad būtų išvengta dublikatų. Skirtingai nuo PRIMARY KEY, jis leidžia kelias NULL reikšmes, nes kiekviena NULL laikoma unikalia, o pirminis raktas reikalauja, kad visos vertės būtų unikalios ir ne NULL.
Savybės:
- Užtikrina, kad stulpelis (-iai) turi unikalias reikšmes.
- Leidžiami keli NULL.
- Galima taikyti vienam ar daugiau stulpelių.
- Automatiškai nesukuria indekso (nors daugelis duomenų bazių tai daro dėl našumo).
- Galima pridėti arba pašalinti naudojant ALTER TABLE.
Sintaksė:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);Aukščiau pateiktoje sintaksėje:
- CREATE TABLE lentelės_pavadinimas: sukuria naują lentelę.
- 1 stulpelio duomenų tipas UNIKALUS: apibrėžia stulpelį su duomenų tipu ir užtikrina unikalias reikšmes.
- 2 stulpelio duomenų tipas: apibrėžia kitą stulpelį be unikalaus apribojimo.
- Jei reikia, pakartokite su papildomiems stulpeliams.
Unikalaus SQL apribojimo naudojimo pavyzdys
1 pavyzdys: lentelės su UNIKALIAIS apribojimais kūrimas
Sukurkime lentelę Klientai, kurioje stulpelis El. paštas turi būti unikalus.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);Tokiu atveju kiekvienas klientas turi turėti unikalų el. pašto adresą. Jei bandysite įterpti pasikartojančią el SQL iškels klaidą.
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');Trečiasis įterpimas nepavyks, nes el. paštas [email protected] jau yra lentelėje Klientai.
2 pavyzdys: UNIQUE naudojimas su keliais stulpeliais
Taip pat galime taikyti UNIQUE apribojimą keliems stulpeliams, kad įsitikintume, jog tų stulpelių derinys yra unikalus.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);Šiame pavyzdyje CustomerID ir ProductID derinys turi būti unikalus, o tai reiškia, kad klientas negali užsisakyti to paties produkto daugiau nei vieną kartą.
3 pavyzdys: unikalių reikšmių tikrinimas naudojant papildomas užklausas
SQL leidžia patikrinti antrinių užklausų unikalumą. Galite naudoti UNIQUE raktinį žodį antrinėje užklausoje, kad įsitikintumėte, jog rezultatuose nėra pasikartojančių reikšmių.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);Šiame pavyzdyje patikriname, ar lentelėje Užsakymai yra pasikartojančių užsakymo ID verčių kiekvienam klientui. Jei antrinė užklausa pateikia unikalias reikšmes, bus pasirinktas Kliento ID.
Svarbūs punktai
- Tuščioje antrinėje užklausoje įvertinama kaip teisinga.
- Grąžina true tik tuo atveju, jei antrinės užklausos išvestis yra unikalių eilučių (dvi eilės yra unikalios, jei bet kurio dviejų eilučių atributo reikšmė skiriasi).
- Grąžina true, jei antrinėje užklausoje yra dvi pasikartojančios eilutės, kurių bent vienas atributas yra NULL.
Ką užtikrina UNIKALUS apribojimas SQL?
- A
Stulpelyje saugomos tik vertės, kurios nepasikartoja
- B
Stulpelyje leidžiamos reikšmės netikrinant dublikatų
- C
Stulpelis priima kelias identiškas reikšmes eilutėse
- D
Stulpelyje saugomos tik reikšmės, kurios visada nėra NULL
UNIQUE užtikrina, kad visos stulpelio (arba stulpelių grupės) reikšmės turi būti skirtingos, kad būtų išvengta pasikartojančių įrašų.
Kuo UNIKALUS skiriasi nuo PIRMINIO RAKTO?
- A
UNIQUE leidžia daug NULL reikšmių; pirminis raktas neturi
- B
UNIQUE pašalina NULL; pirminis raktas visada išsaugo NULL
- C
UNIKALIŲ jėgų indeksavimas; pirminis raktas neleidžia indeksams
- D
UNIQUE užtikrina rūšiavimą; pirminis raktas leidžia išvengti užsakymo
UNIQUE leidžia kelias NULL reikšmes, nes kiekviena NULL laikoma skirtinga, skirtingai nei PRIMARY KEY, kuris visiškai draudžia NULL.
Kas atsitinka, kai į UNIKALĮ stulpelį įterpiama pasikartojanti reikšmė?
- A
SQL priima pasikartojančias eilutes ir išsaugo abi reikšmes
- B
SQL pakeičia ankstesnę reikšmę naujausia įterpta
- C
SQL atmeta dublikatus ir sukuria vientisumo klaidą
- D
SQL automatiškai konvertuoja pasikartojančią reikšmę į NULL
Jei reikšmė pažeidžia UNIKALUS apribojimą, SQL blokuoja įterpimą arba atnaujinimą ir praneša apie klaidą.
Kuris teiginys apie UNIQUE ir NULL yra teisingas?
- A
UNIQUE visas NULL reikšmes traktuoja kaip vienodus dublikatus
- B
UNIQUE visas NULL reikšmes traktuoja kaip atskiras unikalias eilutes
- C
UNIQUE konvertuoja visus NULL įrašus į tuščias eilutes
- D
UNIQUE leidžia NULL tik tada, kai stulpelyje nėra duomenų
Leidžiami keli NULL, nes kiekviena NULL yra vertinama kaip atskira nepalyginama vertė pagal UNIQUE.
Kodėl daugelis duomenų bazių sukuria UNIQUE indeksą?
- A
Sutvarkyti reikšmes abėcėlės tvarka prieš įterpiant
- B
Skaitmeninių duomenų formatavimas prieš išsaugant į lentelę
- C
Norėdami konvertuoti NULL į unikalias nuoseklias reikšmes
- D
Siekiant pagerinti dublikatų tikrinimą patvirtinimo metu
Indeksas padeda varikliui greitai aptikti pasikartojančias vertes, todėl UNIKALUS apribojimų vykdymas yra efektyvesnis.
Ką raktinis žodis UNIKALUS tikrina papildomoje užklausoje?
- A
Užtikrina, kad antrinė užklausa grąžintų tiksliai vieną skaitinį stulpelį
- B
Užtikrina, kad antrinės užklausos išvestyje būtų tik skirtingos eilutės
- C
Užtikrina, kad antrinė užklausa lygina reikšmes nenaudodama sujungimų
- D
Užtikrina, kad antrinė užklausa nepaisytų eilučių, kuriose yra bet koks NULL
UNIQUE patvirtina, kad antrinė užklausa nesukuria pasikartojančių eilučių – kiekviena grąžinta eilutė turi skirtis bent vienu atributu.
Viktorina sėkmingai atlikta jūsų balas: 2 /6 Tikslumas: 0 % Prisijunkite, kad pamatytumėte paaiškinimą 1 /6 1 /6 < Previous Kitas >