SQLite/SQLリファレンス
以下は、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 公式ドキュメント を参照してください。