データの更新
##データの挿入
INSERT文でデータを挿入することができる
insert into shohin (id, name, bunrui, hanbai_tanka, shiire_tanka)
values ('0009', '圧力鍋', 'キッチン用品', 6800, 5000);
--列を省略することもできる
insert into shohin values ('0009', '圧力鍋', 'キッチン用品', 6800, 5000);
--NULLを指定することもできる
insert into shohin values ('0009', '圧力鍋', 'キッチン用品', 6800, null);
複数行のデータ登録
insert into Shohin (id, name, bunrui, hanbai_tanka, shiire_tanka) values
(2,'穴あけパンチ', '事務用品', 500,320),
(3,'カッターシャツ', '衣服',4000,2800),
(4,'包丁','キッチン用品',3000,2800);
##データのコピー
create tabel ShohinCopy;
insert into ShohinCopy (shohin_id , shohin_mei , shohin_bunrui, hanbai_tanka, shiire_tanka)
select shohin_id , shohin_mei , shohin_bunrui, hanbai_tanka, shiire_tanka from shohin;
##データの削除
delete from shohin
where hanbai_tanka >= 4000;
##データの更新
--これで分類の列全てが'衣類'になる
update shohin
set shohin_bunrui = '衣類';
--これで販売単価の列で商品分類がキッチン用品の行だけ10倍にできる
update shohin
set hanbai_tanka = hanbai_tanka * 10
where shohin_bunrui = 'キッチン用品' ;
--複数の列のデータの更新
update shohin
set hanbai_tanka = hanbai_tanka * 10,
shiire_tanka = shiire_tanka / 2
where shohin_bunrui = 'キッチン用品';
##トランザクション
トランザクションとは「テーブルのデータに対する更新の単位」のこと。
わかりやすくトランザクションの使い所を説明すると、例えば商品テーブルと発注テーブル、商品ごとの在庫テーブルがある場合を考える。
たとえばトラブルで包丁とまな板の発注遅れと同時に、商品の一部キャンセルがあった場合、包丁とまな板の在庫テーブルの個数と発注予定日の変更など、複数のテーブルの変更や更新をする。
そのときに一つ一つデータを変更していると、包丁は全部更新済みだが実はまな板の在庫個数の更新がされていなかったなど、複数の更新を一つ一つしようとすると漏れてしまうケースがある。
そうならないために複数の更新や変更がある場合はあらかじめトランザクションを明記することで、複数対応する作業をまとめて更新できるようにする。
begin transaction;
--何らかの処理
commit;
COMMITすることで複数の処理をすべて反映して、トランザクションを終了するコマンド。
begin transaction;
--何らかの処理
rollback;
ROLLBACKは何らかの処理にたいする変更を全て破棄してトランザクションを終了するコマンド。