JABHACK
2025. 1. 24. 11:35
2025. 1. 24. 11:35
1. SQL 소개 및 종류
구분 |
설명 |
주요 명령어 예시 |
SQL이란? |
데이터베이스를 관리하고 조작하기 위한 언어. |
- |
SQL 종류 |
데이터베이스 작업의 목적에 따라 3가지로 구분: |
- |
DDL |
데이터 정의 언어: 데이터 구조(스키마)를 정의하고 수정. |
CREATE, ALTER, DROP |
DML |
데이터 조작 언어: 데이터를 검색, 삽입, 수정, 삭제. |
SELECT, INSERT, UPDATE, DELETE |
DCL |
데이터 제어 언어: 데이터 접근 권한과 트랜잭션 관리. |
GRANT, REVOKE, COMMIT, ROLLBACK |
2. DDL (데이터 정의 언어)
명령어 |
설명 |
예시 |
CREATE TABLE |
새 테이블을 생성. |
CREATE TABLE students (id INT, name VARCHAR(50)); |
ALTER TABLE |
기존 테이블의 구조를 변경. |
ALTER TABLE students ADD age INT; |
DROP TABLE |
기존 테이블을 삭제. |
DROP TABLE students; |
3. DML (데이터 조작 언어)
명령어 |
설명 |
예시 |
SELECT |
데이터를 조회. |
SELECT * FROM students; |
INSERT INTO |
데이터를 삽입. |
INSERT INTO students (id, name) VALUES (1, 'Alice'); |
UPDATE |
데이터를 수정. |
UPDATE students SET name = 'Bob' WHERE id = 1; |
DELETE FROM |
데이터를 삭제. |
DELETE FROM students WHERE id = 1; |
ORDER BY |
조회 결과를 정렬. |
SELECT * FROM students ORDER BY name ASC; |
GROUP BY |
데이터를 그룹화하여 결과를 반환. |
SELECT age, COUNT(*) FROM students GROUP BY age; |
JOIN |
여러 테이블의 데이터를 결합. |
SELECT students.name, grades.grade FROM students JOIN grades ON students.id = grades.sid; |
4. 트랜잭션 관리 (DCL)
명령어 |
설명 |
예시 |
BEGIN |
새로운 트랜잭션을 시작. |
BEGIN; |
COMMIT |
트랜잭션을 성공적으로 종료 및 데이터베이스에 반영. |
COMMIT; |
ROLLBACK |
트랜잭션 실행 내용을 취소하고 이전 상태로 되돌림. |
ROLLBACK; |
GRANT |
특정 사용자에게 데이터베이스 작업 권한 부여. |
GRANT SELECT, INSERT ON students TO user1; |
REVOKE |
특정 사용자에게 부여된 권한 철회. |
REVOKE SELECT ON students FROM user1; |
5. 트랜잭션의 주요 특징
- 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 말합니다.
- 요리로 치면 조리대를 의미하며 재료(데이터)들을 조회하여 생성/수정/삭제 후 최종 결과물을 만들때까지 하나의 작업을 트랜잭션으로 관리 할 수 있으며, 트랜잭션은 조리(데이터 처리) 중에 문제가 발생시 그전에 했던 변경을 아무일 도 없던것처럼 모두 되돌립니다.
특징 |
설명 |
원자성 |
트랜잭션은 완전히 수행되거나 전혀 수행되지 않아야 함.
트랜잭션은 사람이 설계한논리적인 작업 단위로서, 일처리는 작업단위 별로 이루어 져야 사람이 다루는데 무리가 없다. => 이렇게 안하면? 오작동 했을시 원인을 찾기가 매우 힘들어질것이다. |
일관성 |
트랜잭션 수행 전후 데이터베이스는 항상 일관된 상태를 유지.
트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는것이 아니라,처음에 트랜잭션을 진행 하기 위해 참조한 데이터베이스로 진행된다. |
독립성 |
각 트랜잭션은 다른 트랜잭션의 영향을 받지 않음. |
6. 트랜잭션 관리 요약
- 조리대 트랜잭션 관리: 조리대에서의 사고(다른 요리재료와 섞이거나, 잘못 버려지는것)를 방지하기 위해 BEGIN, COMMIT, **ROLLBACK**으로 트랜잭션을 관리하는 방법을 배웁니다.
- 접근 권한 설정하기: **GRANT**와 **REVOKE**로 누가 주방에 들어와서 요리를 할 수 있는지를 관리하는 방법을 배웁니다.
상황 |
명령어 |
설명 |
트랜잭션 시작 |
BEGIN |
새로운 트랜잭션 시작. |
작업 완료 및 반영 |
COMMIT |
트랜잭션 성공적으로 완료 후 변경 내용을 영구 반영.
이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션단위로 하는것을 도와준다. |
작업 취소 |
ROLLBACK |
트랜잭션 실행 내용을 취소하고 이전 상태로 복원. |