コンテンツにスキップ

SQLite/SQLリファレンス

出典: フリー教科書『ウィキブックス(Wikibooks)』

以下は、SQLite が理解する SQL のリファレンスです。SQLite は標準 SQL の大部分をサポートしていますが、一部の機能を省略している一方で、独自の機能を追加している部分もあります。このドキュメントでは、SQLite がサポートする SQL の部分とサポートしない部分を正確に説明します。

SQLite が理解する SQL のリファレンス

[編集]

集計関数 (Aggregate Functions)

[編集]

SQLite は以下の集計関数をサポートしています:

  • COUNT()
  • SUM()
  • AVG()
  • MIN()
  • MAX()
  • GROUP_CONCAT()
SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM employees;

ALTER TABLE

[編集]

テーブルの構造を変更するために使用されます。

  • ADD COLUMN: 新しい列を追加します。
  • RENAME TO: テーブルの名前を変更します。
ALTER TABLE users ADD COLUMN email TEXT;
ALTER TABLE users RENAME TO customers;

ANALYZE

[編集]

データベースの統計情報を収集し、クエリプランナーのパフォーマンスを向上させます。

ANALYZE;

ATTACH DATABASE

[編集]

別のデータベースファイルを現在のデータベース接続にアタッチします。

ATTACH DATABASE 'backup.db' AS backup;

トランザクション制御 (BEGIN/COMMIT/ROLLBACK)

[編集]
  • BEGIN TRANSACTION: トランザクションを開始します。
  • COMMIT TRANSACTION: トランザクションをコミットします。
  • ROLLBACK TRANSACTION: トランザクションをロールバックします。
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

コメント (COMMENT)

[編集]

SQLite は単一行コメント (--) と複数行コメント (/* ... */) をサポートしています。

-- これは単一行コメントです
/* これは
   複数行コメントです */

コア関数 (Core Functions)

[編集]

SQLite は多くの組み込み関数を提供しています:

  • ABS(), COALESCE(), LENGTH(), LOWER(), UPPER(), など。
SELECT LOWER(name) FROM users;

CREATE INDEX

[編集]

テーブルにインデックスを作成します。

CREATE INDEX idx_email ON users(email);

CREATE TABLE

[編集]

新しいテーブルを作成します。

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
);

CREATE TRIGGER

[編集]

トリガーを作成します。

CREATE TRIGGER update_timestamp AFTER UPDATE ON users
BEGIN
    UPDATE users SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
END;

CREATE VIEW

[編集]

仮想的なテーブル(ビュー)を作成します。

CREATE VIEW active_users AS SELECT * FROM users WHERE active = 1;

CREATE VIRTUAL TABLE

[編集]

仮想テーブルを作成します(例: FTS5 を使用した全文検索テーブル)。

CREATE VIRTUAL TABLE docs USING fts5(content);

日付と時刻関数 (Date and Time Functions)

[編集]
  • DATE(), TIME(), DATETIME(), JULIANDAY(), STRFTIME()
SELECT DATE('now');

DELETE

[編集]

テーブルから行を削除します。

DELETE FROM users WHERE id = 1;

DETACH DATABASE

[編集]

アタッチされたデータベースをデタッチします。

DETACH DATABASE backup;

DROP

[編集]
  • DROP INDEX: インデックスを削除します。
  • DROP TABLE: テーブルを削除します。
  • DROP TRIGGER: トリガーを削除します。
  • DROP VIEW: ビューを削除します。
DROP TABLE users;

EXPLAIN

[編集]

SQL ステートメントの実行プランを表示します。

EXPLAIN SELECT * FROM users;

式 (Expression)

[編集]

SQLite は複雑な式をサポートしています:

  • 算術演算 (+, -, *, /)
  • 比較演算 (=, !=, >, <)
  • 論理演算 (AND, OR, NOT)
SELECT * FROM users WHERE age > 18 AND active = 1;

INDEXED BY

[編集]

特定のインデックスを使用するようにクエリを強制します。

SELECT * FROM users INDEXED BY idx_email WHERE email = 'test@example.com';

INSERT

[編集]

テーブルに新しい行を挿入します。

INSERT INTO users (name, age) VALUES ('Alice', 25);

JSON 関数

[編集]

SQLite は JSON データを操作するための関数を提供しています:

  • json(), json_array(), json_object(), json_extract()
SELECT json_extract(data, '$.name') FROM json_table;

キーワード (Keywords)

[編集]

SQLite がサポートする SQL キーワードの一覧は、公式ドキュメントを参照してください。

数学関数 (Math Functions)

[編集]
  • ABS(), ROUND(), RANDOM(), など。
SELECT ROUND(3.14159, 2);

ON CONFLICT 句

[編集]

挿入または更新時の競合を処理します。

INSERT INTO users (id, name) VALUES (1, 'Alice') ON CONFLICT(id) DO UPDATE SET name = 'Bob';

PRAGMA

[編集]

SQLite の設定を変更または取得します。

PRAGMA foreign_keys = ON;

REINDEX

[編集]

インデックスを再構築します。

REINDEX;

REPLACE

[編集]

行を置換または挿入します。

REPLACE INTO users (id, name) VALUES (1, 'Alice');

RETURNING 句

[編集]

挿入、更新、削除後に影響を受けた行を返します。

DELETE FROM users WHERE id = 1 RETURNING *;

SAVEPOINT

[編集]

トランザクション内でセーブポイントを作成します。

SAVEPOINT my_savepoint;

SELECT

[編集]

データをクエリします。

SELECT * FROM users WHERE age > 18;

UPDATE

[編集]

テーブルの行を更新します。

UPDATE users SET age = 30 WHERE id = 1;

UPSERT

[編集]

行を挿入または更新します。

INSERT INTO users (id, name) VALUES (1, 'Alice') ON CONFLICT(id) DO UPDATE SET name = 'Bob';

VACUUM

[編集]

データベースの最適化を行います。

VACUUM;

ウィンドウ関数 (Window Functions)

[編集]
  • ROW_NUMBER(), RANK(), DENSE_RANK(), など。
SELECT name, ROW_NUMBER() OVER (ORDER BY age) FROM users;

WITH 句

[編集]

共通テーブル式 (CTE) を使用します。

WITH cte AS (SELECT * FROM users WHERE age > 18)
SELECT * FROM cte;

このリファレンスは、SQLite がサポートする SQL の主要な機能をカバーしています。詳細については、SQLite 公式ドキュメント を参照してください。