SQL Server에서 열의 데이터 유형을 어떻게 변경합니까?


답변:


564
ALTER TABLE TableName 
ALTER COLUMN ColumnName NVARCHAR(200) [NULL | NOT NULL]

EDIT NULL / NOT NULL을 명시했듯이 Rob의 답변 도 참조하십시오 .


1
왜 지정해야합니까? 이점은 무엇입니까? 제가 언급 할 필요없이 그대로두고 싶은 것은 제 생각입니다.
놀라운 1

5
@TheincredibleJan 멋지 겠지만 불행히도 그렇게 작동하지 않습니다. ALTER TABLE TableName ALTER COLUMN ColumnName기존 열인을 변경 하는 명령을 실행하고 [NOT NULL]명시 적으로 지정하지 않으면 [NULL]기본값이 그대로 유지됩니다.
takrl

4
이것은 열에 제약 조건과 색인이없는 경우에만 작동합니다. 예를 들어 tinyint에서 int로 변경할 때
Hrvoje Batrnek

SSMS와 같은 IDE가 열려있는 경우주의하십시오. 내 디자이너 탭을 테이블에서 닫아도 스크립트가 실행되고 테이블을 마우스 오른쪽 버튼으로 클릭하여 "디자인"을 선택한 후에도 변경되어 기존 데이터 유형이 계속 표시됩니다! Management Studio에서 모든 탭을 닫고 디자인 뷰를 다시 열어서 업데이트 된 DataType을 표시 한 후에야했습니다. 매우 무서우므로 조심하십시오 (지금은 수정 된 캐시 버그이거나 한 MS가 수정을 귀찮게하지 않을 수 있습니다). Design-View를 사용할 때 왜 T-SQL을 실행했는지 궁금해하는 사람들을 위해 DataTypes를 SysNameSSMS가 허용하지 않는 것으로 변경하고 싶었습니다 .
MikeTeeVee

XAMPP에서 이러한 명령으로 운이 없었습니다. ALTER TABLE table MODIFY COLUMN column datatype나를 위해 일했다.
Pavindu

173

무효 성을 잊지 마십시오.

ALTER TABLE <schemaName>.<tableName>
ALTER COLUMN <columnName> nvarchar(200) [NULL|NOT NULL]

2
무효 성 문제는 무엇입니까? 변경하지 않으려면 다시 설정하면 어떤 이점이 있습니까?
놀라운 1

7
^ alter table 문이 실행을 명시 적으로 정의하지 않고 실행을 마치면 기본값은 NULL입니다.
sc305495

1
@ sc305495 ​​정확히 말해, ANSI_NULL_DEFAULT 설정이 기본값입니다.
Zikato

23

Alter table 문을 사용하십시오.

Alter table TableName Alter Column ColumnName nvarchar(100)

13

SQL Server (Transact-SQL)의 기존 테이블에서 열을 수정하는 구문은 다음과 같습니다.

ALTER TABLE table_name
    ALTER COLUMN column_name column_type;

예를 들면 다음과 같습니다.

ALTER TABLE employees
    ALTER COLUMN last_name VARCHAR(75) NOT NULL;

이 SQL Server ALTER TABLE예제는 호출 된 열 last_name을 데이터 형식으로 수정하고 열이 VARCHAR(75)null 값을 허용하지 않도록합니다.

여기를 참조 하십시오


1
답변에 더 많은 정보를 추가하고 코드 / 쿼리 형식을 지정하십시오!
Sebastian Brosch

4

varchar의 크기를 늘리면 괜찮습니다. 당으로서 테이블 변경 참조 :

열의 정밀도 또는 스케일을 줄이면 데이터가 잘릴 수 있습니다.


3

데이터 타입 변경

alter table table_name 
alter column column_name datatype [NULL|NOT NULL]

기본 키 변경

ALTER TABLE table_name  
ADD CONSTRAINT PK_MyTable PRIMARY KEY (column_name)

1
ALTER TABLE [dbo].[TableName]
ALTER COLUMN ColumnName VARCHAR(Max) NULL

이것은 몇 년 전의 기존의 대답보다 아무것도 추가하지 않은 것으로 보이며 테이블 구조에 게시 한 변경 사항이 실제로 질문과 일치하지 않습니다.
PeterJ

-11

이 시도:

ALTER TABLE "table_name"
MODIFY "column_name" "New Data Type";

1
"수정"은 정확하지 않습니다. 다른 답변과 비교하십시오.
Frank

3
이것은 오래되었지만 Kai Tzer가 MySql 및 / 또는 Oracle DDL을 증명하고있는 것으로 보입니다.
쉘던 코헨

1
셀던에 동의, 여기에 대한 답변은 단지이, 오라클 SQL 나를 도와
ASFK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.