対象 | コマンド | 作用 |
---|---|---|
データベース | 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 | 解析 |
テーブルを作成できます。
CREATE
[ TEMP | TEMPORARY ] -- テンポラリテーブルとして作成
TABLE TableName
( FieldName [ FieldType ] [ FieldConstraint ] [, ...] )
※[ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。
SQLite Query Language: CREATE TABLE
TEMPキーワード (TEMPORARYでも同義) を指定して作成したテーブルはテンポラリテーブルとなり、データベースへの接続を解除時に自動で削除されます。作成するフィールドには、データ型とフィールド制約を指定できます。
フィールド名を指定する代わりに、既存のテーブルからフィールドを取得してテーブルを作成することもできます。
CREATE [ TEMP | TEMPORARY ] -- テンポラリテーブルとして作成 TABLE TableName AS SelectCommand -- セレクトコマンド
SQLiteのデータベースには「sqlite_master」と呼ばれるテーブルが必ず存在し、データベース内に定義されたテーブルの情報を参照できます。(7) How do I list all tables/indices contained in an SQLite database - SQLite Frequently Asked Questions
C:\>sqlite sample.sqlite SQLite version 2.8.17 Enter ".help" for instructions sqlite> create table user(id,name); sqlite> .mode line sqlite> select * from sqlite_master; type = table name = user tbl_name = user rootpage = 3 sql = create table user(id,name)テーブルスキーマ (構造) の確認 - テーブルの作成 - SQLite入門
データを追加できます。
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' )
データを取得できます。SQLの基礎「SELECT」文を覚えよう - @IT 篠原光太郎 (2000/06/21)
SELECT [ ALL | DISTINCT ] -- 重複の除外 FieldName [, ...] -- 取得するフィールド [ FROM TableName [, ...] ] -- 対象とするテーブル [ WHERE FilterCondition ] -- 検索条件 [ GROUP BY FieldName [, ...] ] -- グループ化 [ HAVING FilterCondition ] -- グループの検索条件 [ ORDER BY FieldName[ ASC | DESC ] [, ...] ] -- 並べ替え [ LIMIT Number [ OFFSET Number ] ] -- 取得位置※[ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。
WHERE句で抽出条件の指定を行います。またcount()で、条件に一致したデータの件数を取得できます。
DISTINCTキーワードを指定すると、重複する行が結果に含まれないようになります。重複と認められるのは、取得されるフィールドすべてが一致した場合です。なおALLキーワードは重複した行も取得することを意味し、これはキーワード省略時の既定の動作です。よってこれを明示的に指定することはないでしょう。
たとえば次のようなNULLを含むフィールドを、ORDER BYで並べ替えるとします。
field1 | |
---|---|
1 | 1 |
2 | 2 |
3 | (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) |
(1) の結果からわかるように、既定ではNULLは最も小さな要素とみなされて並べ替えられます。よってこれを昇順で並べると、(2) のようにNULLが最初になります。
もし昇順でもNULLを最後に配置するならば、IS演算子を併用し (3) のように記述します。
データを変更できます。
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
FROM [ DatabaseName. ]
TableName
[ WHERE FilterCondition ] -- 削除対象のデータ抽出条件
WHEREで削除対象のデータを指定しないと、すべてのデータが削除されます。
データを大量に削除したときには、VACUUMコマンドで不要となった領域を削除すべきです。
インデックスを作成できます。
CREATE [ UNIQUE ] INDEX [ DatabaseName. ] IndexName ON TableName ( FieldName [, ...] )※[ ]で囲まれた項目は省略可能です。また[, ...]はカンマ区切りで、複数の項目を指定可能です。
CREATE INDEX index1 ON table1( field1, field2 )
なおインデックスとは、データを高速に検索するために作られる補助的なデータ構造です。インデックスの作り過ぎに注意 - 特集:基礎から理解するデータベースのしくみ:ITpro (2006/01/23)
データ削除後に不要となった領域を削除し、データサイズを縮小できます。
VACUUM [ IndexName | DatabaseName. ]SQLite Query Language: VACUUM
C:\>sqlite3 sample.sqlite3 SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> VACUUM; sqlite> .exit
コード | 説明 |
---|---|
-- |
コメント記号から行末までをコメントとします。(1行コメント) |
/* */ |
コメント開始記号と終了記号で囲まれた部分をコメントとします。 |