테이블 작성
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 |