¿Cómo cambiar el orden de las columnas en una tabla usando una consulta SQL en SQL Server 2005?
Quiero reorganizar el orden de las columnas en una tabla usando una consulta SQL.
sql
sql-server-2005
Himadri
fuente
fuente
Respuestas:
No puedes. El orden de las columnas es solo una cosa "cosmética" que nos importa a los humanos; para SQL Server, casi siempre es absolutamente irrelevante.
Lo que hace SQL Server Management Studio en segundo plano cuando cambia el orden de las columnas allí es recrear la tabla desde cero con un nuevo
CREATE TABLE
comando, copiar los datos de la tabla anterior y luego soltarlos.No hay ningún comando SQL para definir el orden de las columnas.
fuente
INSERT
sin especificar explícitamente tus columnas de todos modos!Debe enumerar explícitamente los campos en el orden en que desea que se devuelvan en lugar de usar * para el orden 'predeterminado'.
consulta original:
devoluciones
ahora escribe
fuente
según http://msdn.microsoft.com/en-us/library/aa337556.aspx
Bueno, se puede hacer usando
create
/ copy /drop
/ renombrar, como respondió komma8.komma1O puede usar SQL Server Management Studio
Luego haga clic en guardar. Este método en realidad elimina y recrea la tabla, por lo que pueden ocurrir algunos errores.
Si la opción Seguimiento de cambios está habilitada para la base de datos y la tabla, no debe utilizar este método.
Si está deshabilitada, la opción Evitar guardar cambios que requieren la recreación de la tabla debe borrarse en el menú Herramientas> Opciones> Diseñadores; de lo contrario, se producirá el error "No se permiten guardar cambios" .
También pueden surgir problemas durante la creación de claves primarias y externas.
Si se produce alguno de los errores anteriores, el guardado falla, lo que lo deja con el orden de columna original.
fuente
This task cannot be performed using Transact-SQL statements.
" en el documento era incorrecta. Le expliqué al autor y le pedí que lo cambiara por "This task is not supported using Transact-SQL statements.
". Hace aproximadamente un día, el autor estuvo de acuerdo y se arregló el documento. Puedes seguir la discusión que tuvimos en GitHub .Esto es similar a la pregunta sobre ordenar los registros en el resultado de una consulta ... y normalmente a nadie le gusta la respuesta formalmente correcta ;-)
Así que aquí va:
select *
no obliga a que las columnas se devuelvan en un orden particularcreate table' or in the
tabla de modificación agregar `declaracionesfuente
Por supuesto, puede cambiar el orden de las columnas en una declaración SQL. Sin embargo, si desea abstraer el orden de las columnas físicas de las tablas, puede crear una vista. es decir
fuente
En SQLServer Management Studio:
Herramientas -> Opciones -> Diseñadores -> Diseñadores de tablas y bases de datos
Luego:
SQLServer Management studio eliminará la tabla y la volverá a crear utilizando los datos.
fuente
Puede hacerlo creando una nueva tabla, copiando todos los datos, eliminando la tabla anterior y luego cambiando el nombre de la nueva para reemplazar la anterior.
También puede agregar nuevas columnas a la tabla, copiar los datos columna por columna, eliminar las columnas antiguas y luego cambiar el nombre de las columnas nuevas para que coincidan con las antiguas. Un ejemplo simple a continuación: http://sqlfiddle.com/#!3/67af4/1
fuente
En SQLServer Management Studio:
Tools
->Options
->Designers
->Table and Database Designers
Deseleccionar
Prevent saving changes that require table re-creation
.Ahora puedes reordenar la mesa.
fuente
El servidor SQL crea internamente el script. Crea una tabla temporal con nuevos cambios y copia los datos y suelta la tabla actual y luego vuelve a crear la inserción de la tabla desde la tabla temporal. Lo encuentro en la opción "Generate Change script" ssms 2014. Script como este. Desde aquí: Cómo cambiar el orden de las columnas en una tabla usando la consulta SQL
fuente
Si su tabla tiene suficientes columnas, puede intentar esto. Primero cree una nueva tabla con el orden preferido de columnas.
Ahora suelte la tabla usando el comando drop
ahora cambie el nombre de la tabla recién creada a su nombre de tabla anterior.
ahora seleccione la tabla, tiene sus columnas reorganizadas como prefería antes.
fuente
Al final del día, simplemente no puede hacer esto en MS SQL. Recientemente creé tablas sobre la marcha (inicio de la aplicación) usando un procedimiento almacenado que lee de una tabla de búsqueda. Cuando creé una vista que los combinaba con otra tabla que había creado manualmente anteriormente (el mismo esquema, con datos), falló, simplemente porque estaba usando '' Seleccionar * UNION Seleccionar * 'para la vista. Al mismo tiempo, si utilizo solo los creados a través del procedimiento almacenado, tengo éxito.
En conclusión: si hay alguna aplicación que depende del orden de las columnas, realmente no es una buena programación y seguramente creará problemas en el futuro. Las columnas deben 'sentirse' libres de estar en cualquier lugar y usarse para cualquier proceso de datos (INSERT, UPDATE, SELECT).
fuente
Puedes lograrlo con estos pasos:
elimine todas las claves externas y la clave principal de la tabla original.
cambiar el nombre de la tabla original.
usando CTAS cree la tabla original en el orden que desee.
deja caer la vieja mesa.
aplicar todas las restricciones a la tabla original
fuente
Si las columnas que se van a reordenar se han creado recientemente y están vacías, las columnas se pueden eliminar y volver a agregar en el orden correcto.
Esto me sucedió, extendiendo una base de datos manualmente para agregar nueva funcionalidad, y había perdido una columna, y cuando la agregué, la secuencia era incorrecta.
Después de no encontrar una solución adecuada aquí, simplemente corrigí la tabla usando el siguiente tipo de comandos.
Nota: solo haga esto si no tiene datos en las columnas que está eliminando.
La gente ha dicho que el orden de las columnas no importa. Utilizo regularmente SQL Server Management Studio "generar scripts" para crear una versión de texto del esquema de una base de datos. Para controlar de forma eficaz estas secuencias de comandos (git) y compararlas (WinMerge), es imperativo que la salida de las bases de datos compatibles sea la misma y que las diferencias resaltadas sean diferencias genuinas de la base de datos.
El orden de las columnas sí importa; ¡pero solo para algunas personas, no para todos!
fuente
Supongo que desea agregar una nueva columna en una posición específica. Puede crear una nueva columna moviendo las columnas actuales hacia la derecha.
Elimine todos los índices afectados y las referencias de claves externas. Agregue una nueva columna con exactamente el mismo tipo de datos que la última columna y copie los datos allí.
Cambie el tipo de datos de la tercera columna al mismo tipo que el de la columna anterior y copie los datos allí.
Cambie el nombre de las columnas en consecuencia, vuelva a crear índices eliminados y referencias de claves externas.
Cambie el tipo de datos de la segunda columna.
Tenga en cuenta que el orden de las columnas es solo una cosa "cosmética", como dijo marc_s .
fuente
Utilizar
que muestra el orden predeterminado de las columnas de la tabla.
Si desea cambiar el orden de las columnas.
Especifique el nombre de la columna para mostrar correspondientemente
fuente
puede usar la indexación .. Después de la indexación, si selecciona * de XXXX, los resultados deben ser según el índice, pero solo el conjunto de resultados .. no la estructura de la tabla
fuente
Puede cambiar esto usando una consulta SQL. Aquí está la consulta SQL para cambiar la secuencia de la columna.
fuente
Para tener un orden de columna específico, debe seleccionar columna por columna en el orden que desee. El orden de selección dicta cómo se ordenarán las columnas en la salida.
fuente
Prueba este comando:
Esto cambiará la posición de edad a la primera posición.
fuente
alterar el nombre de la tabla modificar el nombre de la columna int (5) primero; traerá la columna a la primera alterar el nombre de la tabla modificar el nombre de la columna int (5) después de (nombre de la tabla);
fuente
Ejemplo: Cambiar la posición de field_priority después de field_price en el estado de la tabla.
fuente