クエリの基礎
HarborDBの強力なクエリエディタを使用して、SQLクエリの記述、実行、管理の基本を学びます。
HarborDBでのSQLクエリの世界へようこそ!このガイドでは、HarborDBの強力なクエリエディタを使用してSQLクエリを記述、実行、管理する基本を教えます。
HarborDBでのSQL入門
HarborDBのクエリエディタは、SQLクエリの記述と実行を直感的かつ効率的にするように設計されています。データの取得、レコードの更新、データベースオブジェクトの作成のいずれにおいても、HarborDBはシンタックスハイライト、自動補完、リアルタイム結果などの機能を備えた合理化されたワークフローを提供します。
クエリエディタの主な機能
- シンタックスハイライト: SQLキーワード、関数、リテラルが読みやすく色分けされます
- 自動補完: テーブル名、列名、SQLキーワードが入力時に提案されます
- 複数タブ: 別々のタブで複数のクエリを同時に操作できます
- 結果ペイン: エディタのすぐ下にクエリ結果を表示します
- エクスポートオプション: ワンクリックで結果をCSVまたはJSONにエクスポートできます
- クエリ履歴: 最近実行したクエリにアクセスできます
- ブックマーク: 頻繁に使用するクエリを保存して迅速にアクセスできます
最初のクエリを書く
基本的なSELECT文
最も基本的なSQLクエリは、テーブルからデータを取得します:
SELECT * FROM users;
このクエリは:
- SELECT *: テーブルからすべての列を返します
- FROM users: クエリするテーブルを指定します
- ;: ステートメントを終了します(HarborDBではオプション)
特定の列を選択する
特定の列のみを取得するには:
SELECT first_name, last_name, email FROM users;
結果の制限
大規模なテーブルを扱う場合は、結果を制限するのが良い習慣です:
SELECT * FROM orders LIMIT 10;
クエリエディタのインターフェース
主要コンポーネント
- エディタエリア: ここにSQLクエリを書きます
- ツールバー: 実行、キャンセル、フォーマット、エクスポートのコントロール
- 結果ペイン: クエリ結果と実行情報を表示します
- ステータスバー: 接続情報、行数、実行時間を表示します
キーボードショートカット
| ショートカット | アクション |
| ------------- | ------------------ |
| ⌘ + R | クエリを実行 |
| ⌘ + . | クエリをキャンセル |
| ⌘ + T | 新しいクエリタブ |
| ⌘ + W | 現在のタブを閉じる |
| ⌘ + S | クエリを保存 |
| ⌘ + F | クエリ内を検索 |
| ⌘ + / | コメントを切り替え |
| Tab | 選択をインデント |
| Shift + Tab | 選択をアンインデント |
クエリの実行
ステップバイステップの実行
- クエリをエディタに書く
- 実行ボタン(▶)をクリックするか
⌘ + Rを押す - 結果ペインで結果を表示
- ステータスバーで実行情報を確認
部分的なクエリ実行
クエリの一部のみを実行できます:
- 実行したいテキストを選択
- 右クリックして「選択を実行」を選択
- またはキーボードショートカット
⌘ + Shift + Rを使用
実行結果
クエリを実行すると、以下が表示されます:
- 結果グリッド: ソート可能でフィルタ可能なテーブルにデータが表示されます
- 行数: 返された行の合計数
- 実行時間: クエリの実行にかかった時間
- メッセージ: PostgreSQLからのメッセージ(特にDMLクエリの場合)
WHEREによるデータのフィルタリング
基本的なWHERE句
SELECT * FROM products WHERE price > 100;
複数の条件
SELECT * FROM orders
WHERE status = 'shipped'
AND order_date >= '2024-01-01';
LIKEによるパターンマッチング
SELECT * FROM customers
WHERE email LIKE '%@gmail.com';
SELECT * FROM products
WHERE name LIKE 'Pro%';
NULL値
-- emailがNULLの行を検索
SELECT * FROM users WHERE email IS NULL;
-- emailがNOT NULLの行を検索
SELECT * FROM users WHERE email IS NOT NULL;
ORDER BYによる結果の並べ替え
昇順(デフォルト)
SELECT * FROM products ORDER BY price;
降順
SELECT * FROM products ORDER BY price DESC;
複数の並べ替え列
SELECT * FROM employees
ORDER BY department, last_name, first_name;
結果の操作
結果の表示
- スクロール: マウスまたはキーボードで結果をナビゲート
- ソート: 列ヘッダーをクリックして昇順/降順にソート
- フィルタ: 列ヘッダーを右クリックして値をフィルタ
- サイズ変更: 列の境界をドラッグして幅を調整
- 並べ替え: 列ヘッダーをドラッグして列を並べ替え
セル操作
- セルをコピー: セルをダブルクリックするか
⌘ + Cを押す - セルを編集: ダブルクリックして編集(ローカルの変更のみ)
- 完全な内容を表示: 切り詰められたセルにホバーしてツールチップを表示
結果のエクスポート
- ツールバーのエクスポートボタンをクリック
- 形式を選択: CSVまたはJSON
- 保存先を選択: ファイルに保存またはクリップボードにコピー
- オプションを設定: 区切り文字、エンコーディング、ヘッダー
クエリの保存と整理
クエリの保存
- 保存をクリック(
⌘ + S)または保存アイコン - 保存先を選択: ローカルファイルまたはHarborDBライブラリ
- メタデータを追加: 名前、説明、タグ
クエリライブラリ
保存したクエリをフォルダで整理:
- お気に入り: 頻繁に使用するクエリにスターを付ける
- 最近使用したもの: 最近使用したクエリを自動的に追跡
- タグ: カスタムタグでクエリを分類
クエリテンプレート
一般的なクエリの再利用可能なテンプレートを作成:
-- テンプレート: 非アクティブユーザーを検索
SELECT user_id, email, last_login
FROM users
WHERE last_login < CURRENT_DATE - INTERVAL '90 days'
AND active = true;
一般的なクエリパターン
レコードのカウント
SELECT COUNT(*) FROM users;
SELECT COUNT(DISTINCT country) FROM customers;
データの集計
SELECT
category,
COUNT(*) as product_count,
AVG(price) as avg_price,
MIN(price) as min_price,
MAX(price) as max_price
FROM products
GROUP BY category;
日付/時刻クエリ
-- 今日の注文
SELECT * FROM orders WHERE order_date = CURRENT_DATE;
-- 過去7日間
SELECT * FROM logs
WHERE log_date >= CURRENT_DATE - INTERVAL '7 days';
-- 月別
SELECT
EXTRACT(MONTH FROM order_date) as month,
COUNT(*) as order_count
FROM orders
GROUP BY EXTRACT(MONTH FROM order_date)
ORDER BY month;
テーブルの結合
SELECT
o.order_id,
o.order_date,
c.first_name,
c.last_name,
c.email
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.status = 'completed';
ベストプラクティス
1. SELECT * から始める
新しいテーブルを探索するときは、SELECT * を使用してすべての列を確認し、その後特定の列に絞り込みます。
2. LIMITを使用する
見慣れないテーブルをクエリするときは、常に LIMIT を使用して圧倒的な結果を避けます。
3. クエリをフォーマットする
読みやすさのため一貫したフォーマットを使用:
- キーワードは大文字で
- 複雑なクエリはインデント
- 長い句には改行
4. コードにコメントを追加する
複雑なクエリにはコメントを追加:
-- 製品カテゴリ別の月次収益を計算
-- 返金された注文とテストアカウントを除外
SELECT
DATE_TRUNC('month', order_date) as month,
category,
SUM(amount) as total_revenue
FROM orders
WHERE status != 'refunded'
AND customer_id NOT IN (SELECT customer_id FROM test_accounts)
GROUP BY DATE_TRUNC('month', order_date), category
ORDER BY month DESC, total_revenue DESC;
5. WHERE 1=0 でテストする
データを取得せずに列構造を確認:
SELECT * FROM large_table WHERE 1=0;
一般的な問題のトラブルシューティング
「リレーションが存在しません」
- テーブル名のスペルと大文字小文字を確認
- 正しいデータベースに接続していることを確認
- 適切な権限があることを確認
「列が存在しません」
- SELECT句の列名を確認
- タイプミスを確認
- まず
SELECT *を使用して利用可能なすべての列を確認
遅いクエリ
- パフォーマンスをテストするために
LIMITを追加 - 不足しているインデックスを確認
EXPLAINを使用してクエリ計画を分析- サーバー側のパフォーマンス要因を考慮
接続エラー
- 接続がアクティブであることを確認
- ネットワーク接続を確認
- PostgreSQLサーバーが実行中であることを確認
次のステップ
クエリの基礎を理解したら:
- 自分のデータベーステーブルで練習する
- 高度なクエリテクニック ガイドを探索する
- データのエクスポート について学ぶ
- パフォーマンス最適化 テクニックを試す
クイックリファレンス
必須SQL句
SELECT- 返す列を選択FROM- クエリするテーブルを指定WHERE- 行をフィルタORDER BY- 結果をソートLIMIT- 行数を制限GROUP BY- データを集計HAVING- 集計データをフィルタ
一般的な関数
COUNT()- 行をカウントSUM()- 値を合計AVG()- 値を平均MIN()/MAX()- 極値を検索COALESCE()- NULL値を処理CONCAT()- 文字列を結合EXTRACT()- 日付の部分を取得