sql >> Database teknologi >  >> RDS >> Database

Hvordan gør man en kolonne unik i SQL?

Problem:

Du vil gerne gøre en given kolonne unik i en given tabel i en database.

Eksempel:

Vi vil gerne lave kolonnen name unik i tabellen product . Forespørgslen nedenfor præsenterer en måde at gøre det på.

Løsning 1

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

Diskussion:

I dette eksempel en given kolonne (kolonnen name ) blev gjort unik ved at tilføje klausulen UNIQUE i slutningen af ​​definitionskolonnen (name VARCHAR(100) UNIQUE ). Denne nye tabel (i vores eksempel:product ) vil indeholde kolonnen (i vores eksempel:name ), der gemmer unikke værdier i rækker.

Løsning 2:

ALTER TABLE product 
ADD CONSTRAINT UQ_product_name UNIQUE(name);

Diskussion:

I dette eksempel tabellen product eksisterer allerede. Vi ønsker at ændre denne tabel og tilføje en unik begrænsning til kolonne name . Dette er muligt ved at bruge ALTER TABLE klausul. Først skriver vi ALTER TABLE, derefter angiver vi navnet på tabellen (i vores eksempel:product ), og derefter tilføjer vi klausulen ADD CONSTRAINT med navnet på den unikke begrænsning (i vores eksempel:UQ_product_name ). Dette efterfølges af det UNIKKE søgeord med kolonne/kolonner (i vores eksempel er det kolonne:name ) i parentes.

Du kan også lave en unik begrænsning med flere kolonner. Sådan gør du:

Løsning 3:

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

Diskussion:

I dette eksempel ændres tabelproduktet ved at bruge ALTER TABLE klausulen og klausulen ADD CONSTRAINT med navnet på den unikke begrænsning (i vores eksempel:UQ_product_name_producer ) efterfulgt af UNIQUE søgeord med listen over kolonner (i vores eksempel er der to kolonner:name og producer ) i parentes.


  1. Group_concat MySQL-funktionens ækvivalent i Oracle

  2. SQL Server Parallel Backup Restore -2

  3. Påkrævet for at deltage i 2 borde med deres FK'er i et 3. bord

  4. Oracle Datetime-funktioner (fuld liste)