logo

SQL | UNIKALNE ograniczenie

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.
Sugerowany quiz Edytuj quiz 6 pytań

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

Wyjaśnienie:

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

Wyjaśnienie:

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

Wyjaśnienie:

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

Wyjaśnienie:

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
Wyjaśnienie:

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

Wyjaśnienie:

UNIQUE sprawdza, czy podzapytanie nie generuje zduplikowanych krotek — każdy zwrócony wiersz musi różnić się co najmniej jednym atrybutem.

SQL | UNIKALNE ograniczenieQuiz ukończony pomyślnie Twój wynik:  2/6Dokładność : 0%Zaloguj się, aby zobaczyć wyjaśnienie 1/6 1/6 < Previous Dalej >