Pregunta

Si voy a agregar una columna a una tabla en Microsoft SQL Server, puedo controlar donde aparece la columna, lógicamente, en las consultas?

Yo no quiero lío con el diseño físico de las columnas en disco, pero me gustaría lógicamente grupo de las columnas, cuando sea posible, de modo que herramientas como SQL Server Management Studio lista el contenido de la tabla en una forma conveniente.

Sé que puedo hacer esto a través de SQL Management Studio, al entrar en su "diseño" modo de tablas y arrastrando el orden de las columnas a su alrededor, pero me gustaría ser capaz de hacerlo en raw SQL para que yo pueda realizar la ordenación de secuencias de comandos desde la línea de comandos.

¿Fue útil?

Solución

Usted no puede hacer esto mediante programación (en una manera segura de que lo es), sin crear una nueva tabla.

Lo Enterprise Manager cuando usted comete un reordenamiento es crear una nueva tabla, mover los datos y, a continuación, elimine la mesa de edad y cambiar el nombre de la nueva tabla el nombre existente.

Si usted quiere que sus columnas en un orden particular/agrupación sin alterar su orden físico, puede crear una vista que puede ser lo que usted desea.

Otros consejos

Yo creo que todo el mundo aquí es falta, es que aunque no todo el mundo tiene que lidiar con las de 10, 20 o 1000 instancias del mismo sistema de software instalado en todo el país y el mundo ...aquellos de nosotros que el diseño vendidas comercialmente software de hacerlo.Como resultado, la ampliación de los sistemas a lo largo del tiempo, expanda tablas agregando campos como la nueva capacidad es necesaria, y como aquellos que se identifican los campos pertenecen en una tabla existente, y como tal, más de una década de expansión , crecimiento, agregando campos, etc de las tablas ....y, a continuación, tener que trabajar con las tablas de diseño, para apoyar a veces la excavación en datos brutos/solución de problemas para depurar la nueva funcionalidad de errores ....es increíblemente agravante de no tener la principal información que desea ver en el primer puñado de campos, cuando usted puede tener tablas con 30, 40 o 50 o incluso 90 campos y sí en un sentido estrictamente base de datos normalizado.

A menudo he deseado que yo podía hacer esto, por esta razón exacta.Pero corto de hacer exactamente lo SQL hace, la Construcción de un Script de creación de una nueva Tabla de la manera que yo quiero, la escritura de la Inserción a él, a continuación, soltar todas las limitaciones existentes, relaciones, claves, índices, etc, etc, etc de la tabla existente y cambiar el nombre de la "nueva" tabla de vuelta al antiguo nombre, y luego de leer todas esas claves, relaciones, índices, etc, etc.....

No sólo es tedioso, desperdiciador de tiempo, pero ...en cinco años más, tendrá que suceder de nuevo ....

Está tan cerca de la pena que la enorme cantidad de trabajo, sin embargo el punto es ...no será la última vez que nos necesitan esta capacidad, ya que nuestros sistemas continuará a crecer, expandir, y obtener campos en un wacked ordenó impulsado por la necesidad/diseño adiciones.

Una mayoría de los desarrolladores de pensar desde un único punto de vista del sistema que sirve a una sola empresa o muy específicos de la caja dura del mercado.

El "off-the-shelf", pero significativamente progresiva de los diseñadores y líderes de desarrollo en su espacio de mercado siempre va a tener que lidiar con este problema, más y más.....el amor de una solución creativa, si alguno tiene uno.Esto puede ahorrarle a mi compañía de una docena de horas a la semana, simplemente no tener que desplazarse, o recordar dónde "que" el campo está en la tabla de datos de origen....

Si entiendo tu pregunta, desea afectar lo columnas se devuelven primera, segunda, tercera, etc en existente consultas, haga?

Si todas las consultas se escriben con SELECT * FROM TABLE - a continuación, se mostrarán en la salida como en la que están dispuestos en SQL.

Si las consultas son por escrito con SELECT Field1, Field2 FROM TABLE - a continuación, el orden en que están establecidos en SQL no importa.

Cuando Management Studio hace, es crear una tabla temporal, copia de todo, dejando de lado su tabla original y cambiar el nombre de la tabla temporal.No hay una simple equivalente instrucción T-SQL.

Si no te apetece hacerlo, siempre se puede crear una vista de la tabla con las columnas en el orden que quieras y usar?

Editar:vencido!

Hay un camino, pero su sólo temporalmente para la misma consulta.Por ejemplo,

Digamos que usted tiene 5 mesas.La tabla se llama T_Testing

Nombre, Apellidos, número de Teléfono, Correo electrónico, y Member_ID

usted desea que la lista de su ID, apellido, luego el Nombre, a continuación, Teléfono, Correo electrónico.

Usted puede hacer como por la selección.

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

Aparte de eso, si sólo quieres el Apellido para Mostrar antes de su primer nombre por alguna razón, puedes hacerlo de la siguiente manera:

Select LastName, *
From T_Testing

La única cosa que usted quiere estar seguro de que lo que hacen es que el OrderBy o Donde la Función debe ser denotado como Tabla.Columna si usted va a estar usando una Donde o OrderBy

Ejemplo:

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

Espero que esto ayude, me lo imaginé, porque necesitaba hacer esto por mí mismo.

  1. Secuencia de comandos de la tabla existente a una ventana de consulta.
  2. Ejecutar esta secuencia de comandos en contra de una base de datos de Prueba (quitar la declaración de Uso)
  3. El uso de SSMS para hacer que la columna cambios que necesita
  4. Haga clic en Cambiar Generar secuencias de Comandos (más a la izquierda y más abajo en el icono de barra de herramientas por defecto).
  5. Utilizar esta secuencia de comandos en contra de su mesa real

Todos los script que realmente hace es crear una segunda tabla de la tabla con la columna deseada órdenes, copias de todos los datos en ella, las gotas de la tabla original y, a continuación, cambia el nombre de la tabla secundaria para tomar su lugar.Esto ahorrará tener que escribirlo, aunque si quieres un script de despliegue.

Se puede hacer uso de SQL, mediante la modificación de las tablas del sistema directamente.Por ejemplo, mira aquí:

Alter table - Agregar una nueva columna en entre

Sin embargo, yo no recomendaría jugar con las tablas del sistema, a menos que sea absolutamente necesario.

No es posible cambiar el orden de las columnas sin necesidad de recrear toda la tabla.Si usted tiene un par de instancias de la base de datos, puede usar SSMS para esto (Seleccione la tabla y haga clic en "diseño").

En caso de tener demasiados casos para un proceso manual, usted debe probar este script:https://github.com/Epaminaidos/reorder-columns

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top