[SQL] MongoDB와 MySQL

MongoDB와 MySQL은 각각 NoSQL과 SQL 데이터베이스의 대표적인 예로 데이터를 저장하고 관리하는 방식이 다르다. 여기 몇 가지 기본적인 작업들에 대한 MongoDB의 명령어와 그에 해당하는 MySQL의 명령어를 비교해보고자 한다.


1. 데이터베이스 생성

  • MongoDB: use 데이터베이스명
    • MongoDB에서는 데이터베이스를 명시적으로 생성할 필요가 없다. 존재하지 않는 데이터베이스를 참조하면 자동으로 생성된다.
  • MySQL: CREATE DATABASE 데이터베이스명;

2. 데이터베이스 목록 보기

  • MongoDB: show dbs
  • MySQL: SHOW DATABASES;

3. 테이블(컬렉션) 생성

  • MongoDB: MongoDB는 스키마가 없어 테이블(컬렉션)을 미리 생성할 필요가 없습니다. 데이터 입력 시 자동으로 생성됩니다.
  • MySQL: CREATE TABLE 테이블명 (컬럼명 데이터타입, ...);

4. 데이터 삽입

  • MongoDB: db.컬렉션명.insert({key: "value", ...})
  • MySQL: INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUES (값1, 값2, ...);

5. 데이터 조회

  • MongoDB: db.컬렉션명.find({조건})
    • 모든 데이터 조회: db.컬렉션명.find()
  • MySQL: SELECT * FROM 테이블명 WHERE 조건;
    • 모든 데이터 조회: SELECT * FROM 테이블명;

6. 데이터 업데이트

  • MongoDB: db.컬렉션명.update({조건}, {$set: {key: "value"}})
  • MySQL: UPDATE 테이블명 SET 컬럼명 = '값' WHERE 조건;

7. 데이터 삭제

  • MongoDB: db.컬렉션명.remove({조건})
  • MySQL: DELETE FROM 테이블명 WHERE 조건;

이렇게 보면, MongoDB와 MySQL은 비슷한 기능을 하지만 명령어 구문이 많이 다르다는 것을 알 수 있다.

MongoDB는 문서 지향적이어서 더 유연한 데이터 구조를 가지고 있으며

MySQL은 관계형 데이터베이스로서 엄격한 테이블 구조를 가지고 있다.


1. 단일 조건 비교

  • MongoDB: 특정 필드가 주어진 값과 일치하는 문서 찾기
    db.collection.find({ "field": "value" })
  • MySQL: 특정 컬럼이 주어진 값과 일치하는 레코드 찾기
    SELECT * FROM table WHERE column = 'value';

2. 다중 조건 비교

  • MongoDB: $and 연산자를 사용하여 여러 조건을 결합
    db.collection.find({ $and: [{ "field1": "value1" }, { "field2": "value2" }] })
  • MySQL: AND 키워드를 사용하여 여러 조건을 결합
    SELECT * FROM table WHERE column1 = 'value1' AND column2 = 'value2';

3. 범위 조건 비교

  • MongoDB: $gt, $lt, $gte, $lte 연산자를 사용하여 범위 조건을 지정
    db.collection.find({ "field": { $gt: "value1", $lt: "value2" } })
  • MySQL: > , <, >=, <= 연산자를 사용하여 범위 조건을 지정
    SELECT * FROM table WHERE column > 'value1' AND column < 'value2';

4. 부정 조건 비교

  • MongoDB: $ne 연산자를 사용하여 일치하지 않는 문서를 찾음
    db.collection.find({ "field": { $ne: "value" } })
     
  • MySQL: != 또는 <> 연산자를 사용하여 일치하지 않는 레코드를 찾습니다.
    SELECT * FROM table WHERE column != 'value';

5. 포함 조건 비교

  • MongoDB: $in 연산자를 사용하여 배열 내의 값 중 하나와 일치하는 문서를 찾습니다.
    db.collection.find({ "field": { $in: ["value1", "value2"] } })
  • MySQL: IN 키워드를 사용하여 주어진 값 목록 중 하나와 일치하는 레코드를 찾습니다.
    SELECT * FROM table WHERE column IN ('value1', 'value2');

이러한 비교를 통해 MongoDB와 MySQL 모두 다양한 조건문을 지원하지만 구문과 사용 방법이 다르다는 것을 알 수 있다. MongoDB는 주로 JSON 스타일의 쿼리 언어를 사용하며 MySQL은 전통적인 SQL 구문을 사용한다.

따라서 사용하는 데이터베이스에 맞는 쿼리 언어를 숙지하는 것이 중요하다!