基本機能の確認(SQLiteを学ぶ_4)

SQLiteを学んでいこうという連載の4回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

前回は、データベースファイルとテーブルを作成しました。データ型についてもご紹介しました。

今回はデータベースシステムとしてのSQLiteの基本機能の確認をしてみようと思います。

データベースシステムの基本機能

一般的なデータベースシステムに要求される基本機能にCRUDがあります。データの作成(Create)、読み出し(Read)、更新(Update)、削除(Delete)の頭文字を取ったものです。まずはこの4つの機能を確認してみたいと思います。これらの機能はすべてSQL文で実現します。

データの作成(INSERT)

データの入力は「INSERT」で行います。記述方法は以下の通りです。

INSERT INTO テーブル名 VALUES(値1,値2,値3・・・);

また、複数のデータをまとめて入力したい場合は以下の様になります。

INSERT INTO テーブル名 (列名1,列名2,列名3・・・)
values (値1-1,値2-1,値3-1),
       (値1-2,値2-2,値3-2),
       (値1-3,値2-3,値3-3);

SQLは複数行に渡って記述できます。

データの読み出し(SELECT)

データの読み出しは「SELECT」で行います。記述方法は以下の通りです。

SELECT 列名1,列名2,列名3・・・ FROM テーブル名;

テーブルの全列を表示したい場合には、列名の部分に「*」を記述します。

データの更新(UPDATE)

データの更新は「UPDATE」で行います。記述方法は以下の通りです。

UPDATE テーブル名 SET 列名1 = 値1,列名2 = 値2・・・;

データの削除(DELETE)

データの削除は「DELETE」で行います。記述方法は以下の通りです。

DELETE FROM テーブル名;

条件の指定(WHERE)

上でご紹介した「SELECT」、「UPDATE」、「DELETE」は、条件を指定しないとテーブル内の全データに対して作用します。条件を指定する場合はスペースを空けて最後に「WHERE」と記述した後に条件式を追加します。「SELECT」の場合以下の様になります。

SELECT 列名1,列名2・・・ FROM テーブル名 WHERE 条件式;

実行してみる

それでは実行してみましょう。Anaconda Promptから「SQLite3」と入力して起動します。この状態でインメモリデータベースに接続されていますので、以下の入力で動作を見てみましょう。

sqlite> .headers ON
sqlite> CREATE TABLE sample(id INTEGER,name TEXT,age INTEGER);
sqlite>
sqlite> INSERT INTO sample VALUES(1,"TANAKA",25);
sqlite> INSERT INTO sample VALUES(2,"YAMADA",30);
sqlite> INSERT INTO sample VALUES(3,"OOTA",27);
sqlite>
sqlite> SELECT * FROM sample;
id|name|age
1|TANAKA|25
2|YAMADA|30
3|OOTA|27

最初に「.headers ON」で「SELECT」で表示される内容にヘッダーを追加します。続いてテーブル「sample」を作成しました。作成したテーブルに3つのデータを入力します。最後に入力された内容を確認します。3つのデータが入力されていますね。

次は入力されたデータの修正です。

sqlite> UPDATE sample SET age = 31 WHERE name ='YAMADA';
sqlite> SELECT * FROM sample;
id|name|age
1|TANAKA|25
2|YAMADA|31
3|OOTA|27

YAMADAさんの年齢を31に修正しました。修正結果を確認できますね。続いて条件を指定してデータを削除してみましょう。

sqlite> DELETE FROM sample WHERE age < 30;
sqlite> SELECT * FROM sample;
id|name|age
2|YAMADA|31

年齢が30歳より下の人のデータが削除されたことが確認できます。

複数行の入力

最後に複数のデータを一度に入力してみましょう。前述の通り、SQLiteは複数行にわたってSQL文を記述できます。プロンプトが「sqlite>」の状態で「.」以外で始まり「;」で終わらない内容を入力すると、複数行にわたるSQLの入力とみなされてプロンプトが「 ...>」に変わります。「;」で終わる内容を入力すると、完了してSQLが実行されます。新たに3つのデータを一度に追加してみましょう。

sqlite> INSERT INTO sample (id,name,age)
   ...> VALUES(4,"MURAYAMA",22),
   ...> (5,"OOSAKI",29),
   ...> (6,"TANAKA",26);
sqlite> SELECT * FROM sample;
id|name|age
2|YAMADA|31
4|MURAYAMA|22
5|OOSAKI|29
6|TANAKA|26

3つのデータが追加されたことが確認できます。

次回は表示の設定

今回はSQLiteの基本機能についてご紹介しました。ところで「SELECT」で表示される内容なのですが、色々設定を変更できるようです。次回は表示の設定についてご紹介しようと思います。お楽しみに!! hirocom777.hatenadiary.org

SQLite学習記事のまとめですはこちらから