
MySQL (и MariaDB) позволяет изменять структуру таблиц с помощью команды ALTER TABLE в SQL. С помощью этой команды вы можете легко изменить имя своей таблицы и столбцов, добавить или удалить столбцы или изменить тип существующих столбцов. Давайте посмотрим на это в действии.
Использование и примеры ALTER TABLE
Во-первых, давайте создадим базу данных и таблицу, которые мы будем называть соответственно «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;
[gn_box title=»Полезный совет» box_color=»#91b8ff»]ALTER TABLE сам по себе ничего не делает. Начните с имени команды и таблицы, а затем укажите изменения, которые необходимо внести.[/gn_box]
Добавление столбца и изменение свойств столбца
Синтаксис добавления столбца в таблицу:
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 | +----------+------------------+------+-----+-------------------+-----------------------------+
Почему вы должны использовать ALTER TABLE?
Внесение изменений в структуру базы данных MySQL через командную строку и ALTER TABLE иногда может быть более быстрым и гибким, чем использование PHPMyAdmin или аналогичных инструментов графического интерфейса.
Команда предлагает еще больше возможностей, которые здесь мы не рассматривали. Для получения дополнительной информации ознакомьтесь с документацией по MySQL или задайте вопрос в разделе комментариев.
Редактор: AndreyEx
Поделиться в соц. сетях:
- Р Р‡.МессенРТвЂВВВВВВВВжер
- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- Telegram
Здравствуйте, как в существующую строку, добавить данные?
В пример ниже, я хочу в строку BBBBB и соответственно столбец TechName добавить имя. Никак не смог найти команду. Можно удалить заного создать, но я хочу узнать этот путь. Спасибо.
mysql> select * from btspassport;
+—-+———+———-+————-+———+———-+
| id | btsName | TypeSite | PhoneNumber | Created | TechName |
+—-+———+———-+————-+———+———-+
| 1 | AAAAAA | DB | 90000000000000 | 25 | Adam |
| 3 | BBBBBBB | DB | 90000000000000 | 25 | |
+—-+———+———-+————-+———+———-+
UPDATE table
SET column1 = expression1,
column2 = expression2,
…
[WHERE conditions];