データベース

SQLite

bomctlをやるに当たって,データベースにsqliteを使っているので少し勉強しなきゃいけなくなった. そもそもデータベースとかSQLがわかっていないので,sqliteに限らない(例えば一般的なSQLとか)のことも書く気がするけどご愛嬌. 場合によってはbomctlのことも書くかもしれない.

Package install for CLI tool (AlmaLinux9)

$ sudo dnf install sqlite

SQLite CLI

$ sqlite [/path/to/dbfile]
$ sqlite ~/.cache/bomctl/bomctl.db

SQLiteの特殊コマンド?系

.tables
.schema                   -- 全テーブルの構造
.schema テーブル名          -- 特定テーブルの構造
.quit
.help

SQL

SELECT カラム名 FROM テーブル名;        -- 基本的な検索
SELECT COUNT(*) FROM テーブル名;       -- レコード数を数える
SELECT * FROM テーブル名;              -- 全カラムを表示

SELECT d.id, m.name FROM documents d LEFT JOIN metadata m ON d.id = m.document_id;
  # JOIN: 複数のテーブルを結合
  # LEFT JOIN: 左側(documents)のすべてのレコードを表示
  # ON d.id = m.document_id: 結合条件(documentsのidとmetadataのdocument_idが一致)

SELECT * FROM テーブル名 LIMIT 5;  -- 最初の5件だけ表示
SELECT DISTINCT カラム名 FROM テーブル名;  -- 重複を除いた値一覧

SELECT * FROM テーブル名 WHERE カラム名 = '値';
SELECT * FROM テーブル名 WHERE カラム名 IS NULL;  -- 空の値を検索

SELECT カラム名, COUNT(*) FROM テーブル名 GROUP BY カラム名;  -- グループ別集計