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

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

開発環境

項目バージョン
macOS14.2
sqlite33.43.2

基本操作

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

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

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

SQLiteで使えるデータ型

データ型意味
NULLNULL値
INTEGER符号付整数(8byte)
REAL浮動小数点数(8byte)
TEXTテキスト
BLOBBinary 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;

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

関連記事