概要
普段MySQL系ばかり触っています。それでも時々業務上でSQLiteを触ることになります。
そうすると、何が起こるかというと、
SQLite触ることになる→コマンド検索→慣れる→忘れる→SQLite触ることになる...
の無限ループです。
このループを断ち切るために自分がよく使うコマンドをまとめることにしました。
詳細は公式を見てください。https://www.sqlite.org/cli.html
前提
- 存在してるDBに対して操作を行う
- sqlite3がインストールされている
コマンド
DB接続
sqlite3 {DBファイル名}
で接続します。接続できるとsqlite>
という表示が出ます。
$ sqlite3 ./test.db # 例
sqlite>
テーブル確認
sqlite> .table
テーブルスキーマ確認
.schema {テーブル名}
でテーブルの作成情報を見ることができます。
sqlite> .schema users # 例
インデックス名確認
sqlite> .indexes
または
sqlite> .indexes {テーブル名}
設定確認
sqlite> .show
# 実行結果
echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: test.db
設定変更
ヘッダ表示/非表示
sqlite> .headers on # 表示
sqlite> SELECT id, first_name, last_name FROM users;
id|first_name|last_name # ←ヘッダが表示される
1|taro|yamada
2|hanako|tanaka
3|ichiro|suzuki
sqlite> .headers off # 非表示
sqlite> SELECT id, first_name, last_name FROM users;
1|taro|yamada # ←ヘッダが表示されない
2|hanako|tanaka
3|ichiro|suzuki
出力モード変更
.mode {モード}
で設定できます。columnくらいしか使用していませんでしたが、実はたくさんあるようです。
ascii
,box
,csv
,column
,html
,insert
,json
,line
,list
(default),markdown
,quote
,table
,tabs
,tcl
columnモード
sqlite> .mode column
sqlite> SELECT id, first_name, last_name FROM users;
id first_name last_name
-- ---------- ---------
1 taro yamada
2 hanako tanaka
2 ichiro suzuki
jsonモード
sqlite> .mode json
sqlite> SELECT id, first_name, last_name FROM users;[{"id":"1","first_name":"taro","last_name":"yamada"},
{"id":"2","first_name":"hanako","last_name":"tanaka"},
{"id":"3","first_name":"ichiro","last_name":"suzuki"}]
markdownモード
sqlite> .mode markdown
sqlite> SELECT id, first_name, last_name FROM users;
| id | first_name | last_name |
|----|------------|-----------|
| 1 | taro | yamada |
| 2 | hanako | tanaka |
| 3 | ichiro | suzuki |
ヘルプ表示
sqlite> .help
DB切断
sqlite> .quit
または
sqlite> .exit
おまけ
クエリ実行計画の確認する際、MySQLの場合はEXPLAIN
をつけますが、SQLiteの場合はEXPLAIN QUERY PLAN
を使用します。
最後に
公式ドキュメントやヘルプを見るともっといろいろできるんだろうとは思いますが、ひとまず自分がよく探すやつだけ記載してみました。
また使うことがあれば追記や別記事で書きたいと思います。