SQLite 概要
本チュートリアルでは、SQLiteとは何か、SQLとの違い、なぜそれが必要なのか、そしてアプリケーションのデータベース処理方法について理解することができます。
SQLiteは、自己完結型、サーバーレス、ゼロ設定、トランザクション対応のSQLデータベースエンジンを実装したソフトウェアライブラリです。SQLiteは最も急速に成長しているデータベースエンジンであり、これは規模とは無関係に普及の面での成長です。SQLiteのソースコードは著作権の制限を受けません。
SQLiteとは?
SQLiteはプロセス内ライブラリであり、自己完結型、サーバーレス、ゼロ設定、トランザクション対応のSQLデータベースエンジンを実装しています。ゼロ設定のデータベースであり、他のデータベースとは異なり、システムでの設定が不要であることを意味します。
他のデータベースと同様、SQLiteエンジンは独立したプロセスではなく、アプリケーションの要件に応じて静的または動的に接続できる。SQLiteはストレージファイルに直接アクセスする。
なぜSQLiteを使うのか?
独立したサーバープロセスやオペレーティングシステムを必要としません(サーバーレス)。
SQLiteは設定が不要で、インストールや管理が不要であることを意味します。
完全なSQLiteデータベースは、単一のクロスプラットフォームのディスクファイルに格納されます。
SQLiteは非常に小さく、軽量で、完全構成時は400KiB未満、オプション機能を省略した構成時は250KiB未満です。
SQLiteは自己完結型であり、外部依存が一切不要であることを意味します。
SQLiteのトランザクションはACIDに完全準拠しており、複数のプロセスやスレッドからの安全なアクセスが可能です。
SQLiteはSQL92(SQL2)標準のクエリ言語機能の大部分をサポートしています。
SQLiteはANSI-Cで書かれており、シンプルで使いやすいAPIを提供します。
SQLiteはUNIX(Linux, Mac OS-X, Android, iOS)およびWindows(Win32, WinCE, WinRT)で動作します。
歴史
2000年 -- D. Richard Hippは、管理を必要とせずにプログラムを操作するためにSQLiteを設計しました。
2000年 -- 8月、SQLite 1.0がGNUデータベースマネージャー(GNU Database Manager)としてリリースされました。
2011年 -- Hippは、SQLite DBにUNQLインターフェースを追加し、UNQLite(ドキュメント指向データベース)を開発すると発表しました。
SQLiteの制限
SQLiteにおいて、SQL92でサポートされていない機能は次のとおりです:
| 機能 | 説明 |
|---|---|
| RIGHT OUTER JOIN | LEFT OUTER JOINのみが実装されています。 |
| FULL OUTER JOIN | LEFT OUTER JOINのみが実装されています。 |
| ALTER TABLE | RENAME TABLEおよびALTER TABLEのADD COLUMN variantsコマンドをサポートしますが、DROP COLUMN、ALTER COLUMN、ADD CONSTRAINTはサポートしません。 |
| トリガーサポート | FOR EACH ROWトリガーはサポートしますが、FOR EACH STATEMENTトリガーはサポートしません。 |
| VIEWs | SQLiteでは、ビューは読み取り専用です。ビューに対してDELETE、INSERT、UPDATE文を実行することはできません。 |
| GRANT と REVOKE | 適用できる唯一のアクセス権限は、基盤となるオペレーティングシステムの通常のファイルアクセス権限です。 |
SQLiteコマンド
リレーショナルデータベースと対話するための標準SQLiteコマンドはSQLに似ています。コマンドにはCREATE、SELECT、INSERT、UPDATE、DELETE、DROPが含まれます。これらのコマンドは、その操作の性質に基づいて次のように分類できます:
DDL - データ定義言語
| コマンド | 説明 |
|---|---|
| CREATE | 新しいテーブル、テーブルのビュー、またはデータベース内の他のオブジェクトを作成します。 |
| ALTER | データベース内の既存のデータベースオブジェクト(テーブルなど)を変更します。 |
| DROP | テーブル全体、テーブルのビュー、またはデータベース内の他のオブジェクトを削除します。 |
DML - データ操作言語
| コマンド | 説明 |
|---|---|
| INSERT | レコードを作成します。 |
| UPDATE | レコードを変更します。 |
| DELETE | レコードを削除します。 |
DQL - データ問い合わせ言語
| コマンド | 説明 |
|---|---|
| SELECT | 1つまたは複数のテーブルから特定のレコードを取得します。 |