[공통] DBMS
학습일 : 2022. 09. 26
DBMS
DBMS
DBMS(Database Management System)는 주로 데이터베이스 혹은 디비(DB)라고 부르고, 주로 스키마(Schema),
테이블(Table)의 상하 구조를 통해 레코드(Record)를 관리하기 위해 사용하며, 기초 언어(C, C#, Java 등)와 함께 사용하기도 한다.
DBMS는 크게 두 종류로 나뉘는데 RDBMS(관계형 데이터 베이스, Relational-) 및 NoSQL이다.
NoSQL의 종류(특, 근본 없음)
1. Redis : Java-Spring Boot에서 세션(Session) 및 기타 임시적인(Temporary) 데이터를 저장하기 위해 사용되곤 한다. 메모리 기반 데이터베이스. |
2. MongoDB |
3. HBase |
4. Firebase : 프론트 애들이 ~~이것도 DB라고~~ 많이 씀. |
5. 등 |
RDBMS의 종류
1. Oracle : 오라클社에서 만든 DBMS. 데이터의 양이 적을 때 상대적으로 느리지만, 그 양이 많아지면 많아 질수록 여타 다른 DBMS에 비해 속도 면에서 장점을 가지게 된다. 대형 금융권에서 주로 사용한다. 영리적 목적하에 유료. |
2. MySQL : APM(Apache + PHP + MySQL)의 구성 요소가 되는 근본 DBMS. 오라클社에 인수되고 나서 후술하는 이유로 인기가 식어가고 있다. 영리적 목적하에 유료. |
3. MariaDB : MySQL이 오라클社에 인수된다는 소식을 접한 개발자 원년 멤버가 합병 일보직전에 소스들고 튀어서 만든 DBMS. 그 기능이나 문법이 MySQL과 99.9% 같다. 조건없이 무료. |
MariaDB 설치
1. 본 설치 과정은 MariaDB 10.9.3 버전을 압축 파일(zip)로 설치하는 과정에 대한 설명이다.
버전이 다르거나 파일 타입(msi라던가)이 다를 경우 그 과정이 달라질 수 있음.
2. 다운로드는 [MariaDB 재단 사이트](https://mariadb.org/)(`https://mariadb.org/`)에서 가능하다.
3. 다운로드 받은 압축 파일을 아래 요건에 맞는 위치에 압축 해제한다.
1. 본인이 기억할 수 있는 위치여야함.
2. 앞으로 이동하거나 삭제하지 않을 위치여야함.
3. 경로 상에 영문 및 숫자, 공백을 제외한 다른 문자가 들어가지 않아야함.
4. 본 예제에서는 그 경로를 `C:\2208250900dbms\ `로 가정한다.
5. 위 경로로 이동하면 아래와 같이 구성요소가 나열되어 있으면 된다.
(나열되어있지 않은 기타 파일은 없어도 상관 없음.)
- [디렉토리] `bin`
- [디렉토리] `include`
- [디렉토리] `lib`
- [디렉토리] `share`
4. 명령 프롬프트(`cmd`)를 실행한다. (`Win`+`R`, `실행`창에 `cmd`입력 후 확인)
5. 아래 명령을 입력하여 MariaDB의 압축을 해제한 경로로 이동한다.
?>cd C:\2208250900dbms\
↑ 공백
C:\2208250900dbms> _
6. MariaDB 설치를 위해 경로 내 `bin`디렉토리로 이동하기 위해 아래 명령을 입력한다.
C:\2208250900dbms>cd bin
↑ 공백
C:\2208250900dbms\bin>_
7. MariDB 초기화 및 설치를 위해 아래 명령을 입력한다.
(아래 예에서는 12602번 포트를, 관리자 비밀번호로 `test1234`를 이용하였다.)
↓ MariaDB 서비스 이름 ↓ 포트 ↓ 최고 관리자 비밀번호
C:\2208250900dbms\bin>mysql_install_db.exe --service="MariaDB 2208250900" --port=12602 --password=test1234
↑ 공백 ↑ 공백 ↑ 공백 ↑ 공백
Default data directory is C:\2208250900dbms\data
Running bootstrap
Registering service 'MariaDB 2208250900'
Creating my.ini file
2022-09-26 12:31:13 0 [Note] C:\2208250900dbms\bin\mysqld.exe (server 10.9.3-MariaDB) starting as process 15680 ...
Removing default user
Setting root password
Creation of the database was successful
C:\2208250900dbms\bin>
MariaDB 서비스 관리
서비스 관리를 위해 아래 명령어를 실행(`Win`+`R`)에 입력한다.
services.msc
위 MariaDB 설치 과정 중에 입력한 `--services`항목 값과 일치하는 서비스를 찾은 뒤 더블 클릭하면 아래 요소를 확인 및 실행할 수 있다.
- 서비스 상태
- 서비스 시작
- 서비스 중지
MariaDB 인코딩 설정
MariaDB 최초 설치시 인코딩이 `UTF-8`로 설정되어 있지 않음으로 명령 프롬프트에서 아래와 같이 명령한다.
?>cd C:\2208250900dbms\data\
C:\2208250900dbms\data>notepad my.ini
메모장 내용을 아래와 같이 변경
[mysqld]
datadir=C:/2208250900dbms/data
port=12602
character-set-server=utf8
[mysql]
default-character-set=utf8
[client]
port=12602
plugin-dir=C:\2208250900dbms/lib/plugin
default-character-set=utf8
메모장 변경 내용 저장후 서비스(`services.msc`)에서 `MariaDB 2208250900` 항목 재시작
C:\2208250900dbms\data>cd ..\bin
C:\2208250900dbms\bin>mysql.exe -u root -p -P 12602
MariaDB [(none)]>SHOW VARIABLES LIKE '%char%';
+--------------------------+-----------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------+
| character_set_client | utf8mb3 |
| character_set_connection | utf8mb3 |
| character_set_database | utf8mb3 |
| character_set_filesystem | binary |
| character_set_results | utf8mb3 |
| character_set_server | utf8mb3 |
| character_set_system | utf8mb3 |
| character_sets_dir | C:\2208250900dbms\share\charsets\ |
+--------------------------+-----------------------------------+
8 rows in set (0.001 sec)
위와 같이 전체 인코딩이 `utf8mb3`(혹은 `utf8mb4`)로 변경되었는지 확인
MariaDB 최초 접속
1. 명령 프롬프트에서 아래 명령어를 입력하여 MariaDB 클라이언트가 있는 위치로 이동한다.
?>cd C:\2208250900dbms\bin\
↑ 공백
C:\2208250900dbms\bin> _
2. MariaDB에 접속하기 위해 아래와 같이 명령한다.
최종적으로 `MariaDB [(none)]`으로 명령줄이 변경되었으면 접속 성공.
┌ 접속할 사용자 이름
↓ ↓ 포트 번호
C:\2208250900dbms\bin>mysql.exe -u root -p -P 12602
↑ ↑ ↑ ↑ ↑ 공백
Enter Password: ********
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.9.3-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> _
3. MariaDB 클라이언트에서 빠져나오기 위해 아래와 같이 명령한다.
MariaDB [(none)]> exit
Bye
C:\2208250900dbms\bin> _
CRUD
C(Create) : (없던 것을)만드는 것. 게시글 작성, 회원 가입 등.
R(Read) : 어떠한 데이터가 있는지 확인하거나, 존재하는 데이터를 읽는 것. 게시글 읽기, 로그인 등.
U(Update) : 존재하는 데이터를 수정하는 것. 게시글 수정, 회원정보 수정 등.
D(Delete) : 존재하는 데이터를 삭제하는 것. 게시글 삭제, 회원 탈퇴 등.
(WA, WS를 제외한)웹의 대부분의 기능은 `CRUD`에 입각하여 개발할 수 있다.
MariaDB의 데이터 구조
MariaDB의 데이터 구조는 스키마(Schema) ⊃ 테이블(Table) ⊃ 레코드(Record)의 포함관계로 되어있다.
스키마(Schema)
- 스키마는 다른 이름으로 데이터베이스(Database)라고 부른다.
- 스키마는 서로 관련있는 테이블을 포함하는 용도로 사용한다.
- 스키마는 실제 데이터(레코드)를 직접 가지고 있지 않는다.
- 엑셀로 비유 시, 엑셀 파일 그 자체(`xlsx`파일)로 표현된다.
테이블(Table)
- 테이블은 반드시 스키마에 종속적이어야 한다.
- 테이블은 이 테이블이 담당하게 될 데이터의 규격에 맞는 열(Column)에 대한 정보를 포함한다.
- 테이블은 테이블이 가진 열 구조에 상응하는 레코드(데이터)를 포함하고 있다.
- 엑셀로 비유 시, 엑셀 파일 내의 시트(Sheet)로 표현된다.
레코드(Record)
- 레코드는 다른 이름으로 행(Row) 혹은 데이터(Data)로 불리운다.
- 레코드는 반드시 어떤 테이블에 종속적이어야 한다.
- 레코드 하나는 한 줄을 의미하고 실제 데이터이다.
- 엑셀로 비유 시, 엑셀 시트 내의 행으로 표현된다.
쿼리(Query)
쿼리(Query)란 DBMS에서 사용하는 SQL(Structured Query Language) 언어의 구문이나 그 자체를 의미한다.
'쿼리문' 혹은 'SQL문' 등으로 통용해서 부름.
모든 키워드(Keyword)는 대소문자를 가리지 않지만 통일하는 것이 좋고, 주로 대문자로만 작성한다.
`(O) create schema ...`
`(O) CREATE SCHEMA ...`
`(X) create SCHEMA ...`
`(X) Create Schema ...`
모든 구성요소(스키마, 테이블, 열 등)의 이름은 백틱(Backtick, `)으로 감싼다.
구성요소의 이름이 키워드가 아닌 경우 생략 가능.
- 모든 구성요소의 이름은 스네이크 케이스(Snake Case) 명명법을 따른다.
- 문자열 값은 홑따옴표(')로 감싼다.
- 모든 구문은 끝에 세미콜론(;)을 적어준다.
-- ↓ 문자열 값은 홑따옴표로
INSERT INTO `some_schema`.`some_table` (`some_column`) VALUES ('어떤 문자열 값');
-- ↑ ↑ ↑ 스키마와 테이블, 열의 이름은 백틱으로
주석
한 줄 주석 : 대쉬 두 개를 이용하여 아래와 같이 작성한다.
-- 대쉬 두 개를 이용하여 한 줄 주석을 이용할 수 있음.
여러 줄 주석 : `/* ... */` 형식으로 작성한다.
/*
여러 줄
주석을
남길 수
있다.
*/