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

開発環境
項目 | バージョン |
---|---|
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;
関連記事
- PostgreSQLと向き合うための 現場で使えるデータベース操作・SQLノート
- iOSアプリ開発でSQLiteを使う FMDB
- MySQLと向き合うための 現場で使えるデータベース操作・SQLノート
- Androidアプリ開発 Compose x Room を使って Database を操作する
- ROOMを使わずにSQLiteを扱う、Androidアプリ開発