ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Cоздание и удаление таблиц MySQL

Таблицы

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

Создание таблицы authors базы данных forum

Примечание. Символ -> означает продолжение строки запроса. Набирается с клавиатуры он не должен, клиент mysql сам автоматически выставляет его при переходе на другую строку.

Выполнив SQL-команду SHOW TABLES, можно убедиться, что таблица authors успешно создана.

таблица  authors  успешно создана

Команда DESCRIBE показывает структуру созданных таблиц и имеет следующий синтаксис:

DESCRIBE table_name;

Здесь table_name — имя таблицы, структура которой запрашивается.

Примечание. Команда DESCRIBE не входит в стандарт SQL и является внутренней командой СУБД MySQL.

Просмотреть структуру таблицы authors можно, выполнив SQL -запрос.

Команда DESCRIBE

mysql >DESCRIBE authors;

После выполнения этой команды интерпретатор MySQL выведет таблицу.

Команда DESCRIBE

Примечание. Более полное описание структуры таблицы authors, включающее права доступа и комментарии, можно получить, воспользовавшись оператором SHOW FULL COLUMNS authors;

Аналогичным образом создадим еще несколько небходимых для работы форума таблиц. Следующей по порядку идет таблица forums, в которой содержатся данные о разделах форума.

Примечание. Для удобства на форуме может быть создано несколько различных разделов. К примеру, на форуме, посвященном языкам программирования, чтобы не смешиватьтемы, относящиеся к различным языкам, имеет смысл создать следующие разделы: C++, PHP, JavaScript и т.д.

В таблице forums присутствуют следующие поля:

  • первичный ключ (id_forum);
  • название раздела (name);
  • правила форума (rule);
  • краткое описание форума (logo);
  • порядковый номер (pos);
  • флаг (hide), принимающий значение 'hide', если форум скрытый, и 'show', если он общедоступен.

Coздадим SQL-запрос, создающий таблицу forums.

Создание таблицы forums

Создание таблицы forums

Посмотрим структуру таблицы forums.

Структура таблицы forums

Структура форума может быть следующей: имеется список разделов, переход по которому приводит посетителя к списку тем раздела. При переходе по теме посетитель приходит к обсуждению этой темы, состоящей из сообщений других посетителей.

Теперь создадим таблицу themes, содержащую темы форума. В таблице создадим следующие поля:

  • первичный ключ (id_theme);
  • название темы (name);
  • автор темы (author);
  • внешний ключ к таблице авторов (id_author);
  • флаг (hide), принимающий значение 'hide', если тема скрыта, и 'show', если она отображается (это поле необходимо для модерирования);
  • время добавления темы (putdate);
  • внешний ключ к таблице форумов (id_forum), для того чтобы определить, к какому разделу форума относится данная тема.

Создание таблицы themes

Создание таблицы themes

Структура таблицы 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

Структура таблицы posts

Структура таблицы posts

Убедимся, что все таблицы успешно созданы, выполнив команду SHOW TABLES.

Список таблиц базы данных forum

Список таблиц базы данных 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

Структура таблицы forums после добавления столбца test

Теперь переименуем созданный столбец test в текстовой столбец new_test.

Переименование столбца

Переименование столбца

Структура таблицы forums после переименования столбца test в new_test

Структура таблицы forums после переименования столбца test в new_test

При изменении только типа столбца указание имени все равно необходимо, хотя в этом случае оно будет фактически повторяться.

Изменение типа столбца

Изменение типа столбца

Структура таблицы forums после изменения типа столбца

Структура таблицы forums после изменения типа столбца

Теперь удалим столбец new_test.

Удаление столбца из таблицы

Удаление столбца из таблицы

Структура таблицы forums после удаления столбца new_test

Структура таблицы forums после удаления столбца new_test

Удаление таблиц MySQL

Оператор DROP TABLE предназначен для удаления одной или нескольких таблиц:

DROP TABLE table_name [, table_name, . . .]

Например, для удаления таблицы forums необходимо выполнить SQL-запрос представленный ниже.

Удаление таблицы forums

Удаление таблицы forums