본문 바로가기
데이터베이스

SQL과 NoSQL 문법 차이, 예제

by 상똥 2024. 1. 3.

1. 테이블 생성

MySQL MongoDB
CREATE TABLE table_name (
    id NUMBER NOT NULL,
    name VARCHAR(30),
    age NUMBER,
    PRIMARY KEY(id)
)
db.table_name.insertOne ({ id: 1, name: “user”, age: 27 })


db.createCollection("table_name")

 

table_name
id
name
age

 

 

2. 데이터 삽입

MySQL MongoDB
INSERT INTO table_name VALUES (1, “user”, 27) db.table_name.insertOne ({ id: 1, name: “user”, age: 27 })

 

3. 테이블 삭제

MySQL MongoDB
DROP TABLE table_name db.table_name.drop()

 

4. SELECT

MySQL MongoDB
SELECT * FROM table_name; db.table_name.find()
SELECT id, name FROM table_name; db.table_name.find(
    { },
    { id: 1, name: 1, age: 0 }
)

 

5. WHERE

MySQL MongoDB
SELECT *
FROM table_name
WHERE name=”A”;
db.table_name.find( {name: ”A”} )
SELECT id, name
FROM table_name
WHERE name= "A"; 
db.table_name.find(
    { name: "A"},
    { id: 1, name: 1, age: 0 }
)
SELECT *
FROM table_name
WHERE name !="A";
db.table_name.find(
    { name: { $ne: "A"} }
)
SELECT id, name
FROM table_name
WHERE age > 25 AND age <= 50
db.table_name.find(
    { age: {.$gt:25, $lte: 50 } }
)
SELECT *
FROM table_name
WHERE name like "A%"
db.table_name.find( {name: /^A/} )
SELECT *
FROM table_name
WHERE name = "A"
ORDER BY id ASC;
db.table_name.find( {name: "A" } ).sort( {id: 1} )
SELECT *
FROM table_name
WHERE name = "A"
ORDER BY id DESC;
db.table_name.find( {name: "A" } ).sort( {id: -1} )
SELECT COUNT(*)
FROM table_name
db.table_name.find().count()
SELECT COUNT(*)
FROM table_name
WHERE age > 30
db.table_name.count( { age: {$gt: 30} } )
SELECT DISTINCT(name)
FROM table_name
db.table_name.aggregate([{ $group : { _id : name }}])

 

 

7. 예제

(1) 사용자 테이블에서 나이순 정렬한 다음 상위 다섯명의 id와 이름 반환

MySQL MongoDB
SELECT id, name 
FROM user
ORDER BY age
LIMIT 5;
db.table_name.find(
    { }
    {id:1, name:1, age:0}
)
. sort({age: 1})
.limit(5)

 

(2) 결제 내역 테이블에서 직원별 계산 횟수 반환

MySQL MongoDB
SELECT staff_id, COUNT(amount)
FROM payment
GROUP BY staff_id;
db.payment.aggregate([
    {
        $group: {
              _id: “$staff_id”,
              totalAmount: { $sum: 1 }
         }
    },
    {
        $project: {
             staff_id: “$_id”,
             totalAmount: 1, 
             _id: 0
         }
     }
])

 

(3) 결제일별 매출액 합계를 매출액 오름차순 정렬해서 반환

MySQL MongoDB
SELECT DATE(payment_date),
SUM(amount) 
FROM payment
GROUP BY DATE(payment-date)
ORDER BY SUM(amount)
db.payment.aggregate([
    {
        $group: {
        _id: {$dateToString: {format: “%Y-%m-%d”, date: “$payment_date”}},
        totalAmount: {$sum: “$amount” }
        }
    },
    {
        $sort: {totalAmount:1}
    }
])