데이터베이스 (Database)
컴퓨터가 정보를 기록하는 곳
다수의 사람들이 데이터를 생성하고, 참조하고, 수정하는 웹 서버의 환경에 가장 적합한 자료구조
DataBase Management System (DBMS)
데이터베이스를 관리하는 애플리케이션
DBMS 종류
Relational (관계형) |
MySQL, MariaDB, PostgreSQL, SQLite |
Non-Relational (비관계형) |
MongoDB, CouchDB, Redis |
두 DBMS 의 차이점: 데이터 저장 방식
- 관계형 - 행과 열의 집합인 테이블 형식으로 저장
- 비관계형 - Key-Value 형태로 저장
RDBMS (관계형 DBMS)
RDBMS에서 관계 연산자는 SQL이라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작합니다.
학교에서 사용하는 정보들을 사용해 RDBMS의 예시를 들어보겠습니다. 학교(데이터베이스)에 여러 정보를 담은 테이블이 있습니다. 예를 들어 학생의 정보를 담은 학생 명부, 출석부, 성적표, 생활기록부 등이 테이블 형태로 관리됩니다. 그리고 각 테이블의 정보를 사용할 때에는 학번(학생들의 고유 키)을 참조해 사용합니다.
학생 명부
학번(문자열) 이름(문자열) 생년월일(날짜) 번호(문자열)
20211234 | 드림이 | 2020.04.01 | 010-1337-1337 |
20211235 | 오리 | 2016.01.01 | 070-8864-1337 |
드림과목 출석부
학번(문자열) 04/05(ENUM) 04/12(ENUM) 04/19(ENUM)
20211234 | 출석 | 공결 | 출석 |
20211235 | 지각 | 결석 | 출석 |
SQL (Structured Query Language)
RDBMS의 데이터를 정의, 질의, 수정 등을 하기 위해 구조화된 언어
사용과 목적에 따라 다양한 구조로 구분된다
DDL (Data Definition Language) |
데이터를 정의하기 위한 언어입니다. 데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행합니다. |
DML (Data Manipulation Language) |
데이터를 조작하기 위한 언어입니다. 실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행합니다. |
DCL (Data Control Language) |
데이터베이스의 접근 권한 등의 설정을 하기 위한 언어입니다. 데이터베이스 내에 이용자의 권한을 부여하기 위한 GRANT와 권한을 박탈하는 REVOKE가 대표적입니다. |
RDBMS 의 기본적인 구조: 데이터베이스 -> 테이블 -> 데이터
DDL (CREATE)
데이터베이스 생성
CREATE DATABASE Dreamhack;
Dreamhack 이라는 데이터베이스를 생성한다.
테이블 생성
USE Dreamhack;
# Board 이름의 테이블 생성
CREATE TABLE Board(
idx INT AUTO_INCREMENT,
boardTitle VARCHAR(100) NOT NULL,
boardContent VARCHAR(2000) NOT NULL,
PRIMARY KEY(idx)
);
앞서 생성한 데이터베이스에 Board 테이블을 생성한다
DML (INSERT/SELECT/UPDATE)
테이블 데이터 추가
INSERT INTO
Board(boardTitle, boardContent, createdDate)
Values(
'Hello',
'World !',
Now()
);
테이블 데이터 조회
SELECT
boardTitle, boardContent
FROM
Board
Where
idx=1;
테이블 데이터 변경
UPDATE Board SET boardContent='DreamHack!'
Where idx=1;
키워드
- 데이터베이스: 데이터가 저장되는 공간
- DBMS: 데이터베이스를 관리하는 어플리케이션
- RDBMS: 테이블 형태로 저장되는 관계형 DBMS
- SQL: RDBMS와 상호작용할 때 사용되는 언어
'KERT > HackHeat' 카테고리의 다른 글
NoSQL 개념과 MongoDB 기본 문법 (0) | 2023.07.26 |
---|---|
SQL Injection (0) | 2023.07.21 |
ClientSide: XSS (0) | 2023.07.16 |
Cookie & Session (0) | 2023.07.16 |
웹 기초 상식 (HTTP, 웹 브라우저, 개발자 도구) (0) | 2023.07.02 |