Главная » Статьи » Базы данных » MySQL

Основные преобразования в БД MySQL

Изменить структуру таблицы позволяет оператор ALTER TABLE. С его помощью можно 
добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать 
столбцы и саму таблицу. Оператор имеет следующий синтаксис: 
ALTER TABLE table_name alter_spec 
Наиболее часто используемые значения параметра alter_spec приводятся в табл. 37.7. 


Глава 37. Работа с СУБД MySQL 683 

Таблица 37.7. Основные преобразования, выполняемые оператором ALTER TABLE 

Синтаксис Описание 
ADD fld [FIRST|AFTER column] Добавляет новый столбец. fld представляет собой назва-
ние нового столбца и его тип. Конструкция FIRST добавляет 
новый столбец перед столбцом column; конструкция 
AFTER — после него. Если место добавления не указано, 
столбец добавляется в конец таблицы 
ADD INDEX [name] (col,...) Добавляет индекс name для столбца col. Если имя индекса 
name не указывается, ему присваивается имя, совпадающее 
с именем столбца col 
ADD PRIMARY KEY (col,...) Делает столбец col или группу столбцов первичным ключом 
таблицы 
CHANGE old new type Заменяет столбец с именем old на столбец с именем new 
и типом type 
DROP col Удаляет столбец с именем col 
DROP PRIMARY KEY Удаляет первичный ключ таблицы 
DROP INDEX name Удаляет индекс name 

 

Добавим в таблицу forums новый столбец test, разместив его после столбца name. 
ALTER TABLE forums ADD test int(10) AFTER name; 
DESCRIBE forums; 
+-------+---------------------+------+-----+---------+----------------+ 
| Field | Type                | Null | Key | Default | Extra          | 
+-------+---------------------+------+-----+---------+----------------+ 
| id    | int(11)             | NO   | PRI | NULL    | auto_increment | 
| name  | tinytext            | YES  |     | NULL    |                | 
| test  | int(10)             | YES  |     | NULL    |                | 
| rule  | text                | YES  |     | NULL    |                | 
| logo  | tinytext            | YES  |     | NULL    |                | 
| pos   | int(11)             | YES  |     | NULL    |                | 
| hide  | enum('show','hide') | NO   |     | show    |                | 
+-------+---------------------+------+-----+---------+----------------+ 
Переименуем созданный столбец test в текстовый столбец new_test. 
ALTER TABLE forums CHANGE test new_test TEXT; 
DESCRIBE forums; 
+----------+---------------------+------+-----+---------+----------------+ 
| Field    | Type                | Null | Key | Default | Extra          | 
+----------+---------------------+------+-----+---------+----------------+ 
| id       | int(11)             | NO   | PRI | NULL    | auto_increment | 
| name     | tinytext            | YES  |     | NULL    |                | 
| new_test | text                | YES  |     | NULL    |                | 
| rule     | text                | YES  |     | NULL    |                | 
| logo     | tinytext            | YES  |     | NULL    |                | 
| pos      | int(11)             | YES  |     | NULL    |                | 
| hide     | enum('show','hide') | NO   |     | show    |                | 
+----------+---------------------+------+-----+---------+----------------+ 


684 Часть VII. Расширения PHP 

При изменении только типа столбца указание имени все равно необходимо, хотя в этом 
случае оно будет фактически повторяться. 
ALTER TABLE forums CHANGE new_test new_test INT(5) NOT NULL; 
DESCRIBE forums; 
+----------+---------------------+------+-----+---------+----------------+ 
| Field    | Type                | Null | Key | Default | Extra          | 
+----------+---------------------+------+-----+---------+----------------+ 
| id       | int(11)             | NO   | PRI | NULL    | auto_increment | 
| name     | tinytext            | YES  |     | NULL    |                | 
| new_test | int(5)              | NO   |     | NULL    |                | 
| rule     | text                | YES  |     | NULL    |                | 
| logo     | tinytext            | YES  |     | NULL    |                | 
| pos      | int(11)             | YES  |     | NULL    |                | 
| hide     | enum('show','hide') | NO   |     | show    |                | 
+----------+---------------------+------+-----+---------+----------------+ 
Теперь удалим столбец new_test. 
ALTER TABLE forums DROP new_test; 
DESCRIBE forums; 
+-------+---------------------+------+-----+---------+----------------+ 
| Field | Type                | Null | Key | Default | Extra          | 
+-------+---------------------+------+-----+---------+----------------+ 
| id    | int(11)             | NO   | PRI | NULL    | auto_increment | 
| name  | tinytext            | YES  |     | NULL    |                | 
| rule  | text                | YES  |     | NULL    |                | 
| logo  | tinytext            | YES  |     | NULL    |                | 
| pos   | int(11)             | YES  |     | NULL    |                | 
| hide  | enum('show','hide') | NO   |     | show    |                | 
+-------+---------------------+------+-----+---------+----------------+ 
Оператор DROP TABLE предназначен для удаления одной или нескольких таблиц: 
DROP TABLE table_name [ , table_name,...] 
Например, для удаления таблицы forums необходимо выполнить следующий SQL-
запрос: 
DROP TABLE forums; 

Категория: MySQL | Добавил: andrewua (04.05.2021)
Просмотров: 130 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar