Programing_Java
[SQLD] SQL - Structured Query Language 본문
✴︎ SQL
: SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어
: 관계형 DB는 DB를 연결하고 SQL문을 사용하여 DB를 누구나 쉽게 사용할 수 있도록 함
: SQL은 ANSI/ISO 표준을 준수하기 때문에 DBMS가 변경되어도 그대로 사용 가능
✴︎ SQL 종류
SQL 종류 | |
DDL (Data Definition Language) | 관계형 데이터베이스의 구조를 정의하는 언어 CREATE, ALTER, DROP, RENAME |
DML (DataManipulation Language) | 테이블에서 데이터를 입력, 수정, 삭제, 조회 INSERT, UPDATE, DELETE, SELECT |
DCL (Data Control Language) | 데이터베이스 사용자에게 권한을 부여하거나 회수 GRANT, REVOKE, TRUNCATE |
TCL (Transaction Control Language) | 트랜젝션을 제어하는 명령어 COMMIT, ROLLBACK, SAVEPOINT |
• DDL : DB 테이블을 생성하거나 변경, 삭제하는 것
• DML : 데이터 구조가 DDL로 정의되면 해당 데이터 구조에 데이터를 입력, 수정, 삭제, 조회할 수 있는 언어
• DCL : DDL로 정의된 구조에 어떤 사용자가 접근할 수 있는지 권한을 부여하는 것
// 작업의 순서
1. DB의 사용자에게 권한을 부여
2. 권한이 부여되면 DDL로 데이터 구조를 정의
3. 데이터 구조가 정의되면 데이터를 입력
4. 개발자 및 사용자가 해당 데이터를 조회
✴︎ 트랜젝션 (Transaction)
: DB의 작업을 처리하는 단위
: DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한번에 모두 수행되어야 할 일련의 연산들을 의미
특성 | |
원자성 (Atomicity) | 트랜젝션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야함 (All or Nothing) 처리가 완전히 끝나지 않았을 경우는 실행되지 않은 상태와 같아야 함 |
일관성 (Consistency) | 실행 결과로 DB의 상태가 모순되지 않아야 함 실행 후에도 일관성이 유지되어야 함 |
고립성 (Isolation) == 독립성, 격리성 |
실행 중에 생성하는 연산의 중간 결과는 다른 트랜젝션이 접근할 수 없음 부분적인 실행 결과를 다른 트랜젝션이 볼 수 없음 |
영속성 (Durability) == 지속성 |
실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야함 |
✴︎ SQL문의 실행 순서
: 개발자가 작성한 SQL문은 3단계를 걸쳐서 실행
: SQL문의 문법을 검사하고 구문 분석
: 구문 분석 이후에 SQL을 실행, 실행되면 데이터를 추출하게 됨
SQL 실행 순서 | |
파싱 (Parsing) | SQL문의 문법을 확인하고 구문 분석 구문 분석한 SQL문은 Library Cache에 저장 |
실행 (Execution) | Optimizer가 수립한 실행 계획에 따라 SQL을 실행 |
인출 (Fetch) | 데이터를 읽어서 전송 테이블에서 레코드 하나하나를 가져오는 것 |
인출의 Fetch는 게임의 Patch와 다름 → 게임의 Patch는 업데이트를 하는 것!
'SQL_' 카테고리의 다른 글
[SQLD] View (0) | 2025.03.06 |
---|---|
[SQLD] SQL - Table (0) | 2025.03.05 |
[SQLD] Relation Database (0) | 2025.03.04 |
[SQLD] 오답노트#3 (0) | 2025.03.03 |
[SQLD] 오답노트#2 (0) | 2025.03.02 |