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— имя ограничения внешнего ключа, которое нужно удалить.
Другие расширения