sql >> Databasteknik >  >> RDS >> Database

Hur gör man en kolumn unik i SQL?

Problem:

Du skulle vilja göra en given kolumn unik i en given tabell i en databas.

Exempel:

Vi skulle vilja göra kolumnen name unik i tabellen product . Frågan nedan visar ett sätt att göra det.

Lösning 1

CREATE TABLE product (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(100) UNIQUE, 
producer VARCHAR(100), 
category VARCHAR(100)
);

Diskussion:

I det här exemplet en given kolumn (kolumnen name ) gjordes unik genom att lägga till satsen UNIQUE i slutet av definitionskolumnen (name VARCHAR(100) UNIQUE ). Den här nya tabellen (i vårt exempel:product ) kommer att innehålla kolumnen (i vårt exempel:name ) som lagrar unika värden i rader.

Lösning 2:

ALTER TABLE product 
ADD CONSTRAINT UQ_product_name UNIQUE(name);

Diskussion:

I det här exemplet tabellen product existerar redan. Vi vill modifiera den här tabellen och lägga till en unik begränsning i kolumnen name . Detta är möjligt genom att använda ALTER TABLE klausul. Först skriver vi ALTER TABLE, sedan listar vi namnet på tabellen (i vårt exempel:product ), och sedan lägger vi till satsen ADD CONSTRAINT med namnet på den unika begränsningen (i vårt exempel:UQ_product_name ). Detta följs av det UNIKA nyckelordet med kolumn/kolumner (i vårt exempel är det kolumn:name ) inom parentes.

Du kan också skapa en unik begränsning med flera kolumner. Så här gör du:

Lösning 3:

ALTER TABLE product 
ADD CONSTRAINT UQ_product_name_producer UNIQUE(name, producer);

Diskussion:

I det här exemplet ändras tabellprodukten genom att använda ALTER TABLE sats och satsen ADD CONSTRAINT med namnet på den unika begränsningen (i vårt exempel:UQ_product_name_producer ) följt av UNIQUE nyckelord med kolumnlistan (i vårt exempel finns det två kolumner:name och producer ) inom parentes.


  1. Kan inte kompilera GI 12.1.0.2 och segmenteringsfel

  2. När DRY-principen inte gäller:BITWISE-operationer i SQL Server

  3. Enkelt sätt att välja höger kolumn som primärnyckel för en given tabell

  4. Hur man tar bort efterföljande blanksteg i SQL Server – RTRIM()