Ограничението UNIQUE в SQL гарантира, че стойностите в колона или набор от колони са различни, предотвратявайки дубликати. За разлика от PRIMARY KEY, той позволява множество NULL стойности, тъй като всяка NULL се третира като уникална, докато първичният ключ изисква всички стойности да бъдат уникални и различни от NULL.
Характеристики:
- Гарантира, че колоните имат уникални стойности.
- Разрешени са множество NULL.
- Може да се прилага към една или повече колони.
- Не създава автоматично индекс (въпреки че много бази данни го правят за производителност).
- Може да се добавя или премахва с помощта на ALTER TABLE.
Синтаксис:
машинопис foreach
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
В горния синтаксис:
- CREATE TABLE table_name: създава нова таблица.
- колона1 тип данни УНИКАЛЕН: дефинира колона с тип данни и налага уникални стойности.
- колона2 тип данни: дефинира друга колона без уникалното ограничение.
- Повторете за допълнителни колони, ако е необходимо.
Пример за използване на ограничението SQL UNIQUE
Пример 1: Създаване на таблица с УНИКАЛНИ ограничения
Нека създадем таблица Клиенти, където колоната Имейл трябва да е уникална.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
В този случай всеки клиент трябва да има уникален имейл адрес. Ако се опитате да вмъкнете дублиран имейл SQL ще предизвика грешка.
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');
Третото вмъкване ще бъде неуспешно, защото имейлът [email protected] вече съществува в таблицата Клиенти.
Пример 2: Използване на UNIQUE с множество колони
Можем също така да приложим ограничението UNIQUE към множество колони, за да гарантираме, че комбинацията от тези колони е уникална.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
В този пример комбинацията от CustomerID и ProductID трябва да е уникална, което означава, че клиентът не може да поръча един и същ продукт повече от веднъж.
Пример 3: Проверка за уникални стойности чрез подзаявки
SQL ви позволява да проверявате за уникалност в подзаявките. Можете да използвате ключовата дума UNIQUE в подзаявка, за да сте сигурни, че резултатите не съдържат дублиращи се стойности.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
В този пример проверяваме дали има дублирани стойности на OrderID за всеки клиент в таблицата с поръчки. Ако подзаявката върне уникални стойности, ще бъде избран CustomerID.
Важни моменти
- Оценява се на true при празна подзаявка.
- Връща true само ако има уникални кортежи, присъстващи като резултат от подзаявката (два кортежа са уникални, ако стойността на който и да е атрибут на двата кортежа се различава).
- Връща true, ако подзаявката има два дублиращи се реда с поне един атрибут като NULL.
Какво гарантира ограничението UNIQUE в SQL?
- А
Колоната съхранява само стойности, които остават недублирани
- б
Колоната позволява стойности без проверка на дубликати
- В
Колоната приема множество идентични стойности в редове
- г
Колоната съхранява само стойности, които винаги са различни от NULL
UNIQUE гарантира, че всички стойности в колоната (или групата колони) трябва да бъдат различни, предотвратявайки дублиращи се записи.
Как се различава UNIQUE от PRIMARY KEY?
- А
UNIQUE позволява много NULL стойности; първичният ключ не го прави
- б
UNIQUE премахва NULL; първичният ключ винаги съхранява NULL
- В
UNIQUE принуждава индексиране; първичен ключ предотвратява индекси
- г
UNIQUE налага сортиране; първичен ключ избягва подреждането
UNIQUE позволява множество NULL стойности, тъй като всяка NULL се счита за различна за разлика от PRIMARY KEY, който забранява изцяло NULL.
инсталирайте maven
Какво се случва при вмъкване на дублирана стойност в колона UNIQUE?
- А
SQL приема дублиран ред и съхранява и двете стойности
- б
SQL замества по-ранната стойност с най-скоро вмъкнатата
- В
SQL отхвърля дубликат и генерира грешка в целостта
- г
SQL автоматично преобразува дублиращата се стойност в NULL
Ако дадена стойност наруши ограничението UNIQUE, SQL блокира вмъкването или актуализирането и съобщава за грешка.
Кое твърдение за UNIQUE и NULL е правилно?
- А
UNIQUE третира всички NULL стойности като равни дубликати
- б
UNIQUE третира всички NULL стойности като отделни уникални редове
- В
UNIQUE преобразува всички NULL записи в празни низове
- г
UNIQUE позволява NULL само когато няма данни в колоната
Позволени са множество NULL, тъй като всеки NULL се оценява като отделна несравнима стойност под UNIQUE.
Защо много бази данни създават индекс за UNIQUE?
- А
За организиране на стойностите по азбучен ред преди вмъкване
- б
За форматиране на числови данни преди съхраняване в таблица
- В
За да конвертирате NULL в уникални последователни стойности
- г
За подобряване на проверката на дубликати по време на валидиране
Индексът помага на двигателя бързо да открива дублиращи се стойности, което прави прилагането на UNIQUE ограничения по-ефективно.
изключване на режима за разработчици на android
Какво проверява ключовата дума UNIQUE в подзаявка?
- А
Гарантира, че подзаявката връща точно една цифрова колона
- б
Гарантира, че изходът на подзаявката съдържа само отделни редове
- В
Гарантира, че подзаявката сравнява стойности без използване на съединения
- г
Гарантира, че подзаявката игнорира редове, които съдържат NULL
UNIQUE потвърждава, че подзаявката не създава дублиращи се кортежи — всеки върнат ред трябва да се различава в поне един атрибут.
Тестът е завършен успешно Вашият резултат: 2/6Точност: 0%Влезте, за да видите обяснението 1/6 1/6 < Previous Следващ >