Zeno ZENO
Database / DB 기초 · 조회 3 · 좋아요 0

6. 데이터 정의어(DDL)로 테이블 생성, 수정, 삭제 완벽 마스터

데이터베이스에 데이터를 담을 공간인 테이블을 만들고(CREATE), 구조를 바꾸고(ALTER), 완전히 삭제하는(DROP) 데이터 정의어(DDL)의 문법과 실무 주의사항을 다룹니다.

1. 데이터 정의어(DDL)의 정의

데이터 정의어(DDL, Data Definition Language)는 데이터베이스에 데이터를 담을 '그릇(방)'의 뼈대를 만들고, 수정하고, 삭제하는 SQL 명령어들을 말합니다.

내용물인 실제 데이터(회원 이름, 나이 등)를 건드리는 것이 아니라, 데이터를 보관할 테이블이라는 '틀' 자체를 제어하는 언어입니다.


2. 데이터 정의어(DDL)가 필요한 이유

방(테이블)을 먼저 가구 배치도에 맞게 지어 놓아야 나중에 사람(데이터)을 들여보낼 수 있습니다. 집을 짓고, 인테리어를 고치고, 필요 없어진 집을 허무는 도구가 바로 DDL입니다.

실제 개발에서 해결하는 문제

  • 데이터 공간 생성: 새로운 서비스(예: 블로그 포스팅 기능)를 론칭할 때 글이 저장될 새로운 방을 안전하게 생성합니다.

  • 변화하는 요구사항 대응: 운영 중인 서비스에 "회원 전화번호 항목도 추가해 주세요"라는 기획 변경이 들어왔을 때, 기존 데이터를 유지하면서 테이블의 구조만 늘려주는 통로가 됩니다.


3. 반드시 알아야 할 핵심 개념

DDL을 구성하는 대표적인 4가지 명령어입니다.

  • CREATE (생성): 데이터베이스나 테이블을 처음부터 새롭게 만드는 명령입니다.

  • ALTER (수정): 이미 만들어진 테이블의 구조를 변경(열 추가, 열 삭제, 데이터 타입 변경 등)하는 명령입니다.

  • DROP (삭제): 테이블을 통째로 허물어 흔적도 없이 삭제하는 명령입니다. (구조와 데이터가 모두 사라집니다.)

  • TRUNCATE (초기화): 테이블의 뼈대(구조)는 그대로 남겨두고, 안의 데이터 내용물만 전부 밀어버리는 명령입니다.


4. 함께 알아야 하는 주변 기초 개념

테이블을 만들 때 엉뚱한 데이터가 들어오지 못하게 강제하는 제약조건(Constraint)을 함께 알아야 합니다.

  • NOT NULL: 이 열(Column)에는 절대로 빈 값(NULL)을 허용하지 않겠다는 규칙입니다. (예: 아이디, 비밀번호)

  • UNIQUE: 테이블 안에서 중복된 값을 가질 수 없다는 규칙입니다. (예: 이메일, 전화번호)

  • DEFAULT (기본값): 데이터를 넣을 때 해당 칸을 입력하지 않으면, 시스템이 설정한 값이 자동으로 입력되게 하는 규칙입니다. (예: 가입일 칸에 '오늘 날짜' 자동 입력)


5. 테이블 관리의 실제 흐름

개발자가 새로운 테이블을 다룰 때 발생하는 순서입니다.

  1. CREATE TABLE (설계 및 생성): 데이터 타입과 제약조건을 조합하여 원하는 규격의 테이블을 생성합니다.

  2. 데이터 적재: 만들어진 구조에 데이터를 채워 서비스를 운영합니다.

  3. ALTER TABLE (구조 변경): 운영 중에 새로운 열(Column)이 필요하면 테이블을 고쳐 씁니다.

  4. DROP TABLE (폐기): 서비스가 종료되거나 더 이상 쓰지 않는 테스트용 테이블은 완전히 삭제합니다.


6. SQL DDL 코드 예시

회원 정보를 담을 간단한 users 테이블을 생성하는 SQL 코드입니다.

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    status VARCHAR(10) DEFAULT 'active'
);

7. 예시 코드 상세 설명

  • CREATE TABLE users (: 'users'라는 이름의 새로운 테이블 생성을 시작합니다.

  • id INT PRIMARY KEY,: id라는 열을 만들고, 데이터 타입은 정수(INT)로 지정하며, 이 테이블의 고유 식별자인 기본키(PRIMARY KEY)로 설정합니다.

  • username VARCHAR(50) NOT NULL,: username이라는 열을 만들고, 최대 50글자의 문자형(VARCHAR) 타입으로 지정하며, 빈 값은 불허(NOT NULL)합니다.

  • email VARCHAR(100) UNIQUE,: email이라는 열을 만들고, 최대 100글자 문자형으로 지정하며, 다른 회원과 이메일 주소가 중복(UNIQUE)될 수 없게 만듭니다.

  • status VARCHAR(10) DEFAULT 'active': status라는 열을 만들고, 데이터를 따로 입력하지 않으면 기본값으로 'active'라는 문자열이 들어가도록 세팅합니다.


8. 초보자가 자주 실수하는 점 및 명령어 비교

DROP과 TRUNCATE의 결정적 차이

둘 다 무언가를 지우는 명령어라 초보자들이 헷갈려합니다. 지워지는 대상의 범위가 다릅니다.

  • DROP: 데이터뿐만 아니라 테이블이라는 그릇(구조) 자체가 삭제됩니다. 컴퓨터에서 폴더를 아예 휴지통에 넣고 비운 것과 같습니다.

  • TRUNCATE: 그릇(구조)은 그대로 둔 채 안의 내용물(데이터)만 고속으로 비웁니다. 폴더는 그대로 두고 내부 파일만 전부 지운 것과 같습니다.

※ 실무 경고: DDL 명령어(CREATE, ALTER, DROP, TRUNCATE)는 실행하는 즉시 데이터베이스에 영구 반영되므로 '되돌리기(Undo/Rollback)'가 기본적으로 불가능합니다. 특히 실무에서 DROP이나 TRUNCATE를 잘못 치면 복구가 안 되므로 명령어를 실행하기 전 테이블 이름을 반드시 백번 확인해야 합니다.


9. 핵심 내용 요약

데이터 정의어(DDL)는 데이터의 뼈대인 테이블 구조를 제어하는 SQL문입니다. CREATE로 방을 만들고, ALTER로 인테리어를 고치며, DROP으로 건물을 허뭅니다. 이때 테이블 내부 열에는 NOT NULL, UNIQUE, DEFAULT 같은 제약조건을 걸어 튼튼하고 정확한 안전장치를 설계할 수 있습니다.


10. 핵심 용어 정리

데이터 정의어(DDL) = 데이터베이스 구조나 테이블 자체를 생성, 변경, 삭제하는 SQL 명령어 그룹

CREATE = 데이터베이스나 테이블 등 새로운 객체를 생성하는 명령어

ALTER = 이미 존재하는 테이블의 구조(열 추가, 변경 등)를 수정하는 명령어

DROP = 테이블이나 데이터베이스를 완전하게 삭제하여 없애버리는 명령어

제약조건 = 테이블의 열에 부정한 데이터가 들어오지 못하게 강제하는 보안 규칙

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'DB 기초' 카테고리의 다른 글

전체보기