Background: Relational DBMS
# 들어가며 - 서론
- 데이터베이스 (Database): 컴퓨터에 정보를 기록하기 위해 사용
- DataBase Management System (DBMS): 데이터베이스를 관리하는 애플리케이션
- 최근의 웹 서비스에는 데이터베이스가 거의 필수적으로 포함되어야 함
# DataBase Management System
- 데이터베이스 관리 시스템
- 웹 서비스는 데이터베이스에 정보를 저장하고, 이를 관리하기 위해 데이터베이스 관리 시스템을 사용
- DBMS는 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을 함
- DBMS는 다수의 사람이 동시에 데이터베이스에 접근할 수 있고, 웹 서비스의 검색 기능과 같이 복잡한 요구사항을 만족하는 데이터를 조회할 수 있다는 특징이 있음
- DBMS는 관계형과 비관계형을 기준으로 분류하며, 다양한 종류의 DBMS가 존재
- 두 DBMS의 차이점: 관계형은 행과 열의 집합인 테이블 형식으로 데이터를 저장하고, 비관계형은 테이블 형식이 아닌 키-값(Key-value) 형태로 저장
# Relation DBMS
1. Relational DBMS
- Relational DataBase Management System (RDBMS, 관계형 RDBMS): 1970년에 Codds가 12가지 규칙을 정의하여 생성한 데이터베이스 모델
- RDBMS는 행(Row)와 열(Column)의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리하고, 테이블 형식의 데이터를 조작할 수 있는 관계 연산자를 제공
- RDBMS에서 관계 연산자는 Structured Query Language(SQL)라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작
학교에서 사용하는 정보들을 사용해 RDMS를 표현
학교(데이터베이스)에 여러 정보를 담은 테이블이 있음
학생의 정보를 담은 학생 명부, 출석부, 성적표, 생활기록부 등이 테이블 형태로 관리됨
각 테이블의 정보를 사용할 때에는 학번(학생들의 고유 키)을 참조해 사용
2. SQL
- Structed Query Language(SQL): RDBMS의 데이터를 정의하고 질의, 수정 등을 하기 위해 고안된 언어
- 구조화된 형태를 가지는 언어로 웹 어플리케이션이 DBMS와 상호작용 할 때 사용됨
- 사용 목적과 행위에 따라 다양한 구조가 존재하며 대표적으로 아래와 같이 구분됨
3. DDL
- 웹 어플리케이션은 SQL을 사용해서 DBMS와 상호작용을 하며 데이터를 관리함
- RDBMS에서 사용하는 기본적인 구조는 데이터베이스 → 테이블 → 데이터 구조임
- 데이터를 다루기 위해 데이터베이스와 테이블을 생성해야 하며, DDL을 사용해야 함
- DDL의 create 명령을 사용해 새로운 데이터베이스 또는 테이블을 생성할 수 있음
데이터베이스 생성
- Dreamhack이라는 데이터베이스를 생성하는 쿼리문
CREATE DATABASE Dreamhack;
테이블 생성
- 앞서 생성한 데이터베이스에 Board 테이블을 생성하는 쿼리문
USE Dreamhack;
# Borad 이름의 테이블 생성
CREATE TABLE Board(
idx INT AUTO_INCREMENT,
boardTitle VARCHAR(100) NOT NULL,
boardContent VARCHAR(2000) NOT NULL,
PRIMARY KEY(idx)
);
4. DML
- 생성된 테이블에 데이터를 추가하기 위해 DML을 사용
- 다음은 새로운 데이터를 생성하는 INSERT, 데이터를 조회하는 SELECT, 그리고 데이터를 수정하는 UPDATE의 예시
테이블 데이터 생성
- Board 테이블에 데이터를 삽입하는 쿼리문
INSERT INTO
Board(boardTitle, boardContent, createdDate)
Values(
'Hello',
'World !',
Now()
);
데이블 데이터 조회
- Board 테이블에 데이터를 조회하는 쿼리문
SELECT
boardTitle, boardContent
FROM
Board
Where
idx=1;
테이블 데이터 변경
- Board 테이블의 컬럼 값을 변경하는 쿼리문
UPDATE Board SET boardContent='DreamHack!'
Where idx=1;
# 마치며
- 키워드
① 데이터베이스: 데이터가 저장되는 공간
② DBMS: 데이터베이스를 관리하는 어플리케이션
③ RDBMS: 테이블 형태로 저장되는 관계형 DBMS
④ SQL: RDBMS와 상호작용할 때 사용되는 언어
'Hacking Tech > Web hacking' 카테고리의 다른 글
[Dreamhack] Background: Non-Relational DBMS (0) | 2022.03.11 |
---|---|
[Dreamhack] ServerSide: SQL Injection (0) | 2022.03.08 |
[Dreamhack] ClientSide: CSRF (0) | 2022.02.13 |
[Dreamhack] ClientSide: XSS (0) | 2022.01.27 |
[Dreamhack] Mitigation: Same Origin Policy (0) | 2022.01.26 |