0
0

SQLite3覚書

Posted at

概要

普段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を使用します。

最後に

公式ドキュメントやヘルプを見るともっといろいろできるんだろうとは思いますが、ひとまず自分がよく探すやつだけ記載してみました。
また使うことがあれば追記や別記事で書きたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0