편리한 도구 모음

SQL 치트시트 + 쿼리 생성기

DBMS별 SQL 문법 레퍼런스와 CRUD 쿼리 생성기를 제공합니다.

26 개 항목

조회 (SELECT)

SELECT

테이블에서 데이터를 조회합니다.

구문
SELECT col1, col2 FROM table
예제
SELECT name, age FROM users WHERE age > 20;
조회 (SELECT)

WHERE

조건을 지정하여 데이터를 필터링합니다.

구문
WHERE condition AND/OR condition
예제
SELECT * FROM users WHERE age >= 20 AND status = 'active';
조회 (SELECT)

ORDER BY

결과를 정렬합니다 (오름차순/내림차순).

구문
ORDER BY col ASC|DESC
예제
SELECT * FROM users ORDER BY created_at DESC;
조회 (SELECT)

GROUP BY / HAVING

데이터를 그룹화하고 집계 조건을 지정합니다.

구문
GROUP BY col HAVING condition
예제
SELECT dept, COUNT(*) cnt FROM emp GROUP BY dept HAVING cnt > 5;
조회 (SELECT)

LIMIT / TOP / FETCH

반환할 행 수를 제한합니다 (페이징). DBMS별로 문법이 다릅니다.

구문
LIMIT n OFFSET m
예제
SELECT * FROM users LIMIT 10 OFFSET 20;
조회 (SELECT)

DISTINCT

중복을 제거한 고유한 값만 반환합니다.

구문
SELECT DISTINCT col FROM table
예제
SELECT DISTINCT department FROM employees;
JOIN

INNER JOIN

두 테이블에서 일치하는 행만 반환합니다.

구문
INNER JOIN t2 ON t1.col = t2.col
예제
SELECT u.name, o.total FROM users u INNER JOIN orders o ON u.id = o.user_id;
JOIN

LEFT JOIN

왼쪽 테이블의 모든 행과 일치하는 오른쪽 행을 반환합니다.

구문
LEFT JOIN t2 ON t1.col = t2.col
예제
SELECT u.name, o.total FROM users u LEFT JOIN orders o ON u.id = o.user_id;
JOIN

RIGHT JOIN

오른쪽 테이블의 모든 행과 일치하는 왼쪽 행을 반환합니다.

구문
RIGHT JOIN t2 ON t1.col = t2.col
예제
SELECT o.id, u.name FROM orders o RIGHT JOIN users u ON o.user_id = u.id;
JOIN

FULL OUTER JOIN

양쪽 테이블의 모든 행을 반환합니다 (일치하지 않으면 NULL).

구문
(직접 지원 안 함 — LEFT + RIGHT UNION)
예제
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id=t2.id;
JOIN

CROSS JOIN

두 테이블의 모든 조합(카르테시안 곱)을 반환합니다.

구문
CROSS JOIN t2
예제
SELECT c.name, s.size FROM colors c CROSS JOIN sizes s;
데이터 조작 (DML)

INSERT

테이블에 새 행을 삽입합니다.

구문
INSERT INTO table (col1, col2) VALUES ('v1', 'v2')
예제
INSERT INTO users (name, email) VALUES ('홍길동', 'hong@test.com');
데이터 조작 (DML)

UPDATE

기존 행의 데이터를 수정합니다.

구문
UPDATE table SET col1 = 'v1' WHERE condition
예제
UPDATE users SET status = 'inactive' WHERE last_login < '2025-01-01';
데이터 조작 (DML)

DELETE

테이블에서 행을 삭제합니다.

구문
DELETE FROM table WHERE condition
예제
DELETE FROM users WHERE status = 'deleted' AND updated_at < '2024-01-01';
데이터 조작 (DML)

UPSERT (INSERT or UPDATE)

행이 있으면 UPDATE, 없으면 INSERT합니다. DBMS별로 문법이 크게 다릅니다.

구문
INSERT ... ON DUPLICATE KEY UPDATE col = VALUES(col)
예제
INSERT INTO users (id, name) VALUES (1, '홍길동') ON DUPLICATE KEY UPDATE name = VALUES(name);
테이블 정의 (DDL)

CREATE TABLE

새 테이블을 생성합니다. 자동 증가 ID 문법이 DBMS별로 다릅니다.

구문
CREATE TABLE t (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100))
예제
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(255) UNIQUE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
테이블 정의 (DDL)

ALTER TABLE

테이블 구조를 변경합니다 (컬럼 추가/수정/삭제).

구문
ALTER TABLE t ADD col TYPE / MODIFY col TYPE / DROP col
예제
ALTER TABLE users ADD phone VARCHAR(20);
ALTER TABLE users MODIFY name VARCHAR(200);
ALTER TABLE users DROP COLUMN phone;
테이블 정의 (DDL)

CREATE INDEX

인덱스를 생성하여 쿼리 성능을 향상시킵니다.

구문
CREATE INDEX idx ON table (col)
예제
CREATE INDEX idx_users_email ON users (email);
CREATE UNIQUE INDEX idx_users_email_unique ON users (email);
함수

문자열 함수

문자열 연결, 부분 추출, 길이, 대소문자 변환, 치환 등의 함수입니다.

구문
CONCAT(a,b), SUBSTRING(s,pos,len), LENGTH(s), UPPER(s), LOWER(s), TRIM(s), REPLACE(s,old,new)
예제
SELECT CONCAT(first_name, ' ', last_name) AS full_name, LENGTH(email) AS email_len FROM users;
함수

날짜/시간 함수

현재 날짜, 날짜 연산, 포맷 변환 등의 함수입니다. DBMS별 차이가 큽니다.

구문
NOW(), CURDATE(), DATE_ADD(d, INTERVAL n DAY), DATEDIFF(d1,d2), DATE_FORMAT(d,fmt)
예제
SELECT NOW(), DATE_ADD(created_at, INTERVAL 30 DAY) AS expires FROM users;
함수

집계 함수

COUNT, SUM, AVG, MAX, MIN 및 문자열 집계 함수입니다.

구문
COUNT(*), SUM(col), AVG(col), MAX(col), MIN(col), GROUP_CONCAT(col)
예제
SELECT dept, COUNT(*) cnt, AVG(salary) avg_sal, GROUP_CONCAT(name) names FROM emp GROUP BY dept;
함수

변환 / NULL 처리 함수

데이터 타입 변환(CAST)과 NULL 대체(COALESCE, IFNULL, ISNULL, NVL) 함수입니다.

구문
CAST(expr AS type), IFNULL(expr, default), COALESCE(a,b,...)
예제
SELECT CAST(price AS DECIMAL(10,2)), IFNULL(phone, 'N/A') FROM products;
서브쿼리 / 고급

서브쿼리 / IN

SELECT 안에 SELECT를 중첩하여 조건이나 데이터로 사용합니다.

구문
SELECT * FROM t WHERE col IN (SELECT col FROM t2)
예제
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total > 10000);
서브쿼리 / 고급

EXISTS

서브쿼리에 일치하는 행이 존재하는지 확인합니다 (IN보다 대량 데이터에 효율적).

구문
WHERE EXISTS (SELECT 1 FROM t2 WHERE ...)
예제
SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);
서브쿼리 / 고급

CTE (WITH 절)

복잡한 쿼리를 읽기 쉬운 이름 붙은 임시 결과로 분리합니다.

구문
WITH cte AS (SELECT ...) SELECT * FROM cte (8.0+)
예제
WITH top_users AS (
  SELECT user_id, SUM(total) as total_spent
  FROM orders GROUP BY user_id
  ORDER BY total_spent DESC LIMIT 10
)
SELECT u.name, t.total_spent FROM users u JOIN top_users t ON u.id = t.user_id;
서브쿼리 / 고급

윈도우 함수 (ROW_NUMBER, RANK)

GROUP BY 없이 파티션별 순위, 번호 매기기 등 고급 분석 함수입니다.

구문
ROW_NUMBER() OVER (PARTITION BY col ORDER BY col) (8.0+)
예제
SELECT name, dept, salary,
  ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn,
  RANK() OVER (ORDER BY salary DESC) AS rnk
FROM employees;

SQL 치트시트: MySQL, PostgreSQL, SQL Server, Oracle, SQLite 5개 DBMS별로 SQL 문법 차이를 한눈에 비교할 수 있습니다. SELECT, JOIN, INSERT, UPDATE, DELETE 등 주요 문법의 DBMS별 구문과 예제를 검색하고 복사하세요. CRUD 쿼리 생성기에서는 테이블명과 컬럼을 입력하면 선택한 DBMS에 맞는 SQL 쿼리를 자동으로 생성합니다.

Ad