de-3. Microsoft Access
データベース操作(2)
1
金子邦彦
(データベース演習)
URL: https://www.kkaneko.jp/de/de/index.html
謝辞:この資料では「いらすとや」のイラストを使用していま
Access の反復演習によるスキル向上
柔軟な問い合わせ(クエリ)能力
データベース設計に関するスキル向上
2
データベース操作の実務能力向上だけでなく、
情報の正確な抽出や分析にも上達します
アウトライン
1. イントロダクション
2. テーブル定義(Access SQL
ビューを使用)
3. データの追加(Access のデータ
シートビューを使用)
4. SQL による重複行除去(Access
SQL ビューを使用)
5. SQL によるテーブル分解(Access
SQL ビューを使用)
3
3-1. イントロダクション
4
リレーショナルデータベースの仕組み
データをテーブルと呼ばれる表形式で保存
テーブル間関連で結ばれる。複雑な構造を持ったデータ
を効率的に管理することを可能に。
5
関連
リレーショナルデータベースの重要性
1. データの整合性: リレーショナルデータベースは、デー
タの整合性を保持するための機能を有する。これにより、
誤ったデータや矛盾したデータが保存されるのを防ぐこ
とができる。
2. 柔軟な問い合わせ(クエリ)能力: リレーショナルデー
タベースのSQLStructured Query Language)の使用に
より、複雑な検索やデータの抽出が可能になる。
3. トランザクションの機能: 一連の操作全体を一つの単位
として取り扱うことができる機能。これにより、データ
の一貫性と信頼性が向上する。
4. セキュリティ: アクセス権限の設定などにより、セキュ
リティを確保。
データの安全な保管、効率的なデータ検索・操作、ビジネス
や研究の意思決定をサポート。 6
問い合わせ(クエリ)を行う SQL
select
問い合わせ(クエリ)のための基本的な命令。
例:select * from テーブル名;
where
条件を指定して行を選択する。
例:select * from テーブル名 where 1 = 1;
7
8
SQL による問い合わせの例
SQLは簡潔で単純
SELECT * FROM 商品;
SELECT 商品名, 単価 FROM 商品;
SELECT 商品名, 単価 FROM 商品 WHERE 単価 > 80;
3-2. テーブル定義(Access
SQL ビューを使用)
9
Access SQL ビューを用いたテーブル定義
のプロセス
Access SQL ビューを開く
SQL の編集。create table を使用
: create table T (id integer, name text, age integer);
SQL の実行
実行の結果、空のテーブルが作成されるので確認
10
SQL によるテーブル定義
テーブル名朝食と値段
属性名名前、朝食、値段
属性のデータ型テキスト、テキスト、数値
データの整合性を保つための制約なし
11
テキスト 半角数値
名前
朝食
値段
テキスト
create table 朝食と値段 (
名前 text,
朝食 text,
値段 integer
);
SQL
テーブル定義の例
12
テーブル名:朝食と値段
create table 朝食と値段 (
名前 text,
朝食 text,
値段 integer
); 区切りの半角カンマ
名前
朝食
値段
演習1.Access SQL
ビューを用いたテーブル定義
ページ14~19
【トピックス】
SQLビューを開く
SQL文の編集
create table
SQL文の実行
13
演習
1. パソコンを使用する
前もって Access をインストールしておくこと
2. Access 起動する
3. Access で、「空のデータベース」を選び、「作成」を
クリック.
14
4. テーブルツール画面が表示されることを確認
15
5. 次の手順で、SQLビューを開く.
16
②「デザイン」タブで、
表示」を展開し「SQL
ビュー」を選ぶ
①「作成」タブで、
クエリデザイン
をクリック
このような
表示が出た
ときは
閉じる」を
クリック
6. SQL ビューに、次の SQL を入れる
17
create table 朝食と値段 (
名前 text,
朝食 text,
値段 integer
);
( ) , ;
は半角
7.実行」ボタンで、SQLを実行する.
18
テーブル朝食と値段が増える
間違ってしまったときは、テーブルの削除
を行ってからやり直した方が早い場合がある
19
テーブルビューで、削除した
いテーブルを右クリックして、
削除
テーブルを削除するときは、
間違って必要なテーブルを削除しない
ように、十分に注意する!
(元に戻せない)
3-3. データの追加(Access
データシートビューを使用)
20
Access のデータシートビューを用いたデー
タの追加
Access テーブルビューで、使用したいテーブルを選ぶ
データシートビューが開くので確認
データシートビューで、データの追加
保存の操作(自動保存されないため)
21
テーブル名:朝食と商品
名前
値段
A
400
B
250
C
400
22
データシートビュー
データシートビューは,テーブルの中のデータを表示。
データの確認、編集、新しいデータの追加、検索、コ
ピー&貼り付けができる。
並べ替えや検索のための
補助画面
データシートビュー
演習2.Access のデータシー
トビューを用いたデータの追
ページ24~27
【トピックス】
テーブルビューで、使用したい
テーブルを選ぶ
データシートビューで、データ
の追加
保存の操作
23
24
データシートビューを使って、テーブル「朝食と値段
に3行分のデータを追加
名前
朝食
値段
A
カレーライス
400
B
うどん
250
C
カレーライス
400
1. テーブルビューで、朝食と
値段をダブルクリック
2. データシートビューが開く
ので確認
25
3. データシートビューで,行を追加する
26
入れる
最後の 400 を入れたら、
400 のセルで Enter キー
名前
朝食
値段
A
カレーライス
400
B
うどん
250
C
カレーライス
400
4. テーブルを保存する
朝食と値段」を右クリックして、右クリックメニュー
で「上書き保存
27
2-4. SQL による重複行除去(Access
SQL ビューを使用)
28
重複行除去を行う問い合わせ(クエリ)の例
29
テーブル
問い合わせ(クエリ)
DISTINCT は重複行除去
名前
単価
りんご
100
もも
200
名前
単価
りんご
100
もも
200
もも
200
SELECT DISTINCT 名前, 単価
FROM 果物;
重複行除去
重複行除去は,同じ値を持つ複数の行について,
1行だけ残して他は消すこと
30
重複行除去
SELECT 名前, 単価
FROM 果物;
SELECT DISTINCT 名前, 単価
FROM 果物;
重複行除去が役立つ場合
問い合わせ(クエリ)結果重複行が含まれる
場合
31
名前
単価
りんご
100
もも
200
もも
200
問い合わせ(クエリ)
SELECT 名前, 単価
FROM 果物;
テーブル果物
名前
単価
りんご
100
もも
200
もも
200
テーブル果物について,
2つの属性「名前」,
単価」で射影
SQL 問い合わせでの重複行除去
問い合わせ(クエリ)に DISTINCT を付けること
で,
結果に対して重複行除去が行われる
32
名前
単価
りんご
100
もも
200
もも
200
問い合わせ(クエリ)
SELECT DISTINCT 名前, 単価
FROM 果物;
テーブル果物
名前
単価
りんご
100
もも
200
テーブル果物について,
2つの属性「名前」,
単価」で射影
結果に対して
重複行除去
Access SQL ビューを用いた問い合わせ
Access SQLビュー開く
SQL 編集select, from, where を使用
: select * from テーブル名 where 1 = 1;
SQL 実行
実行の結果、データシートビューに画面が変わり、そこに
い合わせの結果が表示される
さらにSQL 文の編集、実行を続ける場合には、画面を SQL
ビューに切り替える
33
34
SQL 問い合わせ(クエリ)で使用する2つのビュ
SQL ビュー
SQL 文の作成編集 データシートビュー
問い合わせ(クエリ)
結果
実行
表示 + SQL ビュー
マウス操作でビューを切り替え
演習3.Access SQL
ビューを用いた重複行除去
ページ36~38
【トピックス】
問い合わせ(クエリ)
SQL ビュー
データシートビュー
SQL の編集と実行
重複行除去
35
1. 次の手順で、SQLビューを開く.
36
②「デザイン」タブで、
表示」を展開し「SQL
ビュー」を選ぶ
①「作成」タブで、
クエリデザイン
をクリック
このような
表示が出た
ときは
閉じる」を
クリック
2. SQL ビューに、次の SQL を入れる
37
SELECT DISTINCT 朝食
FROM 朝食と値段;
;
は半角
実行」ボタンで、SQLを実行.結果を確認
3. 結果を確認したら、SQLビューに戻る
38
表示」を展開し「SQLビュー」を選ぶ
2-5. SQL によるテーブル分解(Access
SQL ビューを使用)
39
テーブル分解
40
テーブル
テーブル
分解
テーブル
テーブル分解により、1つのテーブルが2つ以上の
テーブルに分解される。
テーブル分解を行う理由
冗長なデータを排除する正規化を行う
より小さなテーブルに分解することで、問い合
わせ(クエリ)の性能を向上させる
41
Access の機能 INTO を用いた問い合わせ結果の保存
INTO は,問い合わせ(クエリ)結果を新しいテーブ
ルに保存する
マイクロソフト Access だけの機能
42
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
朝食
値段
カレーライス
400
うどん
250
SELECT DISTINCT 朝食, 値段
INTO 朝食メニュー
FROM 朝食と値段;
テーブル朝食と値段
新しく作成される
テーブル朝食メニュー
テーブル分解を行う SQL
43
分解
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
朝食
値段
カレーライス
400
うどん
250
名前
朝食
A
カレーライス
B
うどん
C
カレーライス
テーブル朝食と値段
SELECT DISTINCT 名前, 朝食
INTO 各自の朝食
FROM 朝食と値段;
SELECT DISTINCT 朝食, 値段
INTO 朝食メニュー
FROM 朝食と値段;
2つの SQL の実行により、テーブル分解を行っている
テーブル分解では、
重複行除去が必須
重複行除去する場合としない場合の違
44
朝食
値段
カレーライス
400
うどん
250
重複行除去する
朝食
値段
カレーライス
400
うどん
250
カレーライス
400
重複行除去しない
SELECT DISTINCT 朝食, 値段
INTO 朝食メニュー
FROM 朝食と値段;
SELECT 朝食, 値段
INTO 朝食メニュー
FROM 朝食と値段;
演習4.Access SQL
ビューを用いたテーブル分解
ページ46~48
【トピックス】
問い合わせ(クエリ)
SQL ビュー
データシートビュー
SQL の編集と実行
テーブル分解
INTO
問い合わせ結果の保存 45
1. 次の手順で、SQLビューを開く.
46
②「デザイン」タブで、
表示」を展開し「SQL
ビュー」を選ぶ
①「作成」タブで、
クエリデザイン
をクリック
このような
表示が出た
ときは
閉じる」を
クリック
2. SQL ビューに、次の SQL を入れる
47
SELECT DISTINCT 名前, 朝食
INTO 各自の朝食
FROM 朝食と値段;
, ;
は半角
実行」ボタンで、SQLを実行.
確認画面が出るので「はい」を選ぶ.新しいテーブルが増
えるので確認する
3. 今度は、SQL ビューに、次の SQL を入れる
48
SELECT DISTINCT 朝食, 値段
INTO 朝食メニュー
FROM 朝食と値段;
, ;
は半角
実行」ボタンで、SQLを実行.
確認画面が出るので「はい」を選ぶ.新しいテーブルが増
えるので確認する
4. 各自の朝食」をダブルクリックして中身を確認する
49
中身がおかしいときは、「各自の朝食」を右クリックし、
右クリックメニューで削除そして、やり直す
5. 朝食メニュー」をダブルクリックして中身を確認する
50
中身がおかしいときは、「朝食メニュー」を右クリックし、
右クリックメニューで削除そして、やり直す
全体まとめ
SQLによる重複行除去
目的:同じ値を持つ複数の行について1行だけ残して他は消す
キーワード:DISTINCT
例:SELECT DISTINCT 朝食, 値段 FROM 朝食と値段;
Accessの機能:AccessSQLビューを使用してクエリを実
注意点:クエリの結果に重複行が含まれる場合に有効
SQLによるテーブル分解
目的:1つのテーブルを2つ以上のテーブルに分解る。
主な理由:冗長なデータの排除 (正規化)
キーワード:INTO
SELECT DISTINCT 朝食, 値段 INTO 朝食メニュー FROM 朝食と
値段;
Accessの特性:INTOMicrosoft Access独自の機能で、問い合わせ
結果を新しいテーブルに保存する際に使用。 51
Access の反復演習によるスキル向上
実践経験の積み重ね: Accessでの操作を繰り返し行うことで、
データベース操作に対する自信とスピードが向上します。
知識の定着: 反復演習を通して学習内容が深化し、応用力も増し
ていきます。
柔軟な問い合わせ(クエリ)能力
効率的な情報抽出: SQLの活用により、必要な情報を迅速に取得
できるスキルを習得。
複雑な検索の実行: WHERE句やDISTINCTを用いて複雑な条件で
のデータ抽出が可能になる。
データベース設計に関するスキル向上
データベース設計の改善: テーブル分解を通じて、冗長なデータ
を排除し、データベースの構造を最適化する正規化を行う
52
データベース操作の実務能力向上だけでなく、
情報の正確な抽出や分析にも上達します
自習①
次ページ以降を参考に、Accessを使って、次のことを行っ
てみて下さい
1.購入記録テーブルのテーブル定義
2.購入記録テーブルへのデータの追加
3.資料の SQL により、購入記録テーブルを、テーブルA
とテーブルBに分解
これにより正規化を達成
(自習は提出の必要はありません)
53
購入記録
54
結果を確認
55
SELECT DISTINCT ID, 商品名, 単価
INTO A FROM 購入記録;
テーブル A ができる
結果を確認
56
SELECT DISTINCT 購入者, ID
INTO B FROM 購入記録;
テーブル B ができる
自習②
顧客注文テーブル
顧客テーブル 注文テーブル
このように顧客注文テーブルを、顧客テーブルと、注文テーブル分解すると、
冗長なデータを排除する正規化ができます。
顧客注文テーブル顧客テーブル注文テーブル分解するSQLを考えてみて
ください。
この自習を通じて、実際のデータベースの設計や操作に役立つスキルを磨くこ
とができます。
DISTINCTキーワードを使うことで、重複行を除去することができます。 57
ID 顧客名 住所
注文ID
商品名 価格
1
徳川家康
東京都
1丁目1番地
101
リンゴ
100
2
徳川家康
東京都
1丁目1番地
102
バナナ
150
3
織田信長
大阪市
1丁目2番地
103
みかん
120
顧客ID 顧客名 住所
1
徳川家康
東京都
1丁目1番地
2
織田信長
大阪市
1丁目2番地
注文ID
顧客
ID
商品名
価格
101
1
リンゴ
100
102
1
バナナ
150
103
2
みかん
120