본문 바로가기
카테고리 없음

SQL과 NoSQL은 무엇이 다를까|데이터베이스 종류를 쉽게 이해하기

by by_merry 2026. 4. 22.

데이터베이스를 공부하기 시작하면 MySQL, MongoDB 같은 이름이 계속 나온다. 그런데 조금 더 찾아보면 “SQL 데이터베이스”, “NoSQL 데이터베이스”라는 말도 같이 보인다.

처음에는 둘 다 비슷해 보인다. 어차피 둘 다 데이터를 저장하는 데이터베이스인데, 왜 이름이 다를까?

나도 처음에는 SQL이랑 NoSQL이 완전히 다른 프로그램 이름인 줄 알았다. 그런데 알고 보니, 데이터베이스를 저장하는 방식 자체가 다르다는 뜻이었다.

쉽게 말하면:

  • SQL = 표처럼 정리해서 저장
  • NoSQL = 더 자유롭게 저장

이라는 차이가 있다.

 

SQL은 엑셀처럼 표로 저장한다

SQL 데이터베이스는 데이터를 표(Table) 형태로 저장한다.

예를 들어 회원 정보를 저장한다고 해보자.

id name email age
1 Mary mary@test.com 20
2 Tom tom@test.com 22

즉:

  • 세로줄 = 어떤 정보인지 (이름, 이메일, 나이)
  • 가로줄 = 한 사람의 정보

처럼 저장한다.

그래서 SQL 데이터베이스는 엑셀이나 표처럼 정리된 형태를 좋아한다.

대표적인 SQL 데이터베이스는:

  • MySQL
  • PostgreSQL
  • SQLite

등이 있다.

그리고 이런 데이터베이스는 SQL이라는 명령어로 데이터를 찾는다.

예를 들어:

SELECT * FROM users;

라고 쓰면 users 테이블의 모든 데이터를 가져온다.

NoSQL은 JSON처럼 자유롭게 저장한다

NoSQL 데이터베이스는 표 대신 JSON처럼 저장하는 경우가 많다.

예를 들어 회원 정보를 저장하면 이렇게 될 수 있다.

{
  "name": "Mary",
  "email": "mary@test.com",
  "age": 20
}

그리고 어떤 사람은 age가 있고, 어떤 사람은 hobby가 있어도 괜찮다.

{
  "name": "Tom",
  "email": "tom@test.com",
  "hobby": "soccer"
}

즉, NoSQL은 꼭 모든 사람이 같은 모양일 필요가 없다.

그래서 구조가 자주 바뀌는 데이터에 더 편하다.

대표적인 NoSQL 데이터베이스는 MongoDB다.

왜 SQL은 칸을 미리 정해야 할까

SQL 데이터베이스는 표처럼 저장하기 때문에, 처음에 어떤 칸이 필요한지 미리 정해야 한다.

예를 들어 users 테이블을 만든다면:

  • id
  • name
  • email
  • age

같은 칸을 먼저 만든다.

그리고 나중에 데이터를 넣는다.

즉, 모든 사람이 같은 형식이어야 한다.

예를 들어 Mary는 age가 있고, Tom은 age가 없으면 SQL에서는 비어 있는 칸으로 남는다.

처음에는 조금 불편해 보일 수 있다. 하지만 대신 데이터가 깔끔하게 정리된다.

그래서:

  • 회원 정보
  • 주문 내역
  • 은행 거래 기록

처럼 규칙이 정확한 데이터에 잘 어울린다.

NoSQL은 왜 더 자유롭다고 할까

NoSQL은 미리 칸을 정하지 않아도 된다.

예를 들어 쇼핑몰 상품을 저장한다고 해보자.

어떤 상품은 색상이 있고, 어떤 상품은 사이즈가 있고, 어떤 상품은 배터리 용량이 있을 수 있다.

이걸 SQL로 저장하면 칸이 너무 많아지고 복잡해진다.

하지만 NoSQL은 상품마다 필요한 정보만 넣으면 된다.

{
  "name": "셔츠",
  "size": "M",
  "color": "blue"
}

{
  "name": "노트북",
  "ram": "16GB",
  "battery": "10시간"
}

처럼 서로 다른 구조로 저장할 수 있다.

그래서 NoSQL은 데이터 종류가 계속 바뀌는 서비스에 많이 사용된다.

SQL과 NoSQL 중 무엇이 더 좋을까

많은 사람이 “어느 쪽이 더 좋냐”를 궁금해한다.

하지만 둘 중 하나가 무조건 더 좋은 것은 아니다.

상황에 따라 다르다.

상황 더 어울리는 것
회원 정보, 주문 내역, 은행 SQL
게시글, 채팅, 다양한 상품 정보 NoSQL

예를 들어 은행은 돈 계산이 정확해야 한다.

잔액이 틀리면 안 되고, 거래 기록도 정확해야 한다.

그래서 SQL을 많이 사용한다.

반면 SNS나 쇼핑몰은 데이터 형태가 계속 바뀐다.

게시글마다 사진이 있을 수도 있고 없을 수도 있고, 상품마다 정보가 다르다.

그래서 NoSQL이 더 편할 수 있다.

왜 요즘은 MongoDB를 많이 사용할까

React나 Node.js를 배우다 보면 MongoDB를 정말 자주 보게 된다.

왜냐하면 MongoDB는 JSON처럼 데이터를 저장하기 때문이다.

그리고 JavaScript도 JSON을 많이 사용한다.

즉, 프론트엔드에서 받은 데이터를 거의 그대로 MongoDB에 넣을 수 있다.

예를 들어 API에서 이런 JSON을 받았다고 해보자.

{
  "title": "Hello",
  "views": 120
}

그러면 MongoDB에도 거의 같은 모양으로 저장할 수 있다.

그래서 JavaScript, Node.js, MongoDB를 함께 사용하는 경우가 많다.

나도 처음에는 SQL이 더 어려워 보였는데, 표처럼 생각하니까 오히려 이해가 쉬웠다. 반대로 NoSQL은 자유롭지만, 처음에는 구조가 일정하지 않아서 조금 더 헷갈렸다.

한눈에 비교하면

구분

SQL

NoSQL

저장 방식 표(Table) JSON 형태
구조 미리 정해야 함 자유롭게 바뀔 수 있음
대표 예시 MySQL, PostgreSQL MongoDB
잘 어울리는 곳 은행, 회원, 주문 SNS, 채팅, 쇼핑몰

한 줄로 정리하면

SQL은 표처럼 정리해서 저장하는 데이터베이스이고, NoSQL은 더 자유롭게 저장하는 데이터베이스다.

그래서 규칙이 정확한 데이터에는 SQL, 구조가 자주 바뀌는 데이터에는 NoSQL이 더 잘 어울린다.