SQLite
https://sqlite.org/index.html
$ sudo apt install sqlite
https://www.juliapackages.com/p/sqlite
Juliaライブラリもある
https://sqlite.org/cli.html
データベースファイルを開く
https://sqlite.org/cli.html#dotopen
$ sqlite3 データベース名
https://sqlite.org/lang.html
データの定義
https://sqlite.org/lang_createtable.html
テーブルの削除
$ DROP TABLE IF EXISTS テーブル名;
初期化処理
テーブルの作成
code:sql
CREATE TABLE cards (
card_id INTEGER PRIMARY KEY,
card_name TEXT,
card_type TEXT CHECK(card_type IN ('monster', 'spell', 'trap')),
release_date TEXT
);
CREATE TABLE regulation_changes (
card_id INTEGER NOT NULL,
revision_date DATE NOT NULL,
status TEXT CHECK(status IN ('forbidden', 'limited', 'semi_limited', 'unlimited')) NOT NULL,
FOREIGN KEY (card_id) REFERENCES cards(card_id),
UNIQUE (card_id, revision_date)
);
カラムの定義
カラム名 データ型 制約
データ型
INTEGER: 整数型
TEXT: 文字列型
制約
PRIMARY KEY: 一意であることが保証されているべき値
CHECK(条件式): 条件式に合うもののみ受け付ける
NOT NULL: 値NULLを許さない
DEFAULT 値: デフォルト値の指定
FOREIGN KEY (カラム名) REFERENCES テーブル名(カラム名): 外部キー制約
一時テーブル
保持期間?あんも.icon
データの取り込み
https://sqlite.org/cli.html#importing_files_as_csv_or_other_formats
code:bash
sqlite3 regulation.db <<EOF
.mode csv
.import --skip 1 cardlist.csv cards
EOF
sqlite3 データベース名 <<EOF ... EOF: 対話モードで起動して<<EOF ... EOF内を実行
.mode csv: 読み込み書き出しのモードをCSVにする
.import ファイル名 テーブル名: データをテーブルに読み込む
--skip 1: 1行読み飛ばす
よくあるヘッダー処理
データの操作
テーブルのデータの確認
$ SELECT * FROM テーブル名;
ドットコマンド
https://sqlite.org/cli.html#special_commands_to_sqlite3_dot_commands_
テーブル一覧を見る
$ .tables
テーブルの構造を見る
$ .schema テーブル名
とりあえずターミナルから動かしてみるあんも.icon
小さいダミーデータを使って動きを見る