sql >> Database >  >> RDS >> SQLite

SQLite UNIEKE beperking

Samenvatting :in deze tutorial leer je hoe je de SQLite UNIQUE . gebruikt beperking om ervoor te zorgen dat alle waarden in een kolom of een groep kolommen uniek zijn.

Inleiding tot SQLite UNIQUE beperking

Een UNIQUE beperking zorgt ervoor dat alle waarden in een kolom of een groep kolommen van elkaar verschillen of uniek zijn.

Een UNIQUE definiëren beperking, gebruik je de UNIQUE zoekwoord gevolgd door een of meer kolommen.

U kunt een UNIQUE . definiëren beperking op kolom- of tabelniveau. Alleen op tabelniveau kunt u een UNIQUE . definiëren beperking over meerdere kolommen.

Hieronder ziet u hoe u een UNIQUE . definieert beperking voor een kolom op kolomniveau:

CREATE TABLE table_name(
    ...,
    column_name type UNIQUE,
    ...
);
Code language: SQL (Structured Query Language) (sql)

Of op tafelniveau:

CREATE TABLE table_name(
    ...,
    UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)

Het volgende illustreert hoe u een UNIQUE . definieert beperking voor meerdere kolommen:

CREATE TABLE table_name(
    ...,
    UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)

Eens een UNIQUE beperking is gedefinieerd, als u probeert een waarde in te voegen of bij te werken die al in de kolom bestaat, geeft SQLite een fout en breekt de bewerking af.

SQLite UNIQUE voorbeelden van beperkingen

Laten we enkele voorbeelden nemen van het gebruik van de UNIQUE beperking.

Een UNIQUE definiëren beperking voor één kolom voorbeeld

De volgende instructie maakt een nieuwe tabel aan met de naam contacts met een UNIQUE beperking gedefinieerd voor de email kolom:

CREATE TABLE contacts(
    contact_id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT,
    email TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)

In het volgende voorbeeld wordt een nieuwe rij ingevoegd in de contacts tafel:

INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)

Als u probeert een nieuw contact met hetzelfde e-mailadres in te voegen, krijgt u een foutmelding:

INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)

Hier is de foutmelding:

Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)

Een UNIQUE definiëren beperking voor meerdere kolommen voorbeeld

De volgende instructie creëert de shapes tafel met een UNIQUE beperking gedefinieerd voor de background_color en foreground_color kolommen:

CREATE TABLE shapes(
    shape_id INTEGER PRIMARY KEY,
    background_color TEXT,
    foreground_color TEXT,
    UNIQUE(background_color,foreground_color)
);
Code language: SQL (Structured Query Language) (sql)

De volgende instructie voegt een nieuwe rij in de shapes . in tafel:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)

De volgende verklaring werkt omdat er geen duplicatie-schending is in zowel background_color en foreground_color kolommen:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)

De volgende instructie veroorzaakt echter een fout vanwege de duplicaten in beide background_color en foreground_color kolommen:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)

Hier is de fout:

Error while executing SQL query on database 'chinook': `UNIQUE` constraint failed: shapes.background_color, shapes.foreground_color
Code language: SQL (Structured Query Language) (sql)

SQLite UNIQUE beperking en NULL

SQLite behandelt dat alle NULL-waarden verschillend zijn, daarom is een kolom met een UNIQUE beperking kan meerdere NULL-waarden hebben.

De volgende instructie maakt een nieuwe tabel aan met de naam lists wiens email kolom heeft een UNIQUE beperking:

CREATE TABLE lists(
    list_id INTEGER PRIMARY KEY,
    email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)

De volgende instructie voegt meerdere NULL-waarden in de email kolom van de lists tafel:

INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)

Laten we gegevens opvragen uit de lists tafel:

SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)

Hier is de uitvoer:

Zoals je kunt zien, heeft de e-mailkolom een ​​UNIQUE beperking, kan het meerdere NULL-waarden accepteren.

In deze tutorial heb je geleerd hoe je de SQLite UNIQUE . gebruikt beperking om ervoor te zorgen dat alle waarden in een kolom of een groep kolommen uniek zijn.


  1. Oracle String-functies (volledige lijst)

  2. Ondersteunde formaatmodellen voor de ROUND() en TRUNC() datumfuncties in Oracle

  3. Is er een SQL Server Profiler voor SQL Server Express?

  4. Een relatie maken in SQL Server 2017