Евгений Колесников il y a 1 semaine
Parent
commit
89c296ca5d
1 fichiers modifiés avec 20 ajouts et 1 suppressions
  1. 20 1
      articles/sql_for_beginner.md

+ 20 - 1
articles/sql_for_beginner.md

@@ -681,7 +681,7 @@ CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
 
         ```
         col_name col_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
-            [PRIMARY KEY]
+            [PRIMARY KEY] [CHECK]
         ```
 
         * `col_name` - название;
@@ -712,6 +712,25 @@ CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
 
         * `PRIMARY KEY` - представляет собой уникальный ключ KEY (KEY является синонимом для INDEX). Столбец с данным ключом должен быть определен как `NOT NULL`. В MySQL этот ключ называется PRIMARY (первичный). Таблица может иметь только один первичный ключ PRIMARY KEY (То есть если мы хотим создать составной первичный ключ, то надо создавать его отдельной сущностью). 
 
+        * `CHECK` - ограничение, которое проверяет, что каждое значение данных, вставляемое в столбец, удовлетворяет требованиям, указанным в ограничении. Ограничение CHECK определяет выражение, которое должно принимать значение `TRUE` или `UNKNOWN` (для NULL-значений) для значения добавляемого в столбец. Если выражение равно `FALSE`, вставка или обновление завершается неудачно, и MySQL сообщает о нарушении ограничения.
+
+            Ограничение `CHECK` может задаваться в определении столбца или после определений столбцов. В любом случае выражение ограничения должно придерживаться следующих правил:
+
+            - Выражение не может ссылаться на столбец, определенный с AUTO_INCREMENT, или на столбец в другой таблице.
+
+            - Выражение не может включать хранимые функции, загружаемые функции, процедурные или функциональные параметры, переменные или подзапросы. Однако выражение может включать литералы, операторы или детерминированные встроенные функции.
+
+            - Для создания ограничения CHECK в определении столбца вам необходимо только указать ключевое слово CHECK с последующим выражением. Например, следующий оператор CREATE TABLE определяет ограничение CHECK на столбце wingspan:
+
+                ```sql
+                CREATE TABLE airplanes (
+                    plane_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+                    plane VARCHAR(50) NOT NULL,
+                    wingspan DECIMAL(5,2) NOT NULL
+                        CHECK (wingspan BETWEEN 10 AND 400),
+                );
+                ```
+
         например:
 
         ```sql