MySQL (и MariaDB) позволяет изменять структуру таблиц с помощью команды ALTER TABLE в SQL. С помощью этой команды вы можете легко изменить имя своей таблицы и столбцов, добавить или удалить столбцы или изменить тип существующих столбцов. Давайте посмотрим на это в действии.
Во-первых, давайте создадим базу данных и таблицу, которые мы будем называть соответственно «mytest» и «andreyex». Вот как вы это сделаете:
mysql -u root -p CREATE DATABASE mytest; USE mytest; CREATE TABLE andreyex ( id int NOT NULL, name varchar(255) );
Синтаксис для переименования таблицы:
ALTER TABLE table1 RENAME table2;
Итак, чтобы изменить таблицу andreyex на «myusers», выполните следующие действия:
ALTER TABLE andreyex RENAME myusers;
Синтаксис добавления столбца в таблицу:
ALTER TABLE tablename ADD columnname datatype
Чтобы удалить столбец:
ALTER TABLE tablename DROP COLUMN columname;
Здесь мы добавим строковый столбец «address», набрав:
ALTER TABLE myusers ADD COLUMN address varchar(10);
Добавьте столбец TIMESTAMP с именем «date», введя следующую команду:
ALTER TABLE myusers ADD date TIMESTAMP;
Добавьте индекс в столбец с именем «id», выполнив:
ALTER TABLE myusers ADD INDEX (id);
Также возможно сделать несколько дополнений одновременно:
ALTER TABLE myusers ADD uid INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD UNIQUE (uid);
Теперь наша таблица должна выглядеть так:
mysql> DESCRIBE myusers; +---------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +---------+------------------+------+-----+-------------------+-----------------------------+ | id | int(11) | NO | MUL | NULL | | | name | varchar(255) | YES | | NULL | | | address | varchar(10) | YES | | NULL | | | date | timestamp | NO | | CURRENTTIMESTAMP | on update CURRENTTIMESTAMP | | uid | int(10) unsigned | NO | PRI | NULL | auto_increment | +---------+------------------+------+-----+-------------------+-----------------------------+
Синтаксис модификации столбцов:
ALTER TABLE tablename MODIFY COLUMN columnname datatype;
Чтобы изменить поле адреса, чтобы разрешить более крупные строки:
ALTER TABLE myusers MODIFY address VARCHAR(255);
Мы также можем объединить сразу несколько модификаций:
ALTER TABLE myusers MODIFY address VARCHAR(255), CHANGE name lastname VARCHAR(255) NOT NULL;
С помощью этой команды мы также изменили столбец с именем «name» на «lastname» и указали ему значения NULL.
Чтобы изменить значение по умолчанию для столбца, используйте синтаксис SET DEFAULT:
ALTER TABLE myusers ALTER address SET DEFAULT 'unknown';
Теперь наша финальная таблица выглядит так:
mysql> DESCRIBE myusers; +----------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+-------------------+-----------------------------+ | id | int(11) | NO | MUL | NULL | | | lastname | varchar(255) | NO | | NULL | | | address | varchar(255) | YES | | unknown | | | date | timestamp | NO | | CURRENTTIMESTAMP | on update CURRENTTIMESTAMP | | uid | int(10) unsigned | NO | PRI | NULL | auto_increment | +----------+------------------+------+-----+-------------------+-----------------------------+
Внесение изменений в структуру базы данных MySQL через командную строку и ALTER TABLE иногда может быть более быстрым и гибким, чем использование PHPMyAdmin или аналогичных инструментов графического интерфейса.
Команда предлагает еще больше возможностей, которые здесь мы не рассматривали. Для получения дополнительной информации ознакомьтесь с документацией по MySQL или задайте вопрос в разделе комментариев.