Как переместить столбцы в таблицу MySQL?
В настоящее время у меня есть следующая таблица MySQL: Employees (empID, empName, department);
Я хочу изменить таблицу следующим образом: Employees (empID, department, empName);
как это можно сделать с помощью ALTER заявления?
примечание: Я хочу изменить только позиции столбца.
4 ответов:
если empName-это столбец VARCHAR (50):
ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;EDIT
в комментариях, вы также можете сделать это:
ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;обратите внимание, что повторение
empName- это преднамеренное. Вы должны сообщить MySQL, что вы хотите сохранить то же имя столбца.вы должны знать, что обе версии синтаксиса специфичны для MySQL. Они не будут работать, например, в PostgreSQL или многих других СУБД.
другое редактирование: как указано @Luis Rossi в комментарии Вам нужно полностью указать измененное определение столбца непосредственно перед
AFTERмодификатор. В приведенных выше примерах просто естьVARCHAR(50), а если вам нужны другие характеристики (например,NOT NULLили значение по умолчанию) вы также должны включить их. Проконсультируйтесь документы наALTER TABLEдля получения дополнительной информации.
изменение позиции столбца:
ALTER TABLE Employees CHANGE empName empName VARCHAR(50) NOT NULL AFTER department;Если вам нужно переместить его в первую позицию, вы должны использовать термин сначала в конце запроса ALTER TABLE CHANGE [COLUMN]:
ALTER TABLE UserOrder CHANGE order_id order_id INT(11) NOT NULL FIRST;
phpMyAdmin предоставляет графический интерфейс для этого в представлении структуры таблицы. Выберите столбец, который требуется переместить, и щелкните действие изменить в нижней части списка столбцов. Затем вы можете изменить все свойства столбца, и вы найдете функцию "переместить столбец" в дальнем правом углу экрана.
конечно, это все просто построение запросов в совершенно хорошем верхнем ответе, но поклонники GUI могут оценить альтернативу.
моя версия phpMyAdmin и это 4.1.7
мне пришлось запустить это для столбца, введенного на более поздних этапах продукта, в таблицах 10+. Поэтому написал этот быстрый неопрятный скрипт для генерации команды alter для всех "релевантных" таблиц.
SELECT CONCAT("ALTER TABLE `",TABLE_NAME,"` CHANGE COLUMN `",COLUMN_NAME,"` `",COLUMN_NAME,"` BIGINT AFTER `id`;") FROM information_schema.COLUMNS c WHERE TABLE_SCHEMA = '<YOUR SCHEMA NAME>' AND COLUMN_NAME = '<COLUMN TO MOVE>' AND TABLE_TYPE = 'BASE TABLE' AND '<COLUMN TO MOVE AFTER>' IN (SELECT COLUMN_NAME FROM information_schema.COLUMNS c2 WHERE c.TABLE_NAME = c2.TABLE_NAME);
Comments