Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

CIDY

[Web_Hacking] stage6_Relational DBMS 본문

Hack/DreamHack(로드맵)

[Web_Hacking] stage6_Relational DBMS

CIDY 2022. 7. 29. 01:20

*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테이블의 컬럼 값을 변경하는 쿼리문이다.