logo

SQL | UNIKÁTNÍ omezení

Omezení UNIQUE v SQL zajišťuje, že hodnoty ve sloupci nebo sadě sloupců jsou odlišné, což zabraňuje duplicitám. Na rozdíl od PRIMÁRNÍHO KLÍČE umožňuje více hodnot NULL, protože každá hodnota NULL je považována za jedinečnou, zatímco primární klíč vyžaduje, aby všechny hodnoty byly jedinečné a jiné než NULL.

np kde

Vlastnosti:

  • Zajistí, aby sloupce měly jedinečné hodnoty.
  • Je povoleno více hodnot NULL.
  • Lze použít na jeden nebo více sloupců.
  • Nevytváří automaticky index (ačkoli mnoho databází to dělá kvůli výkonu).
  • Lze přidat nebo odebrat pomocí ALTER TABLE.

Syntax:



CREATE TABLE table_name (  
 column1 datatype UNIQUE
 column2 datatype
 ...
);

Ve výše uvedené syntaxi:

  • CREATE TABLE název_tabulky: vytvoří novou tabulku.
  • Sloupec1 datový typ UNIKÁTNÍ: definuje sloupec s datovým typem a vynucuje jedinečné hodnoty.
  • datový typ sloupce2: definuje další sloupec bez jedinečného omezení.
  • Opakujte pro další sloupce podle potřeby.

Příklad použití omezení SQL UNIQUE

Příklad 1: Vytvoření tabulky s UNIKÁTNÍmi omezeními

Vytvořme tabulku Zákazníci, kde musí být sloupec Email jedinečný.

CREATE TABLE Customers (  
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);

V tomto případě musí mít každý zákazník jedinečnou e-mailovou adresu. Pokud se pokusíte vložit duplicitní e-mail SQL vyvolá chybu.

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');

Třetí vložení se nezdaří, protože e-mail [email protected] již existuje v tabulce Zákazníci.

Příklad 2: Použití UNIQUE s více sloupci

Můžeme také použít omezení UNIQUE na více sloupců, abychom zajistili, že kombinace těchto sloupců bude jedinečná.

CREATE TABLE Orders (  
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);

V tomto příkladu musí být kombinace CustomerID a ProductID jedinečná, což znamená, že zákazník nemůže objednat stejný produkt více než jednou.

Příklad 3: Kontrola jedinečných hodnot pomocí poddotazů

SQL umožňuje kontrolovat jedinečnost v poddotazech. Klíčové slovo UNIQUE můžete použít v poddotazu, abyste zajistili, že výsledky nebudou obsahovat duplicitní hodnoty.

SELECT CustomerID  
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);

V tomto příkladu zkontrolujeme, zda existují nějaké duplicitní hodnoty OrderID pro každého zákazníka v tabulce Objednávky. Pokud poddotaz vrátí jedinečné hodnoty, bude vybráno KódZákazníka.

Důležité body

  • U prázdného poddotazu se vyhodnotí jako true.
  • Vrací hodnotu true, pouze pokud jsou jako výstup dílčího dotazu přítomny jedinečné n-tice (dvě n-tice jsou jedinečné, pokud se hodnota kteréhokoli atributu dvou n-tic liší).
  • Vrátí hodnotu true, pokud má dílčí dotaz dva duplicitní řádky s alespoň jedním atributem jako NULL.
Doporučený kvíz Upravit kvíz 6 Otázky

Co zajišťuje omezení UNIQUE v SQL?

  • A

    Sloupec ukládá pouze hodnoty, které zůstávají neduplikované

  • B

    Sloupec umožňuje hodnoty bez kontroly duplikátů

  • C

    Sloupec přijímá více stejných hodnot v řádcích

  • D

    Sloupec ukládá pouze hodnoty, které jsou vždy jiné než NULL

Vysvětlení:

UNIQUE zajišťuje, že všechny hodnoty ve sloupci (nebo skupině sloupců) musí být odlišné, aby se zabránilo duplicitním záznamům.

Jak se UNIQUE liší od PRIMÁRNÍHO KLÍČE?

javascript onclick
  • A

    UNIQUE umožňuje mnoho hodnot NULL; primární klíč ne

  • B

    UNIQUE odstraňuje hodnoty NULL; primární klíč vždy ukládá NULL

  • C

    UNIKÁTNÍ indexování sil; primární klíč zabraňuje indexování

  • D

    UNIQUE vynucuje třídění; primární klíč zabraňuje objednávání

Vysvětlení:

UNIQUE povoluje více hodnot NULL, protože každá hodnota NULL je považována za odlišnou na rozdíl od PRIMÁRNÍHO KLÍČE, který hodnoty NULL zcela zakazuje.

Co se stane při vložení duplicitní hodnoty do sloupce UNIQUE?

  • A

    SQL přijímá duplicitní řádek a ukládá obě hodnoty

    icloud obrázky pro android
  • B

    SQL nahradí dřívější hodnotu nejnovější vloženou

  • C

    SQL odmítne duplikát a generuje chybu integrity

  • D

    SQL automaticky převede duplicitní hodnotu na NULL

Vysvětlení:

Pokud hodnota porušuje podmínku UNIQUE, SQL zablokuje vložení nebo aktualizaci a ohlásí chybu.

Které tvrzení o UNIQUE a NULL je správné?

  • A

    UNIQUE považuje všechny hodnoty NULL za stejné duplikáty

  • B

    UNIQUE považuje všechny hodnoty NULL za samostatné jedinečné řádky

    java zkuste catch
  • C

    UNIQUE převede všechny položky NULL na prázdné řetězce

  • D

    UNIQUE umožňuje hodnotu NULL pouze v případě, že ve sloupci neexistují žádná data

Vysvětlení:

Je povoleno více hodnot NULL, protože každá hodnota NULL je vyhodnocena jako odlišná nesrovnatelná hodnota pod UNIQUE.

Proč mnoho databází vytváří index pro UNIQUE?

  • A

    Uspořádat hodnoty podle abecedy před vložením

  • B

    Pro formátování číselných dat před uložením do tabulky

  • C

    Chcete-li převést hodnoty NULL na jedinečné sekvenční hodnoty

  • D

    Pro zlepšení kontroly duplikátů během validace

Vysvětlení:

Index pomáhá enginu rychle detekovat duplicitní hodnoty, díky čemuž je vynucení UNIQUE omezení efektivnější.

Co kontroluje klíčové slovo UNIQUE v dílčím dotazu?

srovnatelný řetězec v Javě
  • A

    Zajistí, že poddotaz vrátí přesně jeden číselný sloupec

  • B

    Zajistí, aby výstup poddotazu obsahoval pouze odlišné řádky

  • C

    Zajišťuje, že poddotaz porovnává hodnoty bez použití spojení

  • D

    Zajistí, že poddotaz ignoruje řádky, které obsahují jakoukoli hodnotu NULL

Vysvětlení:

UNIQUE ověřuje, že poddotaz nevytváří žádné duplicitní n-tice – každý vrácený řádek se musí lišit alespoň v jednom atributu.

SQL | UNIKÁTNÍ omezeníKvíz úspěšně dokončen Vaše skóre:  2/6Přesnost: 0 %Pro zobrazení vysvětlení se přihlaste 1/6 1/6 < Previous Další >