이번 포스트에서는 데이터베이스를 정의하는데 필요한 데이터 정의어(DDL)에 대해 알아보겠습니다.
데이터 정의어 DDL에는 CREATE / ALTER / DROP의 3가지 함수가 있는데,
각각 데이터 테이블을 생성 / 수정 / 삭제의 용도로 사용합니다.
1) 데이터 베이스 생성
우선, 실습에 사용할 데이터 베이스를 만드는 것으로 시작하겠습니다.
-- 데이터 베이스(=스키마) 생성
CREATE DATABASE GameDB;
-- 생성한 데이터 베이스에 대한 작업 수행을 명시
USE GameDB;
위 쿼리의 실행 결과는 다음과 같습니다.
위와 같이 GameDB라는 이름의 데이터 베이스가 생성되었습니다.
2) CREATE : 데이터 테이블 생성
데이터 테이블을 생성하는 CREATE의 경우, 다음의 형식으로 사용합니다.
CREATE TABLE 테이블명(열이름 자료형 [DEFAULT 기본값] [NULL | NOT NULL], ...)
따라서 위의 형식에 맞춰 GameDB에 새로운 데이터 테이블을 만들어보겠습니다.
-- accounts 데이터 테이블을 생성
-- 열은 각각 accountID / accountName / money / createdTime 들로 구성
CREATE TABLE accounts(
accountID INTEGER NOT NULL,
accountName VARCHAR(10) NOT NULL,
money INTEGER DEFAULT 0,
createdTime DATETIME
);
위 쿼리의 실행 결과는 다음과 같습니다.
3) DROP : 데이터 테이블 삭제
이번에는 데이터 테이블을 삭제하는 DROP을 사용해보겠습니다.
DROP TABLE 테이블명
위와 같은 구조로 사용되며, 실제로 데이터 테이블을 삭제해보겠습니다.
DROP TABLE accounts;
실제 실행결과는 다음과 같습니다.
GameDB 데이터 베이스에서 accounts 데이터 테이블이 삭제되었습니다.
4) ALTER : 데이터 테이블 수정
데이터 테이블을 수정하는 ALTER의 경우 ADD / DROP / ALTER의 3가지 함수를 사용하여
데이터 테이블에 대해 열 추가 / 열 삭제 / 열 변경의 작업을 수행합니다.
우선, 열을 추가해보겠습니다.
ALTER TABLE accounts
ADD lastEnterTime DATETIME;
실행결과는 다음과 같습니다.
이번에는 열을 변경해보겠습니다.
ALTER TABLE accounts
ALTER COLUMN accountName VARCHAR(20) NOT NULL;
실행결과는 다음과 같습니다.
마지막으로 열을 삭제해보겠습니다.
ALTER TABLE accounts
DROP COLUMN lastEnterTime;
실행결과는 다음과 같습니다.
5) 제약조건
데이터 테이블에 열을 추가하면서 NOT NULL을 사용하는 것을 볼 수 있습니다.
위와 같이 데이터 테이블의 열에 적용하여 조건을 충족하는 데이터만 입력받을 수 있도록 하는 것이
바로 제약조건(CONSTRAINTS)입니다.
제약조건은 크게 5가지로 알아볼 수 있습니다.
- NOT NULL : NULL을 허용하지 않음
- UNIQUE :고유값, 중복을 허용하지 않음
- PRIMARY KEY : 기준이 되는 키값, 중복과 NULL을 허용하지 않음, 테이블에 하나만 존재
- FOREIGN KEY : 다른 테이블의 PRIMARY KEY를 참조하는 키값
- CHECK : 설정한 조건식을 만족하는 데이터만 입력가능
5 - 1) 제약조건 설정 (1)
제약조건의 경우, 다음과 같이 설정할 수 있습니다.
ALTER TABLE accounts
ADD PRIMARY KEY (accountID);
위의 쿼리를 통해 accountID 열에 PRIMARY KEY 제약조건을 설정합니다.
실행결과는 다음과 같습니다.
그러나 위의 방법을 사용하는 경우, 제약조건을 설정하기는 쉽지만
제약조건을 다시 해제하기는 어렵다는치명적인 단점이 존재합니다.
따라서 효율적인 방식으로 제약조건을 추가 / 삭제하는 것은 ALTER 함수에서
ADD CONSTRAINT / DROP CONSTRAINT를 통해 구현할 수 있습니다.
5 - 2) 제약조건 설정 (2)
ALTER와 ADD CONSTRAINT / DROP CONSTRAINT를 사용한 새로운 쿼리를 만들겠습니다.
-- 제약조건을 설정하되 제약조건에 새로운 이름을 부여함
ALTER TABLE accounts
ADD CONSTRAINT PK_Account PRIMARY KEY (accountID);
-- 제약조건에 이름을 부여하였으므로 쉽게 삭제할 수 있음
ALTER TABLE accounts
DROP CONSTRAINT PK_Account;
우선 제약조건을 부여하겠습니다.
다음으로 부여된 제약조건을 삭제하겠습니다.
위와 같은 제약조건이 부여된 경우, DB를 관리하는 DBMS에서 데이터 테이블을 탐색하기 쉬워지고
이에 따라 쿼리의 수행비용이 감소한다는 장점이 존재합니다.
'데이터베이스' 카테고리의 다른 글
SQL (11) - 정규화 (0) | 2025.02.12 |
---|---|
SQL (9) - SUBQUERY (0) | 2025.02.12 |
SQL (8) - 데이터 조작어(DML) (0) | 2025.02.11 |
SQL (7) - GROUP BY (0) | 2025.02.11 |
SQL (6) - 집계 함수 (0) | 2025.02.10 |