CIDY
[Web_Hacking] stage6_Relational DBMS 본문
*DBMS
DataBase Management System의 약자이다. 웹 서비스는 DB에 정보를 저장하고, 이를 관리하기 휘애 DBMS를 이용한다. DBMS는 데이터베이스에 새로운 정보 기록/내용 수정/내용 삭제와 같은 역할을 한다.
다수의 사람이 동시에 DB에 접근할 수 있으며, 검색 기능과 같은 데이터 조회 기능이 있다.
DBMS에는 다양한 종류가 있으며, 크게 관계형/비관계형으로 나뉜다. 각각에 따른 대표적인 DBMS는 다음과 같다.
Relational(관계형) : MySQL, MariaDB, PostgreSQL, SQLite
Non-Relational(비관계형) : MongoDB, CouchDB, Redis
관계형의 경우 행/열의 집합으로 이루어진 테이블 형식으로 데이터를 저장하고, 비관계형은 키-값(Key-Value)형태로 값을 저장한다.
* RDBMS
Relational DBMS이다. RDBMS는 행과 열의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리한다. + 테이블 형식의 데이터를 조작할 수 있는 관계 연산자 제공
RDBMS에서 관계 연산자는 SQL(Structured Query Language)라는 쿼리 언어를 사용하며, 쿼리를 통해 테이블 형식의 데이터를 조작한다.
*SQL
Structured Query Language의 약자이다. RBDMS의 데이터를 정의하고, 질의/수정 등을 하기 위해 고안된 언어이다. SQL은 구조화된 형태를 가지는 언어이며 웹 어플리케이션이 DBMS와 상호작용할 때 사용된다. SQL은 사용 목적/행위에 따라 다양한 구조가 존재한다.
DDL(Data Definition Language) : 데이터 정의를 위한 언어. 데이터 저장을 위한 스키마, 데이터베이스 생성/수정/삭제
DML(Data Manipulation Language) : 데이터 조작을 위한 언어. 데이터베이스 내에 존재하는 데이터 조회/저장/수정/삭제
DCL(Data Control Language) : 데이터베이스 접근 권한 설정을 위한 언어. 권한을 부여하는 GRANT와 박탈하는 REVOKE가 있음.'
DDL : 웹 어플리케이션은 SQL로 DBMS와 상호작용하며 데이터를 관리한다. RDBMS에서 이용하는 기본적인 구조는 데이터베이스 -> 테이블 -> 데이터 구조이다. 데이터를 관리하기 위해서는 테이블과 데이터베이스를 생성해야 하며, 이 때 DDL을 이용한다.
->데이터베이스 생성
CREATE DATABASE Dreamhack;
위와 같이 DDL의 CREATE명령을 이용해 새로운 데이터베이스/테이블을 생성할 수 있다. (위는 Dreamhack이라는 데이터베이스를 생성하는 쿼리문이다.)
->테이블 생성
USE Dreamhack;
# Board 이름의 테이블 생성
CREATE TABLE Board(
idx INT AUTO_INCREMENT,
boardTitle VARCHAR(100) NOT NULL,
boardContent VARCHAR(2000) NOT NULL,
PRIMARY KEY(idx)
);
위에서 생성한 Dreamhack데이터베이스에 Board테이블을 생성하는 쿼리문이다.
DML : 생성된 테이블에 데이터를 추가하기 위해서는 DML을 이용해야 한다. 데이터 생성은 INSERT, 데이터 조회는 SELECT, 데이터 수정은 UPDATE를 사용한다.
->테이블 데이터 생성
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;
위는 Board테이블의 컬럼 값을 변경하는 쿼리문이다.
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[Web_Hacking] stage6_문제풀이(simple_sqli) (0) | 2022.07.29 |
---|---|
[Web_Hacking] stage6_SQL injection (0) | 2022.07.29 |
[Web_Hacking] stage5_문제풀이(csrf-1) (0) | 2022.07.28 |
[Web_Hacking] stage5_문제풀이(csrf-2) (0) | 2022.07.28 |
[Web_Hacking] stage5_CSRF (0) | 2022.07.28 |