Следующим шагом после создания базы данных является создание в ней одной или более таблиц. Команды SQL, которые используются для создания новой таблицы, имеют следующий синтаксис:
CREATE TABLE имя-таблицы (объявление-поля, объявление - поля, ...) TYPE = тип - таблицы;
Правила создания имен таблиц и полей аналогичны правилам создания имен баз данных. Каждая таблица (вместе с данными, которые она содержит) хранится в каталоге MySQL data/ в виде набора из трех файлов (предполагается, что используется стандартный тип таблиц MylSAM). Можно задавать столько полей, сколько нужно, разделяя при этом объявления полей запятыми. Поля и таблицы, повторяющие зарезервированные слова MySQL, должны выделяться обратной одинарной кавычкой
Ниже представлен пример использования этой команды для создания таблицы, в которой должны храниться имена пользователей и их пароли.
Создание таблиц
Создание таблиц
Как видно из предыдущих примеров, объявление поля в команде CREATE TABLE содержит уникальное имя поля, и указанный за ним типа поля, задающего тип данных, которые будут содержаться в этом поле. Одна команда CREATE TABLE позволяет задавать множество таких объявлений. После этих объявлений задаются ограничения уровня таблицы и объявление типа таблицы.
Об этих компонентах речь пойдет в следующих разделах.
Типы полей
СУБД MySQL отличается разнообразием типов полей, удовлетворяющих различным требованиям к данным. Самые важные из них представлены в табл. 8.1 и детально описаны в главе 5, "Типы данных MySQL".
Ограничения, касающиеся полей
Каждое из определений поля может содержать дополнительные ограничения или мо­дификаторы, которые целесообразно использовать для повышения контроля целостности вводимых в базу данных.
Не мой type
Предложение TYPE в команде CREATE TABLE является необязательным, и по умолчанию создаются таблицы типа MylSAM1. Детальнее об этом - в разделе "Типы таблиц".
Создание таблиц
Создание таблиц
Модификаторы null и not null
Модификаторы NULL и NOT NULL указываются после каждого объявления поля, определяя тем самым, что это поле должно быть, соответственно, пустым, т.е. не содержать данных, или наоборот - обязательно заполненным данными. По умолчанию MySQL делает объявление с модификатором NULL. Если поле обязательно должно быть задано как NOT NULL, MySQL не пропустит команды INSERT, содержащие пустые значения в этом поле.
Если, например, вы хотите применить модификатор NOT NULL для полей только что созданной таблицы users, объявление таблицы будет иметь следующий вид.
Создание таблиц
Однако это правило не имеет силы для полей, объявленных с модификатором AUTO_INCREMENT, и для полей типа TIMESTAMP. Добавление значения NULL в эти поля приводит к добавлению следующего по порядку значения или текущей временной метки соответственно.
Модификатор default
Модификатор DEFAULT позволяет задавать значения, присваиваемые по умолчанию. Эти значения присваиваются, если при добавлении новой записи не задается никакого конкретного значения. Обратимся к следующему примеру, в котором создается таблица, содержащая информацию о служащих и отделах, в которых они трудятся. По умолчанию все служащие работают в отделе информационных систем (MIS).
Создание таблиц
Если модификатор DEFAULT перед полем отсутствует, MySQL автоматически присваивает значение по умолчанию в зависимости от того, может поле иметь значение NULL или нет. Для полей, объявленных как NULL, MySQL по умолчанию добавляет значение NULL. Для полей, объявленных как NOT NULL, MySQL вставит значение 0 для цифровых типов, пустую строку для строковых типов, для типа TIMESTAMP вставляется текущая дата и время, а для типа ENUM - первое значение из перечисления.
Модификатор autoincrement
Модификатор AUTO_INCREMENT, применяемый только к полям типа INT, отображает, что MySQL должен автоматически генерировать число, которое будет храниться в этом поле (инкрементируя предыдущее значение на 1). Это особенно уместно для первичных ключей, т.к. он позволяет автоматически создавать уникальный идентификатор для каждой записи.
Рассмотрим следующий пример, демонстрирующий автоматическое присвоение всем записям уникального числового идентификатора.
Создание таблиц
Создание таблиц
На заметку

Таблицы MySQL могут иметь только одно поле, объявленное с модификатором AUTO_INCREMENT, которое, кроме того, должно быть ключевым.
Кроме ограничений на уровне полей, MySQL позволяет задавать такие ограничения табличного уровня, как первичные и внешние ключи, индексы и ограничения на уникальность. Эти ограничения обычно задаются в команде CREATE TABLE после объявления полей. Подробнее об этом - в следующих разделах.