본문 바로가기

DEVELOPMENT/SQL

[SQL] 테이블 작성/삭제/변경

테이블 작성

 

CREATE TABLE로 테이블을 작성할 수 있다.

-- 형식
CREATE TABLE 테이블명(
 열 정의1,
 열 정의2,
 ...
)

-- 예시
CREATE TABLE sample1 (
 no INTEGER NOT NULL,
 a VARCHAR(30),
 b DATE);

 

 

테이블 삭제

 

DROP TABLE 명령을 사용하여 필요 없는 테이블을 삭제한다.

DROP TABLE 테이블명

 

테이블 정의는 그대로 둔 채 테이블의 모든 행을 삭제해야 할 때 TRUNCATE TABLE 명령을 사용한다.

TRUNCATE TABLE 테이블명

 

 

테이블 변경

 

테이블을 작성해버린 뒤에도 열 구성을 변경할 수 있다. 이때 테이블 변경은 ALTER TABLE 명령을 통해 이루어진다.

ALTER TABLE 테이블명 변경명령

 

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

ALTER TABLE로 할 수 있는 일은 열 추가/삭제/변경, 제약 추가/삭제가 있다.

 

1. 열 추가

ALTER TABLE에서 열을 추가할 때는 ADD 하부명령을 통해 실행할 수 있다.

-- 형식
ALTER TABLE 테이블명 ADD 열 정의

-- 예시
ALTER TABLE sample1 ADD newcol INTEGER;

ALTER TABLE ADD로 테이블에 열을 추가할 때, 기존 데이터행이 존재하면 추가한 열의 값이 모두 NULL이 된다. 물론 기본값이 지정되어 있으면 기본값으로 데이터가 저장된다. 

 

2. 열 속성 변경

ALTER TABLE로 열 속성을 변경할 경우에는 MODIFY 하부명령을 실행한다.

-- 형식
ALTER TABLE 테이블명 MODIFY 열 정의

-- 예시
ALTER TABLE sample1 MODIFY newcol VARCHAR(20);

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

 

3. 열 이름 변경

ALTER TABLE로 열 이름을 변경할 때는 CHANGE 하부명령으로 시행할 수 있다.

-- 형식
ALTER TABLE 테이블명 CHANGE [기존 열 이름][신규 열 정의]

-- 예시
ALTER TABLE sample1 CHANGE newcol c VARCHAR(20);

 

4. 열 삭제

ALTER TABLE로 열을 삭제할 때는 DROP 하부명령을 사용한다.

-- 형식
ALTER TABLE 테이블명 DROP 열명

-- 예시
ALTER TABLE sample1 DROP c;

 

 

ALTER TABLE로 테이블 관리

 

1. 최대길이 연장

실제로 시스템을 운용하다 보면 처음에는 한 자리로 충분했던 용량이 시간이 지나면서 부족해지는 일이 많다. 이러한 경우 ALTER TABLE로 열의 자료형만 변경해 대응할 수 있다.

열의 자료형은 처음 CREATE TABLE을 실행할 때 결정된다. 특히 문자열형의 경우 최대길이를 지정하는데, 이 최대길이를 ALTER TABLE로 늘릴 수 있다.

ALTER TABLE sample1 MODIFY col VARCHAR(30)

반대로 저장공간을 늘리기 위해 최대길이를 줄이고 싶은 경우에는 기존의 행에 존재하는 데이터의 길이보다 작게 지정할 수는 없다. 

 

2. 열 추가

테이블에 열을 추가하는 일은 자주 일어난다. 시스템의 기능 확장 등 이유는 여러 가지가 있는데, 이 때 사용하는 ALTER TABLE 명령은 다음과 같다.

ALTER TABLE sample1 ADD new_col INTEGER

열을 추가하는 것은 테이블 정의가 바뀌어버리는 일인 만큼 꽤 영향을 준다. 적어도, 변경한 테이블에 행을 추가하는 INSERT 명령은 확인해야 한다. 열을 추가하면 해당 열에 대한 데이터 값을 지정해야 하기 때문이다.  

 

 

 

 

'DEVELOPMENT > SQL' 카테고리의 다른 글

[SQL] 인덱스  (0) 2023.05.31
[SQL] 제약조건  (0) 2023.05.30
[SQL] 상관 서브쿼리  (0) 2023.05.30
[SQL] 서브쿼리  (0) 2023.05.30
[SQL] GROUP BY  (0) 2023.05.30