programing

SQL Server 2008에서 기존 테이블의 열 순서를 변경하는 방법

megabox 2023. 7. 3. 22:39
반응형

SQL Server 2008에서 기존 테이블의 열 순서를 변경하는 방법

SQL Server 2008에서 기존 Table의 열 순서를 변경하거나 새 열을 추가해야 하는 상황이 발생했습니다.

기존 열

MemberName
MemberAddress
Member_ID(pk)

그리고 나는 이 주문을 원합니다.

Member_ID(pk)
MemberName
MemberAddress

요. on 나 도 같 답 받 았 어 어 서 은 을 어 서 ▁i ▁go ▁for 나 ▁answer ▁the 도 ▁got ▁, 어 같SQL Server → Tools → Options → Designers → Table and Database Designers 선택 취소Prevent saving changes that require table re-creation

enter image description here

2 - 테이블 디자인 보기를 열고 열을 위아래로 스크롤하여 변경사항을 저장합니다.

enter image description here

ALTER 문으로는 불가능합니다.열을 특정 순서로 지정하려면 새 테이블을 만들고 새 테이블에 삽입(col-x, col-a, col-b)을 사용하여 이전 테이블에서 새 테이블로 데이터를 전송하고 이전 테이블을 삭제한 후 새 테이블의 이름을 이전 테이블 이름으로 변경해야 합니다.

데이터베이스 테이블에 있는 열의 순서는 중요하지 않으므로 이 방법은 권장되지 않습니다.SELECT 문을 사용할 때 열 이름을 지정하고 원하는 순서로 반환할 수 있습니다.

테이블에 레코드가 없으면 삭제한 후 테이블을 만들 수 있습니다.

레코드가 있는 경우 SQL Server Management Studio를 사용하여 레코드를 수행할 수 있습니다.

테이블 클릭 > 오른쪽 클릭 > 디자인 클릭 후 원하는 순서로 필드를 드래그한 후 저장을 클릭하여 열 순서를 정렬할 수 있습니다.

안부 전합니다

저는 이것을 시도했지만 그것을 할 방법이 없습니다.

여기 그것에 대한 나의 접근법이 있습니다.

  1. 생성을 위한 테이블 및 스크립트 테이블을 마우스 오른쪽 버튼으로 클릭하고 SQL 쿼리 창 중 하나에 이 테이블을 둡니다.
  2. EXEC sp_rename 'Employee', 'Employee1'은 Employee ▁employee니▁name▁original▁employee다▁is래입니다.
  3. Employee create 스크립트를 실행하고 필요한 방식으로 열을 정렬해야 합니다.
  4. INSERT INTO TABLE2 SELECT * FROM TABLE1 Name, Employee1 -- Employee1 - Employee1의 Company Name, Company에 합니다.
  5. DROP table Employee1.

SQL에서 열 순서에 의존하는 것은 일반적으로 좋지 않은 생각입니다. SQL은 설계상 순서가 보장되지 않는 관계 이론에 기초합니다.모든 열과 행을 순서가 없는 것으로 처리한 다음 쿼리를 변경하여 올바른 결과를 제공해야 합니다.

열:

  • SELECT *를 사용하지 않고 SELECT Member_와 같이 선택 목록의 열 순서를 지정합니다.ID, 구성원 이름, 테이블 이름의 구성원 주소.이렇게 하면 주문이 보장되고 열이 추가되면 유지 관리가 쉬워집니다.

행의 경우:

  • 결과 집합의 행 순서는 ORDER BY 절을 지정한 경우에만 보장됩니다.
  • ORDER BY 절을 지정하지 않으면 쿼리 계획이 다르거나 데이터베이스 페이지가 변경되었을 수 있으므로 결과 집합이 다를 수 있습니다.

이게 도움이 되길...

이 문제는 공유 개발 환경에 소스 제어 및 자동 배포를 사용할 때 발생할 수 있습니다.제가 근무하는 곳에서는 개발 계층에서 작업할 매우 큰 샘플 DB가 있습니다(운영 데이터의 하위 집합).

최근에 테이블에서 하나의 열을 제거한 다음 끝에 추가하는 작업을 했습니다.그런 다음 열 제거 작업을 취소해야 했기 때문에 마지막에 다시 추가했습니다. 즉, 테이블과 모든 참조가 환경에서 올바르지만 테이블 정의 변경에 대해 불평하기 때문에 소스 제어 자동 배포가 더 이상 작동하지 않습니다.

여기서 진짜 문제는 테이블 + 인덱스가 120GB이고 환경에는 60GB의 여유 공간만 있으므로 다음 중 하나를 수행해야 한다는 것입니다.

잘못된 순서의 기존 열 이름 바꾸기, 올바른 순서로 새 열 추가, 데이터 업데이트, 이전 열 삭제

OR

테이블 이름 바꾸기, 올바른 순서로 새 테이블 만들기, 이전 테이블에서 새 테이블 삽입 및 이전 테이블에서 삭제

디스크 공간이 부족하여 임시 테이블을 사용하는 SSMS/TFS 스키마 비교 옵션이 작동하지 않습니다.

나는 이것이 일을 진행하는 가장 좋은 방법이거나 칼럼 순서가 정말로 중요하다고 말하려는 것이 아닙니다. 단지 나는 그것이 문제가 되는 시나리오를 가지고 있고 나는 문제를 해결하기 위해 생각했던 옵션을 공유하고 있습니다.

ID 열을 처음으로 변경하기 위한 SQL 쿼리:

ALTER TABLE `student` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST;

또는 다음을 사용합니다.

ALTER TABLE `student` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT AFTER 'column_name' 

언급URL : https://stackoverflow.com/questions/15781151/how-to-change-the-column-order-of-an-existing-table-in-sql-server-2008

반응형