본문 바로가기

커맨드 명령

2.3.3 ALTER TABLE

테이블 속성 변경


/* 문법 */
ALTER TABLE table_name ADD column_definition
ALTER TABLE table_name DROP (column_name)
ALTER TABLE table_name MODIFY column_definition
ALTER TABLE table_name ADD CONSTRAINT constraint_defenition
ALTER TABLE table_name DROP CONSTRAINT constraint_name
 
 
/* 파라미터 */
table_name                -- 테이블 이름
column_definition        -- 열 정의
constraint_definition    -- 제약 정의
constraint_name            -- 제약 이름
cs

『ALTER TABLE』을 사용하면, 기존의 테이블에 열을 추가, 삭제하거나 기본키를 설정할 수 있다.

어디까지나 테이블 속성을 변경하는 것이기 때문에 테이블이 존재해야 한다는 것이 첫번째

전제 조건이다.


테이블에 열을 추가하기 위해서는 ALTER TABLE의 ADD를 사용한다. 열 c를 테이블 foo에 수치형으로

추가하기 위해서는 다음과 같이 실행한다. c열의 내용은 모두 NULL이 된다.




/* 사용 예 */
ALTER TABLE foo ADD c NUMBER
cs

열을 삭제하기 위해서는 『DROP』을 사용한다. Oracle에서는 DROP 다음에 괄호를 사용하는데,

그 괄호 안에 열 이름을 기술한다. SQL Server와 Access에서는 『DROP COLUMN 열 이름』과 같이 

실행한다.


Oracle의 DROP에 의한 열의 삭제는 Oracle 8i 부터 지원되는 기능이다.



/* 사용 예 */
ALTER TABLE foo DROP (c)
ALTER TABLE foo DROP COLUMN C
cs

Oracle에서는 열의 속성을 변경할 수 있다. 단, 변경할 열의 모든 행의 값은 NULL값이어야 한다.

열의 속성을 변경하기 위해서 『MODIFY』를 사용한다. MODIFY 다음에 열 정의를 기술한다.

SQL Server와 Access에서는 열의 속성을 변경할 수 없다.




/* 사용 예 */
ALTER TABLE foo MODIFY c VARCHAR2 (30)
cs
기본키를 생성하기 위해서 『CONSTRAINT』를 사용하여 기본키 제약을 테이블에 추가한다.
이미 데이터행이 있는 경우에는 그 내용이 체크되고, 열 안에 NULL이 있거나 중복된 행이 있는 
경우에는 오류가 된다. 이미 기본키의 설정을 마친 경우에도 오류가 된다.




/* 사용 예 */
ALTER TABLE foo ADD CONSTRAINT pkey PRIMARY KEY (a,b)
cs

외부키를 생성하기 위해서 『CONSTRAINT』를 사용하여 외부키 제약을 테이블에 추가한다.

외부키에서는 참조할 외부의 테이블 이름과 열 이름을 『REFERENCES』로 지정한다.

REFERENCES에 지정할 열은 그 테이블의 기본키여야 한다.




/* 사용 예 */
ALTER TABLE foo ADD CONSTRAINT fkey FOREIGN KEY (a)
REFERENCES bar (b)
cs
기본키나 외부키 등의 제약을 삭제할 수 있다. DROP CONSTRAINT 다음에 삭제하고 싶은
제약 이름을 지정한다.




/* 사용 예 */
ALTER TABLE foo DROP CONSTRAINT pkey

cs




◐ DB(Database)의 특징

- 실시간 접근성(Real-time accessibility)

    - 사용자의 요구에 대한 즉각적인 응답(Response)


- 계속적인 변화(Continuous evolution)

    - 삽입, 삭제, 변경 작업이 수시로 발생


- 동시 공용(Concurrent sharing)

    - 여러 사용자가 동시에 자기가 원하는 데이터에 접근 가능


- 내용에 의한 참조(Content reference)

    - 물리적 주소가 아닌, 데이터에 대한 조건으로 원하는 결과를 검출

'커맨드 명령' 카테고리의 다른 글

2.3.5 CREATE INDEX  (0) 2018.11.10
2.3.4 TRUNCATE TABLE  (0) 2018.11.10
2.3.2 DROP TABLE  (0) 2018.11.10
2.3.1 CREATE TABLE  (0) 2018.11.10
2.3 데이터 정의 언어(DDL)  (0) 2018.11.09