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의 공식 문서를 참고하여 더 깊이 있는 학습을 진행하는 것도 좋은 방법입니다. 데이터베이스 관리 기술은 지속적인 학습과 경험을 통해 향상될 수 있으므로, 꾸준한 실습과 학습을 통해 전문성을 키워나가시기 바랍니다.
MariaDB의 DDL, DCL, DML 완벽 가이드: 예시 코드로 배우는 데이터베이스 언어
MariaDB는 MySQL의 포크로, 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 데이터베이스를 효과적으로 관리하기 위해서는 SQL(Structured Query Language)의 세 가지 주요 구성 요소인 DDL, DCL, DML을 이해하는 것이 중요합니다. 이 글에서는 각 구성 요소에 대해 자세히 알아보고, 실제 사용 예시를 통해 이해를 돕겠습니다.
DDL (Data Definition Language)
DDL은 데이터베이스 구조를 정의하고 관리하는 데 사용되는 명령어 집합입니다.
주로 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 생성, 수정, 삭제하는 데 사용됩니다.
DCL (Data Control Language)
DCL은 데이터베이스에 대한 접근 권한과 보안을 관리하는 명령어 집합입니다.
사용자 권한 부여 및 취소, 트랜잭션 제어 등에 사용됩니다.
DML (Data Manipulation Language)
DML은 데이터베이스의 데이터를 조작하는 데 사용되는 명령어 집합입니다.
데이터의 검색, 삽입, 수정, 삭제 등의 작업을 수행합니다.
DDL, DCL, DML의 실제 활용
실제 블로그 시스템을 구축한다고 가정해 보겠습니다.
1. 블로그 데이터베이스 및 테이블 구조 설정 (DDL)
2. 사용자 권한 설정 (DCL)
3. 데이터 관리 (DML)
MariaDB에서 DDL, DCL, DML은 각각 고유한 역할을 수행하며, 데이터베이스 관리의 핵심을 이룹니다. DDL로 데이터베이스의 구조를 정의하고, DCL로 보안과 접근 제어를 관리하며, DML로 실제 데이터를 다룹니다. 이 세 가지 언어를 효과적으로 사용하면 안전하고 효율적인 데이터베이스 시스템을 구축하고 운영할 수 있습니다. 이 글에서 다룬 예시들을 실제로 실습해보면서 각 명령어의 동작과 결과를 직접 확인해보시기 바랍니다. MariaDB의 공식 문서를 참고하여 더 깊이 있는 학습을 진행하는 것도 좋은 방법입니다. 데이터베이스 관리 기술은 지속적인 학습과 경험을 통해 향상될 수 있으므로, 꾸준한 실습과 학습을 통해 전문성을 키워나가시기 바랍니다.
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
'SQL' 카테고리의 다른 글