Ograniczenie UNIQUE w SQL zapewnia, że wartości w kolumnie lub zestawie kolumn są odrębne, co zapobiega duplikacjom. W przeciwieństwie do KLUCZ PODSTAWOWY pozwala na wiele wartości NULL, ponieważ każda wartość NULL jest traktowana jako unikatowa, podczas gdy klucz podstawowy wymaga, aby wszystkie wartości były unikalne i różne od NULL.
Cechy:
program c do porównywania ciągów
- Zapewnia, że kolumny mają unikalne wartości.
- Dopuszczalnych jest wiele wartości NULL.
- Można zastosować do jednej lub większej liczby kolumn.
- Nie tworzy automatycznie indeksu (chociaż wiele baz danych robi to ze względu na wydajność).
- Można dodać lub usunąć za pomocą ALTER TABLE.
Składnia:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
W powyższej składni:
- UTWÓRZ TABELĘ nazwa_tabeli: tworzy nową tabelę.
- typ danych kolumny 1 UNIKALNY: definiuje kolumnę z typem danych i wymusza unikalne wartości.
- typ danych kolumny2: definiuje inną kolumnę bez ograniczenia unikalności.
- W razie potrzeby powtórz tę czynność dla dodatkowych kolumn.
Przykład użycia ograniczenia UNIQUE języka SQL
Przykład 1: Tworzenie tabeli z UNIKALNYMI ograniczeniami
Utwórzmy tabelę Klienci, w której kolumna E-mail musi być unikalna.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
W takim przypadku każdy Klient musi posiadać unikalny adres e-mail. Jeśli spróbujesz wstawić zduplikowany adres e-mail SQL-a zgłosi błąd.
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');
Trzecie wstawienie nie powiedzie się, ponieważ adres e-mail [email protected] już istnieje w tabeli Klienci.
Przykład 2: Używanie UNIQUE z wieloma kolumnami
Możemy również zastosować ograniczenie UNIQUE do wielu kolumn, aby mieć pewność, że kombinacja tych kolumn będzie unikalna.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
W tym przykładzie kombinacja CustomerID i ProductID musi być unikalna, co oznacza, że klient nie może zamówić tego samego produktu więcej niż raz.
Przykład 3: Sprawdzanie unikalnych wartości za pomocą podzapytań
SQL pozwala sprawdzić unikalność w podzapytaniach. Możesz użyć słowa kluczowego UNIQUE w podzapytaniu, aby mieć pewność, że wyniki nie będą zawierać zduplikowanych wartości.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
W tym przykładzie sprawdzamy, czy dla każdego klienta w tabeli Zamówienia występują zduplikowane wartości OrderID. Jeśli podzapytanie zwróci unikalne wartości, zostanie wybrany identyfikator klienta.
Ważne punkty
- Zwraca wartość true w pustym podzapytaniu.
- Zwraca wartość true tylko wtedy, gdy w wyniku podzapytania znajdują się unikalne krotki (dwie krotki są unikalne, jeśli wartość dowolnego atrybutu tych dwóch krotek jest różna).
- Zwraca wartość true, jeśli podzapytanie zawiera dwa zduplikowane wiersze z co najmniej jednym atrybutem o wartości NULL.
Co zapewnia ograniczenie UNIQUE w SQL?
- A
Kolumna przechowuje tylko wartości, które nie są duplikatami
- B
Kolumna dopuszcza wartości bez sprawdzania duplikatów
- C
Kolumna akceptuje wiele identycznych wartości w wierszach
- D
Kolumna przechowuje tylko wartości, które zawsze są różne od NULL
UNIQUE zapewnia, że wszystkie wartości w kolumnie (lub grupie kolumn) muszą być odrębne, co zapobiega duplikowaniu wpisów.
Czym UNIQUE różni się od KLUCZA PODSTAWOWEGO?
- A
UNIQUE dopuszcza wiele wartości NULL; klucz podstawowy nie
- B
UNIQUE usuwa wartości NULL; klucz podstawowy zawsze przechowuje NULL
- C
UNIQUE wymusza indeksowanie; klucz podstawowy zapobiega indeksom
- D
UNIQUE wymusza sortowanie; klucz podstawowy pozwala uniknąć porządkowania
UNIQUE dopuszcza wiele wartości NULL, ponieważ każdy NULL jest uważany za inny niż KLUCZ PODSTAWOWY, który całkowicie zabrania wartości NULL.
Co się stanie po wstawieniu zduplikowanej wartości w kolumnie UNIQUE?
- A
SQL akceptuje zduplikowany wiersz i przechowuje obie wartości
- B
SQL zastępuje wcześniejszą wartość ostatnio wstawioną
- C
SQL odrzuca duplikat i generuje błąd integralności
- D
SQL automatycznie konwertuje zduplikowaną wartość na NULL
Jeśli wartość narusza ograniczenie UNIQUE, SQL blokuje wstawianie lub aktualizację i zgłasza błąd.
Które stwierdzenie dotyczące UNIQUE i NULL jest poprawne?
- A
UNIQUE traktuje wszystkie wartości NULL jako równe duplikaty
- B
UNIQUE traktuje wszystkie wartości NULL jako osobne, unikalne wiersze
- C
UNIQUE konwertuje wszystkie wpisy NULL na puste ciągi
- D
UNIQUE dopuszcza NULL tylko wtedy, gdy w kolumnie nie ma żadnych danych
Dopuszczalnych jest wiele wartości NULL, ponieważ każda wartość NULL jest oceniana jako odrębna, nieporównywalna wartość w ramach UNIQUE.
Dlaczego wiele baz danych tworzy indeks dla UNIQUE?
- A
Aby uporządkować wartości alfabetycznie przed wstawieniem
- B
Aby sformatować dane liczbowe przed zapisaniem ich w tabeli
- C
Aby przekonwertować wartości NULL na unikalne wartości sekwencyjne
- D
Aby usprawnić sprawdzanie duplikatów podczas walidacji
globalna zmienna w js
Indeks pomaga silnikowi szybko wykryć zduplikowane wartości, dzięki czemu egzekwowanie ograniczeń UNIQUE jest bardziej wydajne.
Co sprawdza słowo kluczowe UNIQUE w podzapytaniu?
- A
Zapewnia, że podzapytanie zwraca dokładnie jedną kolumnę liczbową
- B
Zapewnia, że dane wyjściowe podzapytania zawierają tylko odrębne wiersze
- C
Zapewnia, że podzapytanie porównuje wartości bez użycia złączeń
- D
Zapewnia, że podzapytanie ignoruje wiersze zawierające dowolną wartość NULL
UNIQUE sprawdza, czy podzapytanie nie generuje zduplikowanych krotek — każdy zwrócony wiersz musi różnić się co najmniej jednym atrybutem.
Quiz ukończony pomyślnie Twój wynik: 2/6Dokładność : 0%Zaloguj się, aby zobaczyć wyjaśnienie 1/6 1/6 < Previous Dalej >