LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

SQL 第2版 ゼロからはじめるデータベース操作4章

Posted at

データの更新

データの挿入

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は何らかの処理にたいする変更を全て破棄してトランザクションを終了するコマンド。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up