Cоздание таблиц MySQL
Команда CREATE TABLE
создает новую таблицу в выбранной базе данных. В простейшем случае команда имеет следующий синтаксис:
CREATE TABLE table_name [(create_definition, ...)][table_options];
Здесь table_name
— имя создаваемой таблицы; create_definition
— объявление столбца, его типов и атрибутов. В конце оператора может следовать необязательное указание типа таблицы table_options
, например, TYPE = MyISAM
.
Создадим таблицу базы данных forum
, которая называется authors и содержит различные данные о зарегистрированных посетителях форума:
- имя (
name
); - пароль (
passw
); e-mail (email)
;- web-адрес сайта посетителя (
url
); - номер
ICQ (isq)
; - сведения о посетителе (
about
); - строку, содержащую путь к файлу фотографии посетителя (
photo
); - время добавления запроса (
last_time
); - счетчик сообщений, оставленных посетителем на форуме (
themes
); - статус посетителя — является ли он модератором, администратором или обычным посетителем (
statussuser
); - кроме перечисленных полей в таблице имеется поле
id_author
, являющееся первичным ключем таблицы.
Создание таблицы 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 присутствуют следующие поля:
- первичный ключ (
id_forum
); - название раздела (
name
); - правила форума (
rule
); - краткое описание форума (
logo
); - порядковый номер (
pos
); - флаг (
hide
), принимающий значение'hide'
, если форум скрытый, и'show'
, если он общедоступен.
Coздадим SQL-запрос, создающий таблицу forums.
Создание таблицы forums
Посмотрим структуру таблицы forums.
Структура форума может быть следующей: имеется список разделов, переход по которому приводит посетителя к списку тем раздела. При переходе по теме посетитель приходит к обсуждению этой темы, состоящей из сообщений других посетителей.
Теперь создадим таблицу themes
, содержащую темы форума. В таблице создадим следующие поля:
- первичный ключ (
id_theme
); - название темы (
name
); - автор темы (
author
); - внешний ключ к таблице авторов (
id_author
); - флаг (
hide
), принимающий значение'hide'
, если тема скрыта, и'show'
, если она отображается (это поле необходимо для модерирования); - время добавления темы (
putdate
); - внешний ключ к таблице форумов (
id_forum
), для того чтобы определить, к какому разделу форума относится данная тема.
Создание таблицы themes
Структура таблицы themes
Таблица themes
нормализована только частично. Она содержит два внешних ключа: id_author
и id_forum
для таблиц посетителей и списка форумов, в то же время в ней дублируется имя автора author
, присутствующее также в таблице посетителей authors
под именем name. Этот случай является примером умышленной денормализации, необходимой для избежания запроса таблицы авторов, что позволяет обеспечить приемлемую скорость работы форума.
Создадим последнюю таблицу posts
в которой будут храниться сообщения. В таблице posts
создадим следующие поля:
- первичный ключ (
id_post
); - тело сообщения (
name
); - необязательная ссылка на ресурс, которую автор сообщения может ввести при добавлении сообщения (
url
); - путь к файлу, прикрепляемому к сообщению (
file
); - имя автора (
author
); - внешний ключ к таблице авторов (
id_author
); - флаг (
'hide'
), принимающий значение'hide'
, если сообщение скрытое, и'show'
, если он отображается (это поле необходимо для модерирования); - время добавления сообщения (
putdate
); - сообщение, ответом на которое является данное сообщение (
parent_post
): если это первое сообщение в теме, то поле равно 0; - внешний ключ к теме (
id_theme
), указывающий, к какой теме относится сообщение.
Создание таблицы posts
Структура таблицы posts
Убедимся, что все таблицы успешно созданы, выполнив команду SHOW TABLES
.
Список таблиц базы данных forum
Mы знаем как посмотреть структуру таблицы. Изменить структуру таблицы позволяет оператор ALTER TABLE
. С его помощью можно добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу. Оператор имеет следующий синтаксис:
ALTER TABLE table_ name alter_spec
Наиболее часто используемые значения alter_spec
приведены в таблице.
Синтаксис | Описание команды |
---|---|
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
Удаление таблиц MySQL
Оператор DROP TABLE
предназначен для удаления одной или нескольких таблиц:
DROP TABLE table_name [, table_name, . . .]
Например, для удаления таблицы forums необходимо выполнить SQL-запрос представленный ниже.
Удаление таблицы forums
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться