Команда CREATE TABLE создает новую таблицу в выбранной базе данных. В простейшем случае команда имеет следующий синтаксис:
CREATE TABLE table_name [(create_definition, ...)][table_options];
Здесь table_name — имя создаваемой таблицы; create_definition — объявление столбца, его типов и атрибутов. В конце оператора может следовать необязательное указание типа таблицы table_options, например, TYPE = MyISAM.
Создадим таблицу базы данных forum, которая называется authors и содержит различные данные о зарегистрированных посетителях форума:
Создание таблицы authors базы данных forum
Примечание. Символ -> означает продолжение строки запроса. Набирается с клавиатуры он не должен, клиент mysql сам автоматически выставляет его при переходе на другую строку.
Выполнив SQL-команду SHOW TABLES, можно убедиться, что таблица authors успешно создана.
Команда DESCRIBE показывает структуру созданных таблиц и имеет следующий синтаксис:
DESCRIBE table_name;
Здесь table_name — имя таблицы, структура которой запрашивается.
Примечание. Команда DESCRIBE не входит в стандарт SQL и является внутренней командой СУБД MySQL.
Просмотреть структуру таблицы authors можно, выполнив SQL -запрос.
Команда DESCRIBE
mysql >DESCRIBE authors;
После выполнения этой команды интерпретатор MySQL выведет таблицу.
Примечание. Более полное описание структуры таблицы authors, включающее права доступа и комментарии, можно получить, воспользовавшись оператором SHOW FULL COLUMNS authors;
Аналогичным образом создадим еще несколько небходимых для работы форума таблиц. Следующей по порядку идет таблица forums, в которой содержатся данные о разделах форума.
Примечание. Для удобства на форуме может быть создано несколько различных разделов. К примеру, на форуме, посвященном языкам программирования, чтобы не смешиватьтемы, относящиеся к различным языкам, имеет смысл создать следующие разделы: C++, PHP, JavaScript и т.д.
В таблице forums присутствуют следующие поля:
Coздадим SQL-запрос, создающий таблицу forums.
Создание таблицы forums
Посмотрим структуру таблицы forums.
Структура форума может быть следующей: имеется список разделов, переход по которому приводит посетителя к списку тем раздела. При переходе по теме посетитель приходит к обсуждению этой темы, состоящей из сообщений других посетителей.
Теперь создадим таблицу themes, содержащую темы форума. В таблице создадим следующие поля:
Создание таблицы themes
Структура таблицы themes
Таблица themes нормализована только частично. Она содержит два внешних ключа: id_author и id_forum для таблиц посетителей и списка форумов, в то же время в ней дублируется имя автора author, присутствующее также в таблице посетителей authors под именем name. Этот случай является примером умышленной денормализации, необходимой для избежания запроса таблицы авторов, что позволяет обеспечить приемлемую скорость работы форума.
Создадим последнюю таблицу posts в которой будут храниться сообщения. В таблице posts создадим следующие поля:
Создание таблицы posts
Структура таблицы posts
Убедимся, что все таблицы успешно созданы, выполнив команду SHOW TABLES.
Список таблиц базы данных forum
Mы знаем как посмотреть структуру таблицы. Изменить структуру таблицы позволяет оператор ALTER TABLE. С его помощью можно добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу. Оператор имеет следующий синтаксис:
ALTER TABLE table_ name alter_spec
Наиболее часто используемые значения alter_spec приведены в таблице.
Основные преобразования, выполняемые оператором ALTER TABLE
Синтаксис | Описание команды |
ADD create_definition [ FIRST|AFTER column_name] |
Добавляет новый столбец. create_definition представляет собой название нового столбца и его тип. Конструкция FIRST добавляет новый столбец перед столбцом column_name; конструкция AFTER — после него. Если место добавления не указано, столбец добавляется в конец таблицы. |
ADD INDEX [index_name] (index_col_name, . . .) |
Добавляет индекс index_name для столбца index_col_name. Если имя индекса не указывается, ему присваивается имя, совпадающее с именем столбца index_col_name. |
ADD PRIMARY KEY (index_col_name, . . .) |
Делает столбец index_col_name или группу столбцов первым ключем таблицы |
CHANGE old_col_name new_col_name type |
Заменяет столбец с именем old_col_name на столбец с именем new_col_name и типом type |
DROP col_name | Удаляет столбец с именем col_name |
DROP PRIMARY KEY | Удаляет первичный ключ таблицы |
DROP INDEX index_name | Удаляет индекс index_name |
Добавим в таблицу forums новый столбец test разместив его после столбца name.
Добавление столбца в таблицу
Структура таблицы forums после добавления столбца test
Теперь переименуем созданный столбец test в текстовой столбец new_test.
Переименование столбца
Структура таблицы forums после переименования столбца test в new_test
При изменении только типа столбца указание имени все равно необходимо, хотя в этом случае оно будет фактически повторяться.
Изменение типа столбца
Структура таблицы forums после изменения типа столбца
Теперь удалим столбец new_test.
Удаление столбца из таблицы
Структура таблицы forums после удаления столбца new_test
Оператор DROP TABLE предназначен для удаления одной или нескольких таблиц:
DROP TABLE table_name [, table_name, . . .]
Например, для удаления таблицы forums необходимо выполнить SQL-запрос представленный ниже.
Удаление таблицы forums
Похожие материалы по теме: Создание таблиц баз данных