programing

SQL Server 2005의 기존 열 뒤에 새 열을 추가하기 위한 SQL 쿼리

minimums 2023. 6. 27. 22:03
반응형

SQL Server 2005의 기존 열 뒤에 새 열을 추가하기 위한 SQL 쿼리

기존 열 뒤에 새 열을 추가하는 SQL 쿼리가 필요하여 특정 순서로 열이 추가됩니다.

만약 있다면 저에게 제안해 주십시오.ALTER어느 쪽이 그러는지 묻습니다.

Microsoft SQL(AFAIK)에서는 테이블을 변경하고 특정 열 뒤에 열을 추가할 수 없습니다.SQL Server Management Studio를 사용하거나 테이블을 삭제하고 다시 추가하거나 새 테이블을 만들고 데이터를 수동으로 이동하는 것이 좋습니다.둘 다 매우 우아하지 않습니다.

그러나 MySQL은 다음을 수행합니다.

ALTER TABLE mytable
ADD COLUMN  new_column <type>
AFTER       existing_column

가능합니다.

먼저 각 열을 일반적인 방법으로(마지막 열처럼) 추가합니다.

두 번째로.SQL Server Management Studio도구 = > 옵션으로 이동합니다.

'Designers' Tab => 'Table and Database Designers' 메뉴에서 'Table 재작성이 필요한 변경사항 저장 금지' 옵션의 선택을 취소합니다.

그런 다음 테이블에서 마우스 오른쪽 단추를 클릭하고 '설계'를 선택합니다.'설계' 모드에서는 열을 끌어 정렬합니다.

저축하는 것을 잊지 마세요.

순서는 저장 또는 쿼리에 중요하지 않으므로 ALTER는 이 작업을 수행하지 않습니다.

SQL Server의 경우 SSMS Table Designer를 사용하여 열을 정렬해야 합니다. 그러면 테이블을 삭제하고 다시 만드는 스크립트를 생성할 수 있습니다.

2013년 6월 편집

여기에서 제 답변에 대한 링크를 클릭합니다. SQL Server 열을 주문할 때 성능/공간이 영향을 받습니까?

SQL Server에서 열 순서를 변경하려면 현재 SQL Server에서 직접 변경할 수 있는 방법이 없습니다.

http://blog.sqlauthority.com/2008/04/08/sql-server-change-order-of-column-in-database-tables/ 을 살펴보십시오.

테이블의 설계를 편집하는 동안 순서를 변경할 수 있습니다.

먼저 SSM Studio를 통해 새 열을 이전 테이블에 추가합니다.데이터베이스 >> 표 >> 열로 이동합니다.열을 마우스 오른쪽 단추로 클릭하고 열을 선택합니다.마법사를 따릅니다.그런 다음 다음 원하는 순서대로 열을 정렬하여 새 테이블을 만듭니다.

select * into my_new_table from (
select old_col1, my_new_col, old_col2, old_col3
from my_old_table 
) as A
;

그런 다음 SSM Studio를 통해 원하는 대로 테이블 이름을 변경합니다.데이터베이스 >> 표 >> 이름 바꾸기를 선택합니다.

제가 조사한 바로는 당신이 원하는 대로 할 수 있는 방법이 없습니다.수동으로 테이블을 다시 만들고 데이터를 복사하거나 SSMS에서 이 작업을 수행할 수 있습니다(열을 다른 순서로 끌어서 놓으면 SSMS에서 이 작업을 수행합니다).사실 열이 어떤 순서인지는 중요하지 않습니다.또는 원하는 순서대로 원하는 데이터를 선택할 수 있습니다.예를 들어, 선택에서 별표(*)를 사용하는 대신 열 이름을 순서대로 지정합니다. 테이블에 col1, col2, col3, colNew 열이 있다고 가정해 보겠습니다.

다음 대신:

SELECT * FROM MyTable

사용할 수 있는 항목:

SELECT col1, colNew, col2, col3 FROM MyTable

기간을 지정하여 *를 선택하는 것은 좋지 않습니다.SSMS가 선택 * 대신에 수백 개가 있더라도 모든 필드 이름을 추가하는 이유입니다.테이블의 크기에 관계없이 매우 비효율적입니다.필드가 무엇인지 모를 경우 *를 선택하는 것보다 INFORMATION_SCHEMA 데이터베이스에서 필드를 꺼내는 것이 더 효율적입니다.

더 나은 질문은 다음과 같습니다.

SELECT 
 COLUMN_NAME, 
 Case 
  When DATA_TYPE In ('varchar', 'char', 'nchar', 'nvarchar', 'binary') 
  Then convert(varchar(MAX), CHARACTER_MAXIMUM_LENGTH)  
  When DATA_TYPE In ('numeric', 'int', 'smallint', 'bigint', 'tinyint') 
  Then convert(varchar(MAX), NUMERIC_PRECISION) 
  When DATA_TYPE = 'bit' 
  Then convert(varchar(MAX), 1)
  When DATA_TYPE IN ('decimal', 'float') 
  Then convert(varchar(MAX), Concat(Concat(NUMERIC_PRECISION, ', '), NUMERIC_SCALE)) 
  When DATA_TYPE IN ('date', 'datetime', 'smalldatetime', 'time', 'timestamp') 
  Then '' 
 End As DATALEN, 
 DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
Where 
 TABLE_NAME = ''

언급URL : https://stackoverflow.com/questions/4732415/sql-query-to-add-a-new-column-after-an-existing-column-in-sql-server-2005

반응형