테이블 - 삭제 및 수정.

 

테이블 생성은 지난 시간에 살펴 보았다. 비즈니스의 구성에 따라 테이블이 삭제 되거나 수정이 필요할 때가 있다. 이번 시간은 테이블의 삭제 및 수정에 대해서 알아 본다.

 

1. 테이블 삭제

테이블을 삭제하는 방법에는 SSMS를 이용하는 방법과 직접 쿼리문을 입력하여 삭제하는 방법이 있다.

(MSDN 참고:
http://msdn.microsoft.com/ko-kr/library/ms173790.aspx)

 

- SSMS 이용하기

SSMS를 실행하여 해당 DB에서 [테이블] 마우스 오른쪽을 클릭하여 [삭제]를 선택한다.

 

[개체 삭제] 창에서 확인을 선택하면 테이블이 삭제 된다.

 

테이블을 삭제 하였는데 만약 삭제된 테이블을 참조하고 있는 다른 테이블이 있다면 어떻게 될까? 사용하지 않는다고 생각했던 테이블의 삭제로 인하여 재앙이 발생할 수도 있다. 삭제하려는 테이블이 어느 테이블에 종속되어 있고 종속하고 있는지 확인 할 수 있다면 매우 좋을 것이다.

 

[개체 삭제] 창에서 [종속성 표시(H)]를 선택 한다.

삭제하려는 테이블이 종속하고 있거나 종속되어 있는 개체를 확인 할 수 있다.

(예시 그림을 위하여 다른 테이블의 종속 관례 그림을 첨부 하였다.)

 

 

- 쿼리 이용하기

SSMS 쿼리 분석기에 테이블 삭제 명령을 입력 한다.

TBL_A 테이블 삭제.

DROP TABLE TBL_A

 

테이블 삭제는 아주 간단 하다. 하지만 외래 키(FOREIGN KEY) 제약조건의 기준 테이블은 삭제 할 수 없다. 따라서 외래 키의 기준이 되는 테이블이라면 왜래 키를 관계를 삭제 후 테이블을 삭제 하거나 외래 키가 생성된 테이블을 삭제하고 삭제 한다.

 

2. 테이블 수정

테이블을 수정하는 방법에는 SSMS를 이용한 방법과 쿼리문을 이용한 방법이 있다. 테이블의 열 추가 및 삭제, 제약조건 추가 및 삭제, 데이터 타입의 변경 방법 등을 학습해 보자.

 

(MSDN 참고:
http://msdn.microsoft.com/ko-kr/library/ms190273.aspx)

 

  • SSMS를 이용하기

SSMS를 실행하여 수정하려는 테이블에서 마우스 오른쪽 클릭 [디자인(G)]을 선택 한다.

 

 

디자인 창이 나타나면 열을 추가 / 삭제 할 수 있다. 또는 기존열의 데이터 타입을 변경 할 수 있다.

 

 

열의 위치를 변경 하고자 한다면 이동하려는 열을 드래그 하여 원하는 위치에 놓는다.

 

 

디자인 창에서 테이블을 수정하고 나면 저장 버튼을 클릭하여 저장 후 닫는다.

 

 

테이블 정보가 변경된 것을 확인 하자.

 

 

만약 저장 버턴을 선택하였는데 아래와 같은 경고 창이 나타날 수 있다.

 

 

메뉴에서 [도구] – [옵션]을 선택 한다.

 

 

[옵션] 창에서 [Designer] – [테이블 및 데이터베이스 디자인] 을 선택한다.

[테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함]의 체크를 해제 한다.

 

 

디자인 창에서 마우스 오른쪽을 클릭하면 열 삽입 / 삭제. 키 설정 등 다양한 메뉴가 나타난다.

팝업 메뉴를 활용하여 사용자에 맞는 테이블을 수정 한다.

 

  • 쿼리 이용하기.

테이블의 수정은 ALTER 구문을 사용 한다. 기본 형식은 아래와 같다.

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name

{

ALTER COLUMN column_name

{

[ type_schema_name. ] type_name [ ( { precision [ ,scale ]

| max | xml_schema_collection } ) ]

[ COLLATE collation_name ]

[ NULL | NOT NULL ] [ SPARSE ]

| {ADD | DROP }

{ ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE }

}

| [ WITH { CHECK | NOCHECK } ]

 

| ADD

{

<column_definition>

| <computed_column_definition>

| <table_constraint>

| <column_set_definition>

} [ ,...n ]

 

| DROP

{

[ CONSTRAINT ] constraint_name

[ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]

| COLUMN column_name

} [ ,...n ]

 

| [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT

{ ALL | constraint_name [ ,...n ] }

 

| { ENABLE | DISABLE } TRIGGER

{ ALL | trigger_name [ ,...n ] }

 

| { ENABLE | DISABLE } CHANGE_TRACKING

[ WITH ( TRACK_COLUMNS_UPDATED = { ON | OFF } ) ]

 

| SWITCH [ PARTITION source_partition_number_expression ]

TO target_table

[ PARTITION target_partition_number_expression ]

 

| SET ( FILESTREAM_ON = { partition_scheme_name | filegroup |

"default" | "NULL" } )

 

| REBUILD

[ [PARTITION = ALL]

[ WITH ( <rebuild_option> [ ,...n ] ) ]

| [ PARTITION = partition_number

[ WITH ( <single_partition_rebuild_option> [ ,...n ] )]

]

]

 

| (<table_option>)

}

[ ; ]

 

<column_set_definition> ::=

column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

 

<drop_clustered_constraint_option> ::=

{

MAXDOP =max_degree_of_parallelism | ONLINE = {ON | OFF }

| MOVE TO { partition_scheme_name (column_name) | filegroup

| "default" }

}

<table_option> ::=

{

SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } )

}

 

<single_partition_rebuild__option> ::=

{

SORT_IN_TEMPDB = { ON | OFF }

| MAXDOP =max_degree_of_parallelism

| DATA_COMPRESSION = { NONE | ROW | PAGE} }

}

 

MSDN에서 제공하는 문법을 보면 매우 복잡 하다. 하나씩 예를 들어 살펴 보자.

 

ADDRESS 열 추가

ALTER TABLE TBL_A

    ADD ADDRESS NVARCHAR(50) -- 열추가

    DEFAULT 'SEOUL' -- 디폴트값

    NULL -- NULL 허용

 

ADDRESS 열 삭제

ALTER TABLE TBL_A

    DROP COLUMN ADDRESS

 

ADRESS 열 데이터 형식 변경

ALTER TABLE TBL_A

    ALTER COLUMN ADDRESS NVARCHAR(50)NULL

 

데이터 형식을 변경 할 때에는 열이 크기를 기존의 데이터 크기보다 커야 한다.

 

ADDRESS 열의 이름을 NEW_ADDRESS 이름으로 변경

EXEC sp_rename 'ADDRESS', 'NEW_ADDRESS', 'COLUMN'

 

열의 제약 조건 추가 (PRIMARY 키)

ALTER TABLE TBL_A

    ADD CONSTRAINT PK_NAME --제약조건의이름

        PRIMARY KEY (ADDRESS)

 

열의 제약 조건 추가 (FOREIGN 키)

ALTER TABLE TBL_A

    ADD CONSTRAINT FK_NAME --제약조건의이름

        FOREIGN KEY (ADDRESS)

    REFERENCES TBL_B (ADDRESS)

 

열 제약 조건 삭제

ALTER TABLE TBL_A

    DROP CONSTRAINT FK_NAME --제약조건의이름

 

이로써 테이블의 삭제 및 수정에 대해서 알아 보았다.

 

제약 조건에 대한 자세한 설명은 처음 소개한 링크의 주소에서 학습 하길 바란다.

친절히 한국어로 설명 되어 있다. 
 

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp










profile

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

Kakao Talk : SQLMVP

Line : jevida


현재 LA에 거주하고 있으며 SQL에 관심있는 분이면 언제든 친추 환영합니다.