サイトロゴ

SQLiteでデータベースをはじめる macOS/Linux/Unix

著者画像
Toshihiko Arai

開発環境

項目 バージョン
macOS 14.2
sqlite3 3.43.2

macOSにはsqlite3がデフォルトでインストールされているので、それを使ってSQLiteの基本的な操作を行なっていく。

基本操作

項目 実行コマンド
ログイン $ sqlite3
ログアウト sqlite> .exit または control + d

ここで紹介するSQLiteのドットコマンド一覧

項目 ドットコマンド 備考
データベースのパス表示 .database
テーブル名の確認 .table
プロンプトの終了 .exit
テーブルの定義を確認 .schema テーブル名
カラム名を表示 .headers on
カラムを整形させて表示 .mode column 他にも、csv/html/insertなど

SQLiteで使えるデータ型

データ型 意味
NULL NULL値
INTEGER 符号付整数(8byte)
REAL 浮動小数点数(8byte)
TEXT テキスト
BLOB Binary Large OBject

bool型は使えないので、integerを使って 0(偽) や 1(真) で表現する必要がある。

実践編

データベースの作成

$ sqlite3 hello.db

次のテーブルを作成することで、カレントディレクトリに hello.db ファイルが生成される。

テーブルの作成

新規テーブルを作成:

sqlite> CREATE TABLE user(id integer primary key autoincrement, name text, age integer);

作成したテーブル名を確認:

sqlite> .table
user

作成した user テーブルの定義を確認:

sqlite> .schema user
CREATE TABLE user(id integer primary key, name text, age integer);

レコードの挿入

sqlite> INSERT INTO user (name, age) VALUES ('taro', 24);
sqlite> INSERT INTO user (name, age) VALUES ('jiro', 21);
sqlite> INSERT INTO user (name, age) VALUES ('saburo', 16);

挿入したレコードの確認:

sqlite> SELECT * FROM user;
1|taro|24
2|jiro|21
3|saburo|16

ヘッダーのカラム名を表示しつつ、整形するには次のドットコマンドを実行後、クエリを発行:

sqlite> .header on
sqlite> .mode column
sqlite> select * from user;
id  name    age
--  ------  ---
1   taro    24 
2   jiro    21 
3   saburo  16 

SQLiteのautoincrementあり・なしの違い

privary keyを設定していればautoincrementの指定がなくても連番で値を生成してくれる。しかしautoincrementがないと例えばid=3を削除した後に再びレコードを挿入すると、またid=3が格納されてしまう。一方でautoincrementを指定していれば、id=4を格納してくれるため、削除されたid=3は永久欠番となり、他テーブルとのリレーションなどでトラブルを避けられる。

レコードの更新

UPDATE user SET age=25 WHERE id=1;

テーブルを削除する

sqlite> DROP TABLE user;

関連記事