Тем самым мы запретили неопределенные номера товаров, поскольку регистрировать заказ с неизвестным товаром не имеет смысла.
Если для столбца задано свойство NOT NULL, то, в частности, NULL не может использоваться в качестве значения по умолчанию для этого столбца. Значение по умолчанию, отличное от NULL, вы можете задать с помощью свойства DEFAULT <Значение>, которое описано ниже. Если же вы задали для столбца свойство NOT NULL, но не задали значение по умолчанию и не указали значение для этого столбца при вставке строки в таблицу, то поведение программы MySQL зависит от того, в каком режиме вы работаете (об этом будет подробно рассказано в подразделе «Вставка отдельных строк»).
• NULL.
Данное свойство указывает, что в столбце разрешены неопределенные значения (NULL). Задавать это свойство имеет смысл только для столбцов с типом TIMESTAMP, которые по умолчанию не допускают неопределенных значений. Остальные типы столбцов допускают неопределенные значения, если только для них не задано свойство NOT NULL.
• DEFAULT <Значение>.
Данное свойство определяет значение по умолчанию для столбца, которое используется, если при вставке строки в таблицу значение столбца не задано явно. Значением по умолчанию может быть только константа; исключение составляют столбцы с типом TIMESTAMP, для которых в качестве значения по умолчанию можно задать переменную величину CURRENT_TIMESTAMP (текущую дату и время). Нельзя установить значение по умолчанию для столбцов с типом TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUM-TEXT, LONGBLOB и LONGTEXT, а также для числовых столбцов, для которых задано свойство AUTO_INCREMENT. Кроме того, нельзя использовать неопределенное значение по умолчанию (NULL), если для столбца задано свойство NOT NULL.
Например, чтобы задать для поля phone (телефон) таблицы Customers (Клиенты) значение по умолчанию, равное пустой строке, можно определить это поле следующим образом:
phone VARCHAR(20) DEFAULT ''
• COMMENT 'Текст комментария'.
Произвольное текстовое описание столбца длиной до 255 символов. Например, описание для поля rating (рейтинг) таблицы Customers (Клиенты) можно задать следующим образом:
rating INT COMMENT 'Рейтинг клиента'
Помимо перечисленных свойств, для столбца можно также задать свойства UNIQUE и PRIMARY KEY, однако соответствующие настройки ключевых столбцов и индексов можно указать и после определения всех столбцов таблицы. Мы будем рассматривать только второй вариант создания ключевых столбцов и индексов. Об этом и пойдет речь в следующем пункте.
После того как определены все столбцы таблицы, можно перечислить через запятую ключевые столбцы и индексы (см. листинги 2.1–2.4). Вы можете использовать следующие конструкции:
• [CONSTRAINT <Имя ключа>] PRIMARY KEY (<Список столбцов>).
Определяет первичный ключ таблицы (о первичных ключах было рассказано в главе 1). В таблице может быть только один первичный ключ, состоящий из одного или нескольких столбцов. Столбцам, входящим в первичный ключ, автоматически присваивается свойство NOT NULL. Ключевое слово CONSTRAINT и имя ключа можно опустить, так как для первичного ключа заданное имя игнорируется и используется имя PRIMARY.
Если в состав первичного