본문 바로가기
카테고리 없음

DDL 명령어 기초부터 활용까지 : 테이블 생성과 수정 방법

by moment-love 2025. 1. 25.

 

DDL 명령어 기초부터 활용까지 : 테이블 생성과 수정 방법

 

DDL 명령어는
데이터베이스의
구조를 정의하거나 변경하는 데 사용되며,

자동으로 AUTO COMMIT이 수행됩니다.

 

 

 

데이터베이스에서 테이블은 데이터를 저장하는 가장 기본적인 단위입니다.

테이블을 생성, 수정, 삭제하는 작업은 SQL의 DDL(Data Definition Language) 명령어를 통해 수행됩니다.

 

 

이번 글에서는 CREATE TABLE, ALTER TABLE과 같은 명령어를 학습하며, 테이블 생성부터 수정, 삭제까지의 방법을 다뤄보겠습니다. 또한, AUTO COMMIT의 동작 원리와 Oracle 및 MySQL에서의 차이점도 살펴보겠습니다.

 


1. 테이블 생성 (CREATE TABLE)

CREATE TABLE 기본 문법

 

CREATE TABLE 테이블명 (
    컬럼명 데이터타입 제약조건,
    컬럼명 데이터타입 제약조건,
    ...
);

 

이를 기반으로 Users라는 테이블을 생성해 보겠습니다.

 

CREATE TABLE Users (
    UserID INT NOT NULL,               -- 사용자 ID: NULL 불가
    UserName VARCHAR(100) NOT NULL,    -- 사용자 이름: NULL 불가
    Email VARCHAR(150) UNIQUE,         -- 이메일: 고유 값
    Age INT CHECK (Age >= 18),         -- 나이: 18세 이상만 허용
    Country VARCHAR(50) DEFAULT 'Korea', -- 기본값 'Korea'
    PRIMARY KEY (UserID)               -- 기본 키 설정
);

 

 

CREATE TABLE의 주요 키워드

 

 

1. NOT NULL : NULL 값을 허용하지 않음.

 

  • 설명 : 특정 열에 NULL 값(비어 있는 값)이 들어갈 수 없도록 설정합니다.

  • 사용 목적 : 중요한 데이터가 반드시 입력되도록 강제합니다.

  • UserIDUserName 열은 NULL 값을 허용하지 않도록 설정되었습니다

 

 

2. UNIQUE : 중복을 허용하지 않음.

 

  • 설명 : 특정 열의 값이 중복되지 않도록 설정합니다.

  • 사용 목적 : 예를 들어, 이메일 주소와 같은 고유한 정보를 보장합니다.

  • Email 열에 UNIQUE 제약 조건을 설정하여 중복된 값을 허용하지 않습니다.
     

 

3. CHECK : 값이 특정 조건을 만족해야 함.

 

  • 설명 : 특정 열의 값이 미리 정의된 조건을 만족하도록 설정합니다.

  • 사용 목적 : 잘못된 데이터가 입력되는 것을 방지합니다.

  • Age 열에 CHECK 제약 조건을 설정하여 나이가 18세 이상만 입력되도록 제한합니다

 

 

 

4. DEFAULT : 값이 입력되지 않을 경우 기본값 설정.

 

  • 설명 : 특정 열에 값이 입력되지 않을 경우, 기본값(Default Value)을 설정합니다.

  • 사용 목적 : 사용자가 값을 입력하지 않아도 기본값이 자동으로 채워지도록 설정합니다.

  • Country 열에 DEFAULT 제약 조건을 설정하여 기본값을 'Korea'로 지정합니다.
 

 

 

5. PRIMARY KEY : 테이블 내에서 행(Row)을 고유하게 식별.

 

  • 설명 : 테이블의 각 행(Row)을 고유하게 식별하는 열을 설정합니다.

  • 특징 : PRIMARY KEY는 자동으로 NOT NULLUNIQUE 속성을 가집니다.

  • 사용 목적 : 데이터의 고유성을 유지하고, 다른 테이블과의 관계를 설정합니다.

  • UserIDPRIMARY KEY로 설정하여 각 사용자를 고유하게 식별합니다.


2. 테이블 수정 (ALTER TABLE)

ALTER TABLE 기본 문법

 

ALTER TABLE 명령어를 사용하면 기존 테이블의 구조를 수정할 수 있습니다.
테이블에
칼럼 추가, 수정, 삭제 등의 작업이 가능합니다.

 

2-1. 칼럼 추가

 

ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 제약조건;

 

 

  • 예제: Users 테이블에 Phone 열 추가
ALTER TABLE Users ADD Phone VARCHAR(15);

 

 

 

2-2. 칼럼 수정 (MODIFY)

 

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 제약조건;

 

 

  • 예제: Users 테이블에서 Email 열의 데이터 타입을 변경
ALTER TABLE Users MODIFY Email VARCHAR(200);

 

 

 

2-3. 칼럼 이름 변경 (RENAME COLUMN)

 

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새로운컬럼명;

 

 

  • 예제: Users 테이블에서 Phone 열 이름을 Contact로 변경
ALTER TABLE Users RENAME COLUMN Phone TO Contact;

 

 

 

2-4. 칼럼 삭제

 

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

 

  • 예제: Users 테이블에서 Age 열 삭제
ALTER TABLE Users DROP COLUMN Age;

 

 


3. 테이블 이름 변경 (RENAME TABLE)

 

테이블 전체의 이름을 변경하려면 RENAME 명령어를 사용합니다.

 

 

RENAME TABLE 기본 문법

 

RENAME TABLE 기존테이블명 TO 새로운테이블명;

 

 

예제: Users 테이블 이름을 Customers로 변경

RENAME TABLE Users TO Customers;

 


4. 테이블 삭제 (DROP TABLE)

테이블을 삭제하려면 DROP TABLE 명령어를 사용합니다.
DROP은 테이블의 데이터뿐만 아니라 구조 자체를 삭제합니다.

 

 

DROP TABLE 기본 문법

 

 

DROP TABLE 테이블명;

 

  • 예제: Users 테이블 삭제

 

DROP TABLE Users;

 


5. DDL과 AUTO COMMIT

AUTO COMMIT이란?

 

  • AUTO COMMIT은 SQL 명령어가 실행될 때, 해당 변경 사항이 자동으로 저장(Commit)되는 동작을 의미합니다.

  • DDL 명령어(예: CREATE, ALTER, DROP)는 기본적으로 AUTO COMMIT이 활성화되어 있어,
    명령어 실행 후 ROLLBACK(취소)가 불가능합니다.


6. AUTO COMMIT을 FALSE로 설정했을 때의 차이점

 

 

DDL 명령어는 기본적으로 AUTO COMMIT을 지원하지만,
AUTO COMMIT을 FALSE로 설정했을 때
DBMS 환경에 따라 동작이 다릅니다.

여기서는 Oracle과 MySQL의 차이점을 비교해 보겠습니다.

 

 

 

6-1. Oracle에서 AUTO COMMIT

  • DDL 명령어는 항상 AUTO COMMIT을 강제합니다.

  • AUTO COMMIT을 FALSE로 설정하더라도, DDL 명령어 실행 시 변경 사항이 즉시 저장됩니다.

  • ROLLBACK 명령어로 실행 취소가 불가능합니다.


6-2. MySQL에서 AUTO COMMIT

  • MySQL에서는 AUTO COMMIT을 명시적으로 OFF로 설정할 수 있습니다.

  • 그러나 DDL 명령어는 내부적으로 강제 COMMIT을 수행하므로, Oracle과 마찬가지로 ROLLBACK이 불가능합니다.


6-3. AUTO COMMIT 설정 방법

  • Oracle: AUTO COMMIT은 기본적으로 ON이며, DDL 명령어에서는 변경할 수 없습니다.

  • MySQL: AUTO COMMIT을 명시적으로 OFF로 설정할 수 있습니다.
SET AUTOCOMMIT = 0; -- MySQL에서 AUTO COMMIT OFF


7. DDL 사용 시 유의사항

  1. 데이터 무결성 확인
    • 테이블 생성 및 수정 시 데이터 무결성을 유지하도록 적절한 제약 조건(NOT NULL, UNIQUE 등)을 설정해야 합니다.

  2. ROLLBACK 불가
    • DDL 명령어는 실행과 동시에 AUTO COMMIT 되므로, ROLLBACK으로 작업을 되돌릴 수 없습니다.

  3. 테스트 환경에서 연습
    • DROP TABLE과 같은 명령어는 데이터와 테이블 구조를 모두 삭제하므로, 실제 운영 환경에서 실행할 경우 주의해야 합니다.

 


8. 결론 : 데이터베이스의 구조를 생성하고 관리하는 데 필수적인 DDL을 통한 경험 쌓기!

 

DDL 명령어는 데이터베이스의 구조를 생성하고 관리하는 데 필수적이며,

AUTO COMMIT을 강제하는 특징이 있습니다.

 

Oracle과 MySQL 모두 DDL 명령어는 AUTO COMMIT이 기본 동작이며,

실행 후에는 ROLLBACK이 불가능하다는 점을 이해해야 합니다.

 

이번 글에서는 CREATE TABLE, ALTER TABLE, RENAME, MODIFY, DROP TABLE과 같은

주요 DDL 명령어를 다루며, 테이블 생성부터 수정, 삭제까지의 기초적인 작업을 배웠습니다.

 

SQL 학습 초보자라면, 이 명령어들을 직접 실행하며 데이터베이스 구조를 설계하고 관리하는 경험을 쌓아 보세요!

 

반응형