logo

SQL | Constrângere UNICA

Constrângerea UNIQUE din SQL asigură că valorile dintr-o coloană sau dintr-un set de coloane sunt distincte, prevenind duplicarea. Spre deosebire de o cheie primară, aceasta permite mai multe valori NULL, deoarece fiecare NULL este tratat ca unic, în timp ce o cheie primară necesită ca toate valorile să fie unice și non-NULL.

Caracteristici:

  • Se asigură că coloanele au valori unice.
  • Sunt permise mai multe valori NULL.
  • Se poate aplica la una sau mai multe coloane.
  • Nu creează automat un index (deși multe baze de date fac pentru performanță).
  • Poate fi adăugat sau eliminat folosind ALTER TABLE.

Sintaxă:



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

În sintaxa de mai sus:

  • CREATE TABLE table_name: creează un nou tabel.
  • tipul de date coloana1 UNIQUE: definește o coloană cu un tip de date și impune valori unice.
  • tipul de date coloana2: definește o altă coloană fără constrângerea unică.
  • Repetați pentru coloane suplimentare după cum este necesar.

Exemplu de utilizare a constrângerii SQL UNIQUE

Exemplul 1: Crearea unui tabel cu constrângeri UNICE

Să creăm un tabel Clienți în care coloana E-mail trebuie să fie unică.

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

În acest caz, fiecare client trebuie să aibă o adresă de e-mail unică. Dacă încercați să introduceți un e-mail duplicat SQL va genera o eroare.

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

A treia inserare va eșua deoarece e-mailul [email protected] există deja în tabelul Clienți.

Exemplul 2: Utilizarea UNIQUE cu mai multe coloane

De asemenea, putem aplica constrângerea UNIQUE la mai multe coloane pentru a ne asigura că combinația acelor coloane este unică.

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

În acest exemplu, combinația dintre CustomerID și ProductID trebuie să fie unică, ceea ce înseamnă că un client nu poate comanda același produs de mai multe ori.

Exemplul 3: Verificarea valorilor unice folosind subinterogări

SQL vă permite să verificați unicitatea în subinterogări. Puteți utiliza cuvântul cheie UNIQUE într-o subinterogare pentru a vă asigura că rezultatele nu conțin valori duplicate.

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

În acest exemplu, verificăm dacă există valori duplicate OrderID pentru fiecare client în tabelul Comenzi. Dacă subinterogarea returnează valori unice, va fi selectat CustomerID.

Puncte importante

  • Se evaluează la true într-o subinterogare goală.
  • Returnează adevărat numai dacă există tupluri unice prezente ca rezultat al subinterogării (două tupluri sunt unice dacă valoarea oricărui atribut al celor două tupluri diferă).
  • Returnează adevărat dacă interogarea secundară are două rânduri duplicat cu cel puțin un atribut ca NULL.
Test sugerat Editați testul 6 întrebări

Ce asigură constrângerea UNIQUE în SQL?

  • O

    Coloana stochează numai valorile care rămân neduplicate

  • B

    Coloana permite valori fără a verifica duplicatele

  • C

    Coloana acceptă mai multe valori identice în rânduri

  • D

    Coloana stochează numai valorile care sunt întotdeauna non-NULL

    10 din 10
Explicaţie:

UNIQUE se asigură că toate valorile din coloană (sau din grupul de coloane) trebuie să fie distincte, prevenind intrările duplicate.

Prin ce diferă UNIQUE de o CHEIE PRIMARĂ?

  • O

    UNIQUE permite multe valori NULL; cheia primară nu

  • B

    UNIQUE elimină NULL-urile; cheia primară stochează întotdeauna NULL

  • C

    indexarea forțelor unice; cheia primară împiedică indexurile

  • D

    UNIQUE impune sortarea; cheia primară evită comandarea

Explicaţie:

UNIQUE permite mai multe valori NULL, deoarece fiecare NULL este considerat diferit, spre deosebire de CHEIA PRIMARIA care interzice total NULL-urile.

Ce se întâmplă la inserarea unei valori duplicate într-o coloană UNICA?

  • O

    SQL acceptă rândurile duplicate și stochează ambele valori

  • B

    SQL înlocuiește valoarea anterioară cu cea mai recentă inserată

  • C

    SQL respinge duplicatul și generează o eroare de integritate

  • D

    SQL convertește automat valoarea duplicată într-un NULL

Explicaţie:

Dacă o valoare încalcă constrângerea UNIQUE, SQL blochează inserarea sau actualizarea și raportează o eroare.

Care afirmație despre UNIQUE și NULL este corectă?

  • O

    UNIQUE tratează toate valorile NULL ca duplicate egale

    face în timp ce java
  • B

    UNIQUE tratează toate valorile NULL ca rânduri unice separate

  • C

    UNIQUE convertește toate intrările NULL în șiruri goale

  • D

    UNIQUE permite NULL numai atunci când nu există date în coloană

Explicaţie:

Sunt permise mai multe valori NULL deoarece fiecare NULL este evaluat ca o valoare distinctă incomparabilă în UNIQUE.

De ce multe baze de date creează un index pentru UNIQUE?

  • O

    Pentru a organiza valorile în ordine alfabetică înainte de inserare

  • B

    Pentru a formata datele numerice înainte de a le stoca în tabel

  • C

    Pentru a converti valorile NULL în valori secvențiale unice

  • D

    Pentru a îmbunătăți verificarea duplicatelor în timpul validării

Explicaţie:

Un index ajută motorul să detecteze rapid valorile duplicate, făcând aplicarea constrângerii UNIQUE mai eficientă.

Ce verifică cuvântul cheie UNIQUE într-o subinterogare?

  • O

    Se asigură că subinterogarea returnează exact o coloană numerică

  • B

    Se asigură că ieșirea subinterogării conține doar rânduri distincte

  • C

    Se asigură că subinterogarea compară valorile fără a utiliza îmbinări

  • D

    Se asigură că subinterogarea ignoră rândurile care conțin orice NULL

Explicaţie:

UNIQUE validează faptul că subinterogarea nu produce tuplu duplicat — fiecare rând returnat trebuie să difere în cel puțin un atribut.

SQL | Constrângere UNICATest completat cu succes Scorul dvs.:  2/6Precizie: 0%Conectați-vă pentru a vizualiza explicația 1/6 1/6 < Previous Următorul >