結合演算 ( 復習 ) データベース論 (9) R 社員番号 氏名麻生太郎安部晋三与謝野馨森喜朗 部門経理課営業課総務課営業課 S 部門経理課営業課総務課 電話 問合せ言語と SQL(2) R S 社員番号

Similar documents
SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Microsoft PowerPoint - db03-5.ppt

Microsoft PowerPoint pptx

Chapter Two

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

Microsoft PowerPoint - 講義補助資料2017.pptx

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

標準化 補足資料

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

プレポスト【問題】

Microsoft Word - Android_SQLite講座_画面800×1280

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

PowerPoint Presentation

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

データベース工学 2011年度資料

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

Chapter Two

1,.,,,., RDBM, SQL. OSS,, SQL,,.

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

,, create table drop table alter table

3 - 正しい SQL ( 方言を排除した SQL 文の記述方法 )

Microsoft PowerPoint - system8.ppt

Microsoft Word - SQL.rtf

情報科学概論 第6回

Webシステム授業資料

データベースS

SQLite データベース IS04 組み込み 1

问题集 ITEXAMPASS 1 年で無料進級することに提供する

ICT-Literacy1

SQL (2) データベース論 Ⅰ 第 7 回 URL 作成者末次文雄 C

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

PowerPoint プレゼンテーション

データベースS 演習資料

How to Use the PowerPoint Template

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

関係データベース

tkk0408nari

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Caché SQL に関するよくある質問

KTest

cmpsys13w14-15_database.ppt

スライド 0

VB実用Ⅲ⑩ フリーデータベースⅡ

Microsoft Word - tutorial3-dbreverse.docx

PowerPoint プレゼンテーション

3 Powered by mod_perl, Apache & MySQL use Item; my $item = Item->new( id => 1, name => ' ', price => 1200,

ユーザ デバイス プロファイルの ファイル形式

Freelance Graphics - Œ³‚è1

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

PostgreSQL 9.4 評価検証報告 SRA OSS, Inc. 日本支社高塚遙 :55 ~ 16:30 PostgreSQL 9.4 最新情報セミナー Copyright 2014 SRA OSS, Inc. Japan All rights reserved. 1

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

WDI-Slides-05.pptx

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

: ORDER BY

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

Oracle Database Connect 2017 JPOUG

PowerPoint -O80_REP.PDF

橡j_Oracle_whitepaper.PDF

目次 1. データモデルと SQL( 復習 ) 2.SQL の特徴 3.SQL の文法 4. データ定義 ( 基本編 ) 5.DB 管理 ( 基本編 ) 6. データ操作 ( 基本編 ) 7. レポート課題 8. 参考書ほか

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Microsoft PowerPoint - 3-Forms-Others.ppt

スライド 1

…l…b…g…‘†[…N…v…“…O…›…~…fi…OfiÁŸ_

Microsoft Word - sample_adv-programming.docx


橡実践Oracle Objects for OLE

Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

DumpCollection IT Exam Training online / Bootcamp PDF and Testing Engine, study and practice

WEBシステムのセキュリティ技術

スクールCOBOL2002

age 3 age 4 2

CMP2-3SQL2b.pptx

~モバイルを知る~ 日常生活とモバイルコンピューティング

Seasar.NET入門

PGECons技術ドキュメントテンプレート Ver.3

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

結合サンプル

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

PowerPoint プレゼンテーション

Webシステム授業資料

<4D F736F F F696E74202D2091E6358FCD B8F88979D B F2E707074>

--

mySQLの利用

PowerPoint Presentation

PGECons技術ドキュメントテンプレート Ver.3

PowerPoint Presentation

~モバイルを知る~ 日常生活とモバイルコンピューティング

PowerPoint Presentation

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

ハイウォーターマークを知る

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

この文章に含まれる情報は 公表の日付の時点での Microsoft Corporation の考え方を表しています 市場の変化に応える必要 があるため Microsoft は記載されている内容を約束しているわけではありません この文書の内容は印刷後も正しいとは保障で きません この文章は情報の提供の

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd 年 7 月 3 日 /15

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

Transcription:

結合演算 ( 復習 ) データベース論 (9) R 社員番号 046 064 011 011 氏名麻生太郎安部晋三与謝野馨森喜朗 部門総務課 S 部門総務課 電話 45 4567 問合せ言語と SQL(2) R S 社員番号 046 064 011 011 氏名麻生太郎安部晋三与謝野馨森喜朗 部門総務課 電話 45 4567 DB-9 4 結合演算 結合演算 ( 例題演習 ) R 社員番号 046 064 011 011 氏名 麻生太郎 安部晋三 与謝野馨 森喜朗 部門 総務課 S R S 部門 総務課 電話 45 4567 社員番号 046 064 011 011 氏名 麻生太郎 安部晋三 与謝野馨 森喜朗 SELECT 社員番号, 氏名, 部門, 電話 FROM R,S WHERE R. 部門 = S. 部門 R の部門 = S の部門 部門総務課 電話 45 4567 下記の社員と部署の表を結合する問合せは何か 部署 部コード 営業 営業 社員 DB-9 5 DB-9 6

結合演算 自己結合 この自己結合と同じことを 社員 (X と呼ぶ ) 社員 (Y と呼ぶ ) 社員 (X と呼ぶ ) 社員 (Y と呼ぶ ) 33 35 33 35 33 35 33 35 SELECT * FROM 社員 X, 社員 Y WHERE X. =Y. AND X. >Y. DB-9 7 SELECT * FROM 社員 X WHERE X. >(SELECT Y. FROM 社員 Y WHERE X. =Y. ) DB-9 8 JOIN による結合 (SQL-92) 92 で外部結合を導入 (OUTER JOIN) 外部結合 : 元々 結合は相手がなければ取り込まないが 外部結合は相手がないとき NULL として取り込む 基本的な結合は JOIN がなくてもできる ( 前述 ) JOIN による結合 (SQL-92) 92 で外部結合を導入 (OUTER JOIN) 102 外部結合 : 元々 結合は相手がなければ取り込まないが 外部結合は相手がないとき NULL として取り込む 山田俊夫 井上正一 結合 通常の結合 (INNER JOIN) 102 山田俊夫 外部結合 (OUTER JOIN) 山田俊夫 井上正一 NULL DB-9 9 DB-9 10

元のデータ JOIN による結合 ( やってみた 1) mytest1 mytest2 id hobby 00r950 skating 00r951 reading books 00r952 jogging 00r953 travelling 元のデータ JOIN による結合 ( やってみた 2) mytest1 mytest2 id hobby 00r950 skating 00r951 reading books 00r952 jogging 00r953 travelling 前に述べた書き方で結合 select * from mytest1, mytest2 where mytest1.id=mytest2.id; --------+---------------+ id hobby --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging --------+---------------+ 左外部結合 LEFT OUTER JOIN select * from mytest1 left outer join mytest2 using (id); --------+---------------+ id hobby --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging --------+---------------+ 左 (mytest1) を基準にして結合 INNER JOIN の書き方で結合 select * from mytest1 inner join mytest2 using (id); --------+---------------+ id hobby --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging --------+---------------+ 上の書き方と意味は全く同じ DB-9 11 select * from mytest1 right outer join mytest2 using (id); --------+---------------+ id hobby --------+---------------+ 右外部結合 RIGHT OUTER JOIN 00r950 skating 00r951 reading books 00r952 jogging NULL NULL NULL 00r953 travelling --------+---------------+ 右 (mytest2) を基準にして結合 DB-9 12 USING ではなくて ON 条件式を使う 条件式を書かず NATURAL を指定 JOIN による結合 ( やってみた 3) select * from mytest1 left outer join mytest2 on (mytest1.id=mytest2.id); --------+---------------+ id hobby --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging --------+---------------+ select * from mytest1 natural left outer join mytest2; --------+---------------+ id hobby --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging --------+---------------+ select * from mytest1 natural right outer join mytest2; --------+---------------+ id hobby 同上 但し右結合 --------+---------------+ 00r950 skating 00r951 reading books 00r952 jogging NULL NULL NULL 00r953 travelling --------+---------------+ 左 (mytest1) を基準にして結合 右 (mytest2) を基準にして結合 DB-9 13 JOIN による結合 ( ついでに ) select * from mytest1 cross join mytest2; --------+---------------+ id hobby --------+---------------+ CROSS JOINは 00r950 skating 00r950 skating 2つの表の ONやUSINGを 00r950 skating 直積使用しないと 00r951 reading books 00r951 reading books 直積を返す 00r951 reading books 00r952 jogging 00r952 jogging 00r952 jogging 00r953 travelling 00r953 travelling 00r953 travelling --------+---------------+ select * from mytest1, mytest2; --------+---------------+ id hobby 直積の基本的 --------+---------------+ 2つの表のな求め方 00r950 skating 00r950 skating 直積 00r950 skating 00r951 reading books 00r951 reading books 00r951 reading books 00r952 jogging 00r952 jogging 00r952 jogging 00r953 travelling 00r953 travelling DB-9 00r953 travelling --------+---------------+ 14

JOIN による結合例題演習 下記の社員と部署の表を結合する問合せは何か JOIN を使って書いてみよ 部署 部コード 営業 営業 社員 DB-9 15 データの更新 : 行の挿入 削除 更新 INSERT 文列を挿入 ( 追加 ) INSERT INTO 表名 ( 列名,, 列名 ) VALUES ( 列の値,, 列の値 ) insert into mytest1 (name) values ('sato kenji'); sato kenji NULL NULL 列 name しか挿入しなかったので 残りの列は値 NULL DB-9 具合が悪いことが多いので 全部の列を挿入する 16 全部の列を挿入する insert into mytest1 (name,id,age) values ('sato kenji','00r953',20); DELETE 文 列を削除 DELETE FROM 表名 WHERE < 条件 > < 条件 > で消したい列を ( うまく ) 指定する 行の順番に意味がない ( 集合!) ので 何か条件が必要 キー とか 主キー とか 列の指定の順序を変えてみた insert into mytest1 (age,id,name) values (20,'00r953','sato kenji'); 値の順序も変えなければならない delete from mytest1 where id='00r953'; DB-9 17 DB-9 18

delete from mytest1 ; Empty set WHERE で条件を書かないとすべてが削除の対象になり表は空になった UPDATE 文 列を変更 UPDATE 表名 SET 列 = 値,, 列 = 値 WHERE < 条件 > < 条件 > で指定された行に対して 列の値を 値 に置き換える delete from mytest1 where age=20; 複数の行が条件に適合し消された例 DB-9 19 update mytest1 set name='suzuki kiyoshi' where id='00r953'; +----------------+--------+------+ +----------------+--------+------+ suzuki kiyoshi 00r953 20 +----------------+--------+------+ DB-9 20 update mytest1 set name='sasaki hajime',id='00r999',age= where id='00r953'; sasaki hajime 00r999 SET 句に複数の変更を書いた例 name, id, age とも変更している ( 主キーとなる id も変えているので次のアクセス時には要注意 ) update mytest1 set name='sato kenji'; +------------+--------+------+ +------------+--------+------+ sato kenji 00r950 19 sato kenji 00r951 20 sato kenji 00r952 19 +------------+--------+------+ WHERE を書かないのですべての行が変更の対象になった DB-9 21 INSERT,DELETE,UPDATE 例題演習 下記の社員の表に < :8 名前 : 伊藤博文 : :> を追加する SQL 文を書け を削除する SQL 文を書け のを に変更する SQL 文を書け 社員表 DB-9 22

更新処理 COMMIT,ROLLBACK トランザクション型の使い方で役立つ COMMIT から COMMIT の間の更新は一時的 COMMIT した時点で確定する ROLLBACK すると前に COMMIT した時点に戻る AUTO COMMIT 更新のコマンドを実行するたびに COMMIT される 実習環境では試せないので注意 表の作成 CREATE TABLE CREATE TABLE 文 表を作成 CREATE TABLE 表名 ( 列名データ型や他の指定,, 列名データ型や他の指定 ) ( 列名データ型その他,, 列名データ型その他 ) に指定された列をもつ表を作成する create table mytest (name char(20), id char(6), age int); insert into mytest (name, id, age) values ('yamada ichiro', '00r599', 22); select * from mytest; yamada ichiro 00r599 22 DB-9 DB-9 24 表の作成 CREATE TABLE データ型 教科書 p137 その他の指定 PRIMARY KEY 主キーであることを指定 NOT NULL 値がNULLでないことを指定 FOREIGN KEY 外部キーであることを指定などなど create table mytest (name char(20) not null, id char(6) not null, age int, primary key (id)); Query OK, 0 rows affected (0.04 sec) insert into mytest (name, id, age) values ('yamada ichiro', '00r599', 22); Query OK, 1 row affected (0.00 sec) insert into mytest3 (name, id, age) values ('tanaka taro', '00r599', 24); ERROR 1062: Duplicate entry '00r599' for key 1 DB-9 表の変更 ALTER TABLE ALTER TABLE 文 表を変更 ALTER TABLE 表名変更の内容 ALTER TABLE 表名 ADD 列名データ型その他指定 ALTER TABLE 表名 MODIFY 列名データ型その他 alter table mytes1 drop hobby; alter table mytest1 add hobby char(20); alter table mytest1 modify name char(7); -------+ hobby +---------+--------+------+ -------+ NULL +---------+--------+------+ NULL tanaka 00r950 19 -------+ yamada 00r951 20 DB-9 +---------+--------+------+

ビューの作成 CREATE VIEW 実表 vs ビュー 実表 : 物理的に存在する表 CREATE TABLE ビュー : 仮想の表 CREATE VIEW ねらい : 不要な情報を隠す セキュリティ的な意味もある 実表の ( 参照しない列の ) 情報を知らなくても済む create view myview as select name,id from mytest1; select * from myview; name id tanaka ichiro 00r950 yamada taro 00r951 toho hanako 00r952 DB-9 27 ビューの作成 CREATE VIEW ビューに対する更新は 元の表も更新する ( 条件付 ) update myview set name= sasaki hajime where id='00r951'; ビュー myview を更新した create view myview as select name,id from mytest1; select * from myview; name id tanaka ichiro 00r950 yamada taro 00r951 toho hanako 00r952 ビュー myview を作った select * from myview; 実表 mytest1 name id も更新 tanaka ichiro 00r950 された sasaki hajime 00r951 sasaki hajime 00r951 20 toho hanako 00r952 DB-9 脱線表のコピー CREATE TABLE 表名 AS CREATE TABLE 新表 AS SELECT * from 旧表 create table mytest3 as select * from mytest3; 但し NOT NULL 以外の制約 たとえば主キーなどの構造が コピーされないので 手で移す 必要がある DB-9 29 CREATE VIEW 例題演習 下記の社員の表から < 名前 > からなるビューを作成する SQL 文を書け 社員表 DB-9

整合性制約定義 (PRIMARY KEY) 主キー (PRIMARY KEY) 制約 列 (or 列の集合 ) を主キーに指定 重複不可 NOT NULLであることが必要 nameだけ create table mytest6 主キー (name char(20) not null primary key, id char(6) not null, age int not null); insert into mytest6 (name, id, age) values ('tanaka ichiro', '00r950', 19); select * from mytest6; -----+ -----+ -----+ name,id,age の 3 つ組が主キー create table mytest7 (name char(20) not null, id char(6) not null, age int not null, primary key (name,id,age)); insert into mytest7 (name, id, age) values ('tanaka ichiro', '00r950', 19); select * from mytest7; ( 左と同じなので略 ) insert into mytest7 (name, id, age) values ('tanaka ichiro', '00r951', 20); 成功し その結果は select * from mytest7; -----+ -----+ tanaka ichiro 00r951 20 insert into mytest6 (name, id, age) values ('tanaka ichiro', '00r951', 20); ERROR 1062: Duplicate entry 'tanaka ichiro for key 1 ここの値は -----+ DB-9 上とは異なる 31 整合性制約定義 (UNIQUE) 複数列の組合せが UNIQUE であるように制約 複数列の組合せで候補キーとなるとき (?) create table mytest5 (name char(20), id char(6), age int, unique (name,id,age)) insert into mytest5 (name, id, age) values ('tanaka ichiro', '00r950', 19); select * from mytest5; insert into mytest1 (name, id, age) values ('tanaka ichiro', '00r950', 19); insert into mytest5 (name, id, age) values ('tanaka ichiro', '00r950', 19); ERROR 1062: Duplicate entry 'tanaka ichiro-00r950-19' for key 1 DB-9 整合性制約定義 (FOREIGN KEY) 外部参照時に 参照先の ( キーの ) 更新 削除に関して制約 ( 参照先がなくなると困るから ) 参照先の表の定義の中に書く 社員表 102 山田俊夫 佐藤健二 22 実習環境では試せないので注意 場所表 DB-9 33 場所 千葉 東京 場所表からを削除するとの [ 場所 が決まらなくなる 場所表の定義時に 列 が社員表から参照されていることを教えておき 削除 更新するときに社員表を確認して 参照しているタプルがないことをチェックする 整合性制約定義 (CHECK, DOMAIN) 検査制約 (CHECK) ( 任意の ) 条件をユーザ ( プログラマ ) が指定する 表の作成時や下記の定義域作成時に指定 たとえば CHECK ( 性別 IN ( 男, 女 )) 定義域制約 (DOMAIN) ( 任意の ) 定義域をユーザ ( プログラマ ) が作成する CREATE DOMAIN 定義域名 AS データ型 DEFAULT デフォルト値 CHECK ( 条件指定 ) 条件指定はたとえば VALUE IN ( 値,, 値 ) 実習環境では試せないので注意 DB-9 34

プログラムと SQL プログラム言語から SQL を使う場合 ( 授業はほとんど省略 ) 静的 SQL( 組込み SQL) と動的 SQL 静的 : コンパイル時に SQL 確定 動的 : 実行時に生成 SQL= 集合演算 結果は集合 プログラム言語で扱いにくい 細工として カーソル機能 カーソル処理機能 問合せ結果が複数行からなるとき 結果の一行を指す カーソル を定義し それを一行ずつずらしながら 行を受け取る プログラム言語 ( アプリ ) との連携のほか ストアドプロ シージャ ( 後述 ) でも用いる DB-9 36 DB-9 35 スドアドプロシージャ (Stored Procedure) DB 側に手続き ( プロシージャ ) を置く機能 プログラムの一部 (DB アクセス部分 ) を括り出す 整合性制約を実現する部分を DB 側に取り込む効果 プログラム DB 間の通信量軽減 コンパイルすることによる処理速度の向上 ロジックの共用化 呼出し vs トリガー (DB 更新後に条件によって起動 ) アプリケーション アクセス処理 データベース アプリケーション データベース アクセス処理