やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3学習 謎と名前

 いくつか気づいた謎と、名前の意味。

 これまでに気づいた謎。

名前(基本)

英名 カタカナ英語 和名
database file データベースファイル
schema name スキーマネーム スキーマ名(main,tempattach ... as NAMEで指定されたNAME)
table テーブル
record,row レコード,ロウ,ロー
column,field カラム,フィールド

ビュー一時テーブル

  • ビューviewselect文に名前をつけたもの
  • 一時テーブルはそのDB接続が終了したら削除されるテーブル

紛らわしい

データベース

 後述のスキーマネームのことなのか、それともファイルのことか。

スキーマ

 構文ツリーでいうschema-nameattach DB as NAMEしたときのNAME。だが、ドットコマンド.shcemacreate文。「スキーマ」という語が指すものは文脈次第で変わる? ググるときに困る。

 日本語で表現すると表記ゆれが激しくなる。「行」というが「改行コードを含む文字列」のことを指すこともある。

 英語でもrowと言ったりrecordと言ったりする。

 column, fieldの表記ゆれがある。日本語も含めると、それぞれのカタカナ英語と

名前(キーワード)

 データベースで使われる名前とその概要。

  • オブジェクト
  • 操作

 データベースの操作はSQL文やドットコマンドで行う。

オブジェクト

  • database
    • table (constraint)
      • column (constraint)
    • view
    • index
    • trriger
    • transactionsavepoint
obj 概要
(connection) DB接続。保存先(ファイル(attach),メモリ(別/共有))
database DB。以下をすべて含めた集合体。
(またはDB接続、DBファイル、スキーマ名のいずれかを指すこともある?)
table 表。列定義をもった構造
column 列。その名前や制約を定義したもの
view 事前にパッケージしたselectステートメントに名前を付けたもの
index どの行がどこにあるかを示したもの。速度向上のため。
trriger イベント。insertなどが発生したときに自動実行するSQLを定義する
transaction 変更処理のまとまり。速度向上やデータの整合性を保つため。
savepoint トランザクションに名前が付いたもの。ネストできる。

メタオブジェクト

obj 概要
(expression)
(keyword)

 SQL文の一部。

操作

  • attach / detach
  • begin / end
    • commit / rollback
    • release
  • create / drop
    • alter
    • reindex
    • upsert(insert + update), delete
    • select
      • with
  • explain, analize
操作 対象obj 概要
(connect) DBファイル 接続する。SQL構文でない語。ファイル(DB,ZIP,CSV,SQLArchive)、メモリ(別/共有)。
explain SQL 最適化系。クエリプランを返す。
analize DBファイル 最適化系。テーブルとインデックスの統計を収集する。
attach/detach DBファイル 現在のDB接続に別のDBファイルを追加する。
begin/end transaction 開始と終了。
commit/rollback transaction transactionの内容を書き込む/戻す
create/drop table,view
virtual table
index,trigger
作成・削除する
alter table,column 名前を変更する。列を追加する。
reindex index インデックスの削除・再作成。照合シーケンス変更時に役立つ
insert table レコードを挿入する。
update table レコードを更新する。
upsert table レコードが有れば更新、無ければ挿入する。
delete table レコードを削除する。
select table レコードを取得する。
with table レコードを再帰的に取得する。
release savepoint 作成済みsavepointを破棄する。
savepoint savepoint transactionに名前を付ける(savepoint

SQLite固有

  • vacuum
  • pragma
  • on conflict
    • replace
  • indexed by
操作 対象obj 概要
vacuum DBファイルサイズを最小化する。
pragma DBファイルの設定やメタデータを表示・編集する。
on conflict insert時に制約で弾かれたら所定の更新処理をする
replace on conflict時に既存レコードを指定レコードへ置換したいとき
indexed by delete,update,select文で指定インデックスの使用を強制する

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで