SQL이란 무엇인가? 데이터베이스 언어를 쉽게 설명
SQL(Structured Query Language, 흔히 "에스큐엘" 또는 "시퀄"이라고 읽음)은 관계형 데이터베이스를 다루는 표준 언어입니다. 관계형 데이터베이스는 데이터를 행과 열로 이루어진 표에 저장하며, Postgres, MySQL, SQLite, SQL Server가 여기에 속합니다. SQL로 데이터에 질문을 던지고("이번 달에 예약한 고객은 누구인가요?"), 레코드를 추가, 변경, 삭제할 수 있습니다. 1970년대부터 존재해 왔고, 국제 표준이며, 세계 앱의 엄청난 비중을 지탱하고 있습니다.
AI로 만들 때 SQL이 중요한 이유
AI 앱 빌더에게 "주문을 저장해 줘" 또는 "다가오는 예약 목록을 보여 줘"라고 요청하면, 무언가가 데이터베이스와 통신해야 합니다. 대부분의 앱에서 그것은 SQL이며, 직접 작성되거나 ORM이 생성합니다.
여러분이 직접 SQL을 작성할 필요는 없지만, 조금 이해하면 도움이 됩니다.
- 내 데이터를 직접 확인할 수 있습니다. 짧은 쿼리로 "이번 주 가입자가 몇 명인가요?"에 새 화면을 만드는 것보다 빨리 답할 수 있습니다.
- 더 나은 보고서를 요청할 수 있습니다. "월별, 서비스별로 매출을 묶어 줘"는 SQL의 개념입니다. 이를 알면 요청이 더 명확해집니다.
- 위험한 변경을 알아볼 수 있습니다.
WHERE절이 없는DELETE나UPDATE는 모든 행에 영향을 줍니다. 실행되기 전에 잡아낼 가치가 있습니다. - 데이터가 갇히지 않습니다. SQL은 공유되는 표준이므로, SQL 데이터베이스의 데이터는 많은 도구가 옮기고 읽을 수 있습니다.
일상적인 비유
매우 잘 정돈된 도서관과, 정확하고 단순한 언어만 쓰는 사서를 떠올려 보세요.
여러분이 직접 서가를 뒤지지 않습니다. 사서에게 카드를 건넵니다. "이 작가의 책 중 2010년 이후에 나온 것을 최신순으로 전부 찾아 주세요." 사서는 건물을 속속들이 알고 있어서, 정확히 그 책들을 그 순서대로 가져옵니다.
SQL은 그 카드에 적힌 언어입니다. 여러분은 어떻게 찾을지가 아니라 무엇을 원하는지 말합니다. 가장 빠른 경로는 데이터베이스가 스스로 알아냅니다.
SQL의 작동 방식: 테이블, 행, 열
관계형 데이터베이스는 데이터를 테이블에 보관합니다. 각 테이블은 한 종류의 것을 담고, 각 행은 하나의 레코드이며, 각 열은 하나의 정보입니다.
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders
| id | customer_id | total | placed_at |
|---|---|---|---|
| 101 | 1 | 42.00 | 2026-09-20 |
| 102 | 2 | 18.50 | 2026-09-22 |
| 103 | 1 | 25.00 | 2026-09-27 |
customer_id 열은 각 주문을 고객과 연결합니다. 이 연결 덕분에 데이터베이스가 "관계형"입니다.
실제 예시: 실제 질문에 답하기
1. 데이터 읽기 — "리스본에 사는 모든 고객을 보여 줘":
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
2. 정렬하고 개수 제한하기 — "가장 최근 주문 5개":
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. 테이블 결합하기 — "각 주문과 고객 이름":
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. 요약하기 — "고객별 총 지출":
SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;
위의 예시 데이터로 이 쿼리는 Lena Ortiz 67.00, Sam Patel 18.50을 반환합니다.
5. 데이터 변경하기:
INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');
UPDATE customers SET city = 'Porto' WHERE id = 1;
DELETE FROM orders WHERE id = 102;
이 명령들은 거의 모든 앱의 네 가지 기본 동작에 해당합니다. 생성, 읽기, 수정, 삭제이며, 이를 CRUD라고 합니다.
주의할 점이 있습니다. WHERE 절 없이 UPDATE customers SET city = 'Porto';를 실행하면 모든 고객이 바뀝니다. 변경을 실행하기 전에는 항상 WHERE를 확인하세요.
SQL의 주요 명령
| 명령 | 하는 일 |
|---|---|
SELECT | 데이터 읽기 |
INSERT | 새 행 추가 |
UPDATE | 기존 행 변경 |
DELETE | 행 삭제 |
CREATE TABLE / ALTER TABLE | 테이블 구조 생성 또는 변경 |
WHERE | 영향을 받을 행 필터링 |
JOIN | 관련 테이블 결합 |
GROUP BY | 행을 그룹으로 묶어 COUNT, SUM, AVG로 요약 |
ORDER BY / LIMIT | 결과 정렬과 개수 제한 |
SQL은 표준화되어 있지만, 각 데이터베이스는 **방언(dialect)**이라고 부르는 자체 확장 기능을 추가합니다. Postgres, MySQL, SQLite는 위의 예시를 모두 이해하지만, 날짜 함수 같은 세부 사항은 조금씩 다릅니다.
핵심 용어
| 용어 | 의미 |
|---|---|
| 쿼리 | SQL 문, 특히 데이터를 읽는 문. |
| 테이블 / 행 / 열 | 한 종류의 것 / 레코드 하나 / 속성 하나. |
| 기본 키(primary key) | 각 행을 고유하게 식별하는 열. 보통 id. |
| 외래 키(foreign key) | 다른 테이블의 행을 가리키는 열. 예: customer_id. |
| 인덱스 | 열을 검색하는 속도를 크게 높이는 조회 구조. |
| 스키마 | 모든 테이블과 열의 구조. |
| 트랜잭션 | 함께 성공하거나 함께 실패하는 변경들의 묶음. |
| SQL 인젝션 | 사용자 입력을 쿼리에 몰래 끼워 넣는 공격. 매개변수화된 쿼리로 막습니다. |
흔한 오해
- "SQL은 데이터베이스다." SQL은 언어이고, Postgres, MySQL, SQLite는 그 언어를 쓰는 데이터베이스입니다.
- "SQL은 오래되어서 낡았다." 성숙한 것이지 쓸모없는 것이 아닙니다. 현대의 데이터베이스와 데이터 도구도 여전히 SQL을 사용하며, 새로운 도구도 SQL 지원을 추가하는 경우가 많습니다.
- "개발자만 SQL을 쓸 수 있다." 분석가, 마케터, 창업자도 간단한 쿼리를 매일 사용합니다.
- "SQL은 유연한 데이터를 다루지 못한다." 많은 SQL 데이터베이스는 JSON도 저장합니다. 예를 들어 Postgres에는
jsonb타입이 있습니다. SQL과 NoSQL 비교를 참고하세요. - "AI가 운영 데이터에 대해 아무 SQL이나 실행해도 괜찮다." 읽기는 위험이 낮지만, 실시간 데이터의 변경과 삭제는 백업과 한 번 더 확인이 필요합니다. 앱 데이터베이스를 백업하는 법을 참고하세요.
AI 빌더에게 요청할 것
- "데이터베이스의 테이블 목록과 각 열이 무엇을 뜻하는지 보여 주세요."
- "읽기 전용 쿼리를 작성해 주세요. 지난 30일 동안 하루에 몇 명이 새로 가입했나요?"
- "UPDATE나 DELETE를 실행하기 전에, 쿼리와 영향을 받을 행 수를 먼저 보여 주세요."
- "가장 자주 필터링하고 정렬하는 열에 인덱스를 추가해 주세요."
- "사용자 입력을 사용하는 모든 쿼리가 매개변수화되어 있는지 확인해 주세요."
- "주문과 결제 업데이트는 트랜잭션으로 묶어서, 절반만 성공하지 않게 해 주세요."
Mythex의 SQL
앱이 데이터를 저장해야 할 때, Mythex는 프로젝트에 전용 Postgres 데이터베이스를 추가합니다. 채팅에서 "대기자 이메일을 데이터베이스에 저장해 줘"처럼 요청하거나, /database 명령(Database)을 사용하세요. 에이전트가 테이블을 만들고 쿼리를 작성하며, Ask 모드에서 어떤 쿼리든 쉬운 말로 설명해 달라고 할 수 있습니다. 데이터베이스 자체에 대해서는 Postgres란 무엇인가를 읽어 보세요.
자주 묻는 질문
SQL이란 쉽게 말해 무엇인가요?
SQL(Structured Query Language, 구조화된 질의 언어)은 관계형 데이터베이스를 다루기 위한 표준 언어입니다. 데이터에 질문을 던지거나, '이번 주에 들어온 주문은 무엇인가' 같은 질문을 하고, 레코드를 추가, 변경, 삭제할 때 사용합니다.
SQL은 어떻게 발음하나요?
'에스큐엘(S-Q-L)'이라고 글자를 하나씩 읽는 방식과 '시퀄(sequel)'이라는 방식 모두 흔하고 맞습니다. 이 언어는 원래 SEQUEL이라고 불렸는데, 두 번째 발음은 여기서 왔습니다.
SQL은 프로그래밍 언어인가요?
SQL은 데이터를 관리하기 위해 설계된 질의 언어입니다. 원하는 결과를 설명하면 데이터베이스가 가져오는 방법을 알아서 정합니다. SQL만으로 앱 전체를 만들지는 않지만, 관계형 데이터베이스를 쓰는 거의 모든 앱의 일부입니다.
SQL은 배우기 어렵나요?
기초는 쉽습니다. SELECT, WHERE, ORDER BY, INSERT, UPDATE, DELETE만으로도 일상적인 대부분의 필요를 충족하며, 거의 영어 문장처럼 읽힙니다. 조인, 그룹화, 성능 튜닝을 익히는 데는 더 오래 걸립니다.
AI로 앱을 만들려면 SQL을 알아야 하나요?
아니요. AI 빌더가 SQL이나 데이터베이스 코드를 대신 작성합니다. 조금 알면 데이터를 확인하고, 보고서를 요청하고, 위험한 변경이 일어나기 전에 알아챌 때 도움이 됩니다.