Study/DB

[SQL 첫걸음] 6장.데이터베이스 객체 작성과 삭제 - 26.테이블 작성·삭제·변경

momo02 2018. 9. 11. 21:53
반응형

저자 : 아사이 아츠시

출판 : 한빛미디어 

발매 : 2015.11.01



* SELECT, INSERT, DELETE, UPDATE는 SQL 명령 중에서도 DML로 분류. DML은 데이터를 조작하는 명령. 

한편 DDL데이터를 정의하는 명령으로 스키마 내의 객체를 관리할 때 사용. 



1. 테이블 작성

- DDL은 데이터베이스 객체 모두 같은 문법을 사용. CREATE로 작성, DROP으로 삭제, ALTER로 변경. 뒤이어 어떤 종류의 객체를 작성, 삭제, 변경할지를 지정. ex) 테이블을 작성한다면 CREATE TABLE, 뷰를 작성한다면 CREATE VIEW와 같이 지정. 

- 테이블 작성 : CREATE TABLE 에 이어 작성하고 싶은 테이블 명 지정. 테이블명 뒤에는 괄호로 묶어 열 정의. 열을 정의할 때는 테이블에 필요한 열을 콤마로 구분하여 연속해 지정. 


 * 열 정의 : 열명 자료형 [DEFAULT 기본값] [NULL | NOT NULL]


 - 열명 : 열에 붙일 이름 지정. 

 - 자료형 : INTEGER나 VARCHAR등을 지정. 특히 CHAR나 VARCHAR와 같은 문자열형으로 지정할 때는 최대길이를 괄호로 묶어줘야함. 

 - 기본값을 설정할 때는 DEFAULT로 지정하되 자료형에 맞는 리터럴로 기술. 생략 가능 함. 

 - 마지막으로 열이 NULL값을 허용할 것인지를 지정. NULL을 명시적으로 지정하거나 생략했을 경우 NULL을 허용. 

   NOT NULL지정 시 NULL허용 안됨.


EX ) 




2. 테이블 삭제

- 테이블 삭제 명령 : DROP TABLE 삭제하려는 테이블명; (테이블에 저장된 데이터도 함께 삭제)

- 한편 테이블 정의는 그대로 둔 채 데이터만 삭제할 때는 DELETE 명령을 사용. DELETE 명령에 WHERE 조건을 지정하지 않으면 테이블의 모든 행을 삭제. 하지만 DELETE 명령은 행 단위로 여러가지 내부처리가 일어나므로 삭제 행이 많으면 처리속도가 상당히 늦어짐.  

이런 경우 DDL로 분류되는 TRUNCATE TABLE 명령을 사용. => TRUNCATE TABLE 테이블명;

TRUNCATE TABLE 명령은 삭제할 행을 지정할 수 없고 WHERE 구를 지정할 수도 없지만, 모든 행을 삭제해야할 때 빠른 속도로 삭제 가능.




3. 테이블 변경

- ALTER TABLE 테이블 변경명령

ALTER TABLE 명령을 사용하면 테이블에 저장되어 있는 데이터는 그대로 남긴 채 구성만 변경 가능. 

ALTER TABLE로 할 수 있는 일

  • 열 추가, 삭제, 변경

  • 제약 추가, 삭제 


  • 열 추가 : ALTER TABLE 테이블명 ADD 열 정의

1
2
ALTER TABLE sample62 ADD newcol INTEGER;
 
cs
- 열을 추가할 때, 기존 데이터행이 존재하면 추가한 열의 값이 모두 NULL이 됨. 기본값이 지정되어 있으면 기본값으로 데이터가 저장됨.

한편, NOT NULL제약을 붙인 열을 추가하고 싶다면 먼저 NOT NULL로 제약을 건 뒤에 NULL 이외의 값으로 기본값을 지정해야함.  


  • 열 속성 변경 : ALTER TABLE 테이블명 MODIFY 열 정의

- MODIFY로 열 이름은 변경할 수 없지만, 자료형이나 기본값, NOT NULL 제약 등의 속성은 변경할 수 있음.

1
2
ALTER TABLE sample62 MODIFY newcol VARCHAR(20);
 
cs

- 기존의 데이터 행이 존재하는 경우, 속성 변경에 따라 데이터 역시 변환됨. 이때 만약 자료형이 변경되면 테이블에 들어간 데이터의 자료형 역시 바뀜. (다만 그 처리과정에서 에러가 발생하면 ALTER TABLE 명령은 실행되지 않음)

  • 열 이름 변경 : ALTER TABLE 테이블명 CHANGE [기존 열 이름] [신규 열 정의]

- 열 이름을 변경할 때는 MODIFY가 아닌 CHANGE를 사용. CHANGE는 열 이름뿐만 아니라 열 속성도 변경할 수 있음.

- 한편, Oracle에서는 열 이름을 변경할 경우 RENAME TO 하부명령을 사용.

1
2
-- newcol 열 명을 c로 변경하고 자료형도 VARCHAR(20)으로 변경 
ALTER TABLE sample62 CHANGE newcol c VARCHAR(20);
cs


  • 열 삭제 : ALTER TABLE 테이블명 DROP 열명

- DROP 뒤에 삭제하고 싶은 열명을 지정.

1
ALTER TABLE sample62 DROP c;
cs


- ALTER TABLE은 비교적 새로운 명령에 속함. 표준화가 미처 이루어지지 않은 부분도 있어 데이터베이스에 따라 고유한 방언이 존재. 예를 들어 MODIFY는 MySQL과 Oracle에서 사용할 수 있는 ALTER TABLE의 하부명령. 다른 데이터베이스에서는 ALTER 하부명령으로 열 속성을 변경하기도 함. 




4. ALTER TABLE로 테이블 관리

- 최대길이 연장 : 문자열형의 경우 테이블 생성 시(CREATE TABLE) 최대길이를 지정하는데, 이 최대길이를 ALTER TABLE로 늘릴 수 있음. 

1
ALTER TABLE sample MODIFY col VARCHAR(30)
cs

반응형