507 Views
January 12, 22
スライド概要
リレーショナルデータベースの基本(スライド資料とプログラム例)
https://www.kkaneko.jp/de/ds/index.html
ds-1. データベースとは,データベースシステムとは,情報とデータ
ds-2. SQL,SQL のデータ型,テーブル定義,問い合わせ(クエリ)
ds-3. ER 図,関連,異状, テーブル分解
ds-4. 問い合わせ(クエリ)
ds-5. 集計・集約
ds-6. 並べ替え(ソート)
ds-7. 結合
ds-8. データベースの異状,分解と結合
ds-9. 主キー,参照整合性制約,従属
ds-10. 中間まとめ,データベースの応用,データベースの種類
ds-11. SQL のIN,副問い合わせ
ds-12. データベースの AND,OR,NOT
ds-13. データベース操作,トランザクション,リカバリ,ロック,同時実行制御
ds-14. 従属,正規形,正規化
ds-15. さまざまなデータベース
YouTube 再生リスト「リレーショナルデータベースの基本」
https://youtube.com/playlist?list=PLwoDcGBEg9WGKPP6dExr8DcUf9nV2kYGD
金子邦彦研究室ホームページ:
https://www.kkaneko.jp/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
2. SQL,SQL のデータ型,テーブル 定義,問い合わせ(クエリ) URL: https://www.kkaneko.jp/de/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1
アウトライン 番号 項目 説明時間の 目安 2-1 リレーショナルデータベースのテーブ ル 6分 2-2 問い合わせ(クエリ) 7分 2-3 属性のデータ型 8分 2-4 テーブル定義 6分 2-5 SQL による問い合わせ(クエリ) 11 分 2-6 SQL の良さ 4分 2
今日の内容① • リレーショナルデータベースのテーブルは、1つ のセルに1つの値。 1つのセルに1つの値 セルを結合するようなことは, リレーショナルデータベースでは 考えない 3
今日の内容② • データベースを使うということは、データベース から必要なデータを取り出すことが基礎 データベースの主機能:問い合わせ(クエリ) 4
今日の内容③ • データベース生成 → テーブル定義 → テーブル生 成の順になる コンピュータ データベースの形を登録 (テーブル定義) データベースの中身を作る (テーブル生成) 5
今日の内容④ • SQL は、リレーショナルデータベースシステムの さまざまな機能を使える言語 問い合わせ(クエリ)、 その他の操作 6
2-1. リレーショナルデータベー スのテーブル URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 7
データベースシステム データベースシステムは,データベースを扱う IT のシステム データベースシステム = データベース(データの集まり) + データベース管理システム(ソフトウエア) コンピュータ 利用者 利用者 ネットワーク 記憶 装置 データベース データベース 管理システム 利用者 データベースシステム 8
リレーショナルデータベースシステム データベースシステムの一種 コンピュータ 記憶 装置 リレーショナル リレーショナル データベース データベース 管理システム たくさんのテーブルが格納される あわせて リレーショナルデータベースシステム 9
テーブルの例 テーブル名:商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 10
テーブルの性質 ① リレーショナルデータベースならではの決まり事 テーブル名:福山駅行き 時 8 8 8 12 17 17 リレーショナルデータベースで 扱えないテーブルの例 分 0 20 45 30 20 40 ☑ リレーショナルデータベースでは、 1つのセルに1つの値 時 8 12 17 □ 分 0, 20, 45 30 20, 40 1つのセルに複数の値を 入れることはない 11
テーブルの性質 ② リレーショナルデータベースならではの決まり事 テーブル名:福山駅行き 時 8 8 8 12 17 17 リレーショナルデータベースで 扱えないテーブルの例 分 時 0 20 45 30 20 40 ☑ リレーショナルデータベースでは、 □ 1つのセルに1つの値 分 8 12 17 0 20 45 30 20 40 マルチカラムにはしない 12
• リレーショナルデータベースでは、 1つのセルに1つの値 13
2-2. 問い合わせ(クエリ) URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 14
問い合わせ(クエリ) • 「問い合わせ(クエリ)」とは、 データベースの検索、集計・集約、ソート(並べ替 え)を行うこと • リレーショナルデータベースでの問い合わせ(ク エリ)の結果は、テーブル形式のデータ 15
問い合わせ(クエリ)の仕組み 問い合わせ(クエリ) の結果は,テーブル形式の データ 問い合わせ (クエリ) のコマンド リレーショナル データベースシステム データの種類ごとに分かれ た、たくさんのテーブル 16
問い合わせ(クエリ)の例 ① 欲しいデータを探す(検索) コマンド 結果 元データ 17
問い合わせ(クエリ)の例 ② 集計,集約,ソート(並べ替え) コマンド コマンド 結果 結果 集計,集約 ソート(並べ替え) 18
問い合わせ(クエリ)の例 ③ 結合(2つのテーブルを1つにまとめる) 商品 ID 1 2 3 4 商品名 単価 みかん 50 りんご 100 りんご 150 メロン 500 コマンド select * from 商品, 購入 購入 名前 ID 1 2 X Y 商品 3 1 結果 19
2-3. 属性のデータ型 URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 20
リレーショナルデータベースシステムで、テーブル を定義するとき、「属性のデータ型」を設定する必 要あり 使いたいテーブル ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 数値、文字列の データを含む ※テーブル定義は、次の「2-4」の資料で説明 21
テーブルと属性 テーブル ID テーブル名:商品 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 「ID」と「商品名」と「単 価」の属性 22
属性のデータ型 ID 1 2 3 商品名 みかん りんご メロン 整数で オートナンバー INTEGER AUTOINCREMENT 短いテキスト CHAR 属性名 単価 50 100 500 テーブル の本体 整数 INTEGER ← SQL のキーワード それぞれの属性のデータ型 ※オートナンバーは,自動で 1,2,3 のよ うに通し番号が付くもの 23
属性のデータ型 Access の主なデータ 型 SQL のキーワー ド 短いテキスト 長いテキスト 数値 NULL CHAR TEXT INTEGER, REAL 日付/時刻 Yes/No DATETIME BIT, BOOL 空値 文字列 文字列 整数や浮動小数 点数 日付や時刻など ブール値 ※ 整数は INTEGER, 浮動小数点数(小数付きの 数)は REAL ※ 短いテキストは半角 255文字分までが目安 それ以上になる可能性があるときは長いテキスト 24
2-4. テーブル定義 URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 25
データベースの構築手順 ID ID データベース データベース 生成 設計 ※ 最初,デー タベースは空 購入 者 商品 ID 名前 数量 ID 購入 者 「こういうテーブルを使い たい」と設定するだけなの で、テーブルは空 数量 1 X 1 10 2 Y 2 5 ID 名前 単価 テーブル定義 商品 ID 単価 1 みかん 50 2 りんご 100 3 りんご 150 テーブル生成 26
テーブル定義 テーブル定義では、 ・テーブル名 ・属性の属性名 ・属性のデータ型 などを設定して、テーブルを定義する 27
Access のデザインビューを用いたテーブル定義 テーブル名 属性名とデータ型 テーブル定義するときに、 テーブル名、属性名、データ型を設定 28
SQL コマンドを用いたテーブル定義 ■ SQLite3 システムの場合 ■ マイクロソフト Access の場合 テーブル名:商品 属性名とデータ型 ID integer 商品 char 単価 integer 29
2-5. SQL による問い合わせ (クエリ) URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 30
SQLの使い方 ID 1 2 3 名前 単価 みかん 50 りんご 100 りんご 150 リレーショナルデータベースシステムに コマンドを送る データ ベース データベース 利用者 結果が返ってくる
問い合わせ(クエリ)の例 SELECT * FROM 成績 問い合わせ(クエリ) のコマンド 元のテーブルのまま表示 成績テーブル ID 名前 単価 1 みかん 50 2 りんご 100 3 りんご 150 32
問い合わせ(クエリ)の例 SELECT 名前, 単価 FROM 商品 問い合わせ(クエリ) のコマンド 必要な属性を選ぶ(射影) 商品テーブル ID 名前 単価 1 みかん 50 2 りんご 100 3 りんご 150 33
問い合わせ(クエリ)の例 SELECT 名前, 単価 FROM 商品 WHERE 単価 > 80; 問い合わせ(クエリ) のコマンド 必要な属性を選び(射影), 行を絞り込む(選択) 商品テーブル ID 名前 単価 1 みかん 50 2 りんご 100 3 りんご 150 34
SQL による問い合わせの例 ① SELECT * FROM 商品; ② SELECT 名前, 単価 FROM 商品; ③ SELECT 名前, 単価 FROM 商品 WHERE 単価 > 80; SQLは簡潔で単純! 35
補足説明 • SQL では、大文字、小文字を区別しない SELECT, select は同じ意味 • SQL では、途中で改行してもかまわない □ 読みやすくするために、改行することが多い • SQL では、末尾の「;」を省略できる場合がある □ SQL文を 1つしか書かないときは: 末尾の「;」があってもなくても同じ意味 □ 2つ以上の SQL 文を続けて書きたい場合は 文の区切りを示すために「;」が必要 36
問い合わせ(クエリ) • 「問い合わせ(クエリ)」とは、 データベースの検索、集計・集約、ソート(並べ替 え)を行うこと • リレーショナルデータベースでの問い合わせ(ク エリ)の結果は、テーブル形式のデータ • SQL では 1コマンドで書くことができる 37
SELECT * FROM <テーブル名> 元の単一テーブルをそのまま出力 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 SELECT * FROM 商品; りんご 150 メロン 500 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 38
SELECT <属性名リスト> FROM <テーブル名> 属性を限定する ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 SELECT 名前, 単価 FROM 商品; SELECT 名前 FROM 商品; 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 名前 みかん りんご りんご メロン 39
WHERE 付き 行の選択 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 SELECT 名前, 単価 FROM 商品 WHERE 単価 > 80; 名前 単価 りんご 100 りんご 150 メロン 500 40
2-6. SQL の良さ URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 41
SQL SQL は、リレーショナルデータベースにおいて、 問い合わせ(クエリ)、テーブル定義、その他の操 作を行うためのデータベース言語 42
ツール,SQL の両方が大切 今日の授業で学ぶこと ツール マイクロソフトAccess のクエリのデザインビュー(Access だ けで動くツール)など マウスと キーボード SQL(SQLは世界標準) SELECT ID, 商品, 単価 FROM 商品; コマンド言語 43
SQL の良いところ • SQLは、すべてのリレーショナルデータベース管理シス テムで通用する共通言語 リレーショナルデータベース管理システムの例 Access, SQL Server, Oracle, MySQL, PostgreSQL, SQLite3, Firebird, ・・・ ・SQLはコマンド言語なので、自動実行が簡単. 44
コマンドの良さ • コマンド = コピー&ペーストできる • 同じ作業を繰り返したいとき、コピー&ペースト で済む • 作業記録を残し、あとで確認するのも簡単! • 他の人に教えたいとき、他の人から教わりたいと きも、コマンドの方が再現や真似が簡単に済む場 合が多い 45