Курс "Язык программирования PHP"
Шрифт:
В версии MySQL 3.23 и более поздних можно использовать ключевые слова IF NOT EXISTS для того, чтобы не возникала ошибка, если указанная таблица уже существует. Следует учитывать, что при этом идентичность структур этих таблиц не проверяется.
Каждая таблица представлена набором определенных файлов в директории базы данных.
Синтаксис
В выражении определение_столбца перечисляют, какие столбцы должны быть созданы в таблице. Каждый столбец таблицы может быть пустым (NULL), иметь значение по умолчанию, являться ключом или автоинкрементом. Кроме того, для каждого столбца обязательно указывается тип данных, которые будут в нем храниться. Если не указывается ни NULL, ни NOT NULL, то столбец интерпретируется так, как будто указано NULL. Если поле помечают как автоинкремент (AUTO_INCREMENT), то его значение автоматически увеличивается на единицу каждый раз, когда происходит добавление данных в таблицу и в это поле записывается пустое значение (NULL, т.е. ничего не записывается) или 0. Автоинкремент в таблице может быть только один, и при этом он обязательно должен быть проиндексирован. Последовательность AUTO_INCREMENT начинается с 1. Наличие автоинкремента является одной из особенностей MySQL. Формально описание столбца (определение_столбца) выглядит так:
Тип столбца (тип в выражении определение_столбца) может быть одним из следующих:
– целый: INT[(length)] [UNSIGNED] [ZEROFILL]
– действительный: REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
– символьный: CHAR(length) [BINARY] и VARCHAR(length) [BINARY]
– дата и время: DATE и TIME
– для работы с большими объектами: BLOB
– текстовый: TEXT
– перечислимое множество: ENUM(value1,value2,value3,...) и SET(value1,value2,value3,...)
Полный список типов смотрите в документации MySQL.
Вместо перечисления столбцов и их свойств в определении_столбца можно задавать списки ключевых и индексных полей, ограничения и проверки:
PRIMARY KEY (имя_индексируемого_столбца, ...)
или
KEY [имя_индекса] (имя_индексируемого_столбца,...)
или
INDEX [имя_индекса] (имя_индексируемого_столбца,...)
или
(имя_индексируемого_столбца,...)
или
(имя_индексируемого_столбца,...)
или
[reference_definition]
или
CHECK (expr)
При задании всех этих элементов указывается список полей (столбцов), которые будут входить в индекс, ключ или ограничение, имя_индексируемого_столбца записывается следующим образом:
FOREIGN KEY, CHECK и REFERENCES на самом деле ничего не делают в MySQL. Они добавлены только для совместимости с другими SQL-серверами. Поэтому на них мы останавливаться не будем.
Кроме всего перечисленного, при создании таблицы можно указать некоторые ее свойства (опции_таблицы), например такие:
– тип таблицы: TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
– начальное значение счетчика автоинкремента: AUTO_INCREMENT = число
– средняя длина строк в таблице: AVG_ROW_LENGTH = число
– комментарии к таблице (строка из 60 символов): COMMENT = "строка"
– максимальное и минимальное предполагаемое число строк: MAX_ROWS = число и MIN_ROWS = число
И последний (опять же опциональный) элемент команды CREATE – это выражение SELECT (select_выражение). Синтаксис такой:
Если при создании таблицы в команде CREATE указывается выражение SELECT, то все поля, полученные выборкой, добавляются в создаваемую таблицу.
Пример 10.1. Создадим таблицу Persons, структура которой была приведена на рисунке 10.1.
С помощью специфичной для MySql команды SHOW можно просмотреть существующие базы данных, таблицы в базе данных и поля в таблице.
Показать все базы данных:
Сделать текущей базу данных book и показать все таблицы в ней: