데이터베이스

SQL (10) - DDL

monstro 2025. 2. 12. 17:14
728x90
반응형

이번 포스트에서는 데이터베이스를 정의하는데 필요한 데이터 정의어(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 / ALTER3가지 함수를 사용하여

데이터 테이블에 대해 열 추가 / 열 삭제 / 열 변경작업을 수행합니다.

 

 우선, 열을 추가해보겠습니다.

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에서 데이터 테이블을 탐색하기 쉬워지고

이에 따라 쿼리의 수행비용이 감소한다는 장점이 존재합니다.

728x90
반응형

'데이터베이스' 카테고리의 다른 글

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