DBMS/개념정리

[공통] DBMS

xowoony 2022. 9. 27. 00:24

학습일 : 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 ('어떤 문자열 값');
 --           ↑             ↑             ↑ 스키마와 테이블, 열의 이름은 백틱으로

주석
한 줄 주석 : 대쉬 두 개를 이용하여 아래와 같이 작성한다.

 -- 대쉬 두 개를 이용하여 한 줄 주석을 이용할 수 있음.


여러 줄 주석 : `/* ... */` 형식으로 작성한다.

 /*
 여러 줄
 주석을
 남길 수
 있다.
 */