
SQLite3(エスキューライト3)はファイルベース(MySQLのようなサーバは不要)の軽量なデータベースになります。
ラズベリーパイOSであれば、
$ sudo apt update $ sudo apt install sqlite3
でSQLite3をインストールするだけで使えるようになります。
データベースにデータを挿入した後に値の確認という流れを見てみます。
データベースにデータを挿入する為には、テーブルを用意する必要があります。
テーブルとはデータを整理して保存するための表のようなものになります。
SQLite3を起動して、ユーザに関するテーブルを作ってみます。
# 下記コマンドでSQLite3を起動する $ sqlite3
※ sqlite3の後にデータベースのファイル名を指定しますが、今回は指定していないので、インメモリモードでの起動になります。
SQLite version 3.40.1 2022-12-28 14:03:47 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
下記の内容を入力して実行してみます。
sqlite> CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR,
money INTEGER
);
※ sqlite>の箇所の入力は不要です。
これでユーザに関するテーブルが出来ました。
余談ですが、SQLiteに限らず、SQLの記述で操作できるデータベースで、データベースに対しての命令の事をクエリ(Query)と呼びます。
作成したテーブルの確認は
sqlite> .schema users
※ usersは今回作成しましたテーブル名になります。
で確認できます。
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR,
money INTEGER
);
今回作成したテーブルはユーザID(id)、お名前(name)と所持金(money)の3個のカラムを持ったものになりまして、各カラム名の横にあるINTEGERやVARCHARは各カラムが持つデータの形の指定になります。
INTEGERは整数(負の整数もあり)で、取り扱える値の範囲は膨大なのでこの場では触れません。
VARCHARは可変長の文字列で、可変長は文字列の長さが決まっていない時に指定します。
※ SQLiteではVARCHAR型はTEXT型として認識されるそうです。
※ SQLiteで使用できるデータ型はDatatypes In SQLite#Affinity Name Examplesに記載があり、
| データ型 | 説明 | 該当する宣言例 |
|---|---|---|
| TEXT | 文字列データ。UTF-8などで保存されます。 | TEXT, VARCHAR, CHAR |
| INTEGER | 符号付き整数。値に合わせてサイズが自動調整されます。 | INT, INTEGER, BIGINT |
| REAL | 浮動小数点数。 | REAL, DOUBLE, FLOAT |
| BLOB | バイナリデータ。画像やファイルをそのまま保存します。 | BLOB |
| NUMERIC | 数値全般。日付や真偽値もここに含まれます。 | NUMERIC, DECIMAL, DATE, BOOLEAN |
になります。
idカラムのみに付いているPRIMARY KEYは重複してはいけない値になります。
ユーザIDは重複すると意味をなさなくなりますので、そのようなカラムの時につけておきます。
AUTOINCREMENTは数字を自動で、かつ重複しないように1ずつ増やして割り振ってくれる機能になります。
※ SQLiteの場合はAUTOINCREMENTの指定がなくてもPRIMARY KEYのみでも良いです。
CREATE TABLEの基本構文は下記になります。
CREATE TABLE テーブル名 (
カラム名1 データ型 制約,
カラム名2 データ型 制約,
...
テーブル制約
);
※ クエリ実行の際は改行の有り無しは関係ありません。
※ テーブル制約は今回は触れません。
データを挿入してみます。
sqlite> INSERT INTO users (id, name, money) VALUES (1, "太郎", 100);
※ PRIMARY KEYを指定しているカラムであれば下記のように省略可能です。
sqlite> INSERT INTO users (name, money) VALUES ("太郎", 100);
データの挿入はINSERT INTOクエリで行います。
INSERT INTO テーブル名
(カラム名1, カラム名2, カラム名3...)
VALUES (値1, 値2, 値3...)
()でデータを挿入したいカラムを指定して、VALUES()句で指定したカラムに対応した値を指定します。
※ INSERT INTOやVALUESは小文字でも可
挿入したデータを確認してみます。
sqlite> SELECT * FROM users;
を実行してみると、
1|太郎|100
のような出力になります。
上記のクエリで、usersテーブルから全てのデータを取得するという意味になります。
SELECTの基本構文は下記になります。
SELECT * FROM テーブル名;
SQLite3を終了する時は
sqlite> .exit
を実行します。