SQLコマンド解説

対象 コマンド 作用
データベース ATTACH DATABASE 追加
DETACH DATABASE 分離
PRAGMA 設定値の取得/設定
VACUUM 不要領域の削除
テーブル
(TABLE)
CREATE TABLE 作成
DROP TABLE 削除
ビュー CREATE VIEW 作成
DROP VIEW 削除
データ INSERT 追加
SELECT 取得
UPDATA 変更
DELETE 削除
REPLACE 置換
インデックス
(INDEX)
CREATE INDEX 作成
DROP INDEX 削除
REINDEX 再作成
トランザクション
(TRANSACTION)
BEGIN 開始
END 終了
COMMIT コミット
ROLLBACK ロールバック
トリガー CREATE TRIGGER 作成
DROP TRIGGER 削除
データ衝突 ON CONFLICT 動作設定
SQLコマンド EXPLAIN 解析
SQL As Understood By SQLite

コメント

コード 説明
-- コメント記号から行末までをコメントとします。(1行コメント)
/* */ コメント開始記号と終了記号で囲まれた部分をコメントとします。

CREATE TABLE

テーブルを作成します。

CREATE
  [ TEMP | TEMPORARY ]  -- テンポラリテーブルとして作成
  TABLE TableName
  ( FieldName [ FieldType ] [ FieldConstraint ] [, ...] )
※ [ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。

TEMPキーワード (TEMPORARYでも同義) を指定して作成したテーブルはテンポラリテーブルとなり、データベースへの接続を解除時に自動で削除されます。

作成するフィールドには、データ型フィールド制約を指定できます。

既存のテーブルから作成

フィールド名を指定する代わりに、既存のテーブルからフィールドを取得してテーブルを作成することもできます。

CREATE
  [ TEMP | TEMPORARY ]  -- テンポラリテーブルとして作成
  TABLE TableName
  AS SelectCommand      -- セレクトコマンド

INSERT

データを追加します。

INSERT
  [ OR ROLLBACK | ABORT | FAIL | IGNORE | REPLACE ] -- フィールド制約の違反時の処理
  INTO [ DatabaseName. ]
  TableName
  [ ( FieldName [, ...] ) ]      -- データを追加するフィールドの名前
  VALUES ( FieldValue [, ...] ) -- フィールドの値
※ [ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。
INSERT INTO table1 ( value1, text1 ) VALUES( 1, 'a' )

フィールド名を省略した場合には、VALUES以下にすべてのフィールドを指定する必要があります。

INSERT INTO table1 VALUES( 1, 2, 'a' )

フィールド値の指定方法

値の種類  
数値 そのまま記述
文字列 シングルクォート ( ' )で囲んで記述
NULL値 「NULL」と記述

フィールド制約

ORキーワード以下には、フィールドの制約に違反したときの処理を指定することができます。キーワード省略時はABORTの処理となり、INSERTコマンドの処理が中断されます。その他の処理についてはON CONFLICTの項目で説明しています。

INSERT OR IGNORE INTO table1 VALUES( 'test' )

SELECT

データを取得します。SQLの基礎「SELECT」文を覚えよう - @IT

SELECT
  [ ALL | DISTINCT ]                -- 重複の除外
  FieldName [, ...]                 -- 取得するフィールド
  [ FROM TableName [, ...] ]       -- 対象とするテーブル
  [ WHERE FilterCondition ]        -- 検索条件
  [ GROUP BY FieldName [, ...] ]   -- グループ化
  [ HAVING FilterCondition ]       -- グループの検索条件
  [ ORDER BY FieldName [ ASC | DESC ] [, ...] ] -- 並べ替え
  [ LIMIT Number [ OFFSET Number ] ]            -- 取得位置
※ [ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。

WHERE句で抽出条件の指定を行います。

重複を除外する

DISTINCTキーワードを指定すると、重複する行が結果に含まれないようになります。重複と認められるのは、取得されるフィールドすべてが一致した場合です。

なおALLキーワードは重複した行も取得することを意味し、これはキーワード省略時の既定の動作です。よってこれを明示的に指定することはないでしょう。

昇順による並べ替えでNULLを最後にする

例えば次のようなNULLを含むフィールドを、ORDER BYで並べ替えるとします。

table1
  field1
1 1
2 2
3 (NULL)

昇順、降順の指定を変えて結果を比較します。

昇順、降順によるNULLの扱いの比較
No. 順番 コード 結果
1 降順
SELECT * FROM table1 ORDER BY field1 DESC
2, 1, (NULL)
2 昇順
SELECT * FROM table1 ORDER BY field1 ASC
(NULL), 1, 2
3 昇順
SELECT * FROM table1 ORDER BY field1 IS NULL, field1 ASC
1, 2, (NULL)

No.1の結果からわかるように、既定ではNULLは最も小さな要素とみなされて並べ替えられます。よってこれを昇順で並べると、No.2のようにNULLが最初になり

もし昇順でもNULLを最後に配置したいと考えるならば、IS演算子を併用しNo.3のように記述します。

UPDATE

データを変更します。

UPDATE
  [ OR ROLLBACK | ABORT | FAIL | IGNORE | REPLACE ] -- フィールド制約の違反時の処理
  [ DatabaseName. ]
  TableName
  SET FieldName = FieldValue [, ...]  -- 変更するフィールド名と値
  [ WHERE FilterCondition ]           -- 変更対象のデータ抽出条件
※ [ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。

WHEREで変更対象のデータを指定しないと、すべてのデータが変更されます。

複数のフィールドを同時に変更するには、フィールド名と値の組をカンマで区切って並べます。

UPDATE table1 SET field1 = 1, field2 = 'test' WHERE index = 1

DELETE

データを削除します。

DELETE
  FROM [ DatabaseName. ]
  TableName
  [ WHERE FilterCondition ]  -- 削除対象のデータ抽出条件

データを大量に削除したときには、VACUUMコマンドで不要となった領域を削除するのが好ましいです。

CREATE INDEX

インデックスを作成します。

CREATE
  [ UNIQUE ] INDEX
  [ DatabaseName. ]
  IndexName
  ON TableName
  ( FieldName [, ...] )
※ [ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。
CREATE INDEX index1 ON table1( field1, field2 )

なおインデックスとは、データを高速に検索するために作られる補助的なデータ構造です。
インデックスの作り過ぎに注意 - 特集:基礎から理解するデータベースのしくみ:ITpro