Могу ли я логически изменить порядок столбцов в таблице?
========================================================

Если я добавляю столбец таблицы в Microsoft SQL Server, можно контролировать, где отображается столбец логически в запросах?

Я не хочу возиться с физическим размещением колонок на диске, но я хотел бы, чтобы логически группировать столбцы вместе, когда это возможно, так что инструменты, такие как SQL Server Management Studio список содержимого таблицы в удобном виде.

Я знаю, что я могу сделать это с помощью SQL Management Studio, перейдя в свой режим «дизайн» для таблиц и перетаскивания порядка столбцов вокруг, но я хотел бы быть в состоянии сделать это в необработанном SQL, так что я могу выполнить заказ сценарий из командной строки.

 

Вы не можете сделать это Programatically (в надежном пути, который является) без создания новой таблицы. 

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

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

 

Когда Management Studio делает это, он создает временную таблицу, скопировать все в поперечнике, сбросив исходную таблицу и переименовать временную таблицу. Там нет простого эквивалент T-SQL заявления.

Если вы не фантазии делая это, вы всегда можете создать представление таблицы со столбцами в порядке, который вы хотите использовать, и что?

Edit: избитый!

 

Если я правильно понял ваш вопрос, вы хотите , чтобы повлиять на то , что столбцы возвращаются первый, второй, третий и т.д. в **существующих** запросов, не так ли?

Если все ваши вопросы написаны `SELECT * FROM TABLE`- тогда они будут отображаться на выходе , как они изложены в SQL.

Если ваши запросы написаны с `SELECT Field1, Field2 FROM TABLE`- то порядок их раскладывают в SQL не имеет значения.

 

Это может быть сделано с помощью SQL, изменяя системные таблицы непосредственно. Например, посмотрите здесь:

[Alter стол - добавить новый столбец между](http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912)

Тем не менее, я не рекомендовал бы играть с системными таблицами, если это не абсолютно необходимо.

 

Я думаю, что все здесь отсутствует, что, хотя и не каждый имеет дело с 10-х, 20-х или 1000-х экземпляров одного и того же программного обеспечения системы, установленной по всей стране и мире ... те из нас, что дизайн коммерчески продается программное обеспечение сделать это. В результате, мы расширим системы с течением времени, расширить таблицы, добавив поля, как требуется новая возможность, а также те поля, которые идентифицированы и принадлежат в существующей таблице, и как таковой, в течение десяти лет расширяется, растет, добавление полей и т.д. к столам .... а потом приходится работать с этими таблицами, начиная от проектирования, поддержка, иногда копаться в исходные данные / поиск неисправностей для отладки новых функциональных ошибок .... это невероятно отягчающее не иметь основную информацию, которую хотят см в первой кучке полей,

Я часто хотел, чтобы я мог это сделать, для точной причины. Но короткий делать именно то, что делает SQL, Построение Создание сценария для новой таблицы, как я хочу его, написав Вставлять к нему, а затем опуская все существующие ограничения, отношения, ключи, индекс, и т.д. и т.д. и т.д. из существующей таблицы и переименованию «новый» стол обратно на старое имя, а затем читает все те ключи, отношения, индекс, и т.д. и т.п ....

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

Это так близко стоит, что огромное количество работы, однако дело в том, ... это будет не последний раз, когда нам нужны эта способность, так как наши системы будут продолжать расти, расширяться, и получить поля в wacked упорядоченных движимом потребность / дизайн дополнение.

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

«Вне-шельф», но значительно прогрессивные дизайнеры и лидеры развития в их рыночном пространстве всегда будут иметь дело с этой проблемой, снова и снова ..... хотели бы творческое решение, если какой-либо один есть. Это легко может спасти мою компанию десяток часов в неделю, просто не имея пролистывать, или вспомнить, где «что» поле в таблице исходных данных ....

 

Существует один способ, но его только временно для самого запроса. Например,

Допустим, у вас есть 5 таблиц. Таблица называется`T_Testing`

FirstName, LastName, PhoneNumber, электронная почта, и member\_id

Вы хотите, чтобы перечислить их ID, затем Фамилию, затем ПгвЬЫат, то телефон, то по электронной почте. 

Вы можете сделать это в соответствии с Select. 

```
Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

```

Кроме этого, если вы просто хотите ЬавЬЫат Показать перед первым именем для какой-то причины, вы можете сделать это также следующим образом: 

```
Select LastName, *
From T_Testing

```

Единственное, что вы хотите быть уверены, что вы делаете что OrderBy или где функция должна быть обозначена как table.column, если вы собираетесь использовать в Where или OrderBy

Пример: 

```
Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

```

Я надеюсь, что это помогает, я понял это, потому что мне нужно было сделать это сам. 

 

1. Сценарий существующей таблицы в окне запроса.
2. Запустите этот скрипт для базы данных Test (удалить Использовать заявление)
3. Используйте SSMS, чтобы сделать столбец изменения нужно
4. Нажмите кнопку Создать сценарий изменения (самый левый и нижний значок на панель инструментов, по умолчанию)
5. Используйте этот сценарий для вашей реальной таблицы

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

 

Это не представляется возможным изменить порядок столбцов без воссоздания всей таблицы. Если у вас есть несколько экземпляров только в базе данных, вы можете использовать SSMS для этого (Выберите таблицу и нажмите кнопку «дизайн»).

В случае , если у вас есть слишком много примеров для ручного процесса, вы должны попробовать этот скрипт:
 <https://github.com/Epaminaidos/reorder-columns>