Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Db seminar 20190619

102 views

Published on

2019/06/19に開催したセミナー「初めてのSQL」の資料です

Published in: Environment
  • Be the first to comment

  • Be the first to like this

Db seminar 20190619

  1. 1. アジェンダ ・DB概要 ・表計算ソフトとDBの使い分け ・分野別担当SEのDBとの関わり ・コマンド紹介・実演 Insert Select ~ Where Select ~ Where 項目名 Like ~ Select Count(項目名) update Delete
  2. 2. DB概要 • RDBMS:Relational DataBase Management System(リレーショナルデータベース 管理システム)の略で、リレーショナルデータベースの構築や利用、運用に必要になる 利用環境(SQL言語)の提供やアクセス制御、データ保護、障害復旧など、統合的な環 境を提供するシステムのこと。 • ログ監視を行うことにより、いつ、誰が、何をしたかを知る いつ:System time を取得することにより処理が行われた際にYYYY/MM/DD hh:mm:ss でログとして残すことができる 誰が:実行者のログインユーザID(処理を実行した担当者等)を取得することによりログとして残すことができる 何をしたか:データの追加・更新・削除・検索等テーブル単位で監視設定が可能であり処理実行ログとして残すことが可能
  3. 3. 表計算ソフトとDBの使い分け 使い分け方としては 表計算ソフト DB データ数が多い場合 × 〇 100万件を超えるデータ等を扱うとき データ数が少ない場合 〇 〇 10000件程度のデータを扱うとき ファイル数が多くデータが点在している × 〇 複数のファイルからデータを集計して扱うとき ファイル数が少なくデータが纏まっている 〇 〇 単一のファイルでデータ集計して扱うとき 複雑な処理計算速度 × 〇 決算時の会計集計等の結果出力等 簡易的なデータ処理や表作成 〇 × 変更依頼管理や工数表・見積もり結果等作成時 他システムとの連携 △ 〇 使用例 ・表計算ソフト+DB ・VBAなどの画面+表計算ソフト ・パッケージソフト+DB など 画面との連携で使用する場合はDB VBA等で簡単な計算や集計を行う場合は表計算 ソフト
  4. 4. 分野別担当SEのDBとの関わり • SEと言っても分野で担当業務が異なる ①基盤 …サーバー基盤構築・ネットワーク構築等 インフラSE …DB構築にかかる設計 CE:カスタマーエンジニア …設計を基にDB構築のインストール・パラメータ設定作業 ②ネットワーク …サーバー・ネットワーク運用の保守業務 NE:ネットワークエンジニア …DB運用に関する運用設計 CE:カスタマーエンジニア …運用設計を基にDB運用にかかるログ監視作業 ③アプリケーション …ソフトウェア開発・保守等 SE:システムエンジニア …テーブルに関する設計(統計情報・DB構築等にも絡む) PG:プログラマー …設計書から実行するSQL処理をプログラムに落とし込む ① ② ③ 2019/8 /9 /10 /11 /12 2020/1 /2 /3 /4 /5 /6 /7 /8 /9 ~ ①基盤 ②ネットワーク ③アプリケーション
  5. 5. コマンド紹介:Insert データを新規に登録する場合に使用するコマンド EX) Insert into Employee_ID(Employee_ID,Employee_Name_1,Employee_Name_2) values('0000001','佐藤','蓮’); ※注意点 登録するテーブルの一意制約に従ってデータが登録されるようにする必要がある。
  6. 6. DB操作:実演
  7. 7. コマンド紹介:Select ~Where テーブルのデータを検索する場合の条件に使用する 書き方 ・Select 項目名 From テーブル名 Where 項目名=‘条件’ ・Select 項目名 From テーブル名 Where 項目名>=‘条件’ ・Select 項目名 From テーブル名 Where 項目名!=‘条件’ ※「!=」は意外条件であり「<>」でも意外条件となる Ex1) Select * From Employee_ID Where Employee_ID = '0000001’; ※注意点 <>!の使い方で検索処理が遅くなる
  8. 8. DB操作:実演
  9. 9. コマンド紹介:Select ~ Where 項目名 Like ~ テーブルのデータを検索する場合に使用する 書き方 Select 項目①,項目② From テーブル① Where 項目① Like ‘%001%’ Ex1) Select * From Employee_ID Where Employee_Name_1 Like '佐藤%'
  10. 10. コマンド紹介:Select Count(項目名) テーブルのデータを検索して条件マッチした件数をカウントする場合に使用する 書き方 Select count(項目①) AS 論理名 From テーブル① Ex1) Select Count(Employee_ID) AS Employee_ID_count From Employee_ID ※使用例としてはデータ移行時の旧DBと新DBの件数付け合わせ時に使用
  11. 11. DB操作:実演 Where ~ like ‘佐藤%’ Select count(*)
  12. 12. コマンド紹介:update テーブルに既に登録されているデータの更新を行う場合に使用する 書き方 Update テーブル① Set 項目②=‘値’ Where 項目①=‘更新対象の値’ Ex) Update Employee_ID Set Employee_Name_2 = ‘明義’ Where Employee_Name_1 = ‘佐藤’ ※一意制約項目を全て指定していない場合、該当した行全てが更新される
  13. 13. DB操作:実演
  14. 14. コマンド紹介:delete テーブルに既に登録されているデータ行の削除 書き方 Delete From テーブル① Where 項目①=‘値’ Ex) Delete From Employee_ID Where Employee_Name_1 = ‘佐藤’ ※一意制約項目を全て指定しない場合、該当したデータ行分すべて削除されるため、削除 要件が単体・複数かを確認の上、処理を行うように
  15. 15. DB操作:実演
  16. 16. EOF
  17. 17. 時間の余った方用… 以下のテーブルを結合し、ID・名字・名前・都道府県名・市区町村名・町域名を出力 ・Employee_ID ・Employee_address ・KEN ①自身のID(好きな番号)・名字・名前をEmployee_IDにinsert ②Employee_addressに①で登録したIDを登録して、id_2に郵便番号を「-」無しで登録 ③select文を使用して結合結果を確認
  18. 18. その他・補足資料
  19. 19. コマンド紹介:insert データを新規に登録する場合に使用するコマンド EX) INSERT INTO AAAA (CardID, CustomerID, IssueDate, ExpireDate, EmployeeID) VALUES ( 'NW0001', 'ALFKI', '2001/4/1', '2002/3/31', '7’ ) ※注意点 登録するテーブルの一意制約に従ってデータが登録されるようにする必要がある。
  20. 20. コマンド紹介:Select ~Where テーブルのデータを検索する場合の条件に使用する 書き方 ・Select 項目名 From テーブル名 Where 項目名=‘条件’ ・Select 項目名 From テーブル名 Where 項目名>=‘条件’ ・Select 項目名 From テーブル名 Where 項目名!=‘条件’ ※「!=」は意外条件であり「<>」でも意外条件となる Ex1) Select * From YYYY Where ID = ‘001’ ※注意点 <>!の使い方で検索処理が遅くなる
  21. 21. コマンド紹介:Select ~ Where 項目名 Like ~ テーブルのデータを検索する場合に使用する 書き方 Select 項目①,項目② From テーブル① Where 項目① Like ‘%001%’ Ex1) Select ID,USER_NAME From YYYY Where USER_NAME Like ‘佐藤%’
  22. 22. コマンド紹介:Select ~ inner join テーブルのデータを検索する場合にテーブルを内部結合する条件として使用する 書き方 Select テーブル①.項目①,テーブル②.項目② From テーブル① inner join テーブル② on テーブル①.項目①=テーブル②.項目① Ex1) Select YYYY.ID,XXXX.USER_NAME From YYYY inner join XXXX on YYYY.ID=XXXX.ID ※Ex1の場合、YYYYのIDでXXXXのIDを検索し、 XXXXのUSER_NAMEを取得する。 この際にYYYYのIDとXXXXのIDが一致しない場合は検索結果として出力されない。
  23. 23. コマンド紹介:Select ~ left(right) outer join テーブルのデータを検索する場合にテーブルを外部結合する条件として使用する 書き方 Select テーブル①.項目①,テーブル②.項目② From テーブル① left outer join テーブル② on テーブル①.項目①=テーブル②.項目① Ex1) Select YYYY.ID,XXXX.USER_NAME From YYYY left outer join XXXX on YYYY.ID=XXXX.ID ※Ex1の場合、YYYYのIDでXXXXのIDを検索し、XXXXのUSER_NAMEを取得する。こ の際にYYYYのIDとXXXXのIDが一致しない場合でも検索結果を出力する。
  24. 24. コマンド紹介:Select (副問い合わせ) テーブルのデータを検索する場合に検索結果をテーブルに見立て結合する条件として使用 する Select A.項目①,B.項目③ From テーブル① AS A, (Select 項目①,項目③ FROM テーブル② inner join テーブル③ on テーブル②.項目②=テーブル③.項目②) AS B Where A.項目①=B.項目① Ex1) Select A.ID,A.name,B.TEL_NUM From YYY1 AS A, (select ID,TEL_NUM From YYY2 Where ID = ‘001’
  25. 25. コマンド紹介:Select Count(項目名) テーブルのデータを検索して条件マッチした件数をカウントする場合に使用する 書き方 Select count(項目①) AS 論理名 From テーブル① Ex1) Select Count(ID) AS ID_count From YYYY ※使用例としてはデータ移行時の旧DBと新DBの件数付け合わせ時に使用
  26. 26. コマンド紹介:update テーブルに既に登録されているデータの更新を行う場合に使用する 書き方 Update テーブル① Set 項目②=‘値’ Where 項目①=‘更新対象の値’ Ex) Update YYYY Set USER_NAME = ‘佐藤 明義’ Where ID = ‘00001’ ※一意制約項目を全て指定していない場合、該当した行全てが更新される
  27. 27. コマンド紹介:delete テーブルに既に登録されているデータ行の削除 書き方 Delete From テーブル① Where 項目①=‘値’ Ex) Delete From YYYY Where ID = ‘00001’ ※一意制約項目を全て指定しない場合、該当したデータ行分すべて削除されるため、削除 要件が単体・複数かを確認の上、処理を行うように
  28. 28. コマンド紹介:drop テーブル等の格納場所を物理的に削除する場合に使用する 書き方 Drop table テーブル名; ※運用が始まっている場合には基本的に使用しない。 ※削除後自動的にコミットされるためロールバックできないため、処理前には必ずDBの バックアップを行うこと
  29. 29. テーブル作成時の注意点 • カラム(項目) 物理名…テーブルのカラム(項目)名 型 …カラムのどの型で扱いうかを指定する必要があり、型には以下の種類が存在する CHAR(固定長文字型)・VARCHAR2 (可変長文字型) ・NUMBER(数値型)・DATE(日付型) 基本的に上記が使用されている 桁 …カラムの最大桁数を指定することができる また文字数・バイト数での扱い方法の取り決めなどの指定を行う (システムによって最大文字数・最大バイト数での登録となり扱いが異なる) PK …主キー。Not null制約がかかると共にキー項目として設定される。 テーブルキー項目での一意制約 NN …not null制約。設定したカラム内にnull(ブランク)の登録は不可となる UK …unique制約。Null(ブランク)が許容されるキー項目として指定できる。一意制約 FK …子キー。ソート順の指定として使用される(こともある。。。) index …処理を行う場合のソート順の指定が可能であり、検索速度を上げる場合に使用される 複数設定することができ、処理のヒント句で指定することが可能 (基本的には自動でいずれかが選択される)

×