MariaDB의 DDL, DCL, DML 완벽 가이드: 예시 코드로 배우는 데이터베이스 언어

MariaDB는 MySQL의 포크로, 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 데이터베이스를 효과적으로 관리하기 위해서는 SQL(Structured Query Language)의 세 가지 주요 구성 요소인 DDL, DCL, DML을 이해하는 것이 중요합니다. 이 글에서는 각 구성 요소에 대해 자세히 알아보고, 실제 사용 예시를 통해 이해를 돕겠습니다.

 

DDL (Data Definition Language)

DDL은 데이터베이스 구조를 정의하고 관리하는 데 사용되는 명령어 집합입니다.

주로 테이블, 인덱스,  뷰 등의 데이터베이스 객체를 생성, 수정, 삭제하는 데 사용됩니다.

  • CREATE: 새로운 데이터베이스 객체 생성
  • ALTER: 기존 객체의 구조 변경
  • DROP: 객체 삭제
  • TRUNCATE: 테이블의 모든 데이터 삭제 (구조는 유지)
-- 데이터베이스 생성
CREATE DATABASE blog_db;

-- 테이블 생성
CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    content TEXT,
    author VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 테이블 구조 변경 (컬럼 추가)
ALTER TABLE posts ADD COLUMN category VARCHAR(30);

-- 테이블 삭제
DROP TABLE posts;

-- 테이블 내 모든 데이터 삭제
TRUNCATE TABLE posts;

 

DCL (Data Control Language)

DCL은 데이터베이스에 대한 접근 권한과 보안을 관리하는 명령어 집합입니다.

사용자 권한 부여 및 취소, 트랜잭션 제어 등에 사용됩니다.

  • GRANT: 사용자에게 특정 권한 부여
  • REVOKE: 사용자로부터 특정 권한 회수
  • COMMIT: 트랜잭션 변경사항 확정
  • ROLLBACK: 트랜잭션 변경사항 취소

 

-- 사용자 생성
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'password123';

-- 권한 부여
GRANT SELECT, INSERT, UPDATE ON blog_db.posts TO 'blog_user'@'localhost';

-- 권한 회수
REVOKE UPDATE ON blog_db.posts FROM 'blog_user'@'localhost';

-- 트랜잭션 시작
START TRANSACTION;

-- SQL 문장들 실행
INSERT INTO posts (title, content, author) VALUES ('첫 번째 글', '내용입니다.', '홍길동');
UPDATE posts SET category = '일반' WHERE id = 1;

-- 변경사항 확정
COMMIT;

-- 또는 변경사항 취소
ROLLBACK;

 

DML (Data Manipulation Language)

DML은 데이터베이스의 데이터를 조작하는 데 사용되는 명령어 집합입니다.

데이터의 검색, 삽입, 수정, 삭제 등의 작업을 수행합니다.

  • SELECT: 데이터 조회
  • INSERT: 새로운 데이터 삽입
  • UPDATE: 기존 데이터 수정
  • DELETE: 데이터 삭제
-- 데이터 삽입
INSERT INTO posts (title, content, author, category)
VALUES ('MariaDB 튜토리얼', 'MariaDB 사용법에 대한 글입니다.', '김철수', '기술');

-- 데이터 조회
SELECT * FROM posts WHERE category = '기술';

-- 데이터 수정
UPDATE posts SET content = '업데이트된 내용입니다.' WHERE id = 1;

-- 데이터 삭제
DELETE FROM posts WHERE author = '홍길동';

 

DDL, DCL, DML의 실제 활용

실제 블로그 시스템을 구축한다고 가정해 보겠습니다.

 

1. 블로그 데이터베이스 및 테이블 구조 설정 (DDL)

CREATE DATABASE blog_system;
USE blog_system;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    title VARCHAR(200) NOT NULL,
    content TEXT,
    status ENUM('draft', 'published') DEFAULT 'draft',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    post_id INT,
    user_id INT,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

 

2. 사용자 권한 설정 (DCL)

CREATE USER 'blog_admin'@'localhost' IDENTIFIED BY 'admin_password';
GRANT ALL PRIVILEGES ON blog_system.* TO 'blog_admin'@'localhost';

CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'user_password';
GRANT SELECT, INSERT, UPDATE ON blog_system.posts TO 'blog_user'@'localhost';
GRANT SELECT, INSERT ON blog_system.comments TO 'blog_user'@'localhost';

 

3. 데이터 관리 (DML)

-- 사용자 등록
INSERT INTO users (username, email, password) 
VALUES ('john_doe', 'john@example.com', 'hashed_password');

-- 블로그 글 작성
INSERT INTO posts (user_id, title, content, status) 
VALUES (1, 'MariaDB 사용법', 'MariaDB는 강력한 오픈소스 DBMS입니다.', 'published');

-- 댓글 작성
INSERT INTO comments (post_id, user_id, content) 
VALUES (1, 1, '좋은 정보 감사합니다!');

-- 게시글 조회
SELECT p.*, u.username 
FROM posts p 
JOIN users u ON p.user_id = u.id 
WHERE p.status = 'published' 
ORDER BY p.created_at DESC;

-- 게시글 수정
UPDATE posts SET content = '업데이트된 MariaDB 사용법 내용입니다.' WHERE id = 1;

-- 댓글 삭제
DELETE FROM comments WHERE id = 1;

 

MariaDB에서 DDL, DCL, DML은 각각 고유한 역할을 수행하며, 데이터베이스 관리의 핵심을 이룹니다. DDL로 데이터베이스의 구조를 정의하고, DCL로 보안과 접근 제어를 관리하며, DML로 실제 데이터를 다룹니다. 이 세 가지 언어를 효과적으로 사용하면 안전하고 효율적인 데이터베이스 시스템을 구축하고 운영할 수 있습니다. 이 글에서 다룬 예시들을 실제로 실습해보면서 각 명령어의 동작과 결과를 직접 확인해보시기 바랍니다.  MariaDB의 공식 문서를 참고하여 더 깊이 있는 학습을 진행하는 것도 좋은 방법입니다. 데이터베이스 관리 기술은 지속적인 학습과 경험을 통해 향상될 수 있으므로, 꾸준한 실습과 학습을 통해 전문성을 키워나가시기 바랍니다.

 

 

DDL, DCL, DML
DDL, DCL, DML

 

 

 

mariaDB select insert update delete 문법 정리

SELECT테이블 내에 저장된 데이터(data)를 내가 원하는 형태의 정보( information) 로 변형하여 불러오는데 사용할 수있습니다SELECT 문을 사용하여 테이블의 레코드를 선택할 수 있습니다.FROM뒤에 레코

codro.tistory.com

 

 

MariaDB vs. MySQL vs. MS SQL vs. OracleDB - 데이터베이스 비교분석

데이터베이스는 소프트웨어 응용프로그램이 데이터를 저장, 관리, 조작하기 위해 사용되는 핵심 요소입니다. 여러 데이터베이스 관리 시스템 중에서 MariaDB, MySQL, MS SQL, OracleDB는 널리 사용되는

codro.tistory.com