0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

勉強ログ_day8_MySQL入門⑥(もすこし高度に)

Posted at

はじめに

非エンジニアの勉強ログ。
超初心者プレイのため、内容は自分の勉強メモです。

昨日まで

  • Day7はMySQLへのCSV取り込み方など
  • 結局面倒で、A5M2のCSVインポート機能を利用

今日のゴール

  • MySQL サブクエリ~トランザクション~テーブル結合、と小ネタ

環境

  • ホストOS:Windows10 Pro 1903
  • こちらで構築した環境を利用する
  • MySQL:5.7.27
  • SQL開発ツール:A5:SQL Mk-2 2.14.4

参考資料・引用元など

サブクエリ

  • 一時的にしか使わないなら、テーブルつくらずサブクエリ
mysql
select
  abg(u.age),
  u.ivent
from 
  (select 
    id,
    user_name,
    age,
    case
      when age = 20 then 'congratulation'
      when age = 30 then 'marverous'
      else null
    end as ivent
  from persons) as u
gropu by u.ivent;

トランザクション

  • 一連の処理を止めずに行う
  • データの確定はcommit,もとにもどすならrollback

テーブル結合

  • inner join:2つのテーブルで一致するレコードのみ出す
  • outer join:2つのテーブルで不一致でもレコード出す
mysql
select users.id, users.name, users.job, items.name from users inner join items on users.id = items.user_id; 

outer joinの場合は
left = 左に書いたtableが軸。右のtableに該当がなかったらその部分はnull
right = 右に書いたtableが軸。leftの逆

mysql
select * from users left outer join items on users.id = items.user_id;
select * from users right outer join items on users.id = items.user_id;

キーの制約

  • テーブルAにIDがなかったら、テーブルBにレコードつくっちゃだめ! みたいな制約
  • 整合とれる反面、互いのテーブルが連動して容易に削除とかはしづらくなる
  • alterで操作 addしたりdropしたり
mysql
-- itemsテーブルのuser_idusersテーブルのidカラムで制約
alter table items add constraint fk_items foreign key (user_id) references users (id);

-- 制約捨てる場合はdrop foreign key
alter table items drop foreign key fk_items;

小ネタ

直前のレコードNoを取得

異なるテーブルのレコードを連続で更新するときに
関連する直前に挿入されたレコードのNoを取得する場合など

mysql
insert into users (name, job) values ('taro', 'police');
insert into items (user_id, item) values (last_insert_id(), 'key');

トリガー

あるテーブル情報を変更したときに
連動して別の処理を行うよう、事前に指定が出来る

mysql
create trigger users_insert_trigger after insert on users for each row insert into user_logs (history) values ('user added.');

あとがき

  • サブクエリあたりから長くなるから混乱する
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?