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



В настоящее время у меня есть следующая таблица MySQL: Employees (empID, empName, department);



Я хочу изменить таблицу следующим образом: Employees (empID, department, empName);



как это можно сделать с помощью ALTER заявления?



примечание: Я хочу изменить только позиции столбца.

925   4  

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

    Ничего не найдено.