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

Similar documents
データベースS

Microsoft PowerPoint - db03-5.ppt

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

プレポスト【問題】

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

Chapter Two

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

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

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

標準化 補足資料

Chapter Two

PowerPoint プレゼンテーション

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

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

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

Microsoft PowerPoint pptx

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

,, create table drop table alter table

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

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

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

基本サンプル

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

Oracle9i

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

Functional Programming

基本サンプル

PowerPoint プレゼンテーション

基本サンプル

Oracle Direct Seminar <Insert Picture Here> 体感型セミナー SQL をクイズ感覚で学ぶ! SQL クイズ 日本オラクル株式会社

Oracle Direct Seminar <Insert Picture Here> 試験対策ポイント解説 11g SQL 基礎 Ⅰ 日本オラクル株式会社

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

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

目次 1 集計関数 / 分析関数とは 2 集計関数 / 分析関数のパフォーマンス効果 3 ケーススタディグループ小計やクロス集計を計算するランキングを表示する前月比較を表示する累計を計算する移動平均を計算する構成比を計算する Oracle8i SQL Oracle8i Oracle Oracle C

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

CMP2-3SQL2b.pptx

Microsoft Word - SQL.rtf

A Dynamic Mobility Histogram Construction Method Based on Markov Chains

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

結合サンプル

PowerPoint Presentation

/var/lib/sharelatex/data/compiles/5b35c6e168aeba3d a72a7acd11f6ba07fbbff68/output.dvi

橡ExCtrlPDF.PDF

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

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

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

Oracle9i Reportsのチューニング

: ORDER BY

3 3.1 SSedit ua012345% ssedit SuperSQL config.ssql log.txt( logs.txt) SSedit SSedit 3.2 ssql Putty SSedit ua012345% ssql HTML /public html/ssql.ssql 4

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

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

Oracle Developer for Microsoft Windows R6i Patch13 リリース・ノート

Microsoft PowerPoint - system8.ppt

Basic descriptive statistics

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

領域サイズの見積方法

3 3.1 SSedit ua012345% ssedit SuperSQL config.ssql log.txt( logs.txt) SSedit SSedit 3.2 ssql Putty SSedit ua012345% ssql HTML /public html/ssql.ssql 4

PowerPoint Presentation

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

橡実践Oracle Objects for OLE

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

ICT-Literacy1

KeySQL R5.1のご紹介

Microsoft PowerPoint - KeySQ50master ppt

untitled

今さら聞けない!? Oracle入門 ~後編~

PowerPoint プレゼンテーション

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

PA4

Microsoft Word - sample_adv-programming.docx

Amazon Redshift テーブル設計詳細ガイド –分散スタイルとソートキーの決定方法–

Si 知識情報処理

情報処理Ⅰ

Oracle Developer for HP-UX PA-RISC R6i Patch13 リリース・ノート

変更履歴 版数変更日変更内容 /9/1 初版設定

XMLとXSLT

2.3 ssqltool (3.1 ) postgresql (ua ) itc.db.ics.keio.ac.jp /public html/ssql SuperSQL HTML /public html/ssql /ssql/xxxx.

1 はじめに 従 来 診 療 報 酬 明 細 書 (レセプト)は 紙 媒 体 で 請 求 されてき たが 2011 年 度 より 原 則 として 電 子 請 求 されるようになった 従 来 の 紙 媒 体 に 比 べ 分 析 が 容 易 になったため 電 子 化 され たレセプトデータの 様 々な

スライド 1

tkk0408nari

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

_02_3.ppt

講習No.9

フィルタとは

Oracle活用実践演習コース

PowerPoint プレゼンテーション

R pdf

Taro-リストⅠ(公開版).jtd

プログラミング実習I

Microsoft PowerPoint - ad11-09.pptx

プレポスト【解説】

早分かりS2Dao

正誤表(FPT1004)

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

現在 数多くの DBMS が存在しますが SQL の基本的なコマンドは標準化されており どの DBMS でもある程度同じものが利用可能です ただし それぞれの DBMS の機能の違いにより存在しないコマンドがあったり オプション指定が異なる場合があるため まったく同じとは言えません なお DBMS

コンピュータの構成

Slide 1

Transcription:

66 SQL 最も標準的なリレーショナルデータベースの言語 ISO による国際標準規格であり特定の企業に依存しない SQL の規格 :SQL89(SQL1), SQL92(SQL2), SQL:1999(SQL3), SQL:2003, SQL:2006, SQL:2008, SQL:2011 標準規格としての SQL は 何かの略語ではない と規定されている ( 参考 : IBM 社の製品で使われている SQL は Structured Query Language の略 ) 実際のリレーショナルデータベース管理システムでは SQL:1999 に準拠した実装が多い

67 SQL の特徴 SQL は表形式データの操作言語 (manipulation language) であり 複数の表を入力として 1 つの表を作成して返す ここでいう 表 (table) とはタップルのマルチ集合 ( 同じデータが複数存在することを許す ) である タップルは表の 行 のデータを指す SQL では他の多くのプログラミング言語とは異なり データ操作を英語に似た構文で宣言的に記述する 宣言的な記述は 処理系に最適化のための自由度を与える 手続き的な記述では データ操作の順番を変えるなどの最適化が容易ではない

68 SQL の構文 ( 一部 ) select [all distinct] < 列リスト > from < 表リスト > [where < 検索条件 >] [group by < グループ化する列のリスト >] [having < タップルの選択条件 >] [union [all] intersect except] 副問合せ ] [order by < ソート条件 > [asc desc]] ( 注 )[ ] の中は省略可能であり [a b] は a か b を選 択するか または省略できることを示す

69 SQL の構文の意味 select 列リスト from 表リスト where 検索条件 実際の処理手順は from-where-select の順で考 えたほうが理解しやすい 例 select R.A from R,S where R.A=S.B from R, S R S(R と S の直積 ) where R.A=S.B R.A=S.B の条件で選択 select R.A R.A のみを出力 ( 注意 )select distinct R.A としない限り 行の重複は除かれない

SQL の検索条件 select [all distinct]< 列リスト > from < 表リスト > [where < 検索条件 >] < 検索条件 > では, 次の比較演算子を利用することができる =, <>, >, <, <=, >=, like like による部分文字列比較の使用例 : 比較対象が employee のとき like emp% emp で始まる文字列 like %loyee loyee で終わる文字列 like %loy% loy を含む文字列は いずれも真となる 比較演算子の式は and や or でつなぐことができる ( 例 ) where salary >= 50 and salary <= 100 他に in 述語や exists 述語を書くことができる ( 部分問合せ で説明 ) 70

71 SQL による問合せの種類 単純問合せ (simple query) 1 つの表 (from の後に 1 個しか表を書かない ) についての問合せ 結合問合せ (join query) 複数の表を from の後に書く問合せ 表を結合するために表の直積を行った後 検索条件の下で選択し (where の条件 ) select の後の列リストで必要な部分だけ取り出して出力 部分問合せ ( 入れ子型問合せ nested query) where の検索条件の指定の中に 別の SQL の問合せを埋め込む 結合問合せとは異なり 結合処理は入れ子の最も内部の問合せから処理される

問合せの例 : 使用する表 72 emp dept empno ename deptno salary roomno E01 Smith D01 100 R01 E02 Morgan D01 70 R03 E03 Robert D01 80 R02 E04 Washington D02 120 R10 E05 Lincoln D02 90 R11 E06 Taylor D01 80 R12 E91 Suzuki D91 140 R91 E92 Tanaka D91 130 R91 E93 Matsuda D91 90 R91 deptno dname manager D01 Account E01 D02 Personnel E04 D91 Database E91

73 emp( 社員表 ) 問合せの例の意味 empno( 社員番号 ) ename( 社員名 ) deptno( 部門番号 ) salary( 給与 ) roomno( 部屋番号 ) dept( 部門表 ) deptno( 部門番号 ) dname( 部門名 ) manager( 部門長 )

単純問合せの例 (1) 74 select * from emp ( 表 emp を出力 ) SQL の問合せは必ず select で始まる empno ename deptno salary roomno E01 Smith D01 100 R01 E02 Morgan D01 70 R03 E03 Robert D01 80 R02 E04 Washington D02 120 R10 E05 Lincoln D02 90 R11 E06 Taylor D01 80 R12 E91 Suzuki D91 140 R91 E92 Tanaka D91 130 R91 E93 Matsuda D91 90 R91

単純問合せの例 (2) 75 select [all] deptno from emp ( 表 emp の deptno の一覧を求めよ ) select distinct deptno from emp deptno D01 D02 D91 ( 重複を削除 ) deptno D01 D01 D01 D02 D02 D01 D91 D91 D91

76 単純問合せの例 (3) select * from emp where salary >= 100 ( 給与が100 以上の社員を求めよ ) empno ename deptno salary roomno E01 Smith D01 100 R01 E04 Washington D02 120 R10 E91 Suzuki D91 140 R91 E92 Tanaka D91 130 R91

集約演算とグループ化 77 集約演算 (aggregation operation) 問合せの結果得られる列に対して行う演算のこと 演算の種類は avg( 平均 ) sum( 総和 ) max( 最大 ) min( 最小値 ) count( 要素の個数 ) など group byを使ったグループ化 (grouping) により 特定の項目ごとの集約演算が行える 例 : 部門ごとの給与の平均, 授業科目ごとの成績の平均 グループ化では さらに having 条件によりグループ化する列の項目に条件を付けることができる 例 :3 人以上社員がいる部門での給与の平均値 5 人以上受講者がいる授業科目での成績の平均値

78 集約演算の例 (1) グループ化しない集約演算 select avg(salary) from emp where deptno = 'D01' ( 表 emp から deptno が D01 の salary の平均値を求めよ ) avg(salary) 82.5 グループ化した集約演算 select deptno, avg(salary) from emp group by deptno ( 表 emp から deptno ごとの salary の平均値を求めよ ) deptno avg(salary) D01 82.5 D02 105 D91 120

79 集約演算の例 (2) having 条件付きでグループ化した集約演算 select deptno, avg(salary) from emp group by deptno having count(*) >= 3 ( 表 emp からタップルが 3 個以上ある deptno について その deptno の salary の平均値を求めよ ) deptno avg(salary) D01 82.5 D91 120

80 結合問合せ (join query) 複数の表を指定して それらの表にまたがって検索 条件を満たすタップルを求める問合せのこと 意味的には 指定された複数の表のタップルの直積を取った後 検索条件を満たすものを選択する操作 問合せが複数の表にまたがるため 列名を指定するときは表名を前につける必要がある 例 : 表 emp の中の列 ename であれば emp.ename と書く 同じ表を 2 回以上使って 表にまたがる結合問合せを行うときは 表名では区別が付かないので 表に別名 (alias) を付けて区別することができる

結合問合せの例 81 select emp.*, dept.* from emp, dept where emp.deptno=dept.deptno ( 注 )SQL:1999 から以下の構文が導入された select emp.*, dept.* from emp join dept on emp.deptno=dept.deptno empno ename deptno salary roomno deptno dname manager E01 Smith D01 100 R01 D01 Account E01 E02 Morgan D01 70 R03 D01 Account E01 E03 Robert D01 80 R02 D01 Account E01 E04 Washington D02 120 R10 D02 Personnel E04 E05 Lincoln D02 90 R11 D02 Personnel E04 E06 Taylor D01 80 R12 D01 Account E01 E91 Suzuki D91 140 R91 D91 Database E91 E92 Tanaka D91 130 R91 D91 Database E91 E93 Matsuda D91 90 R91 D91 Database E91

結合問合せの例 ( 自然結合 ) 82 select * from emp natural join dept SQL:1999 で導入された構文列の順番が必ずしも元の表の順番になるとは限らないことに注意 ( 結合する 2 個の表に共通する列名 ( 以下では deptno) が先頭に来る ) deptno empno ename salary roomno dname manager D01 E01 Smith 100 R01 Account E01 D01 E02 Morgan 70 R03 Account E01 D01 E03 Robert 80 R02 Account E01 D02 E04 Washington 120 R10 Personnel E04 D02 E05 Lincoln 90 R11 Personnel E04 D01 E06 Taylor 80 R12 Account E01 D91 E91 Suzuki 140 R91 Database E91 D91 E92 Tanaka 130 R91 Database E91 D91 E93 Matsuda 90 R91 Database E91

結合問合せの例 ( 自然結合の別の書き方 ) select emp.*, dept.dname, dept.manager from emp, dept where emp.deptno=dept.deptno または select emp.*, dept.dname, dept.manager from emp join dept on emp.deptno=dept.deptno empno ename deptno salary roomno dname manager E01 Smith D01 100 R01 Account E01 E02 Morgan D01 70 R03 Account E01 E03 Robert D01 80 R02 Account E01 E04 Washington D02 120 R10 Personnel E04 E05 Lincoln D02 90 R11 Personnel E04 E06 Taylor D01 80 R12 Account E01 E91 Suzuki D91 140 R91 Database E91 E92 Tanaka D91 130 R91 Database E91 E93 Matsuda D91 90 R91 Database E91 83

84 結合問合せでの別名の使用例 表名を使った結合問合せ (SQL:1999 構文 ) select emp.ename from emp join dept on emp.deptno = dept.deptno where dept.dname = 'Account' ( 表 emp と表 dept から deptno の dname が Account である者の ename を求めよ ) 別名を使った結合問合せ select a.ename from emp a join dept b on a.deptno = b.deptno where b.dname = 'Account'

85 結合問合せによる欠損 (1) 表 dept から Database 部門を削除した表 dept2 を考える dept2 deptno dname manager D01 Account E01 D02 Personnel E04 表 emp と表 dept2 を次の結合問合せで結合する と どのような結果が得られるか? select a.ename, b.dname from emp a join dept2 b on a.deptno = b.deptno

86 結合問合せによる欠損 (2) 表 emp を 表 dept2 と結合すると 表 dept と結 合したときと比べてタップルが欠損する select a.ename, b.dname from emp a join dept b on a.deptno = b.deptno ename Smith Morgan Robert Washington Lincoln Taylor Suzuki Tanaka Matsuda dname Account Account Account Personnel Personnel Account Database Database Database select a.ename, b.dname from emp a join dept2 b on a.deptno = b.deptno ename dname Smith Account Morgan Account Robert Account Washington Personnel Lincoln Personnel Taylor Account

87 外結合 (outer join) 結合問合せで 結合条件で指定された列間で 一方の表にある値が他方の表にはない場合 検索条件不成立となり タップルの欠損が生じる このような時でも 外結合 (outer join) を行うことにより 存在しないところは空値にして結合結果を出すことで 元の表からのタップルの欠損を防ぐことができる (SQL:1999で導入された構文) 外結合には 次の3 種類がある 左外結合 (left outer join): 結合する左側の表の欠損を防ぐ 右外結合 (right outer join): 結合する右側の表の欠損を防ぐ 完全外結合 (full outer join): 結合する両側の表の欠損を防ぐ

外結合の例 表 emp と表 dept2 を左外結合 ( または完全外結合 ) により結合するとタップルの欠損は起こらない 88 select a.ename, b.dname from emp a left outer join dept2 b on a.deptno = b.deptno または select a.ename, b.dname from emp a full outer join dept2 b on a.deptno = b.deptno ename Smith Morgan Robert Washington Lincoln Taylor Suzuki Tanaka Matsuda dname Account Account Account Personnel Personnel Account NULL NULL NULL NULL は空値を表す参考 :NULL はシステム内部の表現であり 実行結果では表示されない ( 空白となる )