コマンド例
基本
$ sqlite3 -version # バージョンを表示
$ sqlite3 database.sqlite3 # データベースに接続する(同名ファイルがなければ作成して接続する)
sqlite> .help -- ヘルプを表示する
sqlite> .show -- 設定情報を表示する
sqlite> .exit -- 終了する
ファイル操作
-- CSVを取り込む
sqlite> .separator , -- 区切り文字を変更する
sqlite> .import file table -- 指定したファイルのデータをテーブルに挿入する
-- バックアップを取る
sqlite> .output backup.dump -- 出力先を任意のファイルに指定する
sqlite> .dump [table] -- テーブルのデータを出力する
-- 復元する
sqlite> .read backup.dump -- バックアップを元に復元する(同じ名前のテーブルが存在する場合はエラーが発生する)
テーブル操作
sqlite> .tables -- テーブルの一覧を表示する
sqlite> .schema [table] -- テーブルのスキーマを表示する
-- CREATE
sqlite> CREATE TABLE table (column_a [type], column_b [type]); -- テーブルを作成する。型の指定は任意。
sqlite> CREATE INDEX index on table (column); -- インデックスを追加する
-- ALTER
sqlite> ALTER TABLE table_old RENAME TO table_new; -- テーブル名を変更する
sqlite> ALTER TABLE table ADD COLUMN column; -- カラムを追加する
-- Drop
sqlite> DROP TABLE table -- テーブルを削除する
レコード操作
-- INSERT
sqlite> INSERT INTO table (column_a, column_b) VALUES (value_a, value_b); -- レコードを挿入する
-- UPDATE
sqlite> UPDATE table SET column_a = value_a WHERE column_b = value_b; -- レコードを更新する
-- DELETE
sqlite> DELETE FROM table WHERE column = value; -- レコードを削除する
-- SELECT
sqlite> .header on -- カラム名も出力するよう設定する
sqlite> SELECT * FROM table; -- 全てのレコードを取得する
sqlite> SELECT (TYPEOF)column FROM table; -- 全てのレコードから特定のカラムのみ(型情報を含めて)取得する
-- 特殊な変数
sqlite> SELECT current_time; -- 12:57:55
sqlite> SELECT current_date; -- 2016-01-28
sqlite> SELECT current_timestamp; -- 2016-01-28 13:00:47
sqlite> SELECT ROWID, * FROM table -- ROWIDは内部的にレコードに付与される連番
押さえておくべきポイント
概要
- データベースは通常のファイルである
- ファイルの拡張子は慣例として
.sqlite3
にする - データベースを削除するにはファイルを削除する
- データベースのバックアップを取るにはファイルをコピーする
- SQL 以外に
.
で始まる命令がある
他のデータベースとの比較
- 同じ点
- 標準 SQL をおおよそサポートしている
- 命令の区切りは
;
(.
で始まる命令には不要) - 異なる点
- クライアント・サーバー構成ではなく、実行プロセスが直接ディスクを読み書きする
- データ型は指定できるが、必須ではない
- 挿入されたデータが、指定されたデータ型にキャスト可能であればキャストするが、不可能ならそのまま格納する(1つのカラムに異なるデータ型が混在しうる)
- テーブルの外部結合は
LEFT OUTER JOIN
のみ -
ALTER TABLE
の命令はRENAME TO
,ADD COLUMN
のみ
データ型
型 | 説明 |
---|---|
NULL | NULL(値がないことを表す) |
INTEGER | マイナスを含まない 8byte の整数 |
REAL | 8byte の浮動小数点数 |
TEXT | 文字列(文字コードはデータベースの設定による) |
BLOB | バイナリデータ(Binary Large OBject) |
※厳密にはこれらはストレージクラスと呼ばれ、データ型よりも広い概念である |
リファレンス
- Core Functions - SQLite
- [Date And Time Functions - SQLite](Date And Time Functions)
- Datatypes - SQLite