マイクロソフト Access での SQL 演習 第5回 副問い合わせ

Slides:



Advertisements
Similar presentations
情報処理 第9回第9回第9回第9回. 今日の内容 Excel の起動と画面構成 –Excel の起動 –Excel の画面構成と基本用語 データの入力 – 文字の入力 – 数値の入力 – 日時の入力 – オートフィル.
Advertisements

情報基礎 A 第 4 週 データベースと表計算 情報基礎 A 第 4 週 データベースと表計算 1 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
SQLエディタによる データベースプログラミング 01. データベースとはデータを1つにまとめて 複数のシステムで共有できるようにしたもの 蔵書管理システム 貸出管理システム 生徒ファイル 生徒番号 学年 クラス 番号 名前 性別 住所 貸出ファイル 貸出番号 図書番号 貸出月 貸出日 蔵書ファイル.
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
Accessによるデータベース(1) Ver.1 /11.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報処理 第12回.
発生生物学特論 PowerPoint の使い方
第7回 プレゼンテーション資料の作成 PowerPoint の使い方の簡単な説明
SQLエディタによる データベースプログラミング
配列(2) 第10回目 [6月22日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)課題
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
Excel による データベース入門 Ver /9.
PHPエディタによる 情報システム演習 01.
コントロールパネル ◎コントロール パネル: コンピュータのさまざまな機能を設定するための画面
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
Microsoft Office 2010 クイックガイド ~Access編~
ACCESSによる データベースアプリケーション開発実習 日本工業大学 情報工学科 “データベースの実際” 教材
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Accessによるデータベース(3) Ver /11.
データベース:Accessによる実習 第5章:クエリの基礎
     年  月  日 名前 太郎 1 班.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
湘南工科大学 2013年4月23日 プロジェクト実習A アドベンチャーゲームを作ろう 第3回 湘南工科大学情報工学科 准教授 小林 学.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
情報処理 第13回.
情報検索演習 第8回 パソコンを起動しておくこと 前から4列目までに着席すること 2005年11月30日 後期 水曜5限
この資料は、テキストをもとに、講義のために作成したものです.学習用に活用してください.
14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
マイクロソフト Access を使ってみよう 第5回
マイクロソフト Access を使ってみよう 第1回
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
マイクロソフト Access を使ってみよう 第4回
1 Macの基本操作 1-5 文字入力(1/4)  (1)Windows風のキー設定
表計算 Excel 演習 6. ルックアップ,データの入力規則.
経営工学基礎演習a PowerPointの利用.
データベースシステム入門 9.従属,従属関係,第三正規形
表計算 Excel 演習 4.検索,条件付き書式設定,並べ替え.
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
エクセル(6)の目次 「ユーザー設定リスト」の作成と削除 「入力規則」での「リスト」 ユーザー定義による表示形式
     年  月  日 名前 太郎 1 班.
湘南工科大学 2013年10月8日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
マイクロソフト Access での SQL 演習 第4回 並べ替え(ソート)
湘南工科大学 2013年10月22日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
マイクロソフト Access を使ってみよう 第2回
マイクロソフト Access を使ってみよう 第3回
情報システム1及び演習 第一回 データベースの概要.
マイクロソフト Access での SQL 演習 第2回 集計,集約
3.リレーショナルデータベース,主キー, SQL
ex-8. 平均と標準偏差 (Excel 実習シリーズ)
Ex-11. ルックアップ 金子邦彦.
14.外部キー,データ分析,データベース設計
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
C言語 はじめに 2016年 吉田研究室.
表計算 Excel 演習 1.Excel を使ってみる.
5.集計,ピボットテーブル(クロス集計表)
ORの手法ゲームの理論3 (Excelによるゲーム理論実習)
情報検索演習:第4回 前回の配布資料: 教室の前方のカサ立てにある パソコンを起動したさいに入力する 氏名に 「時限-学籍番号-名前」
or-8. ゲーム理論 (オペレーションズリサーチを Excel で実習するシリーズ)
情報処理 第13回.
ex-8. 平均と標準偏差 (Excel を演習で学ぶシリーズ)
1.Scheme の式とプログラム.
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
第1回.リレーショナルデータベースを使ってみよう
アウトライン Shiny の仕組み R システムに準備済みのオブジェクト Shiny のインストール Shiny のプログラム.
Presentation transcript:

マイクロソフト Access での SQL 演習 第5回 副問い合わせ キーワード: 問い合わせ(クエリ),副問い合わせ, IN,SQL ビュー https://www.kunihikokaneko.com/free/access/index.html

今日の授業で行うこと(1) AAさんが受けている科目(=国語) を1つでも受講している人は? 元データ 成績 氏名 科目名 AA 国語 CC 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 氏名 AA CC DD 科目名 国語 成績 AAさんが受けている科目(=国語) を1つでも受講している人は? select 氏名 from 成績 where 科目名 in (select 科目名 from 成績 where 氏名='AA');

今日の授業で行うこと(2) 最高点(100点)をとった人は? 元データ 成績 得点 氏名 100 CC 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 得点 100 氏名 CC 成績 最高点(100点)をとった人は? select 氏名 from 成績 where 得点 = (select max(得点) from 成績);

今日学習することはなぜ大切なのか 得点 氏名 100 CC 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 得点 100 氏名 CC 問い合わせ(クエリ)の結果を使った問い合わせ(クエ リ)ができるようになる.複数のテーブルがあってもOK

SQL の書き方の例 SELECT <* やフィールド名の並び> FROM <テーブル名の並び> WHERE <選択条件> 2つ以上のときは 半角カンマで区切る SELECT <* やフィールド名の並び> FROM <テーブル名の並び> WHERE <選択条件> 2つ以上のテーブル名を 並べるので、 半角カンマで区切る

SQL の書き方の例 SELECT <* やフィールド名の並び> FROM <テーブル名の並び> WHERE <選択条件> まとめページ 2つ以上のときは 半角カンマで区切る SELECT <* やフィールド名の並び> FROM <テーブル名の並び> WHERE <選択条件> 2つ以上のテーブル名を 並べるので、 半角カンマで区切る 選択条件が <属性名> IN ( <SQL問い合わせ> ) のときは <属性名> IN ( SELECT <フィールド名> FROM <テーブル名の並び> WHERE <選択条件>) のようになる

5-1 SQL の IN

SQL の IN 選択条件で,複数の値のどれか1つに 一致するという条件を指定したいとき 「算数」か「英語」を受講している人は? まとめページ 選択条件で,複数の値のどれか1つに 一致するという条件を指定したいとき 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 「算数」か「英語」を受講している人は? (どちらか1つあれば良い) 氏名 BB DD EE SELECT 氏名 FROM 成績 WHERE 科目名 IN ('算数', '英語');

SQL の IN SELECT 氏名 FROM 成績 WHERE 科目名 IN ('算数', '英語'); 半角丸かっこ で囲む 半角の まとめページ SELECT 氏名 FROM 成績 WHERE 科目名 IN ('算数', '英語'); 半角丸かっこ で囲む 半角の カンマ 半角丸かっこ で囲む

5-2 副問い合わせの例

副問い合わせ AAさんが受けている科目を1つでも受講している人は? 問い合わせの結果を,別の問い合わせで使いたいとき ◆ 副問い合わせなし SELECT 科目名 FROM 成績 WHERE 氏名='AA'; SELECT 氏名 FROM 成績 WHERE 科目名 IN ('国語'); ◆ 副問い合わせあり SELECT 氏名 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 氏名='AA');

副問い合わせ 問い合わせの結果を、別の問い合わせで使いたいことがある 元データ 成績 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 科目名 国語 成績 SELECT 科目名 FROM 成績 WHERE 氏名='AA'; 氏名 AA CC DD SELECT 氏名 FROM 成績 WHERE 科目名 IN ('国語');

副問い合わせ 問い合わせの結果を、別の問い合わせで使いたいことがある 元データ 成績 問い合わせの結果を, 別の問い合わせで使いたい 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 科目名 国語 成績 SELECT 科目名 FROM 成績 WHERE 氏名='AA'; 氏名 AA CC DD SELECT 氏名 FROM 成績 WHERE 科目名 IN ('国語');

こんな場合もあります DDさんが受けている科目を1つでも受講している人は? 元データ 成績 問い合わせの結果を, 別の問い合わせで使いたい 科目名 国語 算数 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 成績 SELECT 科目名 FROM 成績 WHERE 氏名='DD'; 氏名 AA BB CC DD SELECT 氏名 FROM 成績 WHERE 科目名 IN ('国語', '算数'); ※ 結果にDDが2個あるのは間違いではない(元のテーブルにDDが2個あるから)

副問い合わせ DDさんが受けている科目を1つでも受講している人は? 問い合わせの結果を,別の問い合わせで使いたいとき ◆ 副問い合わせなし SELECT 科目名 FROM 成績 WHERE 氏名='DD'; SELECT 氏名 FROM 成績 WHERE 科目名 IN ('国語', '算数'); ◆ 副問い合わせあり SELECT 氏名 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 氏名='DD'); この部分が副問い合わせ

5-3 副問い合わせの記述法

選択条件のバリエーション SQL問い合わせを 半角丸かっこで囲む ◆ <属性名> IN (<SQL 問い合わせ>) ◆ <属性名> = (<SQL 問い合わせ>) ※ この「SQL問い合わせ」の結果が   複数個あっても動作する(1個でも OK) SQL問い合わせを 半角丸かっこで囲む ※ この「SQL問い合わせ」の結果が   1個でないと動作しない(複数個はだめ)

<属性名> IN (<SQL 問い合わせ>) の例(1) AAさんが受けている科目を1つでも受講している人は? SELECT 氏名 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 氏名='AA'); 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 氏名 AA CC DD

<属性名> IN (<SQL 問い合わせ>) の例(2) AAさんが受けている科目を1つでも受講している人は? SELECT 氏名 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 氏名='DD'); 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 この「SQL問い合わせ」の結果が 複数個あっても動作する 氏名 AA BB CC DD

<属性名> = (<SQL 問い合わせ>) の例 最高点をとった人は? SELECT 氏名 FROM 成績 WHERE 得点 = (SELECT MAX(得点) FROM 成績); 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語 「=」を使っているので, この「SQL問い合わせ」の結果が 1個でないと動作しない 氏名 CC

5-4 副問い合わせを含む SQL

実習タイム その① Windows 8 を起動し、ログインしなさい Access 2013 を起動しなさい 実習タイム その①  Windows 8 を起動し、ログインしなさい Access 2013 を起動しなさい Access 2013 で、空のデスクトップデータベースを新規作成しな さい.ファイル名は「データベース11.accdb」にしなさい

実習タイム その① 4. 次のような成績テーブルを考える. 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 実習タイム その①   4. 次のような成績テーブルを考える. 氏名 科目名 得点 AA 国語 90 BB 算数 80 CC 100 DD 95 EE 英語

実習タイム その① 5. テーブル名「成績」のテーブル定義を行いなさい 氏名 短いテキスト 科目名 得点 数値型 フィールド名 データ型 実習タイム その①   5. テーブル名「成績」のテーブル定義を行いなさい  フィールド名 データ型 氏名 短いテキスト 科目名 得点 数値型 主キー は無い

実習タイム その① 6. データシートビューを使って、テーブル「成績」に データを入力しなさい. 氏名はすべて 半角か全角かどちらかに 実習タイム その① 6. データシートビューを使って、テーブル「成績」に データを入力しなさい. 氏名はすべて 半角か全角かどちらかに そろえる (半角と全角を混ぜない) データ 入力 データシートビュー

実習タイム その① 7. Access 2013 で、SQLビューを開きなさい. ①「作成」タブで、「クエリデザイン」をクリック 実習タイム その①  7. Access 2013 で、SQLビューを開きなさい. ①「作成」タブで、「クエリデザイン」をクリック ④「デザイン」タブで、「表示」を展開し「SQLビュー」を選ぶ ③「閉じる」を クリック ②「成績」を選び、「追加」をクリック

実習タイム その① AAさんが受けている科目を 1つでも受講している人は? select 氏名 from 成績 where 科目名 in 実習タイム その①  8. Access 2013 の SQL ビューに、次の SQL を入れなさい 9. 「実行」ボタンを押して、実行しなさい. 確認したら、SQL ビューに戻りなさい select 氏名 from 成績 where 科目名 in (select 科目名 where 氏名='AA'); AAさんが受けている科目を 1つでも受講している人は?

実習タイム その① select 氏名 from 成績 where 得点 = (select max(得点) from 成績); 実習タイム その①  10. Access 2013 の SQL ビューに、次の SQL を入れなさい 11. 「実行」ボタンを押して、実行しなさい. select 氏名 from 成績 where 得点 = (select max(得点) from 成績); 最高点をとった人は?

チャレンジ課題

学生テーブルと、試験テーブルを考える. (試験テーブルは次のページに記載している). 課題  学生テーブル

試験テーブル

課題 学生テーブルと、試験テーブルのテーブル定義を行いなさい ・ 今回は、テーブル定義についても自分で考えなさい 課題  学生テーブルと、試験テーブルのテーブル定義を行いなさい ・ 今回は、テーブル定義についても自分で考えなさい ・ なお、今回は、主キーを設定しなくても、後の問題を解く   のに支障はない

課題 データシートビューを使って、ページ31とページ32 の通りに、データを入力しなさい

試験のテーブルを使い,「数学か英語の試験を受けた学生の 学生番号」を得る、次のSQLを実行しなさい select 学生番号 from 試験 where 科目名 in ('数学', '英語'); 次の結果が得られることを確認しなさい 101 103 201 202

問題 (1)前のページを参考に、 「数学かプログラミングを受けた学生の学生番号」を得るSQL を考えなさい.パソコンで実行して確認しなさい (2)前のページを参考に、 「データベースかプログラミングを受けた学生の学生番号」を得 るSQLを考えなさい.パソコンで実行して確認しなさい

学生のテーブルから,「名前」が「織田」である学生と同じ 「所属」である学生の名前を得る、次のSQLを実行しなさい select 名前 from 学生 where 所属 = (select 所属 from 学生 where 名前 ='織田'); 次の結果が得られることを確認しなさい 織田 豊臣 徳川

問題 (3)前のページを参考に、 「名前」が「ワシントン」である学生と同じ「所属」である学生の名前 を得るSQLを考えなさい.パソコンで実行して確認しなさい

試験のテーブルから,「成績」が「最高値」である「科目 名」を得る、次のSQLを実行しなさい select 科目名 from 試験 where 成績 = (select max(成績) from 試験); 次の結果が得られることを確認しなさい プロセッサ 組み込み

問題 (4)前のページを参考に、 試験のテーブルから,「成績」が「最高値」である「学生番号」を得る SQLを考えなさい.パソコンで実行して確認しなさい (5)試験のテーブルから,「成績」が「最低値」である「学生番号」 を得るSQLを考えなさい.パソコンで実行して確認しなさい max のかわりに「min」をつかうことを考えなさい

試験のテーブルを使い,「学生番号」が「101」である学生が受 けた試験と同じ科目名の試験を1つでも受けた学生の学生番号を 得る、次のSQLを実行しなさい select 学生番号 from 試験 where 科目名 in (select 科目名 from 試験 where 学生番号 = 101); 次の結果が得られることを確認しなさい 101 103 201 ※ 101 が複数あるのは間違いではない

「学生番号」が「201」である学生が受けた試験と同じ科目名 の試験を1つでも受けた学生の学生番号 問題 (6)前のページを参考に、 「学生番号」が「201」である学生が受けた試験と同じ科目名 の試験を1つでも受けた学生の学生番号 をSQLを考えなさい.パソコンで実行して確認しなさい