logo

SQL | Restricció ÚNICA

La restricció UNIQUE a SQL garanteix que els valors d'una columna o conjunt de columnes siguin diferents per evitar duplicats. A diferència d'una CLAU PRIMÀRIA, permet múltiples valors NULL, ja que cada NULL es tracta com a únic, mentre que una clau primària requereix que tots els valors siguin únics i no NULL.

Característiques:

  • Assegura que les columnes tinguin valors únics.
  • Es permeten múltiples NULL.
  • Es pot aplicar a una o més columnes.
  • No crea automàticament un índex (tot i que moltes bases de dades ho fan per al rendiment).
  • Es pot afegir o eliminar mitjançant ALTER TABLE.

Sintaxi:



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

En la sintaxi anterior:

  • CREATE TABLE nom_taula: crea una nova taula.
  • Tipus de dades columna1 ÚNIC: defineix una columna amb un tipus de dades i aplica valors únics.
  • Tipus de dades column2: defineix una altra columna sense la restricció única.
  • Repetiu per a columnes addicionals segons sigui necessari.

Exemple d'ús de la restricció SQL UNIQUE

Exemple 1: Creació d'una taula amb restriccions Úniques

Creem una taula de clients on la columna de correu electrònic ha de ser única.

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

En aquest cas, cada client ha de tenir una adreça de correu electrònic única. Si intenteu inserir un correu electrònic duplicat SQL generarà un error.

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

La tercera inserció fallarà perquè el correu electrònic [email protected] ja existeix a la taula Clients.

Exemple 2: ús de UNIQUE amb diverses columnes

També podem aplicar la restricció UNIQUE a diverses columnes per garantir que la combinació d'aquestes columnes sigui única.

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

En aquest exemple, la combinació de CustomerID i ProductID ha de ser única, el que significa que un client no pot demanar el mateix producte més d'una vegada.

Exemple 3: Comprovació de valors únics mitjançant subconsultes

SQL us permet comprovar la singularitat de les subconsultes. Podeu utilitzar la paraula clau UNIQUE en una subconsulta per assegurar-vos que els resultats no continguin valors duplicats.

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

En aquest exemple comprovem si hi ha valors d'ID de comanda duplicats per a cada client a la taula de comandes. Si la subconsulta retorna valors únics, es seleccionarà el CustomerID.

Punts importants

  • S'avalua com a true en una subconsulta buida.
  • Retorna cert només si hi ha tuples úniques presents com a sortida de la subconsulta (dues tuples són úniques si el valor de qualsevol atribut de les dues tuples és diferent).
  • Retorna true si la subconsulta té dues files duplicades amb almenys un atribut com a NULL.
Test suggerit Edita el qüestionari 6 Preguntes

Què garanteix la restricció UNIQUE a SQL?

  • A

    La columna només emmagatzema els valors que romanen no duplicats

    convertir string en int
  • B

    La columna permet valors sense comprovar els duplicats

  • C

    La columna accepta diversos valors idèntics a les files

  • D

    La columna només emmagatzema valors que sempre no són NULL

Explicació:

UNIQUE assegura que tots els valors de la columna (o del grup de columnes) han de ser diferents per evitar entrades duplicades.

En què es diferencia UNIQUE d'una CLAU PRIMÀRIA?

  • A

    UNIQUE permet molts valors NULL; la clau primària no

  • B

    UNIQUE elimina els NULL; La clau primària sempre emmagatzema NULL

  • C

    Indexació de forces ÚNICA; la clau primària impedeix els índexs

  • D

    UNIQUE imposa l'ordenació; La clau primària evita ordenar

Explicació:

UNIQUE permet múltiples valors NULL perquè cada NULL es considera diferent a diferència d'una CLAU PRIMÀRIA que prohibeix completament els NULL.

Què passa quan s'insereix un valor duplicat en una columna ÚNICA?

  • A

    SQL accepta fila duplicada i emmagatzema tots dos valors

  • B

    SQL substitueix el valor anterior pel més recent inserit

  • C

    SQL rebutja els duplicats i genera un error d'integritat

  • D

    SQL converteix el valor duplicat en un NULL automàticament

Explicació:

Si un valor infringeix la restricció UNIQUE, SQL bloqueja la inserció o l'actualització i informa d'un error.

Quina afirmació sobre UNIQUE i NULL és correcta?

  • A

    UNIQUE tracta tots els valors NULL com a duplicats iguals

  • B

    UNIQUE tracta tots els valors NULL com a files úniques separades

  • C

    UNIQUE converteix totes les entrades NULL en cadenes buides

  • D

    UNIQUE només permet NULL quan no hi ha dades a la columna

Explicació:

Es permeten diversos NULL perquè cada NULL s'avalua com un valor diferent incomparable a UNIQUE.

Per què moltes bases de dades creen un índex per a UNIQUE?

  • A

    Per organitzar els valors alfabèticament abans d'inserir-los

  • B

    Per formatar dades numèriques abans d'emmagatzemar-les a la taula

  • C

    Per convertir NULL en valors seqüencials únics

  • D

    Per millorar la comprovació de duplicats durant la validació

Explicació:

Un índex ajuda el motor a detectar ràpidament els valors duplicats fent que l'aplicació de restriccions UNIQUE sigui més eficient.

Què verifica la paraula clau UNIQUE en una subconsulta?

  • A

    Assegura que la subconsulta retorna exactament una columna numèrica

  • B

    Assegura que la sortida de la subconsulta només conté files diferents

  • C

    Assegura que la subconsulta compare els valors sense utilitzar combinacions

  • D

    Assegura que la subconsulta ignori les files que contenen qualsevol NULL

Explicació:

UNIQUE valida que la subconsulta no produeix tuples duplicades; cada fila retornada ha de ser diferent en almenys un atribut.

SQL | Restricció ÚNICATest completat amb èxit La teva puntuació:  2/6Precisió: 0%Inicieu sessió per veure l'explicació 1/6 1/6 < Previous Següent >