Изменение порядка столбцов в таблице
Вы можете изменить порядок столбцов в Designer таблицы в SQL Server Management Studio (SSMS). По умолчанию механизм безопасности SSMS блокирует изменение порядка столбцов. Хотя это не рекомендуется, вы можете изменить порядок столбцов в таблице, повторно создав таблицу.
Добавление столбцов в таблицу по умолчанию добавляет их в конец таблицы, как и рекомендуется.
Рекомендации
Рекомендации по упорядочению столбцов таблицы:
- Чтобы изменить порядок столбцов, отображаемых в результирующем наборе, отчете или приложении, используйте порядок столбцов в инструкции SELECT (Transact-SQL). Всегда указывайте столбцы в запросах и приложениях по именам в том порядке, в котором они должны следовать.
- Не используйте SELECT * в приложениях. Добавленные или удаленные столбцы могут привести к непредвиденному поведению или ошибкам в приложениях.
- Добавьте новые столбцы в конец таблиц.
Изменение порядка столбцов в таблицы влияет на коды и приложения, которые зависят от определенного порядка столбцов. Это касается запросов, представлений, хранимых процедур, определяемых пользователем функций и клиентских приложений. Тщательно продумайте все изменения, которые вы хотите внести в порядок столбцов.
Использование SQL Server Management Studio
Изменение порядка столбцов
Хотя это не рекомендуется, вы можете изменить порядок столбцов в таблице с помощью SQL Server Management Studio (SSMS). Для этого требуется повторное выполнение таблицы.
- В обозревателе объектов щелкните правой кнопкой мыши таблицу со столбцами, которые нужно переупорядочить, и выберите Конструктор.
- Выберите окно, находящееся слева от названия столбца, который нужно переупорядочить.
- Перетащите столбец в другое местоположение внутри таблицы.
Внесение этих изменений может быть заблокировано важной функцией безопасности SSMS, которая управляется параметром Запретить сохранение изменений, требующих повторного создания таблицы. Этот параметр включен для предотвращения случайного удаления или повторного создания таблицы с помощью диалоговых окон SSMS, что может привести к нарушению работы и потере метаданных или разрешений. Дополнительные сведения см. в статье Сообщение об ошибке «Сохранение изменений запрещено» в SSMS. Вместо этого рекомендуется выполнить такие изменения с полным пониманием их влияния с помощью шагов Transact-SQL, которые учитывают разрешения и метаданные.
Повторное создание таблицы приведет к блокировке параллельного доступа к ней для других пользователей и приложений. Для больших таблиц это может потребовать длительного времени и большого объема пространства в журнале транзакций.
Использование Transact-SQL
Изменение порядка столбцов не поддерживается с помощью инструкций Transact-SQL. Таблицу необходимо удалить и создать заново, чтобы изменить порядок столбцов.
Комментарии
Чтобы запросить существующие столбцы, используйте представление каталога объектов sys.columns.
Дальнейшие действия
- Таблицы
- Добавление столбцов в таблицу
- Удаление столбцов из таблицы
Форум пользователей MySQL
Есть таблица называется se_geo_cities
Там есть 4 поля cty_id con_id sta_id name
У каждого поля вниз 10000 своих значений.
Вопрос состоит вот в чём:
Как изменить порядок столбцов что бы они были вот в таком порядке
cty_id sta_id con_id name
Но значения каждых столбцов остались теми же которые были до этого
#2 13.12.2009 00:24:22
vasya Архат Откуда: Орел Зарегистрирован: 07.03.2007 Сообщений: 5818
Re: Поменять местами столбцы
Ключевые слова FIRST и AFTER можно использовать в операциях CHANGE или MODIFY для изменения положения колонки в таблице.
ALTER TABLE `se_geo_cities` MODIFY `con_id` column_definition AFTER sta_id;
#3 13.12.2009 12:49:29
foxigen Участник Зарегистрирован: 12.12.2009 Сообщений: 3
Re: Поменять местами столбцы
Ввожу этот запрос в базу
ALTER TABLE `se_geo_cities` MODIFY ‘con_id’ column_definition AFTER ‘sta_id’;
#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near »con_id’ column_definition AFTER ‘sta_id» at line 1
#4 13.12.2009 15:22:23
vasya Архат Откуда: Орел Зарегистрирован: 07.03.2007 Сообщений: 5818
Re: Поменять местами столбцы
1. Обратите внимание, что в моем запросе con_id заключена не в одинарные кавычки, а в обратные (бектики). В вашем случае con_id интерпретируется не как имя столбца, а как текстовая строка.
2. Вместо column_definition нужно указать определения колонки — тип данных, дефолтное значение и т.д.
Выполните запрос
Поменять столбцы местами
выдает ошибку
#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘AFTER `id`’ at line 1
использую phpmyadmin с mysql-5.5
что делаю не так?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
В одной таблице поменять местами строки
На примере думаю нагляднее будет, что мне надо — вот смотрите есть таблица (NameList) в ней всего 2.
Поменять местами поле в таблице Libre Base
Есть в таблице tb1 столбцы first_field (varchar) и second_field (varchar). Ищу ответ как в Libre.
В двумерном массиве поменять местами k и l столбцы местами.
В двумерном массиве поменять местами k и l столбцы местами.
Поменять местами столбцы
Рандомом задается двумерный целочисленный массив, поменять местами столбцы с номерами 1 и 2, 3 и 4.
Как поменять местами значения в колонках таблицы

Условия задачи: есть MySQL таблица table1. Используя только язык SQL запросов необходимо поменять местами значения из колонок value1 и value2. Структура таблицы имеет следующий вид:
CREATE TABLE `table1` ( `id` INT NOT NULL AUTO_INCREMENT , `value1` VARCHAR(50) NOT NULL DEFAULT '' , `value2` VARCHAR(50) NOT NULL DEFAULT '' , PRIMARY KEY (`id`) ) ENGINE = MyISAM;
Решение “в лоб”
Самым простым способом является явное переименование колонок таблицы. Данное решение самое простое в реализации и самое быстрое по результатам моих тестов.
ALTER TABLE `table1` CHANGE `value1` `value2` VARCHAR(50) NOT NULL DEFAULT '' , CHANGE `value2` `value1` VARCHAR(50) NOT NULL DEFAULT '';
Решение с временной переменной
Изящное решение с использованием временной переменной для хранения промежуточного результата. По скорости оно уступает первому решению тем не менее показывает дополнительные скилзы в SQL.
UPDATE `table1` SET `value1`=(@temp:=`value1`), `value1` = `value2`, `value2` = @temp;
Решение с подзапросом
Поскольку MySQL не даст сделать простой UPDATE с выборкой из этой же таблицы, поэтому будем извращаться с ON DUPLICATE KEY UPDATE. Самое медленное из предложенных решений, но данный синтаксис предоставляет определенные преимущества в некоторых ситуациях.
INSERT INTO `table1` SELECT * FROM `table1` `t2` ON DUPLICATE KEY UPDATE `value1` = `t2`.`value2`, `value2` = `t2`.`value1`;
- 12.09.2011
- mysql , algorithm
