SQL 개요
SQL(Structured Query Language)은 관계형 데이터베이스(RDBMS) 에서 데이터를 정의하고, 조작하고, 제어하기 위해 사용하는 표준 언어이다.
대량의 데이터를 효율적으로 저장하고 관리하기 위해 SQL이 사용되며, 국제표준화기구(ISO)에서 SQL 표준을 정의하고 있다.
다만 Oracle, MySQL, PostgreSQL, MariaDB 등 DBMS를 만드는 회사가 다양하기 때문에
표준 SQL을 기반으로 하되, 각 DBMS의 특성을 반영한 문법 차이가 일부 존재한다.
DDL (Data Definition Language)
DDL은 데이터베이스 객체(테이블, 컬럼 등)의 구조를 정의하는 언어이다.
데이터 자체보다는 구조를 다루는 것이 특징이다.
CREATE
새로운 데이터베이스나 테이블을 생성한다.
CREATE DATABASE 데이터베이스이름;
CREATE TABLE 테이블이름 (
필드이름1 필드타입1,
필드이름2 필드타입2,
...
);
ALTER
이미 생성된 데이터베이스 객체의 구조를 수정한다.
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;
DROP
데이터베이스나 테이블을 완전히 삭제한다.
구조와 데이터 모두 삭제되며 복구가 어렵다.
DROP DATABASE 데이터베이스이름;
DROP TABLE 테이블이름;
TRUNCATE
테이블의 모든 데이터를 삭제하지만, 테이블 구조는 유지한다.
DELETE보다 훨씬 빠르며, 일반적으로 ROLLBACK이 불가능하다.
TRUNCATE TABLE 테이블이름;
※ TRUNCATE DATABASE는 대부분의 DBMS에서 지원하지 않으며, 일반적으로 사용되지 않는다.
DCL (Data Control Language)
DCL은 데이터 접근 권한을 제어하기 위한 언어이다.
주로 보안 및 사용자 권한 관리에 사용된다.
GRANT
사용자 또는 ROLE에 권한을 부여한다.
GRANT 권한명
ON 객체명
TO 사용자명 [WITH GRANT OPTION];
-- 예시
GRANT SELECT, INSERT
ON emp
TO scott WITH GRANT OPTION;
WITH GRANT OPTION을 사용하면, 해당 사용자가 다른 사용자에게도 권한을 부여할 수 있다.
REVOKE
부여했던 권한을 회수한다.
REVOKE 권한명
ON 객체명
FROM 사용자명;
-- 예시
REVOKE SELECT, INSERT
ON emp
FROM scott;
DML (Data Manipulation Language)
DML은 테이블의 데이터를 직접 조작하는 언어이다.
CRUD(Create, Read, Update, Delete)에 해당하는 작업을 수행한다.
INSERT
테이블에 새로운 행(row)을 추가한다.
INSERT INTO 테이블이름 (필드1, 필드2, ...)
VALUES (값1, 값2, ...);
INSERT INTO 테이블이름
VALUES (값1, 값2, ...);
SELECT
테이블에서 데이터를 조회한다.
SELECT 필드이름
FROM 테이블이름
WHERE 조건;
UPDATE
기존 데이터의 값을 수정한다.
DELETE FROM 테이블이름
WHERE 조건;
※ WHERE 절이 없으면 모든 데이터가 삭제된다.
TCL (Transaction Control Language)
실무에서는 DML과 함께 트랜잭션 제어도 매우 중요하다.
이를 위해 TCL(Transaction Control Language)이 사용된다.
COMMIT
현재 트랜잭션의 변경 내용을 확정한다.
COMMIT;
ROLLBACK
마지막 COMMIT 이전 상태로 되돌린다.
ROLLBACK;
SAVEPOINT
트랜잭션 내에서 특정 지점을 저장해 부분적으로 ROLLBACK 할 수 있다.
SAVEPOINT sp1;
ROLLBACK TO sp1;
'BackEnd > 내일배움캠프' 카테고리의 다른 글
| 17. 숙제 및 해설 (0) | 2026.02.11 |
|---|---|
| 16. JDBC란 무엇일까? (0) | 2026.02.11 |
| 14. Database (0) | 2026.02.10 |
| 13-2. Update, Delete 구현하기 (0) | 2026.02.10 |
| 13-1. Create, Read 구현하기 (0) | 2026.02.10 |