SQLiteってなんだろう? なんとなく簡単に紹介

2025年 4月15日 Posted 野々瀨(フロントエンドエンジニア)

データベースでは「MySQL」や「Postgre SQL」などが有名ですが、「SQlite」というのも存在します。本記事ではそんなSQLiteについて、簡単にではありますがご紹介しようかと思います。

SQLiteとは

SQLiteはRDBMS(リレーショナルデータベース管理システム)の一つで、軽量で手軽に利用できるデータベースです。次のような特徴があります。

データベースの種類

データベースは主に階層型、リレーショナル型、ネットワーク型の3種類があります。さらにリレーショナル型には主にRDBMS(Relational Database Management System)とNoSQLの2種類があります。一般的にリレーショナル型のRDBMSが主流で、MySQLやPostgre SQL、Oracle、Microsoft SQL Serverなどが有名かと思います。

リレーショナル型は表(テーブル)の構造となっていて、列と行の単位のデータ構成となっています。

欠点

セキュリティ

SQLiteはパスワード認証や暗号化などのセキュリティ機能がついていません。セキュリティ対応を行う場合には、SQLite Encryption Extension (SEE)などの暗号化するアドオンを使用したり、自身でビルドしたりするなどで対応する必要があります。

同時書き込みに弱い

SQLiteはトランザクションの衝突を防ぐロックなどにより、同時書き込みに弱い傾向があります。同時書き込みのエラーを極力回避したい場合は、ロック状態の監視や、タイムアウトの時間を調整するなどを行う必要があります。

拡張子

SQLiteは拡張子の決め事はないようですが、一般的に次の拡張子が使われます。

「.sqlite3」は、SQLite3の登場でそれ以前と互換性がないため、区別するために「.sqlite3」が使われるようになったようです。

SQL

SQLiteもSQLが扱えますが、一部使用できなかったり、独自の機能が実装されていたりします。

例えば、MySQLのSQLには日付を扱うCURRENT_DATEDATE_FORMATが存在します。

SELECT DATE_FORMAT(CURRENT_DATE, '%Y/%m/%d');

しかし、SQLiteのSQLは同様のことをしようとする場合、STRFTIMEを用います。

SELECT STRFTIME('%Y/%m/%d', 'NOW');

このようにSQLは扱えますが、一部が異なっていたりします。詳しくは次の公式ページのドキュメントをご覧ください。

SQL As Understood By SQLite

コード例

プログラミング(またはスクリプト)言語で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による操作を行うことができます。