MongoDB

MacOS 터미널에서 MongoDB Homebrew tap을 추가한다.

brew tap mongodb/brew

 

1. brew로 MongoDB 설치

brew install mongodb-community@8.0

 

CLI에서 MongoDB를 처리하여 싶으면 아래 명령어도 입력한다

bre install mongodb-community-shell

 

2. MongoDB 실행

brew services start mongodb-community@8.0

 

MongoDB의 포트는 27017

아래의 주소로 들어가서 하단에 문구가 뜨면 성공적으로 켜진것이다.

 

3. MongoDB 정지

brew services stop mongodb-community@8.0

 

 

'Database > MongoDB' 카테고리의 다른 글

[MongoDB] MongoDB 란 무엇인가?  (0) 2025.02.19

들어가기 전

간단한 프로젝트로 프론트와 백을 구축하고 무료로 이용할 수 있는 DB를 찾던 중 MongoDB를 알게 되서 공부하게 됐다. 이번 글에는 MongoDB가 어떤건지에 대해서 알아보는 시간을 가지려고 한다.

 

[출처] : https://velopert.com/436

 

[MongoDB] 강좌 1편: 소개, 설치 및 데이터 모델링 | VELOPERT.LOG

소개 MongoDB는 C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑합니다. 또한, 현존하는 NoSQL 데이터베이스 중 인지도 1위를 유지하

velopert.com

 

1. MongoDB란?

MongoDB는 테이블 형태가 아닌 document(JSON)의 형태로 데이터를 저장하며 스키마형 DB다.

SQL 보다 쉽고 빠른 장점을 가지고 있고, NoSQL방식 중 가장 인기가 많다.

 

2. NoSQL?
우리가 DB 하면 흔히 생각 나는 것이 MySQL과 같은 SQL일 것이다. 그렇다면 NoSQL은 무엇일까?

NoSQL 'Not only SQL'의 의미를 가졌으며 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터 저장소이다.

관계형이 아닌 NoSQL은 Join이 존재하지 않는다.

 

MongoDB는 Document Oriented(문서지향) DB다. Document는 일반적으로 문서라는 뜻이다. 여기서 말하는 Document는 RDMS의 레코드와 비슷한 개념이다. 이 데이터 구조는 한 개 이상의 key-value pair으로 이루어져 있다.

MongoDB 샘플
{
   "_id" : "123",
  "username" : "Jaka",
  "name" : "Jaka_Park"
}

왼쪽이 Key, 오른쪽이 Value다.

 

Document는 동적(dynamic)의 schema 를 갖고있다. 같은 Collection 안에 Document 끼리 다른 schema를 갖고 있을 수 있다.

(즉, 서로 다른 데이터들을 가지고 있을 수 있다.)

 

3. Collection

Collection은 MongoDB Document의 모음이다. Doucment들이 Collection내부에 위치하고 있다. RDMS의 비슷한 개념이지만 RDMS와 달리 따로 Schema를 가지고 있지 않다. Document 부분 설명에 나와있듯이 각 Document들이 동적인 schema를 가지고 있다.

 

RDMS와의 비교

RDBMS MongoDB
Database Database
Table Collection
Tuple / Row Document
Column Key / Field
Table Join Embeded Documents
Primary Key Primay Key (_id)
mysqld mongod
mysql mongo

 

4. 장점

- Schema-less (Schma 가 없다. 같은 Collection 안에 있을지라도 다른 Schema를 가지고 있을 수 있다.)

- 각 객체의 구조가 뚜렷하다

- 복잡한 Join이 없다

- Deep Query ability 문서 지향적 Query Language 를 사용하여 SQL 만큼 강력한 Query 성능을 제공한다.

'Database > MongoDB' 카테고리의 다른 글

[MongoDB] MongoDB 설치 (Mac Homebrew)  (0) 2025.02.19

1. Database(데이터베이스) 생성

-- 기본 인코딩 방식은 utfmb4
-- mb4 : most bytes 4 : 4byte씩 사용하는 utf8 문자 집합으로 유니코 문자를 지원하겠다.
-- utfmb4 : 4byte씩 사용하는 utf8 문자 집합으로 유니코드 문자를 지원하겠다. (전세계 문자  + 이모티콘 사용 가능)
-- general : 비교 정렬 규칙을 정의
-- ci : 대소문자 구분 안함.
-- JAKA 라는 이름의 데이터베이스를 만들겠다

CREATE DATABASE JAKA DEFAUTL CHARACTER SET utfmb4 COLLATE utf8mb4_general_ci;

 

2. Database 보기

SHOW DATABASES;

 

3. Database 삭제

-- JAKA 라는 이름의 데이터베이스 삭제
DROP DATABASE JAKA;

 

4. Database 사용

-- JAKA 라는 데이터베이스를 사용하겠다.
USE JAKA;

 

5. 현재 사용중인 데이터베이스의 테이블 내용을 확인

SHOW TABLES;

 

6. 테이블 생성

-- CREATE TABLE 테이블 이름 (컬럼이름 데이터타입 옵션)
-- AUTO_INCREMENT : 자동으로 증가한다. (인덱스 형태를 의미)
-- 테이블에 열이 하나씩 추가될 때마다 증가
-- PRIMARY KEY : 고유한 키 하나만 존재할 수 있다
-- VARCHAR : 256Byte의 가변 데이터 (우리가 20자까지 사용을 안하면 알아서 맞춘다.)
CREATE TABLE store(id INT AUTO_INCREMENT PRIMARY KEY, tel VARCHAR(20));

 

7. 테이블의 필드명 확인

-- store라는 테이블의 필드를 보여준다
DESC store;

 

8. 테이블 값 추가

-- NOT_NULL : NULL 값이 들어갈 수 없다. 즉, 빈 값을 넣을 수 없다는 의미다
-- DEFAULT : 입력을 안하면 남자로 기본값이 들어간다

CREATE TABLE user(
  user_id VARCHAR(20) PRIMARY KEY,
  user_pw VARCHAR(20) NOT_NULL,
  user_name VARChAR(10) NOT_NULL,
  gender CHAR(4) DEFAULT '남자',
  date DATETIME DEFAULT now()
);


-- 괄호의 순서대로 값을 할당하겠다.
-- VALUES(추가할 데이터 내용들)
-- PRIMARY KEY는 같은 값이 포함되면 데이터가 들어가지 않는다.
INSERT INTO user(user_id, user_pw, user_name) VALUES ('userid0', '123', 'jaka1');

 

9. 조회

-- * : 모든 필드를 의미
-- user : 조회하고 싶은 테이블
SELECT * FROM user;

-- 조회를 할 때 원하는 필드의 내용을 찾아서 조회
-- WHERE 조회할 속성을 정해줄 수 있다.
-- user_id가 userid0 인 값의 모든 필드명 조회
SELECT * FROM user WHERE user_id = 'userid0';

-- user_id, user_name 필드명을 user_name이 jaka1에서 조회
SELECT user_id, user_name FROM user WHERE user_name = 'jaka1;

-- 테이블의 값 오름차순 내림차순 조회
-- DESC : 필드명 기준 내림차순 / ASC : 필드명 기준 오름차순
SELECT * FROM 이름 ORDER BY 필드이름 DESC/ASC;

-- 테이블의 값을 조회할 때 시작 데이터 조회
-- A로 시작하는 데이터를 가지고 있는 row 들을 조회
SELECT * FROM 테이블이름 WHERE 필드 LIKE 'A%';

-- A로 끝나는 데이터를 가지고 있는 row들을 조회
SELECT * FROM 테이블이름 WHERE 필드 LIKE '%A';

 

10. 값 수정

-- UPDATE 테이블명 SET 변경할필드='값' WHERE 필드명='필드ID';
UPDATE user SET gender='남자', user_name='jakas' WHERE user_id='userid0';

 

11. 테이블 삭제

-- user 테이블에서 user_id가 userid0 인 값을 삭제
DELETE FROM user WHERE user_id='userid0';

 

12. 테이블 이름 바꾸기

ALTER TABLE 테이블이름 RENAME 변경이름;

 

13. 컬럼의 이름, 데이터 타입 바꾸기

ALTER TABLE 이름 CHANGE 기존컬럼이름 새로운컬럼이름 데이터타입;

 

14. 컬럼의 타입만 변경

ALTER TABLE 테이블명 MODIFY 컬럼의이름 수정할데이터타입;

 

15. 필드를 제거

ALTER TABLE 테이블이름 DROP 필드이름;

 

16. 필드 추가

-- 필드 추가
-- 필드 맨뒤로 추가
ALTER TABLE 이름 ADD 필드이름 데이터타입

-- 필드 맨앞 추가
ALTER TABLE 이름 ADD 필드이름 데이터타입 first;

'Database > MySql' 카테고리의 다른 글

SQL 첫 시작 (MySql의 시작)  (0) 2024.06.30
Database(데이터베이스)에 대하여 짧게 알아보자  (0) 2024.06.29

목차

1.   SQL이란?

2.  SQL의 개요 (DDL,  DML, DCL)

3.  데이터 타입

(문자형, 숫자형,  날짜형)

 

 

 

1. SQL 이란?

SQL은 'Structured Query Language'의 약자로, 데이터베이스에서 데이터를 충출하고 조작하는 데 사용하는 데이터 처리 언어이다.

쉽게 표현해서 데이터를 보관할 공간을 만들거나 데이터를 저장 삭제 조회를 할 수 있게 해준다.

 

2. SQL의 개요

SQL 의 명령어는 크게 3가지로 나눌 수 있는데 다음과 같다. DDL (데이터의 정의어), DML (데이터의 조작어), DCL (데이터의 제어어) 가 있다. 각각의 명령어에 대해서 간략하게 알아 보자.

 

- DDL (데이터의 정의어)

테이블이나 단계의 구조를 생성하는데 사용하는 구문

(1) CREATE  (2) SHOW (3) DROP (4) ALTER

 

- DML (데이터의 조작어)

테이블의 데이터 검색, 작성, 수정, 삭제 등을 하는 구문 (CRUD를 생각하면 편하다)

자주 사용할 구문이니 잘 알아둘 필요가 있다.

(1) SELECT  (2) INSERT (3) UPDATE (4) DELETE

 

- DCL (데이터의 제어어)

데이터의 사용 권한을 관리하는데 사용하는 구문

(1) GRANT (2) REVOKE

 

3. 데이터 타입

1) 문자형

- VARCHAR :  가변 길이 문자형으로 VARCHAR(문자의 길이)로 정의한다.

가령 문자의 길이를 5로 정의를 했다 가정고 실제 입력한 문자가 3개를 입력하면 입력한 3개의 문자열만 저장한다.

저장의 최대값은 64Kb 다

 

- CHAR

고정 길이 문자형으로 CHAR(문자의 길이)로 정의한다.

가령 문자의 길이를 5로 정의하고 3개만 입력하면 나머지는 공백문자로 채워진다. (VARCHAR의 차이점)

문자 갯수는 255개까지 가능하다.

 

- TEXT : VARCHAR보다 더 큰 무자의 값을 저장할 때 사용

(TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT)

TINYTEXT : 255byte ( 255개의 문자)

TEXT : 64kb(65,535 개 문자)

MEDIUMTEXT : 64mb

LONGTEXT : 4gb

 

- BLOB : 이미지처럼 크기가 큰 문자열의 데이터를 저장할 때 사용 (데이터가 비효율적이여서 요즘에는 사용하지 않는 것을 권장한다.)

 

2) 숫자형 (정수형 / 실수형)

옵션

1. UNSIGNED : 0보다 큰수만 입력할 수 있는 옵션 (양수)

2. ZEROFULL : 빈자리를 0으로 채워주겠다. 선언된 크기의 값에서 입력한 숫자의 자리를 제외한 나머지를 0으로 처리

 

정수형

1. TINYINT : TINYINT(숫자의 길이) -128 ~ 127 사이의 정수를 표현할 수 있는 데이터 타입 (숫자의 길이) 여기부분은 생략가능

UNSIGNED : 0 ~ 255

 

2. SMALLINT : SMALLINT() -32,768 ~ 32,767까지의 정수를 저장할 수 있는 데이터 타입

UNSIGNED : 0 ~ 65,535

 

3. MEDIUMINT : -8,388,608 ~ 8,388,607까지 저장할 수 잇는 데이터 타입

UNSIGNED : 0 ~ 16,777,215

 

4. INT : -2,147,483,648 ~ 2,147,483,647 까지 저장할 수 있는 데이터 타입 / INTEGER와 같은 데이터 타입

UNSIGNED : 0 ~ 4,297,967,295

 

5. BIGINT : 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

실수형

- DECIMAL : 고정 소수 실수형 DECIMAL(갯수, 소수점 자리수) 최대 65 자리 소수점 자리를 안 쓰면 10으로 기본 적용.

소수점은 30자리까지 지정 가능.

 

- DOUBLE : 부동 소수 실수 DECIMAL과 다르게 근사값을 저장한다. 10자리를 주고 10 자리가 넘어가면 정확하지 않은 값이 저장될 수 있다. (FLOAT는 DOUBLE보다 작은 데이터 타입이다.)

 

3) 날짜형

- DATE : 1000-01-01 ~ 9999-12-31까지의 날짜를 저장할 수 있는 데이터 타입.

MySql에서 기본으로 제공하는 형식은 yyyy-mm-dd 형식을 사용한다. (오늘 날짜 기준 2024-06-30)

 

- DATETIME : 날짜랑 시간까지 포함해서 저장한다. (2024-06-30 11:36:45)

- TIME : 시간만 표시 / YEAR : 년도만 표시

 

'Database > MySql' 카테고리의 다른 글

MySql2 명령어 모음  (0) 2024.06.30
Database(데이터베이스)에 대하여 짧게 알아보자  (0) 2024.06.29

목차

1. Database (데이터베이스)란

2. DBMS (Database Management System)

4. RDBMS (관계형)

 

 

1. Database (데이터베이스)란?

데이터베이스는 정보를 저장하는 공간으로

데이터의 집합이라고 생각하면 된다.

 

2. DBMS (Database Management System)

데이터베이스라는 말이 정보를 저장하는 공간이라고 표현한다면 DBMS(Database Management System)는 데이터를 관리하고 운영하는 소프트 웨어를 의미한다.

 

3. RDBMS (관계형)

대부분의 DBMS는 RDBMS (=관계형 DBMS)의 형태로 사용된다. RDBMS의 데이터베이스는 테이블(table)이라는 단위로 구성되며 이 테이블은 열(Row)과 행(Column)으로 이루어져 있다.

테이블 예시

앞으로 우리가 다룰 MySql도 대표적인 RDBMS 중 하나다.

 

비관계형은 거의 쓰지 않기 때문에 블로그에서는 따로 언급하거나 다루지 않을 예정이다.

 

'Database > MySql' 카테고리의 다른 글

MySql2 명령어 모음  (0) 2024.06.30
SQL 첫 시작 (MySql의 시작)  (0) 2024.06.30

+ Recent posts