SQLite
 sql >> база данни >  >> RDS >> SQLite

УНИКАЛНО ограничение на SQLite

Резюме :в този урок ще научите как да използвате SQLite UNIQUE ограничение, за да се гарантира, че всички стойности в колона или група от колони са уникални.

Въведение в SQLite UNIQUE ограничение

UNIQUE ограничението гарантира, че всички стойности в колона или група колони са различни една от друга или уникални.

За да дефинирате UNIQUE ограничение, използвате UNIQUE ключова дума, последвана от една или повече колони.

Можете да дефинирате UNIQUE ограничение на ниво колона или таблица. Само на ниво таблица можете да дефинирате UNIQUE ограничение в множество колони.

По-долу е показано как да дефинирате UNIQUE ограничение за колона на ниво колона:

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

Или на ниво таблица:

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

Следното илюстрира как да дефинирате UNIQUE ограничение за множество колони:

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

Веднъж UNIQUE ограничението е дефинирано, ако се опитате да вмъкнете или актуализирате стойност, която вече съществува в колоната, SQLite ще издаде грешка и ще прекрати операцията.

SQLite UNIQUE примери за ограничения

Нека вземем няколко примера за използване на UNIQUE ограничение.

Дефиниране на UNIQUE ограничение за пример за една колона

Следното изявление създава нова таблица с име contacts с UNIQUE ограничение, дефинирано за email колона:

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)

Следният пример вмъква нов ред в contacts таблица:

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

Ако се опитате да вмъкнете нов контакт със същия имейл, ще получите съобщение за грешка:

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

Ето съобщението за грешка:

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

Дефиниране на UNIQUE пример за ограничение за множество колони

Следното изявление създава shapes таблица с UNIQUE ограничение, дефинирано за background_color и foreground_color колони:

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)

Следното изявление вмъква нов ред в shapes таблица:

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

Следното изявление работи поради липса на нарушение на дублиране и в background_color и foreground_color колони:

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

Следното изявление обаче причинява грешка поради дубликатите и в background_color и foreground_color колони:

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

Ето грешката:

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 ограничение и NULL

SQLite третира всички NULL стойности са различни, следователно колона с UNIQUE ограничението може да има множество NULL стойности.

Следното изявление създава нова таблица с име lists чийто email колоната има UNIQUE ограничение:

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

Следното изявление вмъква множество NULL стойности в email колона от lists таблица:

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

Нека да потърсим данни от lists таблица:

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

Ето изхода:

Както можете да видите, въпреки че колоната за имейл има UNIQUE ограничение, може да приеме множество NULL стойности.

В този урок научихте как да използвате SQLite UNIQUE ограничение, за да се гарантира, че всички стойности в колона или група от колони са уникални.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Производителност на Android Sqlite

  2. Как да поръчате по дата в SQLite

  3. SQLite JSON_OBJECT()

  4. SQLite въвежда функцията UNIXEPOCH().

  5. Пакетът вече е публикувал 50 тоста. Не се показва повече