sql-server - full - sql server descargar
¿Puedo reordenar lógicamente las columnas de una tabla? (8)
- Script su tabla existente a una ventana de consulta.
- Ejecute este script en una base de datos de prueba (elimine la instrucción Use)
- Use SSMS para hacer los cambios de columna que necesita
- Haga clic en Generar secuencia de comandos de cambio (el icono más a la izquierda y más abajo en la barra de botones, por defecto)
- Usa este script contra tu tabla real
Todo lo que el script realmente hace es crear una segunda tabla de tabla con los pedidos de columnas deseados, copia todos sus datos en ella, suelta la tabla original y luego cambia el nombre de la tabla secundaria para tomar su lugar. Esto le ahorra escribirlo usted mismo si desea un script de implementación.
Si agrego una columna a una tabla en Microsoft SQL Server, ¿puedo controlar dónde se muestra la columna de forma lógica en las consultas?
No quiero meterme con el diseño físico de las columnas en el disco, pero me gustaría agrupar lógicamente las columnas cuando sea posible para que herramientas como SQL Server Management Studio enumeren el contenido de la tabla de una manera conveniente.
Sé que puedo hacer esto a través de SQL Management Studio entrando en su modo de "diseño" para tablas y arrastrando el orden de las columnas, pero me gustaría poder hacerlo en SQL sin formato para poder realizar el pedido guionizado desde la línea de comando.
Creo que todo lo que falta aquí es que, aunque no todos tienen que lidiar con instancias de 10, 20 o 1000 del mismo sistema de software instalado en todo el país y el mundo ... aquellos de nosotros que diseñamos software vendido comercialmente lo hacemos. Como resultado, ampliamos los sistemas a lo largo del tiempo, expandimos las tablas agregando campos a medida que se necesita una nueva capacidad y, a medida que se identifican esos campos, pertenecen a una tabla existente y, como tal, durante más de una década de expansión, crecimiento, adición de campos, etc. a tablas ... y luego tener que trabajar con esas tablas desde el diseño, el soporte, hasta a veces profundizar en datos en bruto / resolución de problemas para depurar nuevos errores de funcionalidad ... es increíblemente agravante no tener la información primaria que desea vea dentro del primer puñado de campos, cuando puede tener tablas con 30-40-50 o incluso 90 campos y sí en una base de datos estrictamente normalizada.
Muchas veces he deseado poder hacer esto, por esta razón exacta. Pero antes de hacer exactamente lo que hace SQL, crear un script de creación para una nueva tabla de la manera que lo deseo, escribir el Insertar en él, luego eliminar todas las restricciones, relaciones, claves, índices, etc., etc. existentes de la tabla existente y cambiar el nombre la tabla "nueva" vuelve al nombre anterior y luego lee todas esas claves, relaciones, índices, etc., etc.
No solo es tedioso, consume tiempo sino que ... en cinco años más, tendrá que volver a ocurrir ...
Está tan cerca de valer esa gran cantidad de trabajo, sin embargo, el punto es ... no será la última vez que necesitemos esta capacidad, ya que nuestros sistemas continuarán creciendo, expandiéndose y obteniendo campos en un orden controlado impulsado por necesidad / adiciones de diseño.
La mayoría de los desarrolladores piensan desde un único punto de vista del sistema que sirve a una sola compañía o mercado de cajas rígidas muy específico.
Los diseñadores y líderes de desarrollo "listos para usar" pero significativamente progresivos en su espacio de mercado siempre tendrán que lidiar con este problema, una y otra vez ... les encantaría una solución creativa si alguien tiene una. Esto podría ahorrarle fácilmente a mi empresa una docena de horas a la semana, simplemente no tener que desplazarse o recordar dónde está "ese" campo en la tabla de datos de origen ...
Cuando Management Studio lo hace, está creando una tabla temporal, copiando todo, soltando su tabla original y renombrando la tabla temporal. No hay una declaración T-SQL equivalente simple.
Si no le gusta hacer eso, ¿siempre puede crear una vista de la tabla con las columnas en el orden que desee y usar eso?
Editar: golpeado!
Hay una forma, pero es solo temporalmente para la consulta en sí. Por ejemplo,
Digamos que tienes 5 mesas. La tabla se llama T_Testing
Nombre, Apellido, Número de teléfono, Correo electrónico e ID de miembro
desea que enumere su ID, luego Apellido, Nombre, Teléfono y Correo electrónico.
Puede hacerlo según la selección.
Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing
Aparte de eso, si solo desea que el apellido se muestre antes del nombre por alguna razón, puede hacerlo también de la siguiente manera:
Select LastName, *
From T_Testing
Lo único que quiere asegurarse de hacer es que la función OrderBy o Where debe indicarse como Table.Column si va a utilizar un Where o OrderBy
Ejemplo:
Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc
Espero que esto ayude, lo descubrí porque necesitaba hacerlo yo mismo.
No es posible cambiar el orden de las columnas sin recrear toda la tabla. Si solo tiene algunas instancias de la base de datos, puede usar SSMS para esto (Seleccione la tabla y haga clic en "diseño").
En caso de que tenga demasiadas instancias para un proceso manual, debe probar este script: https://github.com/Epaminaidos/reorder-columns
No puede hacer esto programáticamente (de una manera segura) sin crear una nueva tabla.
Lo que hace Enterprise Manager cuando confirma un reordenamiento es crear una nueva tabla, mover los datos y luego eliminar la tabla anterior y cambiar el nombre de la nueva tabla al nombre existente.
Si desea que sus columnas estén en un orden / grupo particular sin alterar su orden físico, puede crear una vista que puede ser lo que desee.
Se puede hacer usando SQL, modificando las tablas del sistema directamente. Por ejemplo, mira aquí:
Alterar tabla - Agregar nueva columna en el medio
Sin embargo, no recomendaría jugar con tablas del sistema, a menos que sea absolutamente necesario.
Si entiendo su pregunta, desea afectar qué columnas se devuelven primero, segundo, tercero, etc. en las consultas existentes , ¿verdad?
Si todas sus consultas se escriben con SELECT * FROM TABLE
, aparecerán en la salida tal como se presentan en SQL.
Si sus consultas se escriben con SELECT Field1, Field2 FROM TABLE
, entonces el orden en que se presentan en SQL no importa.