SQLite Ограничения

Ограничения — это правила, применяемые к столбцам данных в таблице. Они используются для ограничения типов данных, которые можно вставить в таблицу, обеспечивая точность и надёжность данных в базе данных.

Ограничения могут быть уровня столбца или уровня таблицы. Ограничения уровня столбца применяются только к столбцу, тогда как ограничения уровня таблицы применяются ко всей таблице.

Ниже приведены обычно используемые ограничения в SQLite.

  • Ограничение NOT NULL: гарантирует, что столбец не может содержать значения NULL.

  • Ограничение DEFAULT: предоставляет значение по умолчанию для столбца, когда значение не указано.

  • Ограничение UNIQUE: гарантирует, что все значения в столбце различаются.

  • Ограничение PRIMARY KEY: уникально идентифицирует каждую строку/запись в таблице базы данных.

  • Ограничение CHECK: ограничение CHECK гарантирует, что все значения в столбце удовлетворяют определённым условиям.

Ограничение NOT NULL

По умолчанию столбец может содержать значения NULL. Если вы не хотите, чтобы столбец содержал значения NULL, необходимо определить это ограничение на данном столбце, указав, что значения NULL не допускаются в этом столбце.

NULL отличается от отсутствия данных; он представляет неизвестные данные.

Пример

Например, следующая инструкция SQLite создаёт новую таблицу COMPANY с пятью столбцами, где для трёх столбцов ID, NAME и AGE указано, что они не принимают значения NULL:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Ограничение DEFAULT

Ограничение DEFAULT предоставляет значение по умолчанию для столбца, когда инструкция INSERT INTO не задаёт конкретное значение.

Пример

Например, следующая инструкция SQLite создаёт новую таблицу COMPANY с пятью столбцами. Здесь для столбца SALARY значение по умолчанию установлено равным 5000.00. Поэтому, когда инструкция INSERT INTO не задаёт значение для этого столбца, оно будет установлено равным 5000.00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Ограничение UNIQUE

Ограничение UNIQUE не позволяет двум записям иметь одинаковое значение в определённом столбце. Например, в таблице COMPANY вы можете захотеть запретить двум или более людям иметь одинаковый возраст.

Пример

Например, следующий оператор SQLite создаёт новую таблицу COMPANY с пятью столбцами. Здесь столбец AGE установлен как UNIQUE, поэтому не может быть двух записей с одинаковым возрастом:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Ограничение PRIMARY KEY

Ограничение PRIMARY KEY уникально идентифицирует каждую запись в таблице базы данных. В таблице может быть несколько столбцов UNIQUE, но только один первичный ключ. Первичные ключи важны при проектировании таблиц базы данных. Первичный ключ — это уникальный идентификатор.

Мы используем первичные ключи для ссылки на строки в таблице. Связи между таблицами можно создавать, задав первичный ключ как внешний ключ в других таблицах. Из-за «давней ошибки в коде» в SQLite первичные ключи могут быть NULL, что отличается от других баз данных.

Первичный ключ — это поле в таблице, которое уникально идентифицирует каждую строку/запись в таблице базы данных. Первичные ключи должны содержать уникальные значения. Столбец первичного ключа не может содержать значения NULL.

Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей. Когда в качестве первичного ключа используется несколько полей, они называютсясоставным ключом.。

Если в таблице определён первичный ключ по любому полю (полям), то никакие две записи не могут иметь одинаковое значение в этом поле (этих полях).

Пример

Мы уже видели различные примеры создания таблицы COMAPNY с ID в качестве первичного ключа:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Ограничение CHECK

Ограничение CHECK позволяет с помощью условия проверять значения при вводе записи. Если условие оказывается ложным, запись нарушает ограничение и не может быть введена в таблицу.

Пример

Например, следующий оператор SQLite создаёт новую таблицу COMPANY с пятью столбцами. Здесь мы добавляем CHECK на столбец SALARY, поэтому заработная плата не может быть нулевой:

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Удаление ограничений

В SQLite, чтобы удалить ограничения из таблицы, обычно нужно использовать инструкциюALTER TABLEи указать тип удаляемого ограничения.

Удаление ограничения первичного ключа:

ALTER TABLE table_name
DROP CONSTRAINT primary_key_name;

Здесь,table_name— имя таблицы, с которой вы работаете,primary_key_name— имя ограничения первичного ключа, которое нужно удалить.

Удаление ограничения уникальности:

ALTER TABLE table_name
DROP CONSTRAINT unique_constraint_name;

Аналогично,table_name— имя таблицы,unique_constraint_name— имя ограничения уникальности, которое нужно удалить.

Удаление ограничения внешнего ключа:

ALTER TABLE table_name
DROP CONSTRAINT foreign_key_constraint_name;

Здесь,table_name— имя таблицы,foreign_key_constraint_name— имя ограничения внешнего ключа, которое нужно удалить.

Другие расширения