Skip to content
Back to skills

Db Query

ASecurity

データベースクエリ・分析支援。SQLクエリの作成、実行、結果の分析を行う。BigQuery、PostgreSQL、MySQL対応。トリガー: /db-query, SQL, クエリ, データ分析, BigQuery

  • 666 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 8, 2026
databasesbashsql

Works with

  • cli

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill db-query --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Db Query?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Db Query
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-db-query/badge)](https://www.skillsdirectory.com/skills/majiayu000-db-query)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: db-query
description: "データベースクエリ・分析支援。SQLクエリの作成、実行、結果の分析を行う。BigQuery、PostgreSQL、MySQL対応。トリガー: /db-query, SQL, クエリ, データ分析, BigQuery"
user-invocable: true
allowed-tools: Bash, Read, Grep, Glob
model: sonnet
---

# データベースクエリ・分析スキル

SQLクエリの作成、実行、結果の分析を支援します。

## 対応データベース

| DB | CLIツール | 接続方法 |
|----|----------|---------|
| BigQuery | `bq` | `bq query --use_legacy_sql=false` |
| PostgreSQL | `psql` | `psql -h host -U user -d db` |
| MySQL | `mysql` | `mysql -h host -u user -p db` |
| SQLite | `sqlite3` | `sqlite3 file.db` |

## 機能

### 1. クエリ作成支援

自然言語からSQLを生成:

```
ユーザー: 「先月のアクティブユーザー数を日別で」

生成SQL:
SELECT
  DATE(created_at) AS date,
  COUNT(DISTINCT user_id) AS active_users
FROM events
WHERE created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)
  AND event_type = 'login'
GROUP BY date
ORDER BY date;
```

### 2. クエリ実行

```bash
# BigQuery
bq query --use_legacy_sql=false --format=prettyjson '
SELECT ...
'

# PostgreSQL
psql -c "SELECT ..." -h $DB_HOST -U $DB_USER -d $DB_NAME

# MySQL
mysql -e "SELECT ..." -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME
```

### 3. 結果分析

```markdown
## クエリ結果分析

### データサマリー
- **行数**: 1,234
- **期間**: 2025-01-01 〜 2025-01-31

### 主要な発見
1. 1/15に急増(前日比 +150%)
2. 週末は平日の60%程度
3. 平均: 1,000 users/day

### 可視化
| 日付 | ユーザー数 | 傾向 |
|------|-----------|------|
| 1/1  | 500       | ▂ |
| 1/2  | 800       | ▅ |
| 1/15 | 2000      | █ |
```

## クエリパターン集

### ユーザー分析

```sql
-- DAU/WAU/MAU
SELECT
  COUNT(DISTINCT CASE WHEN DATE(ts) = CURRENT_DATE() THEN user_id END) AS dau,
  COUNT(DISTINCT CASE WHEN ts >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) THEN user_id END) AS wau,
  COUNT(DISTINCT CASE WHEN ts >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) THEN user_id END) AS mau
FROM events;

-- リテンション
WITH cohort AS (
  SELECT
    user_id,
    DATE(MIN(created_at)) AS cohort_date
  FROM users
  GROUP BY user_id
)
SELECT
  cohort_date,
  COUNT(DISTINCT c.user_id) AS cohort_size,
  COUNT(DISTINCT CASE WHEN DATE(e.ts) = DATE_ADD(cohort_date, INTERVAL 7 DAY) THEN c.user_id END) AS day7_retained
FROM cohort c
LEFT JOIN events e ON c.user_id = e.user_id
GROUP BY cohort_date;
```

### パフォーマンス分析

```sql
-- スロークエリ (PostgreSQL)
SELECT
  query,
  calls,
  total_time / 1000 AS total_seconds,
  mean_time / 1000 AS mean_seconds
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

-- テーブルサイズ
SELECT
  schemaname,
  tablename,
  pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) AS size
FROM pg_tables
ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC
LIMIT 10;
```

### エラー分析

```sql
-- エラー頻度
SELECT
  error_code,
  error_message,
  COUNT(*) AS count,
  MIN(ts) AS first_seen,
  MAX(ts) AS last_seen
FROM error_logs
WHERE ts >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY error_code, error_message
ORDER BY count DESC;
```

## 出力形式

```markdown
## クエリ実行結果

### クエリ
```sql
SELECT ...
```

### 実行情報
- **データベース**: BigQuery / production
- **実行時間**: 2.3秒
- **スキャン量**: 1.2 GB
- **結果行数**: 1,234

### 結果

| date | active_users | change |
|------|-------------|--------|
| 2025-01-01 | 1,000 | - |
| 2025-01-02 | 1,200 | +20% |
| 2025-01-03 | 950 | -21% |

### 分析

**トレンド**:
- 全体的に横ばい
- 週末に減少傾向

**異常値**:
- 1/15 に急増(イベント影響?)

**推奨アクション**:
1. 1/15 の急増要因を調査
2. 週末施策の検討
```

## セキュリティ注意事項

### 必須ルール

- **SELECT文のみ実行**: DELETE, UPDATE, DROP, INSERT, TRUNCATE, ALTER は絶対に実行しない
- **本番DBへの直接接続は避ける**: 可能な限りレプリカを使用
- **結果の取り扱い**: 個人情報を含む場合は注意
- **クエリログ**: 実行したクエリは記録される前提で

### 安全なクエリ実行

```bash
# PostgreSQL: 読み取り専用トランザクションを使用
psql -c "SET TRANSACTION READ ONLY; SELECT ..." -h $DB_HOST -U $DB_USER -d $DB_NAME

# MySQL: 読み取り専用フラグ
mysql --safe-updates -e "SELECT ..." -h $DB_HOST -u $DB_USER $DB_NAME

# BigQuery: ドライランで事前確認
bq query --dry_run --use_legacy_sql=false 'SELECT ...'
```

### 禁止パターン検出

実行前にクエリを検証し、以下のパターンが含まれる場合は**実行を拒否**:

- `DELETE`, `UPDATE`, `INSERT`, `DROP`, `TRUNCATE`, `ALTER`, `CREATE`
- `; --` (SQLインジェクションパターン)
- `GRANT`, `REVOKE` (権限操作)

## BigQuery 固有

```bash
# テーブル一覧
bq ls project:dataset

# スキーマ確認
bq show --schema project:dataset.table

# クエリ実行(ドライラン)
bq query --dry_run --use_legacy_sql=false 'SELECT ...'

# 結果をテーブルに保存
bq query --destination_table=project:dataset.result 'SELECT ...'
```

## 使用方法

```bash
# 自然言語でクエリ作成
/db-query 先月のDAUを日別で出して

# SQLを直接実行
/db-query --execute "SELECT COUNT(*) FROM users"

# スキーマ確認
/db-query --schema users
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.