SQL Server에서 열 크기 변경


답변:


507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
매우 큰 데이터 테이블에서 열을 변경하는 경우주의하십시오. 어쨌든 내 환경에서 충돌이 발생할 수 있습니다.
DavidTheDev

55
또한 열에 속성 NOT NULL이있는 경우 쿼리에서 열 을 언급해야하며 그렇지 않으면 NULL기본적으로 열을 설정해야합니다 . ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri 2016

8
해당 컬럼에 인덱스가있는 경우 다시 다음, 드롭 테이블 변경 코드를 실행 한 후 인덱스를 만들어야합니다
Sr.PEDRO



19

ALTER COLUMN속성을 언급하지 않고 실행 NOT NULL하면 컬럼이 널 입력 가능으로 변경됩니다 (아직없는 경우). 따라서 먼저 열이 널 입력 가능인지 확인하고 그렇지 않은 경우 attribute를 지정해야합니다 NOT NULL. 또는 다음 열을 사용하여 열의 Null 허용 여부를 미리 확인하고 올바른 특성으로 명령을 실행할 수 있습니다.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

다음 그림과 같이 Data Type에서 table-> Design-> change value를 선택합니다.

여기에 이미지 설명을 입력하십시오

테이블 디자인을 저장하십시오.


단계가 누락되었을 수 있습니다.
arnav

7
도구-> 옵션 ... /> 디자이너-> 테이블 및 데이터베이스 디자이너- "테이블을 다시 작성해야하는 변경 사항 저장 방지"
7anner

대부분의 경우 스크립팅을 선호합니다. 그러나 열 변경의 경우 UI가 좋습니다. NOT NULL 또는 계산 또는 추가 열 속성을 확인할 필요가 없습니다. 저장을 클릭하면됩니다 (SSMS에서 @ 7anner 메모로 설정을 변경 한 후).
Jacob H

1

흥미로운 접근 방식은 여기에서 볼 수 있습니다 : 어떻게 확대 귀하의 열을 다운 타임없이 spaghettidba에 의해

"ALTER TABLE"명령을 사용하여이 열을 확대하려고하면 SQLServer가 모든 행을 통과하고 새 데이터 형식을 쓸 때까지 기다려야합니다.

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

이러한 불편 함을 극복하기 위해 테이블에 사용할 수있는 마술 기둥 확대 필이 있으며이를 행 압축 이라고 합니다. (...) 행 압축을 사용하면 고정 크기 열은 실제 데이터에 맞는 가장 작은 데이터 유형에 필요한 공간 만 사용할 수 있습니다.

테이블이 ROW레벨에서 압축되면 ALTER TABLE ALTER COLUMN메타 데이터 전용 조작입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.