English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать ограничения SQL.
Ограничения представляют собой ограничения для одного или нескольких столбцов таблицы, ограничивающие типы значений, которые могут храниться в этом столбце. Ограничения предоставляют стандартный механизм для поддержания точности и целостности данных в таблицах базы данных.
В SQL есть несколько типов ограничений, включая:
Теперь让我们详细讨论每个约束。
Ограничение NOT NULL specifies that the specified column does not accept NULL values.
Это означает, что если для столбца применено ограничение NOT NULL, то при вставке новой строки в таблицу вы должны добавить значение для этого столбца, не допуская NULL.
Следующие инструкции SQL создают таблицу с именемперсонытаблица, у которой есть четыре столбца, из которых три столбцаid,nameиphoneNULL значения не принимаются.
CREATE TABLE persons ( id INT NOT NULL, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );
Внимание:Пустая строка или NULL отличается от нуля, пустой строки или строки длиной ноль, например ''NULL означает, что данные еще не введены.
Ограничение PRIMARY KEY идентифицирует столбец или набор столбцов, который имеет уникальный идентификатор значения строки в таблице. Никакие две строки в таблице не могут иметь одинаковый значение основного ключа. Кроме того, вы не можете ввести NULL в столбец основного ключа.
Следующие инструкции SQL создают таблицу с именемpersonsтаблицы, иidСтолбец,指定的 как основной ключ. Это означает, что это поле не принимает NULL или повторяющиеся значения.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );
Совет:Основной ключ обычно состоит из одного столбца таблицы, но может состоять из нескольких столбцов, например, электронная почта сотрудника или выделенный идентификационный номер являются логическим основным ключом таблицы сотрудников.
Ограничение UNIQUE ограничивает наличие уникальных значений в одном или нескольких столбцах таблицы.
Хотя ограничения UNIQUE и PRIMARY KEY обеспечивают уникальность, PRIMARY KEY используется, когда необходимо обеспечить уникальность столбца или комбинации столбцов (не ключа), а не ограничения.
Следующие инструкции SQL создают таблицу с именемpersonsтаблицы, иphoneстолбец, который指定ируется как unique. Это означает, что это поле не допускает повторяющихся значений.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
Внимание:можно определить несколько ограничений UNIQUE в одной таблице, а в одной таблице можно определить только одно ограничение PRIMARY KEY. 而且, в отличие от ограничения PRIMARY KEY, ограничение UNIQUE позволяет значения NULL.
ограничение по умолчанию (DEFAULT) определяет значение по умолчанию для столбца.
значение по умолчанию для столбца.INSERTесли не назначить конкретное значение в инструкции, то двигатель базы данных вставит некоторые значения в столбец.
Следующие инструкции SQL для страна/регионсоздать столбец с значением по умолчанию.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE, country VARCHAR(30) NOT NULL DEFAULT 'Australia' );
Внимание:Если столбец таблицы определен как NOT NULL, но для этого столбца назначен default значение, то при вставке новой строки в таблицу не нужно явно назначать значение для этого столбца.
внешнее ограничение (FK) - это столбец или комбинация столбцов, которые используются для создания и укрепления отношений между данными в двух таблицах.
это показываетсотрудники (employees)иотдел(departmentsотношения таблиц междуemployeesтаблицыdept_idстолбец иdepartmentsсоответствует столбцу главного ключа таблицы. Таким образом,dept_idстолбцаименно столько сотрудниковвнешнее ограничение таблицыотделтаблицы.
В MySQL вы можете создать внешнее ограничение, определив ограничение при создании таблицы. Следующие инструкции вemployeesтаблицыdept_idсоздать внешнее ограничение, которое ссылаетсяdepartmentsтаблицыdept_idстолбец.
CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );
Ограничение CHECK используется для ограничения значений, которые можно поместить в столбец.
Например, можно создать ограничение CHECK, чтобы ограничить диапазон значений столбца заработной платы, которое позволяет значения в диапазоне от 3,000 до 10,000. Это позволяет предотвратить ввод заработной платы, выходящей за пределы обычного диапазона заработной платы. Вот пример:
CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT NOT NULL CHECK (salary >= 3000 AND salary <= 10000), dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );
Внимание: MySQL не поддерживает проверку ограничений SQL. Однако, все хранилища данных MySQL будут интерпретировать предложение CHECK, но будут его игнорировать.