SQLiteでデータベースをはじめる macOS/Linux/Unix
macOSにはsqlite3がデフォルトでインストールされているので、それを使ってSQLiteの基本的な操作を行なっていく。
開発環境
項目 | バージョン |
---|---|
macOS | 14.2 |
sqlite3 | 3.43.2 |
基本操作
項目 | 実行コマンド |
---|---|
ログイン | $ 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(真) で表現する必要がある。
実践編
データベースの作成
bash
$ sqlite3 hello.db
次のテーブルを作成することで、カレントディレクトリに hello.db ファイルが生成される。
テーブルの作成
新規テーブルを作成:
bash
sqlite> CREATE TABLE user(id integer primary key autoincrement, name text, age integer);
作成したテーブル名を確認:
bash
sqlite> .table
user
作成した user テーブルの定義を確認:
bash
sqlite> .schema user
CREATE TABLE user(id integer primary key, name text, age integer);
レコードの挿入
bash
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);
挿入したレコードの確認:
bash
sqlite> SELECT * FROM user;
1|taro|24
2|jiro|21
3|saburo|16
ヘッダーのカラム名を表示しつつ、整形するには次のドットコマンドを実行後、クエリを発行:
bash
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は永久欠番となり、他テーブルとのリレーションなどでトラブルを避けられる。レコードの更新
bash
UPDATE user SET age=25 WHERE id=1;
テーブルを削除する
bash
sqlite> DROP TABLE user;
関連記事
アイデアノート > macOSで使えるシェル