← 홈

🗄️SQL

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📝 기본 쿼리

🔍 SELECT 문

SELECT * FROM table 모든 열 선택
SELECT col1, col2 FROM table 특정 열 선택
SELECT DISTINCT col FROM table 고유 값 선택
SELECT col AS alias FROM table 열 별칭
SELECT * FROM table LIMIT 10 결과 제한
SELECT * FROM table OFFSET 5 행 건너뛰기
SELECT TOP 10 * FROM table 상위 N개 행 (SQL Server)

🎯 WHERE 절

WHERE col = value 같음
WHERE col <> value 같지 않음
WHERE col > value 보다 큼
WHERE col >= value 크거나 같음
WHERE col < value 보다 작음
WHERE col <= value 작거나 같음
WHERE col BETWEEN a AND b 범위 내
WHERE col IN (a, b, c) 값 목록 내
WHERE col NOT IN (a, b, c) 목록에 없음
WHERE col IS NULL NULL임
WHERE col IS NOT NULL NULL 아님
WHERE cond1 AND cond2 두 조건 모두 참
WHERE cond1 OR cond2 하나라도 참
WHERE NOT condition 조건 부정

🔤 패턴 매칭

WHERE col LIKE 'a%' a로 시작
WHERE col LIKE '%a' a로 끝남
WHERE col LIKE '%word%' word 포함
WHERE col LIKE '_a%' 두 번째 문자가 a
WHERE col LIKE '[abc]%' a, b, c로 시작
WHERE col LIKE '[^abc]%' a, b, c로 시작 안 함
WHERE col REGEXP 'pattern' 정규식 (MySQL)

📊 정렬 및 그룹화

🔢 ORDER BY

ORDER BY col 오름차순 정렬 (기본)
ORDER BY col ASC 오름차순 정렬
ORDER BY col DESC 내림차순 정렬
ORDER BY col1, col2 여러 열로 정렬
ORDER BY col1 DESC, col2 ASC 혼합 정렬 순서
ORDER BY FIELD(col, a, b, c) 사용자 정의 정렬 (MySQL)

📁 GROUP BY & HAVING

GROUP BY col 열로 그룹화
GROUP BY col1, col2 여러 열로 그룹화
HAVING COUNT(*) > 5 개수로 그룹 필터
HAVING SUM(col) > 100 합계로 그룹 필터
GROUP BY col WITH ROLLUP 소계 포함

📈 집계 함수

🔢 일반 집계

COUNT(*) 모든 행 개수
COUNT(col) NULL 아닌 값 개수
COUNT(DISTINCT col) 고유 값 개수
SUM(col) 값의 합계
AVG(col) 값의 평균
MIN(col) 최소값
MAX(col) 최대값
GROUP_CONCAT(col) 값 연결 (MySQL)
STRING_AGG(col, ",") 문자열 집계 (PostgreSQL)

🪟 윈도우 함수

ROW_NUMBER() OVER (ORDER BY col) 행 번호
RANK() OVER (ORDER BY col) 순위 (간격 있음)
DENSE_RANK() OVER (ORDER BY col) 순위 (간격 없음)
NTILE(4) OVER (ORDER BY col) 4분위로 나누기
LAG(col, 1) OVER (ORDER BY date) 이전 행 값
LEAD(col, 1) OVER (ORDER BY date) 다음 행 값
FIRST_VALUE(col) OVER (PARTITION BY grp) 파티션의 첫 값
LAST_VALUE(col) OVER (PARTITION BY grp) 파티션의 마지막 값
SUM(col) OVER (PARTITION BY grp) 파티션 내 합계
SUM(col) OVER (ORDER BY date ROWS UNBOUNDED PRECEDING) 누적 합계

🔗 조인

🔄 조인 유형

SELECT * FROM a INNER JOIN b ON a.id = b.a_id 내부 조인 (일치 행)
SELECT * FROM a LEFT JOIN b ON a.id = b.a_id 왼쪽 조인 (왼쪽 모두)
SELECT * FROM a RIGHT JOIN b ON a.id = b.a_id 오른쪽 조인 (오른쪽 모두)
SELECT * FROM a FULL OUTER JOIN b ON a.id = b.a_id 전체 외부 조인 (양쪽 모두)
SELECT * FROM a CROSS JOIN b 교차 조인 (카티션 곱)
SELECT * FROM a, b WHERE a.id = b.a_id 암시적 조인 (이전 문법)

🔁 셀프 조인 & 서브쿼리

SELECT * FROM emp e1 JOIN emp e2 ON e1.mgr_id = e2.id 셀프 조인
SELECT * FROM a WHERE id IN (SELECT a_id FROM b) WHERE의 서브쿼리
SELECT *, (SELECT COUNT(*) FROM b) AS cnt FROM a 스칼라 서브쿼리
SELECT * FROM (SELECT * FROM a WHERE x > 5) AS sub 파생 테이블
WITH cte AS (SELECT * FROM a) SELECT * FROM cte 공통 테이블 표현식 (CTE)
WITH RECURSIVE cte AS (...) SELECT * FROM cte 재귀 CTE

⚙️ 집합 연산

SELECT * FROM a UNION SELECT * FROM b 고유 행 결합
SELECT * FROM a UNION ALL SELECT * FROM b 모든 행 결합
SELECT * FROM a INTERSECT SELECT * FROM b 공통 행만
SELECT * FROM a EXCEPT SELECT * FROM b a에만 있는 행

✏️ 데이터 수정

INSERT

INSERT INTO table (col1, col2) VALUES (v1, v2) 단일 행 삽입
INSERT INTO table VALUES (v1, v2, v3) 모든 열 삽입
INSERT INTO table (cols) VALUES (v1), (v2), (v3) 여러 행 삽입
INSERT INTO table (cols) SELECT cols FROM other SELECT로 삽입
INSERT IGNORE INTO table (cols) VALUES (vals) 중복 무시 (MySQL)
INSERT INTO table (cols) VALUES (vals) ON DUPLICATE KEY UPDATE col = val Upsert (MySQL)
INSERT INTO table (cols) VALUES (vals) ON CONFLICT (col) DO UPDATE SET col = val Upsert (PostgreSQL)

🔄 UPDATE

UPDATE table SET col = value 모든 행 업데이트
UPDATE table SET col = value WHERE condition 특정 행 업데이트
UPDATE table SET col1 = v1, col2 = v2 WHERE cond 여러 열 업데이트
UPDATE table SET col = col + 1 WHERE cond 값 증가
UPDATE a SET a.col = b.val FROM a JOIN b ON a.id = b.a_id 조인으로 업데이트
UPDATE table SET col = CASE WHEN cond THEN v1 ELSE v2 END 조건부 업데이트

🗑️ DELETE

DELETE FROM table 모든 행 삭제
DELETE FROM table WHERE condition 특정 행 삭제
DELETE FROM a USING a JOIN b ON a.id = b.a_id 조인으로 삭제
TRUNCATE TABLE table 전체 삭제 (빠름, 로그 없음)
DELETE TOP (100) FROM table 제한된 행 삭제 (SQL Server)

🏗️ 스키마 & 테이블

📋 CREATE TABLE

CREATE TABLE name (col1 TYPE, col2 TYPE) 테이블 생성
CREATE TABLE name (id INT PRIMARY KEY) 기본 키 포함
CREATE TABLE name (id INT AUTO_INCREMENT) 자동 증가 (MySQL)
CREATE TABLE name (id SERIAL) 자동 증가 (PostgreSQL)
CREATE TABLE name (col TYPE NOT NULL) NOT NULL 제약
CREATE TABLE name (col TYPE DEFAULT value) 기본값
CREATE TABLE name (col TYPE UNIQUE) UNIQUE 제약
CREATE TABLE name (FOREIGN KEY (col) REFERENCES other(id)) 외래 키
CREATE TABLE name (CHECK (col > 0)) CHECK 제약
CREATE TABLE IF NOT EXISTS name (...) 없으면 생성
CREATE TABLE new AS SELECT * FROM old SELECT로 생성

🔧 ALTER TABLE

ALTER TABLE t ADD col TYPE 열 추가
ALTER TABLE t DROP COLUMN col 열 삭제
ALTER TABLE t RENAME COLUMN old TO new 열 이름 변경
ALTER TABLE t MODIFY col NEW_TYPE 열 타입 변경 (MySQL)
ALTER TABLE t ALTER COLUMN col TYPE NEW_TYPE 열 타입 변경 (PostgreSQL)
ALTER TABLE t ADD PRIMARY KEY (col) 기본 키 추가
ALTER TABLE t ADD CONSTRAINT name UNIQUE (col) UNIQUE 제약 추가
ALTER TABLE t DROP CONSTRAINT name 제약 삭제
ALTER TABLE old RENAME TO new 테이블 이름 변경

💥 DROP 및 기타

DROP TABLE table 테이블 삭제
DROP TABLE IF EXISTS table 있으면 삭제
DROP DATABASE db 데이터베이스 삭제
CREATE DATABASE db 데이터베이스 생성
CREATE SCHEMA schema 스키마 생성
CREATE INDEX idx ON table (col) 인덱스 생성
CREATE UNIQUE INDEX idx ON table (col) 유니크 인덱스 생성
DROP INDEX idx 인덱스 삭제

🏷️ 데이터 타입

🔢 숫자 타입

INT / INTEGER 정수 (-20억 ~ 20억)
BIGINT 큰 정수
SMALLINT 작은 정수 (-32K ~ 32K)
TINYINT 아주 작은 정수 (0 ~ 255)
DECIMAL(p, s) / NUMERIC(p, s) 정확한 소수 (정밀도, 스케일)
FLOAT / REAL 부동 소수점
DOUBLE 배정밀도
BOOLEAN / BOOL True/False

📅 문자열 & 날짜 타입

CHAR(n) 고정 길이 문자열
VARCHAR(n) 가변 길이 문자열
TEXT 긴 텍스트
DATE 날짜 (YYYY-MM-DD)
TIME 시간 (HH:MM:SS)
DATETIME / TIMESTAMP 날짜와 시간
BLOB / BYTEA 바이너리 데이터
JSON / JSONB JSON 데이터
UUID 범용 고유 식별자

⚙️ 함수

🔤 문자열 함수

CONCAT(s1, s2) 문자열 연결
UPPER(str) / LOWER(str) 대소문자 변환
LENGTH(str) / LEN(str) 문자열 길이
TRIM(str) 공백 제거
LTRIM(str) / RTRIM(str) 왼쪽/오른쪽 공백 제거
SUBSTRING(str, start, len) 부분 문자열 추출
REPLACE(str, old, new) 부분 문자열 교체
LEFT(str, n) / RIGHT(str, n) 왼쪽/오른쪽 문자
CHARINDEX(sub, str) 위치 찾기 (SQL Server)
POSITION(sub IN str) 위치 찾기 (PostgreSQL)
COALESCE(a, b, c) 첫 번째 NULL 아닌 값
NULLIF(a, b) a = b면 NULL 반환

📆 날짜 함수

NOW() / CURRENT_TIMESTAMP 현재 날짜와 시간
CURRENT_DATE / CURDATE() 현재 날짜
CURRENT_TIME / CURTIME() 현재 시간
DATE_ADD(date, INTERVAL 1 DAY) 날짜에 더하기 (MySQL)
date + INTERVAL '1 day' 날짜에 더하기 (PostgreSQL)
DATEDIFF(d1, d2) 일 수 차이
EXTRACT(YEAR FROM date) 날짜 부분 추출
YEAR(date) / MONTH(date) / DAY(date) 부분 추출 (MySQL)
DATE_FORMAT(date, '%Y-%m-%d') 날짜 포맷 (MySQL)
TO_CHAR(date, 'YYYY-MM-DD') 날짜 포맷 (PostgreSQL)

조건 함수

CASE WHEN cond THEN val ELSE val END Case 표현식
IF(cond, true_val, false_val) If 함수 (MySQL)
IIF(cond, true_val, false_val) If 함수 (SQL Server)
IFNULL(val, default) NULL이면 기본값 (MySQL)
ISNULL(val, default) NULL이면 기본값 (SQL Server)
NVL(val, default) NULL이면 기본값 (Oracle)
CAST(val AS type) 타입 변환
CONVERT(type, val) 타입 변환 (SQL Server)

🚀 고급

🔒 트랜잭션

BEGIN / START TRANSACTION 트랜잭션 시작
COMMIT 변경사항 커밋
ROLLBACK 변경사항 롤백
SAVEPOINT name 세이브포인트 생성
ROLLBACK TO name 세이브포인트로 롤백
SET TRANSACTION ISOLATION LEVEL ... 격리 수준 설정

📜 뷰 & 저장 프로시저

CREATE VIEW name AS SELECT ... 뷰 생성
CREATE OR REPLACE VIEW name AS ... 뷰 생성 또는 교체
DROP VIEW name 뷰 삭제
CREATE PROCEDURE name() BEGIN ... END 프로시저 생성 (MySQL)
CREATE FUNCTION name() RETURNS type AS ... 함수 생성
CALL procedure_name() 프로시저 호출
EXEC procedure_name 프로시저 실행 (SQL Server)

🔐 권한

GRANT SELECT ON table TO user 권한 부여
GRANT ALL ON database.* TO user 모든 권한 부여
REVOKE SELECT ON table FROM user 권한 취소
CREATE USER 'user'@'host' IDENTIFIED BY 'pass' 사용자 생성 (MySQL)
CREATE USER user WITH PASSWORD pass 사용자 생성 (PostgreSQL)
DROP USER user 사용자 삭제

💡

📝 쿼리 예제

-- 중복 찾기
SELECT col, COUNT(*) as cnt
FROM table GROUP BY col HAVING COUNT(*) > 1;

-- 윈도우 함수로 누적 합계
SELECT date, amount,
SUM(amount) OVER (ORDER BY date) as running_total
FROM transactions;

-- 피벗 테이블 (MySQL)
SELECT
category,
SUM(CASE WHEN year = 2023 THEN sales END) as '2023',
SUM(CASE WHEN year = 2024 THEN sales END) as '2024'
FROM data GROUP BY category;

-- 계층 구조를 위한 재귀 CTE
WITH RECURSIVE tree AS (
SELECT id, name, parent_id, 0 as level
FROM categories WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, c.parent_id, t.level + 1
FROM categories c JOIN tree t ON c.parent_id = t.id
)
SELECT * FROM tree;

🚀 모범 사례

  • SQL 인젝션 방지를 위해 항상 매개변수화된 쿼리 사용
  • WHERE, JOIN, ORDER BY에 사용되는 열에 인덱스 생성
  • EXPLAIN으로 쿼리 성능 분석
  • 프로덕션에서 SELECT * 피하기 - 명시적으로 열 지정
  • 관련된 여러 작업에 트랜잭션 사용
  • 중복 줄이기 위해 정규화, 읽기 성능을 위해 비정규화
  • 공간 절약과 성능 향상을 위해 적절한 데이터 타입 사용
  • 가능하면 LIMIT/TOP으로 결과 집합 제한