SQL문은 계속 써보면서 적응을 해 나가야 할 듯 하다.
SQL에서 기본적으로 자주 사용되는 예약어들이 있다. 오늘은 데이터베이스에서 중요한 역할을 하는 네 가지 언어에 대해 알아보고자 한다.
SQL 이란?
🔽 SQL 관련 게시글
SQL 문법에는 크게 DDL(Data Definition Language), DML(Data Manipulation Language), DCL (Data Control Language), TCL(Transaction Control Language) 네 가지로 구분된다. 각 언어들은 순서대로 데이터 정의어, 데이터 조작어, 데이터 제어어, 트랜잭션 제어어 라고 불린다.
- DMC 로 외우면 외우기 쉽다
1. DDL(Data Definition Language) : 데이터 정의 언어
DDL이란?
데이터 베이스 구조를 정의하고 수정하기 위해 사용되는 언어이다.
주요 목적은 DB 개체의 생성, 변경, 삭제 등 구조를 결정하는 역할을 한다.
- DDL 명령어는 즉시 실행되고 결과는 즉시 커밋(COMMIT)되는 특징을 가진다.
명령어 | 특징 | 사용 예시 |
CREATE | 테이블, 뷰, 인덱스 등 데이터베이스 개체 생성 | CREATE TABLE employees(emp_id INT, emp_name VARCHAR(10), emp_department VARCHAR(5)); |
ALTER | 테이블 구조 수정 | ALTER TABLE employees ADD COLUMN salary INT; |
DROP | 데이터베이스 개체 삭제 | DROP TABLE employees ; |
TRUNCATE | 테이블의 모든 데이터 삭제 | TRUNCATE TABLE employees ; |
CONSTRAINT | 데이터베이스 개체에 제약 조건 추가 | ALTER TABLE employees ADD CONSTRAINT PK_employees PRIMARY KEY (ID);
|
✅ DML 사용 주의 사항
- DDL 문은 트랜잭션으로 묶이지 않으므로 한 번 실행되면 롤백할 수 없음 ⇒실행 전에 데이터베이스의 현재 상태를 백업하는 것이 좋음
DDL은 데이터 베이스의 구조 정의 및 관리가 가능하며 데이터 무결성과 보안 유지에 중요한 역할을 한다.
2. DML(Data Manipulation Language) : 데이터 조작 언어
데이터 조작 언어는 데이터베이스에 저장된 데이터를 검색, 삽입, 수정한다. 실제 데이터와 상호 작용하여 원하는 결과를 얻는 데 사용된다.
- DML, DDL 헷갈릴 수 있다. ⇒ DDL은 구조, DML은 데이터
명령어 | 내용 | 사용 예시 |
SELECT | 데이터 검색 | SELECT emp_id FROM employess; |
INSERT | 데이터 추가 | INSERT INTO Employees (emp_id , emp_name, emp_department) VALUES (1, 'John Smith', 30, 'IT'); |
UPDATE | 데이터 수정 | UPDATE employees SET Age = 32 WHERE ID = 1; |
DELETE | 데이터 삭제 | DELETE FROM employees WHERE ID = 1; |
✅ DML 사용 주의 사항
- 실행하기 전 DB에 대한 권한을 가지고 있는지 확인 필요 ⇒ 권한이 없으면 수정 또는 삭제 불가
- DML 문에 WHERE 절을 사용하여 조건을 지정하면 의도치 않은 데이터 수정을 막을 수 있다.
3. DCL (Data Control Language): 데이터 제어 언어
데이터 제어 언어(DCL)는 데이터베이스에 대한 액세스 권한을 제어하기 위해 사용된다. 데이터베이스 사용자에게 적절한 권한을 부여하거나 취소하는 데 사용된다.
명령어 내용 사용 예시
GRANT | 사용자에게 특정 작업 수행 권한을 부여 | GRANT SELECT ON employees TO username; |
REVOKE | 사용자의 권한을 회수 | REVOKE SELECT ON Employees FROM username; |
권한 부여와 회수는 데이터베이스 보안과 데이터 접근 제어에 중요한 역할을 하며 제어어 사용으로 접근 제어를 효과적으로 사용할 수 있다.
4. TCL(Transaction Control Language) : 트랜젝션 제어 언어
트랜잭션 제어 언어(TCL)는 데이터베이스에서 트랜잭션의 관리를 위해 사용된다. 트랜잭션의 시작, 커밋, 롤백 등을 제어하는데 사용된다.
명령어 | 내용 |
BEGIN | 트랜잭션을 시작 |
COMMIT | 트랜잭션 내의 작업을 완료하고 변경사항 데이터베이스에 영구적으로 반영 |
ROLLBACK | 트랜잭션의 변경 사항을 취소하여 이전 상태로 복구 |
SAVEPOINT | 트랜잭션 내에서 중간 저장 지점을 만드는 데 사용 |
TRANSACTION | 트랜잭션을 명시적으로 시작하고 종료하는 데 사용 |
트랜잭션 관리는 데이터베이스의 안전성과 일관성을 보장한다. BEGIN으로 트랜잭션을 시작하고 작업을 수행한 후 COMMIT으로 변경 사항을 영구화하거나, ROLLBACK으로 트랜잭션을 취소할 수 있다.
✨트랜잭션(Transaction)이란?
트랜잭션은 데이터베이스에서 한 개 이상의 작업을 논리적으로 하나의 단위로 묶은 것이다. 작업은 모두 성공적으로 수행되거나 수행되지 않아야 한다.
자바언어를 보다가 SQL을 보면 매우 단순하고 직관적이라 좋다. 예전에 공부할 때는 이런 직관적인 언어가 재미 없고 지루했다. 매번 똑같은 쿼리문만 쓰고 있고 DB만들고 테이블 만들고 SELET, INSERT, CREATE, DELETE만 하고 있으니ㅋㅋㅋ 근데 아마 그 땐 제대로 공부하지 못하고 그냥 단순히 SQL문은 JSON과 같은 형태다. (JSON이 뭔지도 몰랐음) 키와 값을 가지는 것이다. 이런 식으로만 하고 넘어가버려서 SQL이 뭔지 쿼리가 뭔지 왜 쓰는 것인지 이해가 안갔다. 그리고 정말 지루하게만 느껴졌다. 하나하나 분석하고 설명이 되어있는 JAVA 언어와 달리 직관적이고 단순한 이 언어가 재미없게만 느껴졌던 것이다. 하지만, 지금 다시 보니 SQL은 내가 알던 것 보다 복잡했고 어려운 용어가 많이 숨어있었다. 그나마 SQLD 공부를 하며 조금 익숙해졌지만? 너무 어렵다ㅎㅎ
이 다음에는 트랜잭션에 대한 글을 써야겠다. 트랜잭션이 무엇인가에 대한 의문이 잔득 들고 있다.
'LANGUAGE > MySQL' 카테고리의 다른 글
[MySQL] 필드 기본값(Default) 설정하기 (1) | 2023.06.04 |
---|---|
[MySQL] MySQL 자주 사용하는 쿼리문 / 쿼리문 실행 순서 정리 (0) | 2023.05.26 |
[SQL] 트랜잭션(Transaction)이란? ACID원칙 (1) | 2023.05.26 |
[DATABASE] 데이터 베이스 개체 알아보기 / 인덱스(INDEX), 뷰(VIEW), 스토어드 프로시저(STORED PROCEDURE), 트리거(TRIGGER) 등 (0) | 2023.05.25 |
[Database] 데이터베이스(Database)란? / DBMS와 RDBMS 그리고 SQL 알아보기 (0) | 2023.05.24 |