본문 바로가기
CS/DataBase

데이터베이스 첫걸음 정리 - 26장. 테이블 작성, 삭제, 변경

by yongckim 2022. 9. 25.
728x90
반응형

SELECT, INSERT, DELETE, UPDATE는 SQL 명령 중에서도 DML로 분류됩니다.

DML은 데이터를 조작하는 명령입니다.

데이터베이스를 정의할 때는 쓰는 명령은 DDL로 지금부터 DDL을 사용해서 스키마를 정의해보겠습니다.

테이블 작성

DDL은 모두 같은 문법을 사용합니다. CREATE로 작성, DROP으로 삭제, ALTER로 변경할 수 있습니다.

뒤이어 어떤 종류의 객체를 작성, 삭제, 변경할 것인지 지정합니다.

예를들어, 테이블을 작성한다면 CREATE TABLE, 뷰를 작성한다면 CREATE VIEW와 같이 지정하면 됩니다.

이제 테이블을 만들어봅시다.

테이블은 CREATE TABLE을 사용하여 다음과 같이 작성합니다.

CREATE TABLE 테이블명(
	열이름 자료형 옵션,
	열이름 자료형 옵션,
	...
);
  • 열이름 : 해당 열의 이름을 설정합니다.
  • 자료형 : 해당 열의 자료형(VARCHAR, INT 등등)을 설정합니다.
  • 옵션 : 기본 값 설정, NULL 허용 등 해당 열의 옵션을 설정합니다.

이제 CREATE TABLE 명령으로 테이블을 정의하고 열 구성을 확인해보겠습니다.

CREATE TABLE users (
	id int NOT NULL,
	name varchar(30),
	created_at DATE;
)

위와 같이 잘 생성된 것을 볼 수 있습니다.

테이블 삭제

테이블이 더 이상 필요하지 않다면 삭제할 수 있습니다.

이때 DROP TABLE 명령을 사용합니다.

DROP TABLE 테이블명

DROP 테이블에서 지정하는 것은 테이블 명 뿐입니다.

이때 데이터베이스가 확인을 요구하지 않기 때문에 주의해서 삭제해야 합니다.

DROP TABLE users;

데이터 행 삭제

DROP TABLE 같은 경우 데이터베이스에서 테이블을 삭제합니다.

만약, 테이블 정의는 그대로 두고 싶다면 DELETE 명령을 사용할 수 있습니다.

하지만 DELETE 명령의 경우 행 단위로 여러 가지 내부 처리가 일어나므로 삭제할 행이 많으면 처리속도가 상당히 느려집니다.

이런 경우에는 DDL로 분류되는 TRUNCATE TABLE 명령을 사용합니다.

TRUNCATE TABLE 명령은 삭제할 행을 지정할 수도 없고 WHERE 구를 지정할 수도 없지만 모든행을 삭제할 때 빠른 속도로 삭제할 수 있습니다.

TRUNCATE TABLE 테이블명

다음은 TRUNCATE TABLE 실행 예시입니다.

테이블 변경

테이블을 작성해버린 뒤에도 열 구성은 얼마든지 변경할 수 있습니다.

이때 테이블 변경은 ALTER TABLE 명령을 통해 이루어집니다.

ALTER TABLE 테이블명 변경명령

테이블을 작성한 뒤에도 열을 추가하거나 데이터 최대길이를 변경하는 등 구성을 바꿔야하는 경우가 생깁니다.

테이블의 내용을 삭제해도 상관없다면 DROP TABLE을 통해 삭제하고 CREATE TABLE을 통해 새로 TABLE을 만들면 되지만 데이터를 유지해야 하는 경우 이런 방법을 사용할 수 없습니다.

이때 ALTER TABLE을 사용하면 테이블에 저장되어 있는 데이터는 그대로 남기고 구성만 변경할 수 있습니다.

ALTER TABLE로 할 수 있는 일은 크게 다음과 같이 두 가지로 분류할 수 있습니다.

  • 열 추가, 삭제, 변경
  • 제약 추가, 삭제

열 추가

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

ALTER TABLE 테이블명 ADD 열정의
  • 열정의 : 열 이름과 자료형을 지정하고 필요에 따라 기본값과 NOT NULL 같은 옵션들을 설정할 수 있습니다.

다음은 열 추가 사용 예시입니다.

ALTER TABLE users ADD age int;

ALTER TABLE ADD로 열을 추가하면 기존에 데이터의 경우 해당 열의 값으로 Default 값을 가지게 됩니다. (따로 설정하지 않았다면 NULL)

열 속성 변경

ALTER TABLE로 열 속성을 변경할 경우에는 다음과 같이 MODIFY 하부명령을 실행합니다.

ALTER TABLE 테이블명 MODFIY 열정의
  • 열정의 : 열 이름과 자료형을 지정하고 필요에 따라 기본값과 NOT NULL 같은 옵션들을 설정할 수 있습니다.

다음은 열 속성 변경 예시입니다.

ALTER TABLE users MODIFY id bigint;

기존의 데이터 행이 존재하는 경우 속성 변경에 따라 데이터 역시 변환되는데 이때 만약 자료형이 변경되면 테이블에 들어간 데이터의 자료형 역시 바뀝니다.

단, 변경중에 에러가 발생하면 ATLER TABLE 명령은 실행되지 않습니다.

열 이름 변경

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

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

열 이름을 변경할 때는 MODIFY가 아닌 CHANGE를 사용합니다.

CHANGE는 열 이름뿐만 아니라 열 속성도 변경할 수 있습니다.

Oracle에서는 열 이름을 변경할 경우 CHANGE 대신 RENAME TO 하부명령을 사용합니다.

 

다음은 열 이름 변경 쿼리 예시입니다.

ALTER TABLE users CHANGE id no bigint;

열 삭제

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

ALTER TABLE 테이블명 DROP 열명

DROP 뒤에 삭제하고 싶은 열명을 지정합니다.

물론, 테이블에 존재하지 않는 열이 지정되면 에러가 발생합니다.

다음은 DROP 명령 사용예시입니다.

ALTER TABLE users DROP age;

정리

  • CREATE TABLE 명령을 통해 테이블을 생성할 수 있습니다.
  • DROP TABLE 명령을 통해 테이블을 삭제할 수 있습니다.
  • TRUNCATE TABLE 명령을 통해 테이블의 행을 전부 삭제할 수 있습니다.
  • ALTER TABLE 명령을 통해 테이블을 수정할 수 있습니다.
    • ALTER TABLE의 ADD 하부 명령을 통해 테이블의 열을 추가할 수 있습니다.
    • ALTER TABLE의 MODIFY 하부 명령을 통해 테이블의 열의 자료형을 수정할 수 있습니다.
    • ALTER TABLE의 CHANGE 하부 명령을 통해 테이블의 열의 이름을 수정할 수 있습니다.
    • ALTER TABLE의 DROP 하부 명령을 통해 테이블의 열을 삭제할 수 있습니다.
반응형