SQLite
SQLite
SQLiteとは、PHPと組み合わせて使用されているデータベース管理システム(DBMS)のひとつで、組み込み専用を特徴とするもののことである。同じくPHPと合わせて用いられる、MySQLやPostgreSQLといったクライアントサーバー型のDBMSとは異なり、DBMS サーバーの概念が存在しない。SQLiteは、いわばサーバーとクライアントとが一体となっている。そのためデータベースの内容はすべてローカルファイルに保存される。
SQLiteのメリットとしては、DBMS サーバーを必要としないために、DBMSが用意されていないレンタルサーバーでもSQLiteによってデータベースを用いたアプリケーションを作成できるということが挙げられる。(PHP 5がこれから普及することに伴い、SQLiteをサポートするレンタルサーバーも今後増えていくだろうと見込まれる)。加えて、扱いの要領がMySQLやPostgreSQLと変わらないために導入が簡単であるという利点もある。また、組み込み系のDBMSとしては数少ないトランザクション処理対応型であるDBMSであるという点も特徴的である。
その反面、SQLiteの短所としては、データがあくまでもローカルに保持されるために、複数のWebサーバーからアクセスを受けることができないという点が挙げられる。複数のWebサーバーで運用する場合、 SQLiteは適しているとは言えない。
| データベース: | PostgreSQL SQL SQL Server SQLite SQL Server 2005 Viper |
| トランザクション処理: | ACID特性 |
SQLite 関数 (PDO_SQLITE)
導入
PDO_SQLITE は、PHP から SQLite 2 や SQLite 3 データベースへのアクセスを可能にするための PHP Data Objects (PDO) インターフェース を実装したドライバです。PHP 5.1 では、SQLite 拡張モジュールも SQLite 2 データベースに対するドライバを提供しています。 理論的には PDO_SQLITE ドライバの一部ではなく動作も同様なので、 平行してドキュメント化されています。PDO 用 SQLite 2 ドライバは主に レガシーな SQLite 2 データベースファイルをより高速でより効果的な SQLite 3 ドライバを使用するアプリケーションへ 簡単にインポートするために提供されています。 結果として、SQLite 2 ドライバは SQLite 3 ドライバよりも機能豊富ではありません。
目次
- PDO_SQLITE DSN — SQLite データベースに接続する
- PDO->sqliteCreateAggregate() — SQL 文で使用する集約ユーザ定義関数 (UDF) を登録する
- PDO->sqliteCreateFunction() — SQL 文で使用するユーザ定義関数 (UDF) を登録する
SQLite 関数
表 291. SQLite設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| sqlite.assoc_case | 0 | PHP_INI_ALL | PHP 5.0.0 から利用可能です |
PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
- sqlite.assoc_case int
-
ハッシュのインデックスに大文字小文字混用(0)、
大文字(1)、小文字 (2)のど
れを使用するかを指定します。
このオプションは、データベーススキーマ中での実際のフィールド名の ケースによらず、カラム名が常に大文字または小文字で返されるような 他のデータベースシステムとの互換性が必要な場合に特に有用です。
SQLiteライブラリは、カラム名をそのままのケース(これは、 スキーマで使用したケースに一致します)で返します。 sqlite.assoc_case に 0 を指定した場合、そのままのケースは保持されます。このオプションを 1 または 2 に設定した場合、 PHPはハッシュキーのケースをそれぞれ大文字または小文字のキーに変 換します。
このオプションを使用することで若干の性能劣化がありますが、 PHPスクリプトで自分で大文字/小文字変換を行うよりはかなり高速です。
目次
- sqlite_array_query — 指定したデータベースに対してクエリを実行し、配列を返す
- sqlite_busy_timeout — ビジータイムアウト時間を設定またはビジーハンドラを無効にする
- sqlite_changes — 直近のSQLステートメントにより変更されたレコード数を返す
- sqlite_close — オープンされたSQLiteデータベースを閉じる
- sqlite_column — カレントの結果セットのレコードからカラムを1列取得する
- sqlite_create_aggregate — SQLステートメントで使用する集約UDFを登録する
- sqlite_create_function — SQLステートメントで使用するために"通常の"ユーザ定義関数を登録する
- sqlite_current — 結果セットからカレントのレコードを配列として取得する
- sqlite_error_string — エラーコードの説明を返す
- sqlite_escape_string — クエリパラメータ用に文字列をエスケープする
- sqlite_exec — 与えられたデータベースに対して結果を伴わないクエリを実行する
- sqlite_factory — SQLite データベースをオープンし、SQLiteDatabse オブジェクトを返す
- sqlite_fetch_all — 結果セットから全てのレコードを配列の配列として取得する
- sqlite_fetch_array — 結果セットから次のレコードを配列として取得する
- sqlite_fetch_column_types — 特定のテーブルからカラム型の配列を返す
- sqlite_fetch_object — 結果セットから次のレコードをオブジェクトとして取得する
- sqlite_fetch_single — 結果セットの最初のカラムを文字列として取得する
- sqlite_fetch_string — sqlite_fetch_single() のエイリアス
- sqlite_field_name — 特定のフィールドの名前を返す
- sqlite_has_more — まだレコードがあるかないかを返す
- sqlite_has_prev — 前のレコードがあるかどうかを返す
- sqlite_key — カレントレコードのインデックスを返す
- sqlite_last_error — データベースに関する直近のエラーコードを返す
- sqlite_last_insert_rowid — 直近に挿入されたレコードのrowidを返す
- sqlite_libencoding — リンクされているSQLiteライブラリのエンコーディングを返す
- sqlite_libversion — リンクされているSQLiteライブラリのバージョンを返す
- sqlite_next — 次のレコード番号へシークする
- sqlite_num_fields — 結果セットのフィールド数を返す
- sqlite_num_rows — 結果セットのレコード数を返す
- sqlite_open — SQLiteデータベースをオープンする。データベースが存在しない場合は作 成する
- sqlite_popen — SQLiteデータベースへの持続的ハンドルをオープンする。存在しない場合 には、データベースを作成する
- sqlite_prev — 結果セットの前のレコード番号へシークする
- sqlite_query — 指定したデータベースに対してクエリを実行し、結果ハンドル を返す
- sqlite_rewind — 先頭レコード番号へシークする
- sqlite_seek — 特定のレコード番号へシークする
- sqlite_single_query — クエリを実行し、単一カラムもしくは先頭レコードの値に対する配列を返す
- sqlite_udf_decode_binary — UDFにパラメータとして渡されたバイナリデータをデコードする
- sqlite_udf_encode_binary — UDFから返す前にバイナリデータをエンコードする
- sqlite_unbuffered_query — 事前取得していないクエリを実行し、全てのデータをバッファリングする
- sqlite_valid — まだレコードが残っているかどうかを返す
SQLite
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/10/14 10:26 UTC 版)
| |
|
| |
|
| 開発元 | リチャード・ヒップ |
|---|---|
| 初版 | 2000年8月17日 |
| 最新版 | 3.50.4[1] |
| リポジトリ | |
| プログラミング 言語 |
C |
| 対応OS | クロスプラットフォーム |
| 種別 | 関係データベース管理システム |
| ライセンス | パブリックドメイン |
| 公式サイト | sqlite |
SQLite(エスキューライト[2][3]、エスキューエライト[4][5]、なお、作者のHippはエスキューエルアイト(/ˌɛsˌkjuːˌɛlˈaɪt/[6][7][8])と発音している)は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) である。
概要
サーバとしてではなくアプリケーションに組み込んで利用されるデータベースである[9]。一般的なRDBMSと違い、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用することが特徴である。バージョン3.3.8からは全文検索のFTS1モジュールがサポートされた。その後 FTS2 - FTS3 と強化を続けバージョン3.7.4からはFTS4モジュールがサポートされている。
開発と展開
SQLiteのコードは同じくHippが開発したFossilでホストされている。Fossilは、非リレーショナルデータベース形式のSQLiteをローカルキャッシュとして使用し、SQLiteのSQLを実装言語として使用する分散バージョン管理システムである。
SQLiteはパブリックドメインとして著作権を放棄する一方、「オープンコントリビューション」ではないため、誰でも開発に参加することはできない。公式ウェブサイトには「このプロジェクトは、貢献をパブリックドメインに捧げる宣誓供述書を提出していない人からのパッチは受け付けない」と記載するとともに、プロジェクト創設者らは、行動規範の代わりに聖ベネディクトの戒律に基づく倫理規定を採用している[10]。
SQLiteの配布物には、 sqlite3 と呼ばれるスタンドアロンのコマンドライン シェルプログラムが付属している[11]。このプログラムを使用して、データベースの作成、テーブルの定義、行の挿入と変更、クエリの実行、SQLiteデータベースファイルの管理を行うことができる。また、SQLiteライブラリを使用するアプリケーションを作成するためのサンプルとしても役立つよう設計されている。
テストと信頼性
SQLiteは、各リリースの前に自動回帰テストを実施しており、その一環として200万以上のテストが実施されている。SQLiteライブラリのソースコードは約156,000行あるが、すべてのテスト用コードを合わせると9,200万行にななる[12]。SQLiteのテストでは、ライブラリの機能性をテストするだけでなく、電源喪失やI/Oエラーなどの様々な例外的なシナリオをシミュレートする。2009年8月10日のSQLite 3.6.17リリース以降、SQLiteリリースはコードカバレッジの構成要素の一つであるブランチテストカバレッジが100%となっている。
SQLiteには、オリジナルのパブリックドメインTCLテスト、独自のC言語TH3テストスイート、SQLiteを他のSQLデータベースと比較するSQLロジックテスト、そして独自のファジングエンジンdbsqlfuzzの4つの異なるテストハーネスがある。公式サイトでは、こうした徹底的なテストを行うことによってミッションクリティカルな利用にも耐え得るとしている[13]。
特徴
- SQL92の機能の多くを実装
- 著作権を放棄しパブリックドメインに帰している
- サーバではなくライブラリ
- ライブラリは数百KB程度のフットプリント
- Cランタイム以外の別途ライブラリを必要としない
- 管理ツールによるセットアップやメンテナンスを必要としない
- コマンドラインツールも使える
- バイトオーダに依存しない(2.6.3以降)、可搬性のある単一ファイル
- 最大128TiBまで
- ファイルを使わない、揮発性のインメモリデータベースとしても利用可能
- データ型を指定する必要がない
- サポートしている型は、Null/Integer/Real/Text/BLOBのみ
- Unicodeのサポート
- BLOBはメモリの許す限り
- ROWIDを持っている(ただし3.6.18以前は外部制約キーの仕組みがない)
- トランザクションのサポート
- ビューのサポート
- トリガーのサポート
- C言語を使って関数を追加できる
- Tclバインディングを配布キットに標準添付している
- PHP5、Python 2.5、Adobe AIRで標準サポート
- その他、C、C++、D、Curl、Perl、Ruby、Delphiなど多数のプログラミング言語用のバインディング
- 全文検索のFTS1モジュールがサポートされ、SQL文で全文検索インデックスに対して検索できる
- Android端末の標準ライブラリとして採用されている
解説
SQLiteとは?[14]
SQLiteは、小型で高速、自己完結型、高信頼性、フル機能を備えたSQLデータベースエンジンを実装したC言語ライブラリです。SQLiteは世界で最も利用されているデータベースエンジンです。SQLiteはすべての携帯電話とほとんどのコンピュータに組み込まれており、人々が毎日使用する無数のアプリケーションにもバンドルされています。
SQLiteを組み込んだアプリケーションの一例
- AndroidのデータストレージAPI
- Mozilla Firefox(142.x現在)[15]
- Mozilla Thunderbird(142.x現在)[16]
ストレージに互換性があれば、データベースインスタンスを格納したファイルはWindows、Linux等で共用可能である。一時的な利用ならばインメモリデータベースを割り当てることが出来る。ストレージまでネイティブコードで直接実行し、間になんらかのプロトコルやプロセス間通信を伴わないことにより、単一のトランザクション内におけるレイテンシをある程度削減することに成功している。一度トランザクションを開始するとストレージはロックされ、トランザクション中のセッションはキャッシュを有効利用して動作するため、高速にデータベースにアクセスすることができる。動的リンク、静的リンク共に対応しており、(3.50.x現在)静的リンクで実行ファイルを生成しても、おおむね700KB程度のフットプリントで、充実したSQLステートメントと束縛のないデータ型を利用することができる。
SQLiteのデータ型(3.50.x現在)
- NULL: NULL値
- INTEGER: 符号付整数
- REAL: 浮動小数点数
- TEXT: テキスト(UTF-8, UTF-16BE, UTF-16LE)
- BLOB: Binary Large Object(画像データなど)
ウィキブックスには、より多くの具体例が記載されています。
管理ツール
- 「Navicat for SQLite」はデータの編集やSQLクエリ、データモデリングのツールを備え、データ転送、インポート/エクスポート、データの同期、レポートなどの機能が提供されている。
- DB Browser for SQLite Windows, Mac OS, Linux, FreeBSD に対応したGUI管理ツール。ライセンスは Mozilla Public License Version 2。
ODBC
SQLiteのODBCドライバがサードパーティーから提供されている。SQLite 2とSQLite 3のバージョンがあり、SQLite 2向けには、さらにUTF-8対応版がある。
脚注
- ^ "SQLite Release 3.50.4 On 2025-07-30"; 閲覧日: 2025年7月30日; 出版日: 2025年7月30日.
- ^ “SQLiteとは エスキューライト: - IT用語辞典バイナリ”. 2014年6月14日閲覧。
- ^ “SQLite”. 2014年6月14日閲覧。
- ^ “An Introduction to SQLite”. 2014年6月20日閲覧。
- ^ “Ruby on Rails チュートリアル”. 2014年6月20日閲覧。
- ^ “Why SQLite succeeded as a database with Richard Hipp, creator of SQLite (The Changelog #201)” (英語). Changelog. 2021年7月4日閲覧。
- ^ (日本語) An Introduction to SQLite 2021年7月4日閲覧。
- ^ Bell, Adam Gordon. “The Untold Story of SQLite” (英語). CoRecursive Podcast. 2021年7月4日閲覧。
- ^ Bill Lubanovic 著『入門Python3』、斉藤康毅 監訳 ・長尾高弘 訳、株式会社オライリー・ジャパン発行、オーム社 発売、2017年2月3日 初版 第6刷、246ページ
- ^ “Code Of Ethics”. sqlite.org. 2025年10月13日閲覧。
- ^ “Command Line Shell For SQLite”. sqlite.org. 2025年10月13日閲覧。
- ^ “How SQLite Is Tested”. sqlite.org. 2025年10月13日閲覧。
- ^ “How SQLite Is Tested”. sqlite.org. 2025年10月13日閲覧。
- ^ “What Is SQLite?”. SQLite Consortium. 2025年9月15日閲覧。
- ^ (Linux)/home/$USER/.mozilla/firefox/等の個人設定フォルダ以下に拡張子.sqliteファイルがあればSQLiteを使用
- ^ (Linux)/home/$USER/.thunderbird/等の個人設定フォルダ以下に拡張子.sqliteのファイルがあればSQLiteを使用
関連項目
書籍
- The Definitive Guide to SQLite 2006/06/19, ISBN 1-59059-673-0
- SQLite 入門 2005/09, ISBN 4-7981-0943-6
- PHP+SQLite実践サンプルブック 2005/07, ISBN 4-88337-429-7
- 改訂版PHPポケットリファレンス 2005/09, ISBN 4-7741-2502-4
- SQLite 入門 第2版 2009/05, ISBN 978-4-7981-1944-1
- SQLiteポケットリファレンス 2010/10, ISBN 978-4-7741-4394-1
- Android UIデザイン&データベースプログラミング 2011/06, ISBN 978-4-88337-761-9
外部リンク
固有名詞の分類
- SQLiteのページへのリンク