본문 바로가기
Programming

MongoDB와 SQL: 명령어 비교

by 느리게 걷는 즐거움 2024. 6. 9.
반응형

MongoDB와 SQL: 명령어 비교

데이터베이스 관리 시스템(DBMS)은 다양한 방식으로 데이터를 관리하고 조작하는 데 사용됩니다. 가장 널리 사용되는 DBMS로는 관계형 데이터베이스(SQL 기반)와 NoSQL 데이터베이스(MongoDB 등)가 있습니다. 이 블로그 글에서는 SQL과 MongoDB의 주요 명령어를 비교하여 설명하겠습니다.

데이터베이스와 컬렉션(테이블) 생성
** SQL **
-- 데이터베이스 생성
CREATE DATABASE mydatabase;

-- 테이블 생성
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);


**MongoDB**
// 데이터베이스 생성 (암묵적)
use mydatabase;

// 컬렉션 생성
db.createCollection("users");

 

MongoDB에서는 `use` 명령어를 사용하여 데이터베이스를 선택하면, 해당 데이터베이스가 존재하지 않을 경우 자동으로 생성됩니다.

데이터 삽입
**SQL:**
INSERT INTO users (id, name, age) VALUES (1, 'Alice', 25);

**MongoDB:**
db.users.insertOne({ id: 1, name: 'Alice', age: 25 });

MongoDB에서는 JSON 형식의 도큐먼트를 사용하여 데이터를 삽입합니다.

데이터 조회
**SQL:**
SELECT * FROM users WHERE age > 20;

**MongoDB:**
db.users.find({ age: { $gt: 20 } });

MongoDB에서는 쿼리 조건을 JSON 객체 형태로 전달하며, `$gt`는 'greater than'을 의미합니다.

MongoDB의 비교 구문은 데이터 쿼리 시 조건을 설정할 때 사용됩니다. SQL에서 사용하는 `WHERE` 절과 유사하게, MongoDB에서는 다양한 비교 연산자를 사용하여 조건을 설정할 수 있습니다. 여기에서는 SQL과 MongoDB의 비교 연산자를 비교하여 설명하겠습니다.

동등 비교
**SQL:**
SELECT * FROM users WHERE age = 25;

**MongoDB:**
db.users.find({ age: 25 });
부등 비교
**SQL:**
SELECT * FROM users WHERE age != 25;

**MongoDB:**
db.users.find({ age: { $ne: 25 } });
크다(>) / 작다(<)
**SQL:**
SELECT * FROM users WHERE age > 25;
SELECT * FROM users WHERE age < 25;

**MongoDB:**
db.users.find({ age: { $gt: 25 } });
db.users.find({ age: { $lt: 25 } });
크거나 같다(>=) / 작거나 같다(<=)
**SQL:**
SELECT * FROM users WHERE age >= 25;
SELECT * FROM users WHERE age <= 25;

**MongoDB:**
db.users.find({ age: { $gte: 25 } });
db.users.find({ age: { $lte: 25 } });
여러 조건을 결합 (AND, OR)
**SQL:**
SELECT * FROM users WHERE age > 25 AND name = 'Alice';
SELECT * FROM users WHERE age > 25 OR name = 'Alice';

**MongoDB:**
db.users.find({ age: { $gt: 25 }, name: 'Alice' });  // AND 조건
db.users.find({ $or: [{ age: { $gt: 25 } }, { name: 'Alice' }] });  // OR 조건
IN 연산자
**SQL:**
SELECT * FROM users WHERE age IN (25, 30, 35);

**MongoDB:**
db.users.find({ age: { $in: [25, 30, 35] } });
BETWEEN 연산자
**SQL:**
SELECT * FROM users WHERE age BETWEEN 20 AND 30;

**MongoDB:**
db.users.find({ age: { $gte: 20, $lte: 30 } });
LIKE 연산자
**SQL:**
SELECT * FROM users WHERE name LIKE 'A%';

**MongoDB:**
db.users.find({ name: { $regex: /^A/ } });

MongoDB에서는 정규 표현식을 사용하여 패턴 매칭을 수행할 수 있습니다.

데이터 업데이트
**SQL:**
UPDATE users SET name = 'Bob' WHERE id = 1;

**MongoDB:**
db.users.updateOne({ id: 1 }, { $set: { name: 'Bob' } });

 

MongoDB의 `$set` 연산자는 도큐먼트의 특정 필드를 업데이트하는 데 사용됩니다.

데이터 삭제
**SQL:**
DELETE FROM users WHERE id = 1;

**MongoDB:**
db.users.deleteOne({ id: 1 });

 

테이블(컬렉션) 삭제
**SQL:**
DROP TABLE users;

**MongoDB:**
db.users.drop();
데이터베이스 삭제
**SQL:**
DROP DATABASE mydatabase;

**MongoDB:**
db.dropDatabase();
인덱스 생성
**SQL:**
CREATE INDEX idx_name ON users (name);

**MongoDB:**
db.users.createIndex({ name: 1 });

MongoDB에서 `1`은 오름차순 인덱스를 의미하며, `-1`은 내림차순 인덱스를 의미합니다.

결론

SQL과 MongoDB는 서로 다른 데이터 모델을 사용하지만, 데이터베이스 조작과 관련된 많은 명령어는 유사한 목적을 가지고 있습니다. SQL은 관계형 데이터 모델을 따르며, 테이블 간의 관계를 명시적으로 정의하는 데 강점을 가지고 있습니다. 

반면, MongoDB는 유연한 스키마를 제공하여 빠른 개발과 확장이 용이한 도큐먼트 지향 데이터베이스입니다. 이러한 명령어 비교를 통해 두 시스템 간의 차이점을 이해하고, 각 시스템의 강점을 최대한 활용할 수 있기를 바랍니다.

반응형

'Programming' 카테고리의 다른 글

Python의 `classmethod`: 클래스 메서드  (1) 2024.06.09
JWT (JSON Web Token)?  (0) 2024.06.09
C++ 람다 함수  (0) 2024.06.07
C++ 벡터(Vector) 초기화  (0) 2024.06.05
__VA_ARGS__ 가변인자  (0) 2024.06.05