5. DDL & DML

박은서's avatar
Apr 24, 2026
5. DDL & DML

1. 데이터 조작 언어(DML, Data Manipulation Language)

1️⃣ DML이란?

  • 데이터를 직접 다루는 SQL 명령어
  • 데이터를 넣고, 바꾸고, 지우고, 조회하는 언어

2️⃣ DML의 대표적인 명령어

명령어
의미
예시
SELECT
데이터 조회
데이터 보기
INSERT
데이터 삽입
새 행 추가
UPDATE
데이터 수정
기존 값 변경
DELETE
데이터 삭제
행 삭제

3️⃣ 예시

-- 데이터 조회 SELECT * FROM users; -- 데이터 추가 INSERT INTO users (id, name) VALUES (1, '민수'); -- 데이터 수정 UPDATE users SET name = '영희' WHERE id = 1; -- 데이터 삭제 DELETE FROM users WHERE id = 1;

4️⃣ 실습

1) INSERT문으로 데이터 삽입

  • 기본 형식
    • INSERT INTO 테이블 이름 ([열1, 열2, ...]) VALUES ([값1, 값2, ...]);
  • 실습
    • CREATE TABLE doit_dml ( col_1 INT, col_2 VARCHAR(50), col_3 DATETIME ); INSERT INTO doit_dml (col_1, col_2, col_3) VALUES (1, 'DoItSQL', '2023-01-01');
      notion image
  • 오류 발생 예시
    • 데이터 유형 불일치
    • INSERT INTO doit_dml (col_1) VALUES ('문자 입력');
      notion image
  • 활용 방법
    • 열 이름 생략
      • 단, 열 이름을 생략하려면 테이블의 열 순서와 개수에 맞춰 데이터를 채워야 함
        INSERT INTO doit_dml VALUES (2, '열 이름 생략', '2023-01-02');
        notion image
    • 특정 열에만 데이터를 삽입하려면 다음과 같이 삽입하고자 하는 열만 소괄호 안에 나열
      • INSERT INTO doit_dml (col_1, col_2) VALUES (3, 'col_3 값 생략');
        notion image
    • 데이터의 순서를 바꾸어 나열해도 됨
      • INSERT INTO doit_dml (col_1, col_3, col_2) VALUES (4, '2023-01-03', '열순서 변경');
        notion image
    • 여러 데이터를 한 번에 삽입하고 싶다면 삽입할 값을 소괄호로 묶어 쉼표로 구분
      • INSERT INTO doit_dml (col_1, col_2, col_3) VALUES (5, '데이터 입력5', '2023-01-03'), (6, '데이터 입력6', '2023-01-03'), (7, '데이터 입력7', '2023-01-03');
        notion image

2) UPDATE문으로 데이터 수정

기본 형식
  • WHERE절 생략 가능
  • 하지만 WHERE절 조건 누락하면 테이블의 전체 데이터가 수정되기 때문에 항상 주의!
UPDATE 테이블 이름 SET [열1 =1, 열2 =2, ...] WHERE [열 = 조건];
실습
UPDATE doit_dml SET col_2 = '데이터 수정' WHERE col_1 = 4;
notion image
WHERE절 조건 생략
UPDATE doit_dml SET col_1 = col_1 + 10;
notion image

3) DELETE문으로 데이터 삭제

기본 형식
  • DELETE문에서는 FROM이 반드시 필요
  • WHERE절의 조건이 누락되면 전체 데이터를 삭제하므로 항상 주의!
DELETE FROM 테이블 이름 WHERE [열 = 조건];
실습
DELETE FROM doit_dml WHERE col_1 = 14;
notion image
WHERE절 생략(전체 데이터 삭제)
SELECT * FROM doit_dml;
notion image

4) TRUNCATE문으로 전체 데이터 삭제

대량의 데이터를 삭제할 때 DELETE문을 사용하면 트랜잭션 로그 기록으로 인해 데이터베이스 성능에 많은 문제 발생할 수 있음
  • 단, 롤백 할 수 없음!
롤백(rollback, 이전 상태로 되돌리는 것)하지 않는다는 가정 하에 테이블이 전체 데이터를 빠르게 삭제하려면 TRUNCATE문을 사용할 수 있음
TRUNCATE TABLE doit_dml;

2. 데이터 정의 언어(DDL, Data Definition Language)

1️⃣ DDL이란?

데이터베이스의 구조(틀)를 정의하고 변경하는 SQL 명령어
데이터를 담는 그릇을 만드는 언어

2️⃣ DDL의 대표적인 명령어

명령어
의미
예시
CREATE
객체 생성
테이블, DB 생성
ALTER
구조 변경
컬럼 추가/수정
DROP
객체 삭제
테이블 삭제
TRUNCATE
데이터 전체 삭제
구조는 유지

3️⃣ 예시

-- 테이블 생성 CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); -- 컬럼 추가 ALTER TABLE users ADD email VARCHAR(100); -- 테이블 삭제 DROP TABLE users; -- 데이터 전체 삭제 (롤백 불가) TRUNCATE TABLE users;

4️⃣ 실습

1) CREATE문으로 데이터베이스 및 테이블 생성

CREATE문으로 데이터베이스 생성 후 선택
CREATE DATABASE doitsql; USE doitsql;
notion image
CREATE문으로 테이블 생성
기본 형식
CREATE TABLE 테이블 이름 ( [열 이름1 테이터 유형], [열 이름2 테이터 유형], (...생략...) );
실습
CREATE TABLE doit_create_table( col_1 INT, col_2 VARCHAR(50), col_3 DATETIME );
notion image

2) DROP문으로 테이블 삭제

DROP TABLE doit_create_table;
notion image
 
Share article