お金の管理は大事だなと思い始めた今日この頃、
Excelもいいけど、練習も兼ねてSQLで管理しようと思い立ちました。
家計簿データベースの準備
家計簿データベースとテーブルを用意します。
ターミナル
-- mysqlに入る
mysql -u root -p
-- 家計簿データーベースを作成する
mysql> create database kakeibo;
-- 作成したデータベースを確認する
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kakeibo |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
-- kakeiboデータベースを選択する
mysql> use kakeibo;
Database changed
-- 費目管理用のテーブルを作成する
create table himoku (id int not null auto_increment primary key, name varchar(20) not null);
-- 確認する
mysql> show columns from himoku;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
-- 家計簿用テーブルを作成する
create table kakeibo (id int not null auto_increment primary key, item_id int not null, amout int, income int, create_date date not null, foreign key(item_id) references himoku(id));
-- 確認する
mysql> show columns from kakeibo;
+-------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| item_id | int(11) | NO | MUL | NULL | |
| amout | int(11) | YES | | NULL | |
| income | int(11) | YES | | NULL | |
| create_date | date | NO | | NULL | |
+-------------+---------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
データを追加して確認
ターミナル
-- Insert文でデータを追加
mysql> insert into himoku (name) values ('飲食費');
mysql> select * from himoku;
+----+----------------+
| id | name |
+----+----------------+
| 1 | 飲食費 |
+----+----------------+
1 rows in set (0.00 sec)
-- kakeiboテーブルに詳細カラムを追加する
mysql> alter table kakeibo add detail varchar(100);
mysql> show columns from kakeibo;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| item_id | int(11) | NO | MUL | NULL | |
| amout | int(11) | YES | | NULL | |
| income | int(11) | YES | | NULL | |
| create_date | date | NO | | NULL | |
| detail | varchar(100) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
-- kakeiboテーブルにデータを追加する
mysql> insert into kakeibo (item_id, amout, create_date) values (1, 1605, '2022-12-11');
Query OK, 1 row affected (0.00 sec)
mysql> select * from kakeibo;
+----+---------+-------+--------+-------------+--------+
| id | item_id | amout | income | create_date | detail |
+----+---------+-------+--------+-------------+--------+
| 1 | 1 | 1605 | NULL | 2022-12-11 | NULL |
+----+---------+-------+--------+-------------+--------+
1 row in set (0.00 sec)
簡単な家計簿ができました。
参考資料
MySQLの使い方
MySQLでテーブルのカラムを表示して確認する
【SQL入門】外部キーとは?主キーとの関係や作成方法について解説