Programming-[Backend]/SQL

[SQLD] 5. SQL 기본 1 - 관계형 데이터베이스, 기본 용어, SQL 종류, 실행순서

컴퓨터 탐험가 찰리 2022. 5. 14. 16:28
728x90
반응형

 

1. 관계형 데이터베이스(Relation Databse)와 기본 용어

 

관계형 데이터베이스는 1970년대 E.F. Codd 박사의 논문에서 처음 소개된 데이터베이스이다. 테이블끼리 조인 연산을 하여 수학적 합집합, 교집합, 차집합 등의 개념을 도입한다.

 

데이터 베이스 종류

데이터 베이스의 종류에는 계층형, 네트워크형, 관계형 데이터베이스가 있다. 일반적인 데이터베이스는 관계형으로 릴레이션을 사용해서 집합, 관계 연산을 한다. 계층형 데이터베이스는 트리(Tree) 형태의 자료구조에 데이터를 저장하고 관리하며, 네트워크형 데이터베이스는 Owner와 Member 형태로 데이터를 저장한다. 계층형은 1대N의 구조, 네트워크형은 1대N 뿐만 아니라 M대N의 관계도 표현이 가능하다.

 

-> 릴레이션은 행과 열의 관계를 갖는 데이터들의 집합으로써, 테이블이라고 이해하면 된다.

 

 

 

관계형 데이터베이스 집합 연산과 관계 연산

관계형 데이터베이스의 특징으로 릴레이션(=테이블)을 이용하여 집합 연산과 관계 연산을 할 수 있다. 실제 SQL을 사용하여 데이터를 조회할 때, 상황에 따라 이런 연산들에 대한 용어를 쓰는 경우가 종종 있다.

 

아래 표와는 다르게, 책에서는

집합 연산 = [합집합(Union), 차집합(Difference), 교집합(Intersection), 곱집합(Cartesian product)],

관계 연산 = [선택 연산(Selection), 투영연산(Projection), 결합연산(Join), 나누기 연산(Division)]

이라고 표현했다. 개인적으로는 책에서의 표현을 많이 들었고, 표에서는 표기법을 소개하는데 처음 보는 내용인 것 같다.

참조 2의 테이블

 

 

테이블의 구조, 기본적인 용어를 아래 그림에서 참고하자.(참조3)

 

기본키(Primary key)는 하나의 테이블에서 유일성, 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것이다. 위 그림에서는 고객번호라고봐도 되겠다.

 

 

 


 

SQL의 종류, 기본 명령어

 

 

SQL이란

SQL은 관계형 데이터베이스에 대해서 데이터 구조 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어이다. ANSI/ISO 표준을 지켜야하기 때문에, 대부분의 기본 명령어를 데이터베이스 관리 시스템(Oracle, MSSQL, PostgreSQL 등...)에 상관없이 그대로 사용할 수 있다.

 

 

SQL의 종류 및 명령어(참조4)

 

DDL(Data Definition Language), 데이터 정의 언어

 

테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 구조를 정의한다.

 

-명령문

CREATE 테이블을 생성하는 역할
ALTER 테이블의 구조를 수정하는 역할
DROP 테이블을 삭제하는 역할
RENAME 테이블을 이름을 변경하는 역할
TRUNCATE 테이블을 초기화하는 역할

 

-> create시 유의사항

CREATE 뒤에 나오는 컬럼명은 데이터 타입을 반드시 지정해야한다.

테이블과 컬럼명은 반드시 문자로 시작한다.

대소문자 구분을 하지 않지만, 기본적으로 대문자로 만들어진다.

 

-> ALTER 명령어

ALTER 뒤에 아래 명령어들을 추가하여 테이블 컬럼 변경과 관련된 세부 내용을 지정한다.

ADD COLUMN 컬럼을 추가하는 역할
DROP COLUMN 컬럼을 삭제하는 역할
MODIFY COLUMN 컬럼을 수정하는 역할
RENAME COLUMN 컬럼 이름을 변경하는 역할
DROP CONSTRAINT 컬럼을 제약조건을 기반해서 삭제하는 역할

 


 

DML(Data Manipulation Language), 데이터 조작 언어

 

데이터를 조회, 입력, 수정, 삭제하기 위한 언어이다. 일반적으로 가장 많이 사용하며 뒤에서 상세한 문법 등을 배운다.

SELECT 데이터베이스에서 데이터를 검색하는 역할
INSERT 테이블에 데이터를 추가하는 역할
UPDATE 테이블 내에 존재하는 데이터를 수정하는 역할
DELETE 테이블에서 데이터를 삭제하는 역할

 


 

DCL(Data Control Language), 데이터 제어 언어

 

데이터를 관리하는 목적으로 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용한다. 기본적으로는 보안 목적으로 데이터베이스에 접근하는 권한을 제어하는데 사용한다.

 

GRANT 권한을 정의할때 사용하는 명령어
REVOKE 권한을 삭제할때 사용하는 명령어

 


 

TCL(Transaction Control Language), 트랜잭션 제어 언어

 

트랜잭션을 제어하는 명령어이다.

 

COMMIT 모든 작업을 정상적으로 처리하겠다는 명령어
ROLLBACK 모든 작업을 다시 돌려 놓겠다는 명령어
SAVEPOINT Commit 전에 특정 시점까지만 반영하거나 Rollback하겠다는 명령어

 

 


 

SQL 실행 순서

 

SQL의 실행 순서는 다음과 같다. (참조4)

SQL  Syntax Check  Semantic Check  Library Cache Check  Optimization  Raw Source Generation  Execution

  1. SQL: 쿼리 실행
  2. Syntax Check: 문법 체크
  3. Semantic Check: 객체(Object) 및 권한 유무 체크
  4. Library Cache Check: Cache에서 쿼리 저장 유무 검사 → 저장되어 있다면 Soft Parse로, Library Cache에 저장된 쿼리 바로 사용 → 저장되어 있지 않으면 Hard Parse로 다음 단계로 넘어간다.
  5. Optimization: 최적화한 쿼리 실행 계획을 만드는 단계
  6. Raw Source Generation: 위 Optimization 단계에서 생성된 실행 계획을 실제 실행할 수 있게 Formatting
  7. Execution: 실행

 

SQL문의 실행순서는 다음과 같다. 이 내용은 알고 있으면 실무에서 도움이 된다.

 

1. FROM

2. WHERE

3. GROUP BY

4. HAVING

5. SELECT

6. ORDER BY

 


 

트랜잭션

 

트랜잭션에 대해서는 이 블로그의 트랜잭션 관련 글들을 참조하자

 

https://whitepro.tistory.com/282

https://whitepro.tistory.com/283

 

...


참조

 

0. [도서] 영진닷컴 - SQL 개발자 이론서 + 기출문제

 

 

1. 데이터 온에어 - 분산 데이터베이스와 성능

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=336

 

2. 곰씨네 IT 블로그 - 관계 대수, 관계 해석

https://gomcine.tistory.com/entry/%EA%B4%80%EA%B3%84%EB%8C%80%EC%88%98-%EA%B4%80%EA%B3%84%ED%95%B4%EC%84%9D

 

3. 블로그 - [데이터베이스] 1. 기본 용어 설명

https://iseunghan.tistory.com/290

 

4. 코딩하는 포로리 블로그 - DB 개요: DDL, DML, DCL, TCL 이란?

https://velog.io/@alicesykim95/DB-DDL-DML-DCL-TCL%EC%9D%B4%EB%9E%80

728x90
반응형