PostgreSQL, MySQL, SQLite, 및 SQL Server를 지원하는 전문가 수준의 SQL 쿼리 작성, 최적화 및 데이터베이스 스키마 설계입니다. 데이터베이스 작업 시 다음을 위해 사용하세요: (1) JOIN, 서브쿼리, 윈도우 함수를 포함한 복잡한 SQL 쿼리 작성, (2) 느린 쿼리 최적화 및 실행 계획 분석, (3) 올바른 정규화를 적용한 데이터베이스 스키마 설계, (4) 인덱스 생성 및 쿼리 성능 개선, (5) 마이그레이션 작성 및 스키마 변경 처리, (6) SQL 에러 및 쿼리 문제 디버깅
View on GitHubicartsh/icartsh_plugin
icartsh-plugin
January 20, 2026
Select agents to install to:
npx add-skill https://github.com/icartsh/icartsh_plugin/blob/main/icartsh-plugin/skills/sql-expert/SKILL.md -a claude-code --skill sql-expertInstallation paths:
.claude/skills/sql-expert/# SQL Expert Skill
PostgreSQL, MySQL, SQLite 및 SQL Server 전반에 걸친 SQL 데이터베이스의 작성, 최적화 및 관리를 위한 전문가 가이드입니다.
## 핵심 역량 (Core Capabilities)
이 SKILL을 통해 다음을 수행할 수 있습니다:
- JOIN, 서브쿼리, CTE 및 윈도우 함수를 포함한 **복잡한 SQL 쿼리 작성**
- EXPLAIN 실행 계획 및 인덱스 권장 사항을 활용한 **느린 쿼리 최적화**
- 올바른 정규화(1NF, 2NF, 3NF, BCNF)를 적용한 **데이터베이스 스키마 설계**
- 쿼리 성능을 위한 **효과적인 인덱스 생성**
- 롤백 지원을 포함한 안전한 **데이터베이스 마이그레이션 작성**
- **SQL 에러 디버깅** 및 에러 메시지 해석
- 적절한 격리 수준(isolation levels)을 적용한 **트랜잭션 처리**
- **JSON/JSONB** 데이터 타입 활용
- 테스트를 위한 **샘플 데이터 생성**
- **데이터베이스 다이얼렉트 간 변환** (PostgreSQL ↔ MySQL ↔ SQLite)
---
## 지원하는 데이터베이스 시스템 (Supported Database Systems)
### PostgreSQL
**적합한 사례**: 복잡한 쿼리, JSON 데이터, 고급 기능, ACID 준수
```bash
pip install psycopg2-binary sqlalchemy
```
### MySQL/MariaDB
**적합한 사례**: 웹 애플리케이션, WordPress, 읽기 비중이 높은 워크로드
```bash
pip install mysql-connector-python sqlalchemy
```
### SQLite
**적합한 사례**: 로컬 개발, 임베디드 데이터베이스, 테스트
```bash
pip install sqlite3 # Python 내장
```
### SQL Server
**적합한 사례**: 엔터프라이즈 애플리케이션, Windows 환경
```bash
pip install pyodbc sqlalchemy
```
---
## 쿼리 작성 (Query Writing)
### JOIN을 포함한 기본 SELECT
```sql
-- 필터링이 포함된 단순 SELECT
SELECT
column1,
column2,
column3
FROM
table_name
WHERE
condition = 'value'
AND another_condition > 100
ORDER BY
column1 DESC
LIMIT 10;
-- INNER JOIN
SELECT
users.name,
orders.order_date,
orders.total_amount
FROM
users
INNER JOIN
orders ON users.id = orders.user_id
WHERE
orders.status = 'completed';
-- LEFT JOIN (주문이 없는 사용자를 포함하여 모두 조회)
SELECT
users.name,
COUNT(orders.id) as order_count,
COALESCE(SUM(orders.total_amount), 0) as total_spent
FROM
users
LEFT JOIN
orders ON users.id = orders.user_id
GROUP BY
users.id, users.name;
```
### 서브쿼리 및 CTE (Common Table Expression)
```sql
-- WHERE 절의 서브쿼리
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
-- CTE (가독성 향상을 위해 권장)
WITH high_value_customers AS (
SELECT
user_id,
SUM(tot