SQLiteってなんだろう? なんとなく簡単に紹介
2025年 4月15日 Posted 野々瀨(フロントエンドエンジニア)
データベースでは「MySQL」や「Postgre SQL」などが有名ですが、「SQlite」というのも存在します。本記事ではそんなSQLiteについて、簡単にではありますがご紹介しようかと思います。
SQLiteとは
SQLiteはRDBMS(リレーショナルデータベース管理システム)の一つで、軽量で手軽に利用できるデータベースです。次のような特徴があります。
- オープンソース
- サーバーではなく埋め込み型であるライブラリ・モジュールとして動作
- さまざまなプラットフォームに対応(Linux、Windows、Macなど)
- 軽量で高速
- データ型が緩い(NULL、INTEGER、REAL、TEXT、BLOBの五つしかない)
- ファイルとして管理(1ファイル = 1データベース)
- バックアップが簡単
データベースの種類
データベースは主に階層型、リレーショナル型、ネットワーク型の3種類があります。さらにリレーショナル型には主にRDBMS(Relational Database Management System)とNoSQLの2種類があります。一般的にリレーショナル型のRDBMSが主流で、MySQLやPostgre SQL、Oracle、Microsoft SQL Serverなどが有名かと思います。
リレーショナル型は表(テーブル)の構造となっていて、列と行の単位のデータ構成となっています。
欠点
セキュリティ
SQLiteはパスワード認証や暗号化などのセキュリティ機能がついていません。セキュリティ対応を行う場合には、SQLite Encryption Extension (SEE)などの暗号化するアドオンを使用したり、自身でビルドしたりするなどで対応する必要があります。
同時書き込みに弱い
SQLiteはトランザクションの衝突を防ぐロックなどにより、同時書き込みに弱い傾向があります。同時書き込みのエラーを極力回避したい場合は、ロック状態の監視や、タイムアウトの時間を調整するなどを行う必要があります。
拡張子
SQLiteは拡張子の決め事はないようですが、一般的に次の拡張子が使われます。
- .sqlite
- .sqlite3
- .db
「.sqlite3」は、SQLite3の登場でそれ以前と互換性がないため、区別するために「.sqlite3」が使われるようになったようです。
SQL
SQLiteもSQLが扱えますが、一部使用できなかったり、独自の機能が実装されていたりします。
例えば、MySQLのSQLには日付を扱うCURRENT_DATE
やDATE_FORMAT
が存在します。
SELECT DATE_FORMAT(CURRENT_DATE, '%Y/%m/%d');
しかし、SQLiteのSQLは同様のことをしようとする場合、STRFTIME
を用います。
SELECT STRFTIME('%Y/%m/%d', 'NOW');
このようにSQLは扱えますが、一部が異なっていたりします。詳しくは次の公式ページのドキュメントをご覧ください。
コード例
プログラミング(またはスクリプト)言語でSQLiteを扱うコードの例をご紹介します。ここではPHPのコードを例にあげます。
try {
// データベースに接続
$pdo = new PDO('sqlite:db/sample.sqlite3');
// エラー時に例外として処理するように設定
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
// クエリを実行
$statement = $pdo->query('SELECT * FROM users');
// 全ての結果を取得
$results = $statement->fetchAll();
// 結果を繰り返して表組で出力
echo '<table>';
echo '<thead>';
echo '<tr>';
echo '<th>名前</th>';
echo '<th>年齢</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach ($results as $result) {
echo '<tr>';
echo '<td>'.$result['name'].'</td>';
echo '<td>'.$result['age'].'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
} catch (Exception $e) {
echo $e->getMessage();
}
PDO
クラスでSQLiteのファイルを指定し、データベースに接続します。この時、先頭にはドライバー名(データベースの種類)を指定しますので、sqlite:
を付けて続けてファイルのパスを指定します。
PDO::setAttribute
メソッドで変更する属性を指定します。ここではエラー処理を変更するための指定を行っています。
PDO::query
メソッドで引数に指定したクエリ(SQL)を実行します。
PDO::fetchAll
メソッドで実行したクエリの結果を全て取得します。戻り値は配列で返ってきます。
GUIによるSQLiteへのアクセス
次のようなアプリケーションを使用することで、GUIによる操作を行うことができます。