リレーショナルデータベースとMicrosoft Accessの基礎:SQLによるデータ管理と分析の実践(スライド資料16回)

リレーショナルデータベースシステムはテーブル形式でデータを保存し,SQL言語を用いて検索・加工を行う.Microsoft Accessは,SQLの機能と,データベースを視覚的に操作できるツールを提供している.SQLは,CREATE TABLEによるテーブル定義,SELECT・FROM・WHEREによる問い合わせ(クエリ)などの機能がある.実際のデータ操作では,INNER JOINを用いたテーブル結合,GROUP BY句と集約関数を組み合わせた分析が重要である.また,正規化により,データの冗長性を減らし,整合性を向上させることができる.以上とその他リレーショナル・データベースの全般を16回のスライド資料と演習で学ぶ

大学で使用した自作の資料等を,手直しの上公開している. クリエイティブ・コモンズ BY NC SA.

目次

  1. de-1. Microsoft Access の起動と終了,画面の説明,基本操作 [PDF], [パワーポイント], [HTML]

    【概要】 データベースは,特定のテーマや目的に従って収集された大量のデータである.データベースシステムは,データベースを管理するシステムである.その中で,リレーショナルデータベースは,データをテーブルと呼ばれる表形式で保存し,テーブル間を関連で結ぶことで,複雑な構造を持ったデータを管理することを特徴とする.列は「属性」とも呼ばれる.各属性は「数値」「短いテキスト」などの特定のデータ型を持つ.Microsoft Accessは,このリレーショナルデータベースを作成・管理するためのソフトウェアであり,ビジュアルで親しみやすいインターフェースを提供している.リレーショナル・データベースを習得することは,データの管理や活用能力の向上につながる.

  2. de-2. Microsoft Accessを用いたデータベース操作入門:SQLとビジュアルインターフェースの活用 [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベース管理システム Microsoft Access の特徴としてビジュアルなインターフェースがある.テーブル定義,データの追加,問い合わせ(クエリ)などの基本操作を,データシートビュー,デザインビュー,SQLビューの3つの「ビュー」によって行うことができる.そして,SQLのCREATE TABLEを用いたテーブル定義や,SELECT,FROM,WHEREを使用した問い合わせ(クエリ)を行うこともできる.これらの操作を通じて,リレーショナルデータベースの仕組みや,データ管理の方法についても理解を深めることができる.データベース入門者を想定して,段階的な学習によってスキルの強化とデータベース理解の深化を目指す.

  3. de-3. Microsoft Accessを用いたデータベース操作入門(2):SQLの基礎から実践まで [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースは,データをテーブルと呼ばれる表形式で保存し,テーブル間を関連で結ぶことで,複雑な構造を持ったデータを管理することを特徴とする.主要な操作にはテーブル定義,テーブルへのデータ追加,問い合わせ(クエリ),テーブルの結合や分解がある.リレーショナルデータベースの重要な概念として,正規化(冗長なデータの排除),データの整合性,トランザクション,セキュリティがある.これらは,データの一貫性維持,効率的な情報抽出,安全なデータ管理に重要である.SQLは,データベースの問い合わせ(クエリ)やその他の操作を行う言語で,主要なコマンドにはCREATE TABLE,SELECT,FROM,WHERE,DISTINCTがある.Accessでは,SQLビューとデータシートビューを使い分けて,SQLの実行と確認を行う.以上を学ぶことで,データベース操作の実務能力と情報分析スキルの向上を図る.

  4. de-4. リレーショナルデータベースとMicrosoft Accessの基礎: データの効率的な管理と検索 [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースのSQLでは,SELECT,FROM,WHEREなどの基本的なキーワードを組み合わせることで,必要なデータを検索・抽出することができる.また,LIKEを用いたパターンマッチングにより,特定の文字列を含むデータの検索も可能である.Microsoft Accessでは,SQLビューとデータシートビューという2つの画面を使い分け,SQLの実行と結果の確認を行うことができる.SQLビューではSQL文の作成・編集を行い,データシートビューでは実際のデータの表示や編集を行う.これにより,データ検索・操作が可能となり,意思決定をサポートする重要なツールとなっている.

  5. de-5. SQL基礎:テーブル定義と問い合わせ(クエリ)(AccessによるSELECT文の実践的理解) [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースにおけるSQL操作の基本として,まず,CREATE TABLE文を使用したテーブル定義がある.そして,SQLによる問い合わせ(クエリ)の基本として,SELECT文,FROM句,WHERE句がある.SELECT文では,テーブルからのデータ取得,DISTINCTによる重複行の除去,条件指定による絞り込みが可能である.また,LIKE演算子によるパターンマッチング,IN演算子による値のリスト指定,BETWEEN演算子による範囲指定,AVG関数による平均値計算など,様々な機能がある.なお,Accessの特徴として,パターンマッチングにはワイルドカード(*)を使用する(SQL標準(%)と異なるので注意されたい).これらの基本的なSQL操作を理解することで,効率的なデータ管理と必要な情報の抽出が可能となる.

  6. de-6. テーブル結合とSQLによるデータ統合 [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースの重要な機能の一つがテーブルの結合である.結合は,複数のテーブルを特定の条件に基づいて一つにまとめる操作である.テーブルの結合は,SQLのINNER JOINとON句を使用して実行される.具体的には,商品テーブルと購入テーブルの結合では,商品テーブルの商品IDと購入テーブルの商品IDが等しいなどの条件でテーブルを結合し,誰がどの商品を購入したかというような情報を取得できる.Accessの操作では,SQLビューでSQL文を作成し,実行ボタンでコマンドを実行する.実行結果はデータシートビューで確認できる.なお,Microsoft Accessでは,ON句の後でAND,ORが使用できないなどの制約があり,ANDの代替としてWHERE句を使用する.

  7. de-7. SQLによるデータ分析:GROUP BYを用いたグループ化と集約 [PDF], [パワーポイント], [HTML]

    【概要】 SQLを用いたデータ分析においては,AVG,COUNT,SUM,MAX,MINなどの集約関数を適用することで,統計値(AVG:平均,COUNT:行数,SUM:合計,MAX:最大,MIN:最小)を算出できる.GROUP BY句を用いると,同じ属性値を持つデータをグループ化し,そのグループごとに集約処理を行うことが可能となる.これにより,科目別の平均点や受講者数といった分析を実施できる.さらに,WHERE句と組み合わせることで,特定の条件を満たすデータに対してのみグループ化と集約を行い,より詳細な分析が可能となる.このような分析手法は,トレンド分析やセグメント分析などの高度なデータ分析にも応用できるものである.

  8. de-8. SQLにおける副問い合わせと論理演算子(AND, OR)の基礎 [PDF], [パワーポイント], [HTML]

    【概要】 SQLにおける検索条件の指定では,複数の条件を組み合わせることができる.ANDは両方の条件が成立する場合を,ORはいずれかの条件が成立する場合を示すためのものである.また,複数の値のいずれかに一致するかをテストするIN演算子や,範囲指定のBETWEEN演算子もある.より高度な検索を実現する機能として副問合せがある.副問合せは別のSQL問合せ(クエリ)内に埋め込まれたSQL問合せであり,たとえば最高得点の受講者を検索する場合など,複数のSQLを組み合わせることで複雑な条件での検索が可能となる.これらは高度な検索を実現する上でも重要な役割を果たしている.

  9. de-9. 並べ替え(ソート) [PDF], [パワーポイント], [HTML]

    【概要】 SQLにおける並べ替え(ソート)では,ORDER BY句を用いることで,指定した列の値に基づいて昇順または降順にデータを整列させることができる.複数の列を指定した場合,第一優先・第二優先と順に適用される多段階の並べ替えが実現する.GROUP BY句とORDER BY句を組み合わせることで,グループ化された集計結果を並べ替えることもできる.

  10. de-10. データベース設計の基礎:主キー・外部キーを用いたテーブル間の関連付けとSQL実践 [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースのテーブルでは,主キーを用いて行を一意に識別し,外部キーを用いて他のテーブルと関連付けを行う.テーブルの定義にはCREATE TABLE文を使用し,主キー制約(PRIMARY KEY)や参照整合性制約(FOREIGN KEY ... REFERENCES)を指定する.例として,学生テーブル,講義テーブル,成績テーブルから構成され,学生と講義の間の多対多の関連を成績テーブルで扱う場合では,学生テーブルと講義テーブルに主キーがあり,成績テーブルには他の2つのテーブルへの外部キーがある.

  11. de-11. データベース操作:INSERT、UPDATE、DELETE [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースシステムの特徴として,データの整合性(データが論理的に矛盾なく正確であること)を保つための機能があり,誤ったデータや矛盾したデータの保存を防止する.データ操作にはSQLを使用し,データの追加・検索・更新・削除などを行う.また,トランザクション機能により,複数の処理を一単位として実行する.データの一貫性と信頼性を確保することができる.

  12. de-12. 中間まとめ [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースは,データをテーブル形式で保存し,テーブル間の関連付けにより複雑なデータを扱うシステムである.各テーブルは列(属性)と行(レコード)で構成され,列(属性)はデータ型を持つ.データ操作にはSQLと呼ばれるリレーショナル・データベースの標準的な言語が使用され,問い合わせ(クエリ),データ操作が可能である.さらに,INNER JOINを使用することで複数のテーブルを結合し,関連するデータを取得できる.これにより,柔軟な検索が実現されている.

  13. de-13. データ管理の基礎:オンライントランザクションとデータウェアハウスの特徴と活用 [PDF], [パワーポイント], [HTML]

    【概要】 データ管理には,オンライントランザクションとデータウェアハウスという2つの異なるアプローチがある.オンライントランザクションは,銀行取引やオンライン予約などのリアルタイム処理に適しており,最新のデータのみを保持する.一方,データウェアハウスは過去のデータを蓄積・分析するためのシステムで,履歴データを重視する.ここでの履歴データとは,時間の経過に伴うデータの変化を記録し,日時情報を付加して管理するものである.

  14. de-14. データベース設計演習,正規化 [PDF], [パワーポイント], [HTML]

    【概要】 リレーショナルデータベースは,データをテーブル形式で保存し,テーブル間の関連付けにより複雑なデータを扱うシステムである.リレーショナルデータベースシステムにおいて重要な役割を果たすのが正規化である.正規化は,データの冗長性を減らすための手法であり,正規化の結果としてデータの整合性が向上する.データの整合性とは,データベース内のデータが矛盾なく一貫した状態を保持することを意味し,これにより更新,削除,挿入時の異状を減少させることができる.この正規化プロセスにおいて重要なのが情報無損失の原則であり,これは正規化を施した後のテーブル群から,正規化する前のテーブルを正確に復元できることを保証するものである.

  15. de-15. Microsoft Access のビジュアルなツール [PDF], [パワーポイント], [HTML]

    【概要】 Microsoft Accessは,GUI(グラフィカルユーザーインターフェース)ベースの様々なツールを備える.これらのツールを用いて,さまざまな処理が可能である.テーブルツールは,テーブル定義を視覚的に実行でき,SQLでのテーブル定義を直接記述する必要がない.クエリデザインにより複雑なデータ抽出や更新操作であっても,視覚的に実行できる.さらに,フォームウィザードとレポートウィザードにより,データ入力画面や印刷用帳票を対話的に作成できる.

  16. de-16. リレーショナルデータベース活用演習 [PDF], [パワーポイント], [HTML]

    【概要】 Microsoft Accessの主な機能としては,テーブル定義,Excelファイルからのインポート,フォーム作成,データ検索,SQLの実行(例:集計集約)などがある.Microsoft AccessのSQL実行では,SQLビューで文を1つずつ実行し,テーブル定義やデータ操作を行う.

詳細

de-1. Microsoft Access の起動と終了,画面の説明,基本操作

資料

【概要】 データベースは,特定のテーマや目的に従って収集された大量のデータである.データベースシステムは,データベースを管理するシステムである.その中で,リレーショナルデータベースは,データをテーブルと呼ばれる表形式で保存し,テーブル間を関連で結ぶことで,複雑な構造を持ったデータを管理することを特徴とする.列は「属性」とも呼ばれる.各属性は「数値」「短いテキスト」などの特定のデータ型を持つ.Microsoft Accessは,このリレーショナルデータベースを作成・管理するためのソフトウェアであり,ビジュアルで親しみやすいインターフェースを提供している.リレーショナル・データベースを習得することは,データの管理や活用能力の向上につながる.

演習

  1. 演習1.Access の利用開始
  2. 演習2.テーブルの新規作成
  3. 演習3.データの挿入と保存

de-2. Microsoft Accessを用いたデータベース操作入門:SQLとビジュアルインターフェースの活用

資料

【概要】 リレーショナルデータベース管理システム Microsoft Access の特徴としてビジュアルなインターフェースがある.テーブル定義,データの追加,問い合わせ(クエリ)などの基本操作を,データシートビュー,デザインビュー,SQLビューの3つの「ビュー」によって行うことができる.そして,SQLのCREATE TABLEを用いたテーブル定義や,SELECT,FROM,WHEREを使用した問い合わせ(クエリ)を行うこともできる.これらの操作を通じて,リレーショナルデータベースの仕組みや,データ管理の方法についても理解を深めることができる.データベース入門者を想定して,段階的な学習によってスキルの強化とデータベース理解の深化を目指す.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1.Access の SQL ビューを用いたテーブル定義
    create table 商品 (
        ID autoincrement,
        商品名 text,
        単価 integer
    );
    
  2. 演習2.Access のデータシートビューを用いたデータの追加

     Accessのデータシートビューを使用

  3. 演習3.Access の SQL ビューを用いた問い合わせ

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    select *
    from 商品;
    
    select 商品名, 単価
    from 商品;
    
    select 商品名, 単価
    from 商品
    where 単価 > 80;
    
  4. 追加演習
    create table 購入 (
        購入者 text,
        商品番号 integer
    );
    
    select * from 購入 where 商品番号 = 1;
    

de-3. Microsoft Accessを用いたデータベース操作入門(2):SQLの基礎から実践まで

資料

【概要】 リレーショナルデータベースは,データをテーブルと呼ばれる表形式で保存し,テーブル間を関連で結ぶことで,複雑な構造を持ったデータを管理することを特徴とする.主要な操作にはテーブル定義,テーブルへのデータ追加,問い合わせ(クエリ),テーブルの結合や分解がある.リレーショナルデータベースの重要な概念として,正規化(冗長なデータの排除),データの整合性,トランザクション,セキュリティがある.これらは,データの一貫性維持,効率的な情報抽出,安全なデータ管理に重要である.SQLは,データベースの問い合わせ(クエリ)やその他の操作を行う言語で,主要なコマンドにはCREATE TABLE,SELECT,FROM,WHERE,DISTINCTがある.Accessでは,SQLビューとデータシートビューを使い分けて,SQLの実行と確認を行う.以上を学ぶことで,データベース操作の実務能力と情報分析スキルの向上を図る.

演習

  1. 演習1.Access の SQL ビューを用いたテーブル定義

    使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

    • 「テーブルの表示」という画面が開いた場合: 「閉じる」をクリックして続けてください.
    • 「テーブルの表示」という画面が開かない場合: 問題ありません.そのまま続けてください.

    create table 朝食と値段 (
      名前 text,
      朝食 text,
      値段 integer
    );
    
  2. 演習2.Access のデータシートビューを用いたデータの追加

     Accessのデータシートビューを使用

  3. 演習3.Access の SQL ビューを用いた重複行除去

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    SELECT DISTINCT 朝食
    FROM 朝食と値段;
    
  4. 演習4.Access の SQL ビューを用いたテーブル分解
    SELECT DISTINCT 名前, 朝食
    INTO 各自の朝食
    FROM 朝食と値段;
    
    SELECT DISTINCT 朝食, 値段
    INTO 朝食メニュー
    FROM 朝食と値段;
    

de-4. リレーショナルデータベースとMicrosoft Accessの基礎: データの効率的な管理と検索

資料

【概要】 リレーショナルデータベースのSQLでは,SELECT,FROM,WHEREなどの基本的なキーワードを組み合わせることで,必要なデータを検索・抽出することができる.また,LIKEを用いたパターンマッチングにより,特定の文字列を含むデータの検索も可能である.Microsoft Accessでは,SQLビューとデータシートビューという2つの画面を使い分け,SQLの実行と結果の確認を行うことができる.SQLビューではSQL文の作成・編集を行い,データシートビューでは実際のデータの表示や編集を行う.これにより,データ検索・操作が可能となり,意思決定をサポートする重要なツールとなっている.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1.Access の SQL ビューを用いたテーブル定義
    create table メニュー (
      名前 text,
      値段 integer
    );
    
  2. 演習2.Access のデータシートビューを用いたデータの追加

     Accessのデータシートビューを使用

  3. 演習3.パターンマッチ

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    select *
    from メニュー
    where 名前 like '*うどん*';
    
    select *
    from メニュー
    where 名前 like '*カレー*';
    
    select *
    from メニュー
    where 名前 like '*定食*';
    
  4. 演習4.実データを用いたデータ検索の演習

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    Access データベースファイル: db4-4.accdb

    SELECT DISTINCT 教育
    FROM 米国成人調査データ;
    
    SELECT DISTINCT 職業
    FROM 米国成人調査データ
    WHERE 年収5万ドル以上か = '>50K';
    
    SELECT DISTINCT 教育
    FROM 米国成人調査データ
    WHERE 教育 LIKE '*大学*';
    

de-5. SQL基礎:テーブル定義と問い合わせ(クエリ)(AccessによるSELECT文の実践的理解)

資料

【概要】 リレーショナルデータベースにおけるSQL操作の基本として,まず,CREATE TABLE文を使用したテーブル定義がある.そして,SQLによる問い合わせ(クエリ)の基本として,SELECT文,FROM句,WHERE句がある.SELECT文では,テーブルからのデータ取得,DISTINCTによる重複行の除去,条件指定による絞り込みが可能である.また,LIKE演算子によるパターンマッチング,IN演算子による値のリスト指定,BETWEEN演算子による範囲指定,AVG関数による平均値計算など,様々な機能がある.なお,Accessの特徴として,パターンマッチングにはワイルドカード(*)を使用する(SQL標準(%)と異なるので注意されたい).これらの基本的なSQL操作を理解することで,効率的なデータ管理と必要な情報の抽出が可能となる.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1.Access の SQL ビューを用いたテーブル定義
    CREATE TABLE 記録 (
        名前 TEXT,
        得点 INTEGER,
        居室 TEXT);
    

    参考情報

    テーブル定義済み、データ追加済みのデータベースファイル (利用は必須ではありませんが、必要な人は活用してください)

    Access データベースファイル: Database31.accdb

  2. 演習2.Access のデータシートビューを用いたデータの追加

     Accessのデータシートビューを使用

  3. 演習3.SQL による問い合わせ(クエリ)

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. SELECT * FROM 記録;
      

      「記録」テーブルのすべての属性とすべての行(レコード)を取得します。テーブル内のデータを全て表示したい時の書き方です。

    2. SELECT 名前 FROM 記録;
      

      「記録」テーブルから「名前」属性のみを取得します。

    3. SELECT 得点 FROM 記録;
      

      「記録」テーブルから「得点」属性のみを取得します。

    4. SELECT 居室 FROM 記録;
      

      「記録」テーブルから「居室」属性のみを取得します。重複を含む全ての居室の情報を表示します。

    5. SELECT DISTINCT 居室 FROM 記録;
      

      「記録」テーブルから「居室」属性の重複を除いた一意の値だけを取得します。どのような居室があるかを把握する時に便利です。

    6. SELECT 名前, 得点 FROM 記録 WHERE 得点 > 80;
      

      「記録」テーブルから得点が80より大きい記録の「名前」と「得点」のみを取得します。

    7. SELECT 名前, 得点 FROM 記録 WHERE 得点 BETWEEN 80 AND 85;
      

      「記録」テーブルから得点が80以上85以下の範囲にある記録の「名前」と「得点」を取得します。BETWEENにより、特定の得点範囲のデータを抽出されます。

    8. SELECT AVG(得点) FROM 記録;
      

      「記録」テーブルの「得点」属性の平均値を計算します。集計関数AVGを使用して平均値を得ます。

    9. SELECT * FROM 記録 WHERE 居室 LIKE '*階';
      

      「記録」テーブルから「居室」属性が「階」で終わる全ての行(レコード)を取得します。パターンマッチングにより、特定のパターンを持つものを選択します。

    10. SELECT * FROM 記録 WHERE 居室 IN ('1階', '2階');
      

      「記録」テーブルから「居室」が'1階'または'2階'に一致するすべての行(レコード)を取得します。

de-6. テーブル結合とSQLによるデータ統合

資料

【概要】 リレーショナルデータベースの重要な機能の一つがテーブルの結合である.結合は,複数のテーブルを特定の条件に基づいて一つにまとめる操作である.テーブルの結合は,SQLのINNER JOINとON句を使用して実行される.具体的には,商品テーブルと購入テーブルの結合では,商品テーブルの商品IDと購入テーブルの商品IDが等しいなどの条件でテーブルを結合し,誰がどの商品を購入したかというような情報を取得できる.Accessの操作では,SQLビューでSQL文を作成し,実行ボタンでコマンドを実行する.実行結果はデータシートビューで確認できる.なお,Microsoft Accessでは,ON句の後でAND,ORが使用できないなどの制約があり,ANDの代替としてWHERE句を使用する.

なお,Accessには機能制限があり,標準SQLの全機能は利用できない.以下のような構文となる:

SELECT * FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';

標準SQLでの記述:

SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号 AND 購入.購入者 = 'X';

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1.AccessのSQLビューを用いたテーブル定義,データの追加

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. CREATE TABLE 商品 (
          ID INTEGER,
          商品名 TEXT,
          単価 INTEGER);
      

      「商品」というテーブルを定義しています。ここでは,ID(整数型),商品名(テキスト型),単価(整数型)の3つの属性を定義しています。

    2. INSERT INTO 商品 VALUES(1, 'みかん', 50);
      

      「商品」テーブルに新しい行(レコード)を挿入しています。ID=1,商品名=みかん,単価=50円のデータです。

    3. INSERT INTO 商品 VALUES(2, 'りんご', 100);
      

      「商品」テーブルに新しい行(レコード)を挿入しています。ID=2,商品名=りんご,単価=100円のデータです。

    4. INSERT INTO 商品 VALUES(3, 'メロン', 500);
      

      「商品」テーブルに新しい行(レコード)を挿入しています。ID=3,商品名=メロン,単価=500円のデータです。

    5. CREATE TABLE 購入 (
          購入者 TEXT,
          商品番号 INTEGER);
      

      「購入」というテーブルを定義しています。ここでは,購入者(テキスト型)と商品番号(整数型)の2つの属性を定義しています。

    6. INSERT INTO 購入 VALUES('X', 1);
      

      「購入」テーブルに新しい行(レコード)を挿入しています。購入者=X,商品番号=1(みかん)のデータです。

    7. INSERT INTO 購入 VALUES('X', 3);
      

      「購入」テーブルに新しい行(レコード)を挿入しています。購入者=X,商品番号=3(メロン)のデータです。

    8. INSERT INTO 購入 VALUES('Y', 2);
      

      「購入」テーブルに新しい行(レコード)を挿入しています。購入者=Y,商品番号=2(りんご)のデータです。

    演習1が終わったら,Accessを閉じずに,演習2に進んでください.

    演習1をうまく行えなかった人は,次のデータベースファイルを参考にしてください.うまく終えた人には必要のないものです.

    e7-2.accdb

  2. 演習2.SQLによる結合

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. 単純な表示:「商品」テーブルの全データを取得する問い合わせ(クエリ)です。
      select * FROM 商品;
      
    2. 結合:「商品」と「購入」テーブルを商品IDで結合し,関連するすべての行を表示します。
      SELECT * FROM 商品
      INNER JOIN 購入
      ON 商品.ID = 購入.商品番号;
      
    3. 複数の条件の指定:購入者Xが購入した商品の全情報を表示します。
      SELECT * FROM 商品
      INNER JOIN 購入
      ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';
      
    4. 表示される属性を絞り込む:購入者Xについて,商品名,購入者,単価のみを表示します。
      SELECT 商品名, 購入者, 単価 FROM 商品
      INNER JOIN 購入
      ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';
      
    5. 今度は,購入者 Y に関するデータ取得:購入者Yの商品名,購入者,単価情報を取得します。
      SELECT 商品名, 購入者, 単価 FROM 商品
      INNER JOIN 購入
      ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'Y';
      
  3. 演習3.米国成人調査データ

    使用するデータベースファイル

    db7-3.accdb

    SELECT * FROM 米国成人調査データ
    INNER JOIN 対象国
    ON 米国成人調査データ.母国 = 対象国.名前;
    

de-7. SQLによるデータ分析:GROUP BYを用いたグループ化と集約

資料

【概要】 SQLを用いたデータ分析においては,AVG,COUNT,SUM,MAX,MINなどの集約関数を適用することで,統計値(AVG:平均,COUNT:行数,SUM:合計,MAX:最大,MIN:最小)を算出できる.GROUP BY句を用いると,同じ属性値を持つデータをグループ化し,そのグループごとに集約処理を行うことが可能となる.これにより,科目別の平均点や受講者数といった分析を実施できる.さらに,WHERE句と組み合わせることで,特定の条件を満たすデータに対してのみグループ化と集約を行い,より詳細な分析が可能となる.このような分析手法は,トレンド分析やセグメント分析などの高度なデータ分析にも応用できるものである.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 成績 (
        科目 TEXT,
        受講者 TEXT,
        得点 INTEGER);
    
    INSERT INTO 成績 VALUES('国語', 'A', 85);
    
    INSERT INTO 成績 VALUES('国語', 'B', 90);
    
    INSERT INTO 成績 VALUES('算数', 'A', 90);
    
    INSERT INTO 成績 VALUES('算数', 'B', 96);
    
    INSERT INTO 成績 VALUES('理科', 'A', 95);
    
  2. 演習1が終わったら,Accessを閉じずに,演習2に進んでください.

    演習1をうまく行えなかった人は,次のデータベースファイルを参考にしてください.うまく終えた人には必要のないものです.

    e7-1.accdb

  3. 【演習2】

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    単純な表示

    SELECT * FROM 成績;
    

    得点の平均

    SELECT AVG(得点) FROM 成績;
    

    国語の得点の平均

    SELECT AVG(得点) FROM 成績 WHERE 科目 = '国語';
    

    それぞれの科目の受講者数

    SELECT 科目, COUNT(*) FROM 成績 GROUP BY 科目;
    

    それぞれの科目の平均得点

    SELECT 科目, AVG(得点) FROM 成績 GROUP BY 科目;
    

    それぞれの科目について,得点が90点以上である受講者数

    SELECT 科目, COUNT(*) FROM 成績 WHERE 得点 >= 90 GROUP BY 科目;
    

    それぞれの受講者が受講している科目数

    SELECT 受講者, COUNT(*) FROM 成績 GROUP BY 受講者;
    

    それぞれの受講者の得点合計

    SELECT 受講者, SUM(得点) FROM 成績 GROUP BY 受講者;
    

    それぞれの受講者の得点平均

    SELECT 受講者, AVG(得点) FROM 成績 GROUP BY 受講者;
    
  4. 【実データを用いた演習】

    次のAccessデータベースファイルを使用

    db4-4.accdb

    SELECT 年齢, count(*)
    FROM 米国成人調査データ
    GROUP BY 年齢;
    
    SELECT 教育, count(*)
    FROM 米国成人調査データ
    GROUP BY 教育;
    
    SELECT 週当たり労働時間, count(*)
    FROM 米国成人調査データ
    GROUP BY 週当たり労働時間;
    
    SELECT 年収5万ドル以上か, count(*)
    FROM 米国成人調査データ
    GROUP BY 年収5万ドル以上か;
    
    SELECT 教育, 年収5万ドル以上か, count(*)
    FROM 米国成人調査データ
    GROUP BY 教育, 年収5万ドル以上か;
    

de-8. SQLにおける副問い合わせと論理演算子(AND, OR)の基礎

資料

【概要】 SQLにおける検索条件の指定では,複数の条件を組み合わせることができる.ANDは両方の条件が成立する場合を,ORはいずれかの条件が成立する場合を示すためのものである.また,複数の値のいずれかに一致するかをテストするIN演算子や,範囲指定のBETWEEN演算子もある.より高度な検索を実現する機能として副問合せがある.副問合せは別のSQL問合せ(クエリ)内に埋め込まれたSQL問合せであり,たとえば最高得点の受講者を検索する場合など,複数のSQLを組み合わせることで複雑な条件での検索が可能となる.これらは高度な検索を実現する上でも重要な役割を果たしている.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 成績 (
        科目 TEXT,
        受講者 TEXT,
        得点 INTEGER);
    
    INSERT INTO 成績 VALUES('国語', 'A', 85);
    
    INSERT INTO 成績 VALUES('国語', 'B', 90);
    
    INSERT INTO 成績 VALUES('算数', 'A', 90);
    
    INSERT INTO 成績 VALUES('算数', 'B', 96);
    
    INSERT INTO 成績 VALUES('理科', 'A', 95);
    

    演習1が終わったら,Accessを閉じずに,演習2に進んでください.

    演習1をうまく行えなかった人は,次のデータベースファイルを参考にしてください.うまく終えた人には必要のないものです.

    e7-1.accdb

  2. 【演習2】

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. 成績テーブルの全データを表示
      SELECT * FROM 成績;
      
    2. AND演算子を使用して85点以上90点以下の成績を選択
      SELECT * FROM 成績 WHERE 得点 >= 85 AND 得点 <= 90;
      
    3. BETWEEN演算子を使用して85点から90点の範囲の成績を選択
      SELECT * FROM 成績 WHERE 得点 BETWEEN 85 AND 90;
      
    4. 国語科目で90点から100点の範囲の成績を選択
      SELECT * FROM 成績 WHERE 科目 = '国語' AND 得点 BETWEEN 90 AND 100;
      
    5. IN演算子を使用して国語または算数の科目の成績を選択
      SELECT * FROM 成績 WHERE 科目 IN ('国語', '算数');
      
    6. 副問い合わせ(サブクエリ)を使用して最高得点を取得した受講者を選択
      SELECT 受講者 FROM 成績 WHERE 得点 =
      (SELECT MAX(得点) FROM 成績);
      
    7. 副問い合わせ(サブクエリ)を使用して平均点より高い得点の成績を選択
      SELECT * FROM 成績 WHERE 得点 >
      (SELECT AVG(得点) FROM 成績);
      
  3. 実データを用いた演習

    次のAccessデータベースファイルを使用

    db4-4.accdb

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. 教育レベルが10年生または11年生のデータを選択
      SELECT *
      FROM 米国成人調査データ
      WHERE 教育 IN ('10th', '11th');
      
    2. 母国がインドまたはメキシコである成人のデータを選択
      SELECT *
      FROM 米国成人調査データ
      WHERE 母国 IN ('インド', 'メキシコ');
      
    3. 米国成人調査データの最高年齢を取得
      SELECT MAX(年齢)
      FROM 米国成人調査データ;
      
    4. 最高年齢の成人データを選択する副問い合わせ(サブクエリ)
      SELECT *
      FROM 米国成人調査データ
      WHERE 年齢 =
      (SELECT MAX(年齢) FROM 米国成人調査データ);
      
  4. 発展演習

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. 特定の職業に従事しているすべての人のリストを取得する:
      SELECT * FROM 米国成人調査データ WHERE 職業 = '専門職';
      
    2. 特定の年齢範囲内の人々の数をカウントする:
      SELECT COUNT(*) FROM 米国成人調査データ WHERE 年齢 BETWEEN 20 AND 30;
      
    3. 母国ごとの平均週当たり労働時間を計算する:
      SELECT 母国, AVG(週当たり労働時間) FROM 米国成人調査データ GROUP BY 母国;
      
    4. 特定の職業の最大教育年数を持つ人々を選択
      SELECT * FROM 米国成人調査データ WHERE 教育年数 = (SELECT MAX(教育年数) FROM 米国成人調査データ);
      

de-9. 並べ替え(ソート)

資料

【概要】 SQLにおける並べ替え(ソート)では,ORDER BY句を用いることで,指定した列の値に基づいて昇順または降順にデータを整列させることができる.複数の列を指定した場合,第一優先・第二優先と順に適用される多段階の並べ替えが実現する.GROUP BY句とORDER BY句を組み合わせることで,グループ化された集計結果を並べ替えることもできる.

de-10. データベース設計の基礎:主キー・外部キーを用いたテーブル間の関連付けとSQL実践

資料

【概要】 リレーショナルデータベースのテーブルでは,主キーを用いて行を一意に識別し,外部キーを用いて他のテーブルと関連付けを行う.テーブルの定義にはCREATE TABLE文を使用し,主キー制約(PRIMARY KEY)や参照整合性制約(FOREIGN KEY ... REFERENCES)を指定する.例として,学生テーブル,講義テーブル,成績テーブルから構成され,学生と講義の間の多対多の関連を成績テーブルで扱う場合では,学生テーブルと講義テーブルに主キーがあり,成績テーブルには他の2つのテーブルへの外部キーがある.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 商品 (
        ID INTEGER PRIMARY KEY,
        商品名 TEXT,
        単価 INTEGER);
    
    CREATE TABLE 購入 (
      ID INTEGER PRIMARY KEY,
      購入者 TEXT,
      商品ID INTEGER,
      数量 INTEGER,
      FOREIGN KEY (商品ID) REFERENCES 商品(ID));
    
    INSERT INTO 商品 VALUES(1, 'みかん', 50);
    
    INSERT INTO 商品 VALUES(2, 'りんご', 100);
    
    INSERT INTO 商品 VALUES(3, 'メロン', 500);
    
    INSERT INTO 購入 VALUES(1, 'X', 1, 10);
    
    INSERT INTO 購入 VALUES(2, 'Y', 2, 5);
    

    演習1が終わったら,Accessを閉じずに,演習2に進んでください.

    演習1をうまく行えなかった人は、次のデータベースファイルを参考にしてください。うまく終えた人には必要のないものです。

    Database10-1.accdb

  2. 演習2

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    SELECT * FROM 商品;
    
    SELECT * FROM 購入;
    
    SELECT 購入.購入者, 商品.商品名, 商品.単価 * 購入.数量
    FROM 購入
    INNER JOIN 商品 ON 購入.商品ID = 商品.ID;
    
  3. 発展演習1
    SELECT 購入.購入者, 商品.商品名, 数量, 単価
    FROM 購入
    INNER JOIN 商品 ON 購入.商品ID = 商品.ID;
    
  4. 演習3

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 学生 (
        学生ID INTEGER PRIMARY KEY,
        名前 TEXT,
        専攻 TEXT
    );
    
    CREATE TABLE 講義 (
        講義ID INTEGER PRIMARY KEY,
        講義名 TEXT,
        担当教員 TEXT
    );
    
    CREATE TABLE 成績 (
        学生ID INTEGER,
        講義ID INTEGER,
        成績 INTEGER,
        PRIMARY KEY (学生ID, 講義ID),
        FOREIGN KEY (学生ID) REFERENCES 学生(学生ID),
        FOREIGN KEY (講義ID) REFERENCES 講義(講義ID)
    );
    
    INSERT INTO 学生 VALUES (1, '山田太郎', '情報科学');
    
    INSERT INTO 学生 VALUES (2, '鈴木花子', '物理学');
    
    INSERT INTO 学生 VALUES (3, '佐藤一郎', '化学');
    
    INSERT INTO 講義 VALUES (101, 'プログラミング基礎', '田中健');
    
    INSERT INTO 講義 VALUES (102, '物理学入門', '伊藤博');
    
    INSERT INTO 講義 VALUES (103, '有機化学', '中村悟');
    
    INSERT INTO 成績 VALUES (1, 101, 85);
    
    INSERT INTO 成績 VALUES (1, 102, 90);
    
    INSERT INTO 成績 VALUES (2, 101, 75);
    
    INSERT INTO 成績 VALUES (2, 103, 80);
    
    INSERT INTO 成績 VALUES (3, 103, 95);
    

    演習3が終わったら、Accessを閉じずに、演習4に進んでください。

    演習3をうまく行えなかった人は、次のデータベースファイルを参考にしてください。うまく終えた人には必要のないものです。

    Database10-2.accdb

  5. 演習4

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    select * from 学生;
    
    select * from 講義;
    
    select * from 成績;
    
    select 学生.名前, 学生.専攻, 成績.講義ID, 成績.成績
    from 学生 inner join 成績 on 学生.学生ID = 成績.学生ID;
    
    select 成績.学生ID, 講義.講義名, 講義.担当教員, 成績.成績
    from 講義 inner join 成績 on 講義.講義ID = 成績.講義ID;
    
  6. 発展演習2
    SELECT 学生.名前, 学生.専攻, 講義.講義名, 講義.担当教員, 成績.成績
    FROM (講義 INNER JOIN 成績 ON 講義.講義ID = 成績.講義ID)
    INNER JOIN 学生 ON 成績.学生ID = 学生.学生ID;
    

de-11. データベース操作:INSERT、UPDATE、DELETE

資料

【概要】 リレーショナルデータベースシステムの特徴として,データの整合性(データが論理的に矛盾なく正確であること)を保つための機能があり,誤ったデータや矛盾したデータの保存を防止する.データ操作にはSQLを使用し,データの追加・検索・更新・削除などを行う.また,トランザクション機能により,複数の処理を一単位として実行する.データの一貫性と信頼性を確保することができる.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE T (
    名前 TEXT,
    昼食 TEXT,
    料金 INTEGER);
    
    INSERT INTO T VALUES('A', 'そば', 250);
    
    INSERT INTO T VALUES('B', 'カレーライス', 400);
    
    INSERT INTO T VALUES('C', 'カレーライス', 400);
    
    INSERT INTO T VALUES('D', 'うどん', 250);
    

    演習1が終わったら、Accessを閉じずに、演習2に進んでください。

    演習1をうまく行えなかった人へ(うまく終えた人には必要のないものです)

    次のデータベースファイルを活用できます ダウンロードしたデータベースファイルに対して、INSERT, UPDATE, DELETE コマンドが使えるようにするために、ダウンロード後、各自の操作が必要です。ダウンロードしたファイルを右クリック、メニューの「プロパティ」、そして、下の図のように「セキュリティ」のところで「許可する」をチェックしてください。その後 Access で使ってください。

    e14-1.accdb

  2. 演習2

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    単純な表示

    SELECT * FROM T;
    
  3. 演習3.

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    新しい行をTテーブルに追加し、名前は「E」、昼食は「天ぷら」、料金は500円

    INSERT INTO T VALUES ('E', 'そば', 500);
    

    名前が'B'の行を削除

    DELETE FROM T WHERE 名前 = 'B';
    

    「カレーライス」の料金を450円に変更

    UPDATE T SET 料金 = 450 WHERE 昼食 = 'カレーライス';
    

    名前が'C'の人の昼食を「ラーメン」に変更

    UPDATE T SET 昼食 = 'ラーメン' WHERE 名前 = 'C';
    
  4. 発展演習1.基本的なデータベース操作の練習

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE products (
        ID INTEGER PRIMARY KEY,
        name TEXT,
        color TEXT,
        price INTEGER
    );
    
    insert into products values(1, 'apple', 'red', 100);
    
    insert into products values(2, 'apple', 'yellow', 200);
    
    insert into products values(3, 'orange', 'orange', 300);
    
    select * from products;
    
  5. 発展演習2.
    UPDATE products SET price = 150 WHERE name = 'apple' AND color = 'red';
    
  6. 発展演習3.
    DELETE FROM products WHERE price >= 300;
    

de-12. 中間まとめ

資料

【概要】 リレーショナルデータベースは,データをテーブル形式で保存し,テーブル間の関連付けにより複雑なデータを扱うシステムである.各テーブルは列(属性)と行(レコード)で構成され,列(属性)はデータ型を持つ.データ操作にはSQLと呼ばれるリレーショナル・データベースの標準的な言語が使用され,問い合わせ(クエリ),データ操作が可能である.さらに,INNER JOINを使用することで複数のテーブルを結合し,関連するデータを取得できる.これにより,柔軟な検索が実現されている.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE メニュー (
    ID INTEGER PRIMARY KEY,
    商品名 TEXT,
    単価 INTEGER);
    
    INSERT INTO メニュー VALUES(1, 'かき氷', 400);
    
    INSERT INTO メニュー VALUES(2, 'カレーライス', NULL);
    
    INSERT INTO メニュー VALUES(3, 'サイダー', 200);
    

    ここまでが終わったら、Accessを閉じずに、下に進んでください。

    ここまでの操作をうまく行えなかった人へ(うまく終えた人には必要のないものです) 次のデータベースファイルを活用できます ダウンロードしたデータベースファイルに対して、あとで、INSERT, UPDATE, DELETE コマンドが使えるようにするために、ダウンロード後、各自の操作が必要です。ダウンロードしたファイルを右クリック、メニューの「プロパティ」、そして、「セキュリティ」のところで「許可する」をチェックしてください。その後 Access で使ってください。

    e12.accdb

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    SELECT * FROM メニュー;
    
    SELECT * FROM メニュー WHERE 単価 IS NULL;
    
    SELECT * FROM メニュー WHERE 単価 >= 0;
    
  2. 演習2.

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 商品 (
        id AUTOINCREMENT PRIMARY KEY,
        商品名 TEXT,
        単価 INTEGER
    );
    
    CREATE TABLE 申し込み (
        id AUTOINCREMENT PRIMARY KEY,
        日時 DATETIME,
        氏名 TEXT,
        商品番号 INTEGER,
        個数 INTEGER,
        FOREIGN KEY (商品番号) REFERENCES 商品(id)
    );
    
    INSERT INTO 商品(商品名, 単価) VALUES ('商品A', 100);
    
    INSERT INTO 商品(商品名, 単価) VALUES ('商品B', 200);
    
    INSERT INTO 商品(商品名, 単価) VALUES ('商品C', 150);
    
    INSERT INTO 申し込み(日時, 氏名, 商品番号, 個数) VALUES (Now(), 'X', 1, 1);
    
    INSERT INTO 申し込み(日時, 氏名, 商品番号, 個数) VALUES (Now(), 'X', 2, 10);
    
    INSERT INTO 申し込み(日時, 氏名, 商品番号, 個数) VALUES (Now(), 'Y', 2, 5);
    
    INSERT INTO 申し込み(日時, 氏名, 商品番号, 個数) VALUES (Now(), 'X', 1, 1);
    

    ここまでが終わったら、Accessを閉じずに、下に進んでください。

    ここまでの操作をうまく行えなかった人へ(うまく終えた人には必要のないものです) 次のデータベースファイルを活用できます ダウンロードしたデータベースファイルに対して、あとで、INSERT, UPDATE, DELETE コマンドが使えるようにするために、ダウンロード後、各自の操作が必要です。ダウンロードしたファイルを右クリック、メニューの「プロパティ」、そして、「セキュリティ」のところで「許可する」をチェックしてください。その後 Access で使ってください

    e12.accdb

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    SELECT * FROM 商品;
    
    SELECT * FROM 申し込み;
    
    SELECT * FROM 申し込み
    INNER JOIN 商品 ON 申し込み.商品番号 = 商品.id;
    
    SELECT 申し込み.日時,申し込み.氏名,申し込み.個数 * 商品.単価
    FROM 申し込み
    INNER JOIN 商品 ON 申し込み.商品番号 = 商品.id;
    
    SELECT 氏名, SUM(個数 * 商品.単価)
    FROM 申し込み
    INNER JOIN 商品 ON 申し込み.商品番号 = 商品.id
    GROUP BY 氏名;
    
    SELECT *
    FROM 商品
    WHERE 単価 > (SELECT AVG(単価) FROM 商品);
    
    SELECT MAX(単価)
    FROM 商品;
    
    SELECT *
    FROM 申し込み
    WHERE 氏名 = 'X';
    
    SELECT DISTINCT(申し込み.氏名)
    FROM 申し込み
    INNER JOIN 商品 ON 申し込み.商品番号 = 商品.id
    WHERE 商品.商品名 = '商品A';
    
    SELECT 氏名, COUNT(*) AS 申し込み数
    FROM 申し込み
    GROUP BY 氏名;
    
    SELECT SUM(申し込み.個数)
    FROM 申し込み
    INNER JOIN 商品 ON 申し込み.商品番号 = 商品.id
    WHERE 商品.商品名 = '商品B';
    
  3. 演習3.

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    それぞれの実行後に、商品テーブルの変化を確認してください

    UPDATE 商品
    SET 単価 = 120
    WHERE 商品名 = '商品A';
    
    DELETE FROM 商品
    WHERE 商品名 = '商品C';
    
    UPDATE 商品
    SET 単価 = 1000
    WHERE 商品名 = '商品B';
    

de-13. データ管理の基礎:オンライントランザクションとデータウェアハウスの特徴と活用

資料

【概要】 データ管理には,オンライントランザクションとデータウェアハウスという2つの異なるアプローチがある.オンライントランザクションは,銀行取引やオンライン予約などのリアルタイム処理に適しており,最新のデータのみを保持する.一方,データウェアハウスは過去のデータを蓄積・分析するためのシステムで,履歴データを重視する.ここでの履歴データとは,時間の経過に伴うデータの変化を記録し,日時情報を付加して管理するものである.

演習

使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

  1. 演習1.now() による現在日時の取得

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    select now();
    
  2. 演習2.日時を扱うテーブル

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 商品 (
        ID INTEGER PRIMARY KEY,
        商品名 TEXT,
        単価 INTEGER);
    
    CREATE TABLE 購入 (
      ID INTEGER PRIMARY KEY,
      購入者 TEXT,
      商品ID INTEGER,
      数量 INTEGER,
      購入日時 DATETIME,
      FOREIGN KEY (商品ID) REFERENCES 商品(ID));
    
    INSERT INTO 商品 VALUES(1, 'みかん', 50);
    
    INSERT INTO 商品 VALUES(2, 'りんご', 100);
    
    INSERT INTO 商品 VALUES(3, 'メロン', 500);
    
    INSERT INTO 購入 VALUES(1, 'X', 1, 10, '2023-01-04 09:00:00');
    
    INSERT INTO 購入 VALUES(2, 'Y', 2, 5, '2023-01-04 10:00:00');
    

    ここまでが終わったら、Accessを閉じずに、下に進んでください。

    ここまでの操作をうまく行えなかった人へ(うまく終えた人には必要のないものです) 次のデータベースファイルを活用できます

    e13-1.accdb

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    select * FROM 商品;
    
    select * FROM 購入;
    
  3. 演習3.データウエアハウス

    演習3を始める前に、一度Accessを終了してください。そして、もう一度Access を起動し、次を始めてください。

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    CREATE TABLE 商品 (
        ID INTEGER PRIMARY KEY,
        商品名 TEXT,
        単価 INTEGER,
        改訂日時 DATETIME);
    
    CREATE TABLE 購入 (
        ID INTEGER PRIMARY KEY,
        購入者 TEXT,
        商品ID INTEGER,
        数量 INTEGER,
        購入日時 DATETIME,
        FOREIGN KEY (商品ID) REFERENCES 商品(ID));
    
    INSERT INTO 商品 VALUES(1, 'みかん', 50, '2023-12-01 09:00:00');
    
    INSERT INTO 商品 VALUES(2, 'りんご', 100, '2023-12-01 09:00:00');
    
    INSERT INTO 商品 VALUES(3, 'メロン', 500, '2023-12-01 09:00:00');
    
    INSERT INTO 商品 VALUES(4, 'りんご', 150, '2024-01-01 09:00:00');
    
    INSERT INTO 商品 VALUES(5, 'メロン', 400, '2024-01-01 09:00:00');
    
    INSERT INTO 購入 VALUES(1, 'X', 1, 10, '2023-12-10 10:00:00');
    
    INSERT INTO 購入 VALUES(2, 'Y', 2, 5, '2023-12-20 12:00:00');
    
    INSERT INTO 購入 VALUES(3, 'Y', 4, 20, '2024-01-05 09:00:00');
    
    INSERT INTO 購入 VALUES(4, 'Z', 5, 3, '2024-01-05 11:00:00');
    

    ここまでが終わったら、Accessを閉じずに、下に進んでください。

    ここまでの操作をうまく行えなかった人へ(うまく終えた人には必要のないものです). 次のデータベースファイルを活用できます

    e13-2.accdb

    Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

    1. select * FROM 商品;
      
    2. select * FROM 購入;
      
    3. 結合
      SELECT * FROM 商品
      INNER JOIN 購入 ON 商品.ID = 購入.商品ID;
      
      SELECT 購入.購入日時, 購入.購入者, 購入.数量 * 商品.単価
      FROM 商品
      INNER JOIN 購入 ON 商品.ID = 購入.商品ID;
      
    4. 2つのテーブルを使い、購入者ごとに申し込みの合計金額を求める
      SELECT 購入.購入者, SUM(購入.数量 * 商品.単価)
      FROM 商品
      INNER JOIN 購入 ON 商品.ID = 購入.商品ID
      GROUP BY 購入.購入者;
      
    5. 各商品の最新の改訂日時を得ている
      SELECT 商品名, MAX(改訂日時)
      FROM 商品
      GROUP BY 商品名;
      
    6. 購入テーブルを用いて、購入者が 「Y」 のすべての購入情報を得る
      SELECT *
      FROM 購入
      WHERE 購入者 = 'Y';
      
    7. 商品名が 「りんご」である商品を購入したすべての購入者を得る
      SELECT DISTINCT(購入.購入者)
      FROM 購入
      INNER JOIN 商品 ON 購入.商品ID = 商品.ID
      WHERE 商品.商品名 = 'りんご';
      
    8. 購入テーブルを使用して、購入者ごとに、購入の回数を得る
      SELECT 購入者, COUNT(*)
      FROM 購入
      GROUP BY 購入者;
      

    de-14. データベース設計演習,正規化

    資料

    • PDFファイル: e14.pdf
    • パワーポイントファイル(PDFファイルと同じ内容): e14.pptx

    【概要】 リレーショナルデータベースは,データをテーブル形式で保存し,テーブル間の関連付けにより複雑なデータを扱うシステムである.リレーショナルデータベースシステムにおいて重要な役割を果たすのが正規化である.正規化は,データの冗長性を減らすための手法であり,正規化の結果としてデータの整合性が向上する.データの整合性とは,データベース内のデータが矛盾なく一貫した状態を保持することを意味し,これにより更新,削除,挿入時の異状を減少させることができる.この正規化プロセスにおいて重要なのが情報無損失の原則であり,これは正規化を施した後のテーブル群から,正規化する前のテーブルを正確に復元できることを保証するものである.

    演習

    使用している Access のバージョンによっては,「表示」,「クエリデザイン」と操作したときに,「テーブルの表示」という画面が開く場合があります

    • 「テーブルの表示」という画面が開いた場合: 「閉じる」をクリックして続けてください.
    • 「テーブルの表示」という画面が開かない場合: 問題ありません.そのまま続けてください.

    1. 演習1.now() による現在日時の取得

      Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

      CREATE TABLE T (
      名前 TEXT,
      昼食 TEXT,
      料金 INTEGER);
      
      INSERT INTO T VALUES('A', 'そば', 250);
      
      INSERT INTO T VALUES('B', 'カレーライス', 400);
      
      INSERT INTO T VALUES('C', 'カレーライス', 400);
      
      INSERT INTO T VALUES('D', 'うどん', 250);
      

      演習1が終わったら,Accessを閉じずに,演習2に進んでください.

      演習1をうまく行えなかった人は,次のデータベースファイルを参考にしてください.うまく終えた人には必要のないものです.

      e14-1.accdb

    2. 演習2

      Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

      単純な表示

      SELECT * FROM T;
      

      昼食の列のみ

      SELECT 昼食 FROM T;
      

      重複行の除去 DISTINCT

      SELECT DISTINCT 昼食 FROM T;
      
    3. 演習3

      Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

      テーブル X の生成

      SELECT DISTINCT 名前, 昼食 INTO X FROM T;
      

      テーブル Y の生成

      SELECT DISTINCT 昼食, 料金 INTO Y FROM T;
      

      テーブル X の確認

      SELECT * FROM X;
      

      テーブル Y の確認

      SELECT * FROM Y;
      

      テーブルの結合により元に戻ることを確認

      SELECT X.名前, X.昼食, Y.料金 FROM X INNER JOIN Y ON X.昼食 = Y.昼食;
      
    4. 発展演習1

      Accessを使用するときは,SQLビューで1つずつ実行してください.Access では,複数の一括実行はできません.

      CREATE TABLE S (
        StudentID INTEGER,
        StudentName TEXT,
        Course TEXT
      );
      
      INSERT INTO S VALUES (1, 'Alice', 'Math');
      
      INSERT INTO S VALUES (1, 'Alice', 'Science');
      
      INSERT INTO S VALUES (2, 'Bob', 'History');
      
      INSERT INTO S VALUES (3, 'Charlie', 'Math');
      
      INSERT INTO S VALUES (3, 'Charlie', 'History');
      
      INSERT INTO S VALUES (3, 'Charlie', 'Science');
      
      SELECT DISTINCT StudentID, StudentName INTO U FROM S;
      
      SELECT DISTINCT StudentID, Course INTO V FROM S;
      
      SELECT * FROM S;
      
      SELECT * FROM U;
      
      SELECT * FROM V;
      
      SELECT U.StudentID, U.StudentName, V.Course
      FROM U INNER JOIN V ON U.StudentID = V.StudentID;
      

    de-15. Microsoft Access のビジュアルなツール

    資料

    • PDFファイル: e11.pdf
    • パワーポイントファイル(PDFファイルと同じ内容): e11.pptx

    【概要】 Microsoft Accessは,GUI(グラフィカルユーザーインターフェース)ベースの様々なツールを備える.これらのツールを用いて,さまざまな処理が可能である.テーブルツールは,テーブル定義を視覚的に実行でき,SQLでのテーブル定義を直接記述する必要がない.クエリデザインにより複雑なデータ抽出や更新操作であっても,視覚的に実行できる.さらに,フォームウィザードとレポートウィザードにより,データ入力画面や印刷用帳票を対話的に作成できる.

    de-16. リレーショナルデータベース活用演習

    資料

    • PDFファイル: e12.pdf
    • パワーポイントファイル(PDFファイルと同じ内容): e12.pptx

    【概要】 Microsoft Accessの主な機能としては,テーブル定義,Excelファイルからのインポート,フォーム作成,データ検索,SQLの実行(例:集計集約)などがある.Microsoft AccessのSQL実行では,SQLビューで文を1つずつ実行し,テーブル定義やデータ操作を行う.