liminfo

SQL Playground

SQLite WASM 기반 브라우저 SQL 에디터

스키마: users, orders, products

users

id, name, email, age, city

5

orders

id, user_id, product, amount, date

8

products

id, name, category, price, stock

8

지원하는 SQL 문법

SELECT

SELECT cols FROM table [JOIN table ON ...] [WHERE ...] [GROUP BY ...] [ORDER BY ...] [LIMIT n]

JOIN

INNER JOIN / LEFT JOIN table ON a.col = b.col

GROUP BY

GROUP BY col + SUM, AVG, MAX, MIN, COUNT

UPDATE / DELETE

UPDATE t SET col=val WHERE ...
DELETE FROM t WHERE ...

SQL Playground 소개

SQL 플레이그라운드는 세 개의 관계형 테이블이 미리 로드된 브라우저 기반 SQL 실행 환경입니다: `users`(id, name, email, age, city — 5행), `orders`(id, user_id, product, amount, date — 8행), `products`(id, name, category, price, stock — 8행). 텍스트 영역에 SQL 쿼리를 작성해 실행하고, 결과를 정렬된 테이블로 확인하며, 마지막 10개 쿼리 기록을 유지합니다. 데이터베이스 설치, 클라우드 자격 증명, 백엔드가 전혀 필요 없습니다.

첫 쿼리를 배우는 SQL 초보자, JOIN 로직을 스키마로 검증하는 개발자, SELECT 문법을 시연하는 강사, WHERE/ORDER BY/LIMIT/COUNT 같은 SQL 절이 어떻게 작동하는지 빠르게 확인하고 싶은 사람 누구에게나 즉시 유용한 도구입니다. 스키마는 사용자가 제품을 주문하는 일반적인 이커머스 패턴을 반영하여 샘플 데이터가 실제 상황과 유사하고 쿼리 예제가 의미 있습니다.

SQL 파서는 순수 JavaScript로 구현되어 SELECT(컬럼 선택, WHERE 조건, ORDER BY ASC/DESC, LIMIT, COUNT(*) 집계), INSERT INTO, SHOW TABLES, DESCRIBE를 처리합니다. 쿼리는 즉시 실행되고 결과는 스크롤 가능한 테이블로 표시됩니다. Ctrl+Enter로 버튼 클릭 없이 쿼리를 실행할 수 있으며, 7개의 예제 쿼리 드롭다운이 초보자가 바로 시작할 수 있도록 도와줍니다.

주요 기능

  • 미리 로드된 3개 테이블: users(5행), orders(8행), products(8행) — 현실적인 이커머스 데이터
  • SELECT: 전체 컬럼 또는 와일드카드(*), 컬럼 선택, WHERE 조건, ORDER BY ASC/DESC, LIMIT, COUNT(*)
  • WHERE 절: 6가지 비교 연산자(=, !=, >, <, >=, <=) 및 부분 문자열 검색을 위한 LIKE 지원
  • 세션 동안 테이블에 행을 추가하는 INSERT INTO 지원
  • 테이블 이름을 암기하지 않고 데이터베이스 스키마를 확인하는 SHOW TABLES와 DESCRIBE
  • 빠른 재실행을 위한 마지막 10개 실행 쿼리 기록
  • 키보드를 떠나지 않고 쿼리를 실행하는 Ctrl+Enter 단축키
  • 즉각적인 실습 학습을 위한 드롭다운에서 선택 가능한 7개의 내장 예제 쿼리

자주 묻는 질문

이 플레이그라운드에서 지원하는 SQL 문은 무엇인가요?

SELECT(컬럼 선택, WHERE, ORDER BY ASC/DESC, LIMIT, COUNT(*) 집계), INSERT INTO(명시적 컬럼 및 값 목록), SHOW TABLES, DESCRIBE를 지원합니다. UPDATE, DELETE, CREATE TABLE, DROP, JOIN은 전체 데이터베이스 엔진이 필요해 현재 지원하지 않습니다.

어떤 테이블과 데이터가 있나요?

3개의 테이블이 미리 로드됩니다. `users`는 id, name, email, age, city 컬럼에 5행(Alice/뉴욕, Bob/샌프란시스코, Charlie/시카고, Diana/뉴욕, Eve/보스턴). `orders`는 id, user_id, product, amount, date에 8행의 제품 구매 데이터. `products`는 id, name, category, price, stock에 전자제품과 액세서리 8개 항목이 있습니다.

WHERE로 결과를 필터링하는 방법은?

테이블 이름 뒤에 WHERE 절을 추가합니다: `SELECT * FROM users WHERE city = 'New York'`은 Alice와 Diana를 반환합니다. `SELECT * FROM orders WHERE amount > 500`은 500달러 이상 주문을 반환합니다. `SELECT * FROM users WHERE name LIKE '%li%'`은 이름에 "li"가 포함된 행을 반환합니다. 텍스트 값은 작은따옴표로 감쌉니다.

결과를 정렬하는 방법은?

컬럼 이름 뒤에 ORDER BY를 추가하고 선택적으로 ASC(기본값) 또는 DESC를 붙입니다: `SELECT * FROM orders ORDER BY amount DESC`는 가장 비싼 주문을 먼저 보여줍니다. `SELECT * FROM products ORDER BY price ASC`는 가장 저렴한 제품을 먼저 보여줍니다.

페이지를 새로 고침하면 데이터가 유지되나요?

아니요. 데이터베이스는 페이지가 로드될 때마다 메모리에서 새로 초기화됩니다. INSERT INTO로 추가한 행은 현재 세션에만 존재하고 페이지 새로 고침 시 사라집니다. 이는 의도적인 설계입니다 — 플레이그라운드는 매 세션이 동일한 알려진 상태에서 시작하는 안전한 샌드박스입니다.

JOIN 쿼리를 연습할 수 있나요?

현재 파서는 JOIN 문법을 지원하지 않습니다. JOIN을 간접적으로 확인하려면 먼저 `SELECT * FROM orders WHERE user_id = 1`로 Alice의 주문을 조회한 후 `SELECT * FROM products WHERE name = 'Laptop'`으로 교차 참조할 수 있습니다. 완전한 JOIN 지원을 위해서는 WebAssembly로 컴파일된 SQLite인 sql.js와 같은 완전한 SQL 엔진 통합이 필요합니다.

COUNT(*)는 어떻게 사용하나요?

SELECT 목록에 `count(*)`를 사용합니다: `SELECT count(*) FROM orders`는 orders 테이블의 총 행 수를 반환하고, `SELECT count(*) FROM users WHERE city = 'New York'`은 뉴욕 사용자 수를 반환합니다. SUM, AVG, MAX, MIN 같은 다른 집계 함수는 현재 구현되어 있지 않습니다.

SQL 기초를 배우는 데 어떻게 활용하나요?

드롭다운의 예제 쿼리부터 시작하세요: `SELECT * FROM users`로 모든 데이터를 확인한 다음, `SELECT name, email FROM users WHERE age > 25`로 선택과 필터링을 연습합니다. `SELECT * FROM orders ORDER BY amount DESC`로 정렬을 배우고, `SELECT count(*) FROM orders`로 집계를 익힙니다. 각 쿼리 결과가 바로 아래에 나타나 SQL과 출력의 연관성을 직관적으로 이해할 수 있습니다.