The author selected the Free and Open Source Fund as part of Write for DOnations program.
- Introduction
 - Prerequisites
 - ステップ 1 – Ubuntu 20.04 に SQLite をインストールする。Ubuntu に SQLite コマンドライン インターフェイスをインストールするには、まずパッケージ リストを更新します: sudo apt update
 - ステップ 2 – SQLite データベースを作成する
 - テーブルに値を挿入する
 - Step 4 – SQLite でテーブルを読み込む
 - Step 5 – SQLite でテーブルを更新する
 - Adding Columns to SQLite Tables
 - Updating Values in SQLite Tables
 - Step 6 – Deleting Information in SQLite
 - ステップ 7 – SQLite で情報を結合する
 
Introduction
SQLite is free, cross-platform database management system. その効率性と、多くの異なるプログラミング言語とのインターフェース能力で人気があります。
このチュートリアルでは、Ubuntu 20.04 に SQLite をインストールします。 その後、データベースを作成し、そこからデータを読み取り、アイテムを挿入し、アイテムを削除し、別々のテーブルからアイテムを結合します。
注意: このチュートリアルには、SQLite のインストールと使用に関する実践的な手順が含まれています。 より大きな概念的な問題や、いつ SQLite データベースの使用を検討すべきか、あるいは検討すべきではないかといった生産上の懸念事項については扱いません。 一般的なリレーショナルデータベースの概要とその比較については、SQLite vs MySQL vs PostgreSQL をご覧ください。
さらに、多くの言語が SQLite との統合を維持しています。 Python コード内で SQLite を使用する手順については、チュートリアル「How To Use the sqlite3 Module in Python 3」をご覧ください。
Prerequisites
このチュートリアルを完了するには、以下を必要とします:
- Ubuntu 20.04 が動作するローカル マシンまたはサーバー。 非 root sudo ユーザーとファイアウォールを含むサーバーをセットアップするには、Ubuntu 20.04 を実行している DigitalOcean Droplet を作成し、当社の初期サーバー設定ガイドに従ってください。
 
ステップ 1 – Ubuntu 20.04 に SQLite をインストールする。Ubuntu に SQLite コマンドライン インターフェイスをインストールするには、まずパッケージ リストを更新します: 
- sudo apt update
 
- sudo apt update
 
次に SQLite をインストールします:
- sudo apt install sqlite3 
 
インストールを確認するには、ソフトウェアのバージョンをチェックします:
- sqlite --version
 
このような出力を受け取ります:
Output3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
これで SQLite がインストールできましたので、新規データベースを作成する準備が整いました。
ステップ 2 – SQLite データベースを作成する
このステップでは、さまざまなサメとその属性を含むデータベースを作成します。 データベースを作成するには、ターミナルを開き、次の sqlite3 コマンドを実行します:
- sqlite3 sharks.db
 
これにより、sharks という名前の新しいデータベースが作成されます。 もしファイル sharks.db がすでに存在していれば、SQLite はそのファイルへの接続を開始します。 新しい接頭辞 sqlite> が表示されます。
Sharkデータベースを作成したら、次は新しいテーブルを作成して、データを入力します。 テーブルは情報を格納します。 テーブルをよりよく視覚化するために、行と列を想像することができます。
このチュートリアルの残りの部分は、SQLite コマンドを入力するための一般的な規約に従います。 SQLite コマンドは大文字で、ユーザー情報は小文字です。 行はセミコロンで終わらなければなりません。
それでは、テーブルとさまざまなデータのためのいくつかのカラムを作成しましょう。
- ID
 - サメの名前
 - サメの種類
 - サメの平均長(センチメートル)
 
次のコマンドでテーブルを作ってください。
テーブルを作成すると、空のプロンプトが返されます。
テーブルに値を挿入する
SQLiteでは、テーブルに値を挿入するコマンドは次のような一般的な形式をとります:
- INSERT INTO tablename VALUES(values go here);
 
ここでtablenameはテーブル名、valuesは括弧の中です。
 では、sharks テーブルに VALUES を3行挿入します。
 - INSERT INTO sharks VALUES (1, "Sammy", "Greenland Shark", 427);
  - INSERT INTO sharks VALUES (2, "Alyoshka", "Great White Shark", 600);
  - INSERT INTO sharks VALUES (3, "Himari", "Megaladon", 1800);
  
 前にテーブルの各変数に NOT NULL を指定したので、それぞれの値を入力する必要があります。
たとえば、長さを設定せずに別のサメを追加してみます。
- INSERT INTO sharks VALUES (4, "Faiza", "Hammerhead Shark");
 
このエラーが表示されます。
Step 4 – SQLite でテーブルを読み込む
このステップでは、テーブルからデータを読み込むための最も基本的な方法に焦点を当てます。 SQLite は、テーブル内のデータを表示するためのより具体的な方法を提供することを認識します。
挿入されたすべての値でテーブルを表示するには、SELECT:
- SELECT * FROM sharks;
 
以前に挿入されたエントリが表示されます。
Output1|Sammy|Greenland Shark|4272|Alyoshka|Great White Shark|6003|Himari|Megaladon|1800
id(手動で設定した値)に基づいてエントリを表示するには、クエリーに WHERE コマンドを追加します。
- SELECT * FROM sharks WHERE id IS 1;
 
これにより、id が 1 に等しいサメを返します: 
Output1|Sammy|Greenland Shark|427
このコマンドについて詳しく見ていきましょう。
- まず、データベース 
sharksからすべての (*) 値をSELECTします。 - 次に、すべての 
id値を見て、idが1と等しいすべてのテーブル エントリを返します。 
これまで、テーブルを作成してデータを挿入し、その保存データについて照会してきました。
Step 5 – SQLite でテーブルを更新する
次の 2 つのセクションでは、まず既存のテーブルに新しい列を追加し、次にテーブル内の既存の値を更新します。
Adding Columns to SQLite Tables
SQLiteでは、ALTER TABLEコマンドを使って、テーブルを変更することが可能です。 つまり、新しい行や列を作成したり、既存の行や列を変更したりすることができます。
新しい列を作成するには ALTER TABLE を使用します。 この新しい列は、各サメの年齢を年単位で追跡します。
- ALTER TABLE sharks ADD COLUMN age integer;
 
これで 5 列目の age ができました。
Updating Values in SQLite Tables
UPDATEコマンドを使って、新しいage値をそれぞれのサメについて追加します。 次のステップでは、テーブルから情報を削除します。
Step 6 – Deleting Information in SQLite
このステップでは、引数の評価に基づいて、テーブル内のエントリを削除します。
次のコマンドでは、データベースに問い合わせ、年齢が 200 歳未満の sharks テーブル内のすべてのサメを削除するよう要求しています:
- DELETE FROM sharks WHERE age <= 200;
 
SELECT * FROM sharks;と入力すると、それぞれ 200 歳未満の Alyoshka と Himari が削除されたことが確認されます。 グリーンランドシャークのSammyだけが残りました。
Output1|Sammy|Greenland Shark|427|272
ステップ 7 – SQLite で情報を結合する
現在の sharks テーブルと endangered テーブルの2つがあったと想像してみましょう。 ここで、endangered テーブルに、sharks テーブルの id に対応する id 値があり、さらに各サメの保護状態を示す status 値があったとしたらどうでしょうか。
両方のテーブルからデータをクエリしたい場合、SQLite の 4 つの結合コマンドのいずれかを使用できます。
INNER JOINOUTER JOINLEFT JOINCROSS JOIN
2 番目のテーブルを作成して INNER JOIN によりデータをいくつか結合してみましょう。
まず、endangeredテーブルを作成します。
 - CREATE TABLE endangered (id integer NOT NULL, status text NOT NULL);
  - INSERT INTO endangered VALUES (1, "near threatened");
  
次に、テーブルを結合します。
- SELECT * FROM sharks INNER JOIN endangered on sharks.id = endangered.id;`
 
出力は次のようになります。
- SELECT sharks.id, sharks.name, sharks.sharktype, sharks.length, sharks.age, endangered.status FROM sharks INNER JOIN endangered on sharks.id = endangered.id;
 
今回は、2つ目の id の値を除外して出力します。
Output1|Sammy|Greenland Shark|427|272|near threatened
これで、複数のテーブルから情報を結合できました。 データベースをすばやく作成し、さまざまなコマンドでそれを操作することができます。 このチュートリアルに従えば、SQLite の基本的な理解が得られ、このデータベース管理システムに深く潜る準備が整います。
リレーショナル データベース システムの優れた概要とそれらの比較については、当社の記事「SQLite vs MySQL vs PostgreSQL」をチェックしてください。
さらに、多くの言語が SQLite との統合を維持しています。 Python のコード内で SQLite を使用する手順については、チュートリアル「How To Use the sqlite3 Module in Python 3」
を参照してください。