最終更新:2022-08-24 (水) 08:56:25 (611d)  

SQLite
Top / SQLite

http://sqlite.org/

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.

データベースサーバを使用せずデータベース毎に1つのファイルを使って管理する

バージョン

使い方

ツール

Web

コマンドライン

.help

でコマンドの説明を表示

  • .backup DB FILE - Backup DB (default "main") to FILE
  • .bail ON|OFF - Stop after hitting an error. Default OFF
  • .databases - List names and files of attached databases
  • .dump TABLE ... - Dump the database in an SQL text format
    • If TABLE specified, only dump tables matching LIKE pattern TABLE.
  • .echo ON|OFF - Turn command echo on or off
  • .exit - Exit this program
  • .explain ON|OFF - Turn output mode suitable for EXPLAIN on or off.
    • With no args, it turns EXPLAIN on.
  • .header(s) ON|OFF - Turn display of headers on or off
  • .help - Show this message
  • .import FILE TABLE - Import data from FILE into TABLE
  • .indices TABLE - Show names of all indices
    • If TABLE specified, only show indices for tables matching LIKE pattern TABLE.
  • .load FILE ENTRY - Load an extension library
  • .log FILE|off - Turn logging on or off. FILE can be stderr/stdout
  • .mode MODE TABLE - Set output mode where MODE is one of:
    • csv - Comma-separated values
    • column - Left-aligned columns. (See .width)
    • html - HTML <table> code
    • insert - SQL insert statements for TABLE
    • line - One value per line
    • list - Values delimited by .separator string
    • tabs - Tab-separated values
    • tcl - TCL list elements
  • .nullvalue STRING - Print STRING in place of NULL values
  • .output FILENAME - Send output to FILENAME
  • .output stdout - Send output to the screen
  • .prompt MAIN CONTINUE - Replace the standard prompts
  • .quit - Exit this program
  • .read FILENAME - Execute SQL in FILENAME
  • .restore DB FILE - Restore content of DB (default "main") from FILE
  • .schema TABLE - Show the CREATE statements
    • If TABLE specified, only show tables matching LIKE pattern TABLE.
  • .separator STRING - Change separator used by output mode and .import
  • .show - Show the current values for various settings
  • .stats ON|OFF - Turn stats on or off
  • .tables TABLE - List names of tables
    • If TABLE specified, only list tables matching LIKE pattern TABLE.
  • .timeout MS - Try opening locked tables for MS milliseconds
  • .width NUM1 NUM2 ... - Set column widths for "column" mode
  • .timer ON|OFF - Turn the CPU timer measurement on or off

データ型

SQLite3ではテーブルを定義する時にカラム毎にデータ型を指定しなくても構いません。その為、同じカラムに異なったデータ型の値が格納されることもあります。

select typeof(field) from table

で保存された型を確認できる

値のデータ型

説明別名
NULLNULL値
INTEGER符号付整数。1, 2, 3, 4, 6, or 8 バイトで格納int*
REAL浮動小数点数。8バイトで格納real*,floa*,doub*
TEXTテキスト。UTF-8, UTF-16BE or UTF-16-LEのいずれかで格納CHAR,CLOB
BLOBBinary Large OBject。入力データをそのまま格納(NONE)-

フィールドのデータ型

型変換
TEXTINTEGER,REAL->TEXT
NUMERICTEXT->INTEGER,REALにしようとするけど失敗したらTEXT
INTEGER整数だったらREALとかTEXTをINTEGERに変換
REALINTEGER->REAL
NONE変換しない

テーブル

制約

  • PRIMARY KEY制約
    • カラム名のあとにPRIMARY KEYと指定
    • create table employee(name text, section text, primary key(name, section));という指定の仕方もできる
  • INTEGER PRIMARY KEYと指定するとauto_incrementみたいになる
    • そのカラムに格納されている最大の値に1を加えた値が自動で入る
  • AUTOINCREMENT
    • INTEGER PRIMARY KEYだけだどIDが再利用されることがあるのでこれも指定するとよい
  • ROWID
    • レコードにはROWIDというカラムが内部的に付与されて参照・設定することもできる
  • NOT NULL
  • UNIQUE
  • DEFAULT
  • CHECK - 条件式を指定できる

sqlite_master

テーブル情報の格納してあるテーブル

フィールド説明
typetableかindexか
nametypeがtableの場合はテーブル名、indexの場合はどのテーブルのインデックスか
tbl_nameテーブル名
rootpage
sql当該テーブルを作成するSQL文

sqlite_sequence

AUTOINCREMENTのためのシーケンス番号が格納されている

メモ

  • VACCUM
  • ビュー
  • SQLiteの関数

ドキュメント

PHP

PDO

$dsn = "sqlite:{$fileName}";
try{
	//ユーザ名とパスワードは不要
	$pdo = new PDO($dsn, null, null);
}catch (PDOException $e){
	die('Error:'.$e->getMessage());
}

テーブル名の取得とか

select * from sqlite_master where name = ':tableName'

SQLite入門

使われどころ

参考