Closed yrarchi closed 4 years ago
https://dev.mysql.com/doc/refman/5.6/ja/insert.html 参照
書き方のパターン カラムがa,b,cの3つの場合
INSERT INTO tbl_name (a, b, c) VALUES(1, 2, 3);
INSERT INTO tbl_name VALUES(1, 2, 3); -- カラム名を指定しない場合は、テーブル内の全てのカラムの値を渡す
INSERT INTO tbl_name (a, b) VALUES(1, 2); -- cはデフォルト値になる
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); -- 複数行挿入もOK
auto_incrementのカラムは0を渡す方式を使った https://dev.mysql.com/doc/refman/5.6/ja/example-auto-increment.html
AUTO_INCREMENT カラムには値が指定されなかったため、MySQL が自動的にシーケンス番号を割り当てました。
カラムに明示的に 0 を割り当ててシーケンス番号を生成することもできます。
m_major_categoriesテーブル
INSERT INTO m_major_categories
(major_category_id, category_name)
VALUES
(0, '食費'),
(0, '雑貨'),
…(中略)…
(0, '医療'),
(0, 'サービス')
;
m_medium_categories テーブル
INSERT INTO m_medium_categories
(medium_category_id, category_name)
VALUES
(0, '米'),
(0, 'パン'),
…(後略)…
;
m_categories テーブル
INSERT INTO m_categories
(category_id, major_category_id, medium_category_id)
VALUES
(0, 1, 1),
(0, 1, 2),
…(中略)…
(0, 10, 26)
;
INSERT INTO m_stores
(store_id, store_name)
VALUES
(0, 'スーパー'),
…(後略)…
;
部分的に分けてinsertしてみて、auto_incrementが働くことを確認した
結合して意図通りになっているか確認した
select
category_id,
m_major_categories.category_name,
m_medium_categories.category_name
from
m_categories
innner join m_major_categories using(major_category_id)
inner join m_medium_categories using(medium_category_id)
order by
category_id
;
+-------------+---------------+--------------------+
| category_id | category_name | category_name |
+-------------+---------------+--------------------+
| 1 | 食費 | 米 |
| 2 | 食費 | パン |
…(後略)…
MySQLにデータ送る部分は別途検討に途中で変更したので、このイシューはいったん閉じる
DBに既存のデータを入れていく