Как изменить порядок столбцов в таблице с помощью SQL-запроса в SQL Server 2005?
Я хочу изменить порядок столбцов в таблице с помощью SQL-запроса.
sql
sql-server-2005
Химадри
источник
источник
Ответы:
Ты не можешь. Порядок столбцов - это просто «косметическая» вещь, которая заботит нас, людей, - для SQL Server он почти всегда абсолютно не важен.
Когда вы меняете порядок столбцов, SQL Server Management Studio в фоновом режиме создает таблицу с нуля с помощью новой
CREATE TABLE
команды, копирует данные из старой таблицы и затем удаляет их.Нет команды SQL для определения порядка столбцов.
источник
INSERT
не должны использовать без явного указания столбцов!Вы должны явно указать поля в том порядке, в котором вы хотите, чтобы они возвращались, вместо использования * для «по умолчанию» порядка.
исходный запрос:
возвращается
теперь пиши
источник
согласно http://msdn.microsoft.com/en-us/library/aa337556.aspx
Что ж, это можно сделать, используя
create
/ copy /drop
/ rename, как ответил komma8.komma1Или вы можете использовать SQL Server Management Studio
Затем нажмите "Сохранить". Этот метод фактически удаляет и воссоздает таблицу, поэтому могут возникнуть некоторые ошибки.
Если для базы данных и таблицы включена опция отслеживания изменений , вам не следует использовать этот метод.
Если он отключен, параметр « Запретить сохранение изменений, требующих повторного создания таблицы» должен быть снят в меню «Инструменты»> «Параметры»> «Дизайнеры», в противном случае появится ошибка «Сохранение изменений не разрешено» .
Проблемы также могут возникнуть при создании первичного и внешнего ключей.
Если возникает какая-либо из вышеперечисленных ошибок, сохранение не выполняется, что оставляет вам исходный порядок столбцов.
источник
This task cannot be performed using Transact-SQL statements.
" в документе неверно. Я объяснил автору и попросил его поменять его на "This task is not supported using Transact-SQL statements.
". Примерно день назад автор согласился, и документ был исправлен. Вы можете следить за нашим обсуждением на GitHub .Это похоже на вопрос об упорядочивании записей в результате запроса .. и обычно никому не нравится формально правильный ответ ;-)
Итак, вот оно:
select *
не заставляет возвращать столбцы в определенном порядкеcreate table' or in the
инструкции alter table add `источник
Конечно, вы можете изменить порядок столбцов в инструкции sql. Однако, если вы хотите абстрагироваться от физического порядка столбцов таблиц, вы можете создать представление. т.е.
источник
В SQLServer Management Studio:
Инструменты -> Параметры -> Дизайнеры -> Дизайнеры таблиц и баз данных
Затем:
Студия SQLServer Management отбросит таблицу и воссоздает ее, используя данные.
источник
Вы можете сделать это, создав новую таблицу, скопировав все данные, отбросив старую таблицу, а затем переименовав новую, чтобы заменить старую.
Вы также можете добавить новые столбцы в таблицу, скопировать данные столбца за столбцом, удалить старые столбцы, а затем переименовать новые столбцы, чтобы они соответствовали старым. Простой пример ниже: http://sqlfiddle.com/#!3/67af4/1
источник
В SQLServer Management Studio:
Tools
->Options
->Designers
->Table and Database Designers
Отменить выбор
Prevent saving changes that require table re-creation
.Теперь вы можете изменить порядок таблицы.
источник
Sql-сервер внутренне создает сценарий. Он создает временную таблицу с новыми изменениями, копирует данные и удаляет текущую таблицу, а затем воссоздает вставку таблицы из временной таблицы. Я нахожу его из опции ssms 2014 «Сгенерировать скрипт изменений». Скрипт такой. Отсюда : как изменить порядок столбцов в таблице с помощью sql-запроса
источник
Если в вашей таблице достаточно столбцов, вы можете попробовать это. Сначала создайте новую таблицу с предпочтительным порядком столбцов.
Теперь сбросьте таблицу с помощью команды drop
теперь переименуйте вновь созданную таблицу в свое старое имя.
теперь выберите таблицу, у вас есть ваши столбцы переставлены так, как вы предпочитали раньше.
источник
В конце концов, вы просто не можете сделать это в MS SQL. Недавно я создал таблицы на ходу (запуск приложения), используя хранимую процедуру, которая считывается из таблицы поиска. Когда я создал представление, которое объединило их с другой таблицей, которую я создал вручную ранее (та же схема, с данными), это не удалось - просто потому, что я использовал для представления «Select * UNION Select *». В то же время, если я использую только те, которые созданы с помощью хранимой процедуры, я добиваюсь успеха.
В заключение: если есть какое-либо приложение, которое зависит от порядка столбцов, это действительно плохое программирование и наверняка создаст проблемы в будущем. Столбцы должны свободно располагаться где угодно и использоваться для любого процесса обработки данных (INSERT, UPDATE, SELECT).
источник
Вы можете добиться этого с помощью следующих шагов:
удалить все внешние ключи и первичный ключ исходной таблицы.
переименовать исходную таблицу.
используя CTAS, создайте исходную таблицу в желаемом порядке.
отбросьте старую таблицу.
применить все ограничения обратно к исходной таблице
источник
Если столбцы, которые нужно переупорядочить, были недавно созданы и пусты, тогда столбцы можно удалить и снова добавить в правильном порядке.
Это случилось со мной, когда я вручную расширял базу данных для добавления новых функций, и я пропустил столбец, и когда я добавил его, последовательность была неправильной.
Не найдя здесь подходящего решения, я просто исправил таблицу, используя следующие команды.
Примечание: делайте это только в том случае, если у вас нет данных в отбрасываемых столбцах.
Люди говорят, что порядок столбцов не имеет значения. Я регулярно использую SQL Server Management Studio для создания сценариев для создания текстовой версии схемы базы данных. Для эффективного управления версиями этих сценариев (git) и их сравнения (WinMerge) обязательно, чтобы выходные данные совместимых баз данных были одинаковыми, а выделенные различия - подлинные различия баз данных.
Порядок столбцов имеет значение; но только некоторым, а не всем!
источник
Я полагаю, вы хотите добавить новый столбец в определенную позицию. Вы можете создать новый столбец, переместив текущие столбцы вправо.
Удалите все затронутые индексы и ссылки на внешние ключи. Добавьте новый столбец с тем же типом данных, что и последний столбец, и скопируйте туда данные.
Измените тип данных третьего столбца на тот же тип, что и в предыдущем столбце, и скопируйте данные туда.
Соответственно переименуйте столбцы, воссоздайте удаленные индексы и ссылки на внешние ключи.
Измените тип данных второго столбца.
Имейте в виду, что порядок столбцов - это просто "косметическая вещь", как сказал marc_s .
источник
Использовать
который отображает порядок столбцов таблицы по умолчанию.
Если вы хотите изменить порядок столбцов.
Укажите имя столбца, которое будет отображаться соответственно
источник
вы можете использовать индексацию .. После индексации, если выбрать * из XXXX, результаты должны быть в соответствии с индексом, но только набор результатов .. не структура таблицы
источник
Вы можете изменить это с помощью SQL-запроса. Вот sql-запрос для изменения последовательности столбца.
источник
Для того, чтобы иметь определенный порядок столбцов, вам необходимо выбирать столбец за столбцом в желаемом порядке. Порядок выбора определяет порядок расположения столбцов на выходе.
источник
Попробуйте эту команду:
Это изменит позицию возраста на первую позицию.
источник
изменить имя таблицы сначала изменить имя столбца int (5); приведет столбец к первому изменить имя таблицы изменить имя столбца int (5) после (имя таблицы);
источник
Пример: изменить позицию field_priority после field_price в статусе таблицы.
источник