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

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

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

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

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

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

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

Изменение таблиц после создания. Удаление записей из базы данных. Удаление таблиц и базы данных

Удаление записей из базы данных

Помимо обновления строк, может потребоваться изменить структуру таблицы в базе данных. Для этого служит оператор ALTER TABLE. Его основная форма такова:

ALTER TABLE [IGNORE] tablename alteration [, alteration ...]

Обратите внимание, что в ANSI SQL один оператор ALTER TABLE может осуществлять только одно преобразование, а вот его MySQL-версия лишена подобных ограничений. Для изменения различных аспектов таблицы можно использовать различные конструкции преобразования.

Если необязательная конструкция IGNORE присутствует, то при попытке провести изменение, которое вызывает дублирование первичных ключей, первая строка с таким ключем остается в изменяемой таблице, а остальные будут удалены. Если IGNORE не указана (по умолчанию это так), изменение завершается неудачей и выполняется его откат.

Таблица. Возможные преобразования, выполняемые оператором ALTER TABLE
Синтаксис Описание
ADD [COLUMN] column_description [FIRST | AFTER column] Добавляет новый столбец в указанное место (если место не указано, столбец добавляется в конец). Обратите внимание, column_description требует имени и типа, точно так же, как при работе с оператором CREATE.
ADD [COLUMN] (column_description, column_description, ...) Добавляет один или несколько столбцов в конец таблицы.
ADD INDEX [index] (column, ...) Добавляет индекс в указанный столбец (столбцы) таблицы.
ADD [CONSTRAINT [symbol] ] PRIMARY KEY (column, ...) Делает указанный столбец (столбцы) первичным ключем таблицы. Конструкция CONSTRAINT применяется для таблиц с внешними ключами.
ADD UNIQUE [CONSTRAINT [symbol] ] [index] (column, ...) Добавляет уникальный индекс по указанному столбцу (столбцам) таблицы. Конструкция CONSTRAINT применяется для таблиц InnoDB с внешними ключами.
ADD [CONSTRAINT [symbol] ] FOREING KEY [index] (index_col, ...) [referance_definition] Добавляет в таблицу InnoDB внешний ключ.
ALTER [COLUMN0 column {SET DEFAULT value | DROP DEFAULT} Добавляет или удаляет значение по умолчанию для определенного столбца.
CHANGE [COLUMN] column new_column_description Изменяет столбец с именем column так, в результате чего он получает указанное описание. Обратите внимание, что это можно использовать для изменения имени столбца, поскольку column_description включает в себя имя.
MODIFY [COLUMN] column_description Подобно CHANGE. Используется для изменения типов столбцов, но не их имен.
DROP [COLUMN] column Удаляет столбец column.
DROP PRIMARY KEY Удаляет первичный индекс (но не столбец)
DROP INDEX index Удаляет индекс index.
DROP FOREING KEY key Удаляет внешний ключ key
DISABLE KEYS Отключает обновление индексов
ENABLE KEYS Включает обновление индексов
RENAME [AS] new_table_name Переименовывает таблицу
ORDER BY col_name Повтороно создает таблицу со строками в определенном порядке. (Обратите внимание, что после того, как изменение таблицы началось, строки больше не будут располагаться по порядку)
CONVERT TO CHARACTER SET cs COLLATE c Преобразует все текстовые столбцы к указанному набору символов и правилам сопоставления.
[DEFAULT] CHARACTER SET cs COLLATE c Устанавливает набор символов и правила сопоставления по умолчанию.
DISCARD TABLESPACE Удаляет лежащий в основе файл табличного пространства для таблицы InnoDB.
IMPORT TABLESPACE Повторно создает лежащий в основе файл табличного пространства для таблицы InnoDB
table_options Поззволяет сбросить опции таблицы. Использует тот же синтаксис, что и CREATE TABLE.

Рассмотрим наиболее типичные случаи употребления ALTER TABLE.

Часто случается так, что вы вдруг осознаете: какой-то столбец "недостаточно велик", чтобы вместить в себе необходимые данные. Например, в нашей таблице сustomers имена и фамилии могут иметь длину до 50 символов. И вскоре может оказаться, что некоторые имена и фамилии слишком длинны и сохраняются в таблице в искаженном виде. Однако это можно исправить, изменив тип данных столбца, после чего он сможет принимать имена и фамилии длиной до 70 символов.

alter table customers
modify name char(70) not null;

Другая часто встречающаяся необходимость связана с добавлением столбца. Представьте, что в каждом регионе существует свой налог с продаж, поэтому Интернет-магазину приходится учитывать этот налог, но делать это раздельно, поскольку он везде разный. В таблицу оrders потребуется добавить столбец налога:

alter table orders
add tax float(6,2) after amount;

Иногда какой-нибудь столбец может оказаться лишним. Удалим столбец, который
мы только что добавили:

alter table orders
drop tax;

Удаление записей из базы данных

Удалять строки из базы данных довольно просто. Это делается с помощью оператора DELETE, который в общем случае выглядит следующим образом:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM table
[WHERE condition]
[ORDER BY order_cols]
[LIMIT number]

Если просто записать:

DELETE FROM table;

то это приведет к удалению всех строк в таблице, так что будьте предельно осторожны! Обычно требуется удалить определенные строки, их следует указывать с помощью конструкции WHERE. Например, подобная ситуация может возникнуть, если какя-то книга больше не продается или кто-то из клиентов длительное время ничего не заказывает:

delete from customers
where customerid=5;

Конструкцию LIMIT можно использовать для ограничения максимального количества в действительности удаляемых строк. Конструкция ORDER BY обычно используется вместе с LIMIT.

Конструкции LOW_PRIORITY и QUICK работают обычным образом. QUICK может ускорить выполнение этого оператора на таблицах MyISAM.

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

Временами возникает необходимость избавиться от целой таблицы. Это можно сделать с помощью оператора DROP TABLE. Его синтаксис исключительно прост:

DROP TABLE table;

Он удаляет все строки из таблицы и саму таблицу.

Удаление целой базы данных

Можно пойти еще дальше и удалить целую базу данных, используя для этого оператор DROP DATABASE:

DROP DATABASE database;

В результате удаляются все строки, таблицы, индексы и сама база данных. Не стоит и говорить, что при использовании этого оператора нужно соблюдать предельную осторожность.