最終更新:2022-08-24 (水) 08:56:25 (777d)
SQLite
Top / SQLite
SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.
データベースサーバを使用せずデータベース毎に1つのファイルを使って管理する
バージョン
使い方
ツール
- DB Browser for SQLite - GUIでSQLiteを操作
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
で保存された型を確認できる
値のデータ型
型 | 説明 | 別名 |
NULL | NULL値 | |
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 |
BLOB | Binary Large OBject。入力データをそのまま格納(NONE) | - |
フィールドのデータ型
型 | 型変換 |
TEXT | INTEGER,REAL->TEXT |
NUMERIC | TEXT->INTEGER,REALにしようとするけど失敗したらTEXT |
INTEGER | 整数だったらREALとかTEXTをINTEGERに変換 |
REAL | INTEGER->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
テーブル情報の格納してあるテーブル
フィールド | 説明 |
type | tableかindexか |
name | typeが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入門
使われどころ
- Firefox
- Google Chrome
- iPhoneアプリとか