Перейти к содержимому

Как изменить название столбца в mysql

  • автор:

Как изменить название столбца в таблице базы данных?

По не опытности создал столбец в таблице с таким именем ‘name_#’ и теперь мне надо его переименовать,
а когда пишу
alter table mytable change name_# name_num
то все что после символа ‘#’ воспринимается как коментарий. Можно ли как-то экранировать этот символ

  • Вопрос задан более трёх лет назад
  • 512 просмотров

Комментировать

Решения вопроса 2

Sanovskiy

Веб-разработчик с 2005 года

Как переименовать столбец в MySQL? 1 мин для чтения

MSI отдает дань уважения Monster Hunter, предлагая тематическую графику, материнскую плату и монитор

Favorite

Добавить в избранное

Главное меню » Базы данных » MySQL » Как переименовать столбец в MySQL?

Как переименовать столбец в MySQL

MySQL — популярная система управления базами данных, которая составляет основу огромной части современного Интернета. MySQL — это СУБД с открытым исходным кодом (система управления реляционными базами данных), разработанная и поддерживаемая Oracle , с моделью клиент-сервер. Он предлагает безопасное хранилище базы данных, высокую производительность и мощные функции.

В этой статье будет показано, как переименовать столбец в MySQL.

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

В MySQL база данных обычно состоит из нескольких таблиц, содержащих строки и столбцы, содержащие различные данные. Для демонстрации мы переименуем имя столбца конкретной таблицы.

Для демонстрации я буду использовать этот образец базы данных. Это очень большая база данных, которой должно хватить практически для любой тестовой ситуации. Для удобства мы будем использовать phpMyAdmin для доступа к базе данных и выполнения запросов. Узнайте больше об установке и настройке phpMyAdmin и MySQL.

Базовая структура

Чтобы переименовать столбец, структура запроса будет выглядеть следующим образом.

$ ALTER TABLE CHANGE

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

$ ALTER TABLE CHANGE , CHANGE

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

$ RENAME TABLE TO

Вы также можете переименовать несколько таблиц за один раз.

$ RENAME TABLE TO , TO

MySQL также позволяет использовать RENAME между несколькими базами данных.

$ RENAME TABLE . TO .

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

Давайте посмотрим на пример таблицы базы данных стран.

$ SELECT * from countries;

Из этой таблицы давайте переименуем country_name (varchar (40)) в country_label (varchar (40)). Запрос будет выглядеть примерно так.

$ ALTER TABLE countries CHANGE country_name country_label varchar(40);
$ SHOW COLUMNS FROM countries;

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

В следующем примере мы будем переименовывать несколько столбцов в таблице стран. Изменение country_id на COUNTRY_CODE , country_label на COUNTRY_NAME и region_id на регионе-_code.

ALTER TABLE countries CHANGE country_id country_code char(2), CHANGE country_label country_name varchar(40), CHANGE region_id region_code int;

Читать Как сопоставить значения NULL с другими значимыми значениями

$ SHOW COLUMNS FROM countries;

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

Теперь попробуем переименовать таблицу. Мы переименуем таблицу countries в «independent_regions». Во-первых, обратите внимание на текущие имена таблиц.

$ SHOW TABLES;

Выполните следующий запрос, чтобы переименовать целевую таблицу.

$ RENAME TABLE countries TO independent_regions;
$ SHOW TABLES;

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

Теперь давайте попробуем изменить имена нескольких таблиц одновременно. Запишите все текущие таблицы.

$ SHOW TABLES;

Затем выполните следующий запрос.

RENAME TABLE countries TO independent_regions, jobs TO assigned_tasks, departments TO sections;
$ SHOW TABLES;

Последние мысли

Поздравляю! Вы успешно переименовали существующий столбец в MySQL. В этой статье также показано переименование существующей таблицы. Как для переименования столбцов, так и для таблиц вам необходимо понимать основы оператора ALTER TABLE.

Каждая таблица MySQL основана на ключевом дизайне. В терминологии MySQL это называется схемой. Он содержит необходимые данные о схеме размещения данных в таблице. В этом руководстве концепция схемы исследуется на практических примерах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как изменить название столбца в mysql

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

ALTER TABLE название_таблицы

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

Добавление нового столбца

Добавим в таблицу Customers новый столбец Address:

ALTER TABLE Customers ADD Address VARCHAR(50) NULL;

В данном случае столбец Address имеет тип VARCHAR и для него определен атрибут NULL.

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

Удалим столбец Address из таблицы Customers:

ALTER TABLE Customers DROP COLUMN Address;

Изменение значения по умолчанию

Установим в таблице Customers для столбца Age значение по умолчанию 22:

ALTER TABLE Customers ALTER COLUMN Age SET DEFAULT 22;

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

Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100) и установим для него атрибут NULL :

ALTER TABLE Customers MODIFY COLUMN FirstName CHAR(100) NULL;

Добавление и удаление внешнего ключа

Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:

CREATE TABLE Customers ( Id INT PRIMARY KEY AUTO_INCREMENT, Age INT, FirstName VARCHAR(20) NOT NULL, LastName VARCHAR(20) NOT NULL ); CREATE TABLE Orders ( Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date );

Добавим ограничение внешнего ключа к столбцу CustomerId таблицы Orders:

ALTER TABLE Orders ADD FOREIGN KEY(CustomerId) REFERENCES Customers(Id);

При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT , после которого указывается имя ограничения:

ALTER TABLE Orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY(CustomerId) REFERENCES Customers(Id);

В данном случае ограничение внешнего ключа называется orders_customers_fk. Затем по этому имени мы можем удалить ограничение:

ALTER TABLE Orders DROP FOREIGN KEY orders_customers_fk;

Добавление и удаление первичного ключа

Добавим в таблицу Products первичный ключ:

CREATE TABLE Products ( Id INT, Model VARCHAR(20) ); ALTER TABLE Products ADD PRIMARY KEY (Id);

Теперь удалим первичный ключ:

ALTER TABLE Products DROP PRIMARY KEY;

Как изменить столбец в MySQL

Цель данного руководства или статьи рассмотреть изменение некоторых качеств столбцов или колонок в таблице MySQL, а именно:

  • Переименование столбца;
  • Изменение типа данных столбца;
  • Изменить положение столбца относительно других столбцов.

Все эксперименты работают как на MySQL версии 5.7 так и на версии 8. И абсолютно не важно какая операционная система: Windows XP, 7, 8, 8.1, 10, Linux и т.д. Если удалось установить MySQL на вашу операционную систему, то будьте уверены, всё что будет описано ниже у вас сработает.

Предварительно создам тестовую таблицу «articles» в тестовой базе «testdb» для экспериментов:

итак, создаём таблицу:

 CREATE DATABASE IF NOT EXISTS testdb; 

Создание таблиц MySQL если она ещё не создана

 USE testdb; 
 CREATE TABLE IF NOT EXISTS articles ( ID INT UNSIGNED AUTO_INCREMENT , Title VARCHAR(30) , Content VARCHAR(30) , CONSTRAINT PK_articles_id PRIMARY KEY (ID) ) engine=innodb DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

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

Заполним таблицу articles тестовыми данными:

 I NSERT INTO articles (Title, Content) VALUES ('Статья 1','Текст статьи 1'), ('Статья 2','Текст статьи 2'), ('Статья 3','Текст статьи 3'), ('Статья 4','Текст статьи 4'), ('Статья 5','Текст статьи 5'); 

Вышеуказанный код система безопасности не пропускает, пришлось вставить пробел в «I NSERT», если будете копировать данный код, преобразуйте слово «I NSERT» в «INSERT» и у вас всё заработает.

Тестовая вставка данных

Ну что ж, теперь притупим к основной цели данного руководства.

Для переименования понадобится оператор ALTER TABLE с CHANGE [COLUMN] и MODIFY [COLUMN].

Ознакотесь также со скрином из официальной документации:

Скрин из официальной документации CHANGE и MODIFY

Переименуем колонку Content в content1 в таблице articles:

 ALTER TABLE articles CHANGE content content1 VARCHAR(30); 

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

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

Теперь попробуем изменить имя столбца content1 на Content но без указания типа дынных и посмотрим что получится:

 ALTER TABLE articles CHANGE content1 Content; 

Переименование столбца без указания типа данных - ошибка

без указания типа данных переименование завершается ошибкой!

Переименуем данную колонку content1 в Content и изменим тим данных varchar(30) на тип данных TEXT:

 ALTER TABLE articles CHANGE content1 Content TEXT; 

Использование CHANGE для переименования столбца и типа данных

Изменим положение колонки Content, а именно, поместим её после столбца ID также снова изменим имя и тип данных, чтобы посмотреть работу этих параметров в совокупности:

 ALTER TABLE articles CHANGE Content Content35 VARCHAR(256) AFTER ID; 

Изменение положения колонки в таблице CHANGE

Хотелось бы сразу уточнить, что я не понял как работает параметр FIRST:

Ошибка с CHANGE FIRST

Запрос с FIRST заканчитвается ошибкой. Так что если есть необходимость какой-либо столебц поставить на 1-е место, например тот же Content, то его надо поставить сначала на 2- место, т.е. после ID, а затем уже с помощью AFTER поставить ID после Content:

 ALTER TABLE articles CHANGE Content35 Content TEXT; ALTER TABLE articles CHANGE ID ID INT UNSIGNED AFTER Content; 

Перемещение столца на первое место с помощью CHANGE AFTER

Первым запросом изменил только имя столбца и тип данных, а поскольку он уже был на втором месте, то AFTER не испоользовал. Вторым запросом столбец ID был помещён на второе место.

Переходим к параметру MODIFY в ALTER TABLE.

MODIFY может изменить только тип данных колонки и расположение в таблице относительно других столбцов, например поместим Content после Title и изменим тип данных с TEXT на MEDIUMTEXT:

 ALTER TABLE articles MODIFY Content MEDIUMTEXT AFTER Title; 

Изменение типа данных и расположение столбца с MODIFY

Также можно изменить тип данных не меняя положения относительно других столбцов:

 ALTER TABLE articles MODIFY Content TEXT; 

Изменение типа данных колонки с MODIFY

 ALTER TABLE articles MODIFY Content TEXT AFTER ID; 

Изменение положения столбца с помощью MODIFY

c FIRST та же проблема, почему-то не работает:

Проблема FIRST с MODIFY

Итог: Переименование столбцов, их типов данных и положения относительно других столбцов с помощью ALTER TABLE CHANGE/MODIFY корректно работает, кроме параметра FIRST.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *