✅SQL문의 종류 🌟
종류 | 명령어 |
데이터 조작어 (DML : Data Manipulation Language) |
SELECT |
INSERT, UPDATE, DELETE | |
데이터 정의어 (DDL: Data Definitnion Language) |
CREATE, ALTER, DROP, RENAME |
데이터 제어어 (DCL: Date Control Language) |
GRANT, REVOKE |
트랜잭션 제어어 (TCL: Transaction Control Language) |
COMMIT, ROLLBACK |
✅DDL(Data Definition Language) 데이터 타입
타입 | 설명 |
CHAR(L) | 고정 길이 문자열. 고정 길이를 가지고 있어서 할당된 변수의 값이 L값보다 작을 경우 그 차이만큼 공백으로 채워짐 |
VARCHAR2(L) | 가변 길이 문자열. L만큼의 최대 길이를 가짐. L값보다 작을 경우에도 해당하는 값만큼만 공간을 차지 |
NUMBER(L,D) | 정수, 실수를 저장함. L값은 전체자리 수, D값은 소수점 자리 수 |
DATE | 날짜와 시각정보. "년월일시분초"를 표현 |
선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 에러 발생.
✅CREATE TABLE
테이블 명명 규칙
- 단수형
- 중복x
- 테이블 생성문 끝은 ';'로 끝나야 함
- 테이블 유형은 반드시 지정되어야 함
- 테이블명, 컬럼명은 반드시 문자로 시작
- 문자는 A-Z, a-z, 0-9, _, $, #만 허용됨
✅ALIAS 지정
: AS를 이용하여 컬럼의 이름을 지정 가능(테이블에서는 AS 사용 불가)
: AS는 생략 가능함
ex. SELECT A.CERTI_CD AS 자격증 코드
FROM SQLD.TB_CERTI A;
-> CERTI_CD라는 컬럼이 '자격증코드'라는 컬럼으로 지정하여 출력됨
✅ERD(Entity Relationship Diagram)
: 테이블 간 서로이 상관 관계를 그림으로 도식화한 것.
: ERD 구성 요소 - 엔터티, 관계, 속성 (현실 세계의 데이터는 이 3가지 구성요소로 모두 표현이 가능)
✅TCL(Transaction Control Language)
트랜잭션
:데이터베이스의 논리적 연산단위.
: 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨. 분할할 수 없는 최소의 단위. -> 전부 적용 or 전부 취소(all or nothing!!!)
트랜잭션 특징 -> ACID로 암기!!
- 원자성(Atomicity): 트랜잭션에서 정의된 연산들은 모두 성공적으로 끝나거나 모두 실패해야 함
- 일관성(Consistency): 실행전에 DB에 잘못된 내용이 없다면 실행된 이후에도 잘못된 내용이 있으면 안됨.
- 고립성(Isolation): 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨.
- 지속성(Durability): 트랜잭션이 성공적으로 수행되면, 그 내용은 영구적으로 저장
트랜잭션 요점
1) 테이블에 데이터의 변경을 발생시키는 INSERT, UPDATE, DELETE 수행 시 변경되는 데이터의 무결성을 보장하는 것이 COMMIT과 ROLLBACK의 목적
2) COMMIT: 변경된 데이터를 테이블에 영구적으로 반영하라는 의미
3) ROLLBACK: 데이터 변경을 사전에 지정한 저장점까지만 롤백하라는 의미
4) COMMIT, ROLLBACK 상관없이 트랜잭션 처리가 일어나는 상황
- DDL 문장을 실행하면 그 전후 시전에 자동으로 커밋됨
- DML 문장 이후에 커밋 없이 DDL 문장이 실행되면 DDL 수행 전에 자동으로 커밋
- DB를 정상적으로 접속 종료하면 자동으로 트랜잭션이 커밋
- 애플리메이션 이상 종료로 DB와 접속이 단절되었을 때에는 트랜잭션이 자동으로 롤백
✅SAVE POINT
: SAVE POINT를 정의하면 ROLLBACK할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVE POINT까지 트랜잭션의 일부만 롤백할 수 있음
: 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고, 실패한 부분에 대해서만 다시 실행
'데이터 분석' 카테고리의 다른 글
[SQLD] 개념정리 - SQL 기본(2): WHERE, FUNCTION, GROUP BY, HAVING, JOIN (0) | 2023.09.08 |
---|---|
[SQLD] 개념정리 - 데이터 모델과 성능(2): 테이블 분할, 슈퍼/서브 타입, 분산 데이터베이스 (0) | 2023.09.05 |
[SQLD] 개념정리 - 데이터 모델과 성능(1): 성능 데이터 모델링, 정규화, 반정규화 (0) | 2023.09.03 |
[SQLD] 개념정리 - 데이터 모델링의 이해(3): 관계, 식별자, 식별자관계 (2) | 2023.09.02 |
[SQLD] 개념정리 - 데이터 모델링의 이해(2): 엔터티, 인스턴스, 속성 (0) | 2023.08.18 |