リレーショナルデータベースの基本(短縮版)(全7回)
リレーショナルデータベースの基本を学び,全体を把握する.SQL の実習付き.
【サイト内の関連ページ】
- SQLite 3 による SQL 演習(全3回): 別ページ »にまとめ
SQL の演習である.SQLite 3 を用いて演習を行う.(回数は3回である).
- リレーショナルデータベースの基本: 別ページ »にまとめ
リレーショナルデータベースの基本として,SQL 等を用いたデータベースの利用,データベース設計,データベース運用を学ぶ.,IE 図の演習,Access の演習,MySQL の演習を行う.(回数は15回である).
- リレーショナルデータベースの基礎: 別ページ »にまとめ
リレーショナルデータベースの基礎であるテーブル定義,一貫性制約,SQL,結合と分解,トランザクション,埋め込みSQL,実行計画,二次索引を学ぶ.SQLite 3 を用いて,SQL についての演習も行う.(回数は12回である).
資料
下のすべてのファイルをまとめたもの:[PDF ファイル],[パワーポイントファイル]
- dd-1. リレーショナルデータベースの特徴
- dd-2. テーブルとテーブル定義
- dd-3. 種々の制約,関連
- dd-4. 問い合わせと SQL
- dd-5. 貸し出し記録のテーブル
CREATE TABLE tosyo ( book TEXT, who TEXT, what TEXT, at DATETIME); INSERT INTO tosyo VALUES('赤', 'XX', '貸出', now()); INSERT INTO tosyo VALUES('赤', 'XX', '返却', now()); INSERT INTO tosyo VALUES('青', 'YY', '貸出', now()); INSERT INTO tosyo VALUES('緑', 'ZZ', '貸出', now()); SELECT * FROM tosyo; SELECT who, COUNT(*) FROM tosyo GROUP BY who; SELECT COUNT(*) FROM tosyo WHERE what='貸出';
- dd-6. さまざまな SQL 問い合わせ
CREATE TABLE products ( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, price REAL); CREATE TABLE sales ( id INTEGER PRIMARY KEY NOT NULL, customer TEXT NOT NULL, pid INTEGER NOT NULL, num INTEGER NOT NULL); INSERT INTO products VALUES( 1, 'orange', 50 ); INSERT INTO products VALUES( 2, 'apple', 100 ); INSERT INTO products VALUES( 3, 'melon', 500 ); SELECT * FROM products; INSERT INTO sales VALUES(1, 'X', 1, 2); INSERT INTO sales VALUES(2, 'Y', 1, 3); INSERT INTO sales VALUES(3, 'X', 3, 1); INSERT INTO sales VALUES(4, 'Y', 2, 4); SELECT * FROM sales;
- dd-7. テーブルの分割と結合
CREATE TABLE scores ( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, teacher_name TEXT NOT NULL, student_name TEXT NOT NULL, score INTEGER); INSERT INTO scores VALUES(1, 'db', 'k', 'kk', 85); INSERT INTO scores VALUES(2, 'db', 'k', 'aa', 75); INSERT INTO scores VALUES(3, 'db', 'k', 'nn', 90); INSERT INTO scores VALUES(4, 'python', 'a', 'kk', 85); INSERT INTO scores VALUES(5, 'python', 'a', 'nn', 75); CREATE TABLE A AS SELECT DISTINCT name, teacher_name FROM scores; SELECT * FROM A; CREATE TABLE B AS SELECT DISTINCT id, name, student_name, score FROM scores; SELECT * FROM B; SELECT B.id, A.name, A.teacher_name, B.student_name, B.score FROM A, B WHERE A.name = B.name;
動画および内容の要点(全7回のうち4回分)(上の資料と同じ内容)
dd-1. リレーショナルデータベースの特徴
PDF 資料: リレーショナルデータベースの特徴
YouTube 動画: https://www.youtube.com/watch?v=Srdtx3h2Pkk
- 第1回のアウトライン
- データベース
- データベースシステム
- リレーショナルデータベースシステム
- データベースシステムは,データベースを扱う IT のシステム
リレーショナルデータベースシステム
- データベースシステムの一種
- データの形はテーブル(リレーションともいう)
- SQL の機能
- リレーショナルデータベースシステムの特徴
- データの形はテーブル(リレーションともいう)
- SQL の機能がある
- データベースの扱いは容易.学びやすい
- データベース設計の基礎は体系化されている:ER モデル,異状,従属,正規化,正規形
- 普及度はナンバーワン
- リレーショナルデータベース管理システムにはさまざまある.MySQL, マイクロソフト Access, Oracle, SQL Server, PostgreSQL, SQLite 3, Firebird など.(無料で使えるものもある)
dd-2. テーブルとテーブル定義
PDF 資料: テーブルとテーブル定義
YouTube 動画: https://www.youtube.com/watch?v=juXiXiorzhY
- 第2回のアウトライン
- テーブル
- テーブル定義
- データ型
- 主キー
- NULL
- 一貫性制約
- テーブル
リレーショナルデータベースでは,1つのセルに1つの値
- テーブル定義
テーブル定義では,
- テーブル名
- 属性の属性名
- 属性のデータ型
- テーブル定義の SQL の例
CREATE TABLE products ( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, price REAL);
- 主キー
この資料では次のように説明する。 通し番号,学生番号のように,1つのテーブルの中で同じ値が2回以上出ないと前もって分かっている属性
より正確には、1つのテーブルの中で同じ値が2回以上出ないと前もって分かっている属性あるいは属性の並びは、候補キー。そして候補キーのうち、管理に適するなどの理由で選ばれたものが主キー
- リレーショナルデータベースの NULL
NULL は「ヌル」あるいは「ナル」と読む リレーショナルデータベースで NULL は,次の場合に使う
- 未定,未知,不明(分からない場合)
- 非存在(もともと存在しない場合)
dd-3. 種々の制約,関連
PDF 資料: 種々の制約,関連
YouTube 動画: https://www.youtube.com/watch?v=TguFvP-LDvQ
- 第3回のアウトライン
- カラム制約
- テーブル制約
- 参照整合性制約
- 関連
- カラム制約
カラム制約は,単一属性についての一貫性制約
- PRIMARY KEY 主キー
- NOT NULL 非空
- UNIQUE 一意
- FOREIGN KEY ... REFERENCES 参照整合性制約
- CHECK 更新時にチェック
CHECK は SQLite 3 固有の機能
- デフォルト値,自動インクリメント
- DEFAULT デフォルト値
- AUTOINCREMENT 自動インクリメント(オートナンバー)
- テーブル制約
複数の属性に関わるような一貫性制約はテーブル制約の形で記述
CREATE TABLE score_records ( name TEXT NOT NULL, score INTEGER NOT NULL CHECK ( score >= 0 AND score <=100 ), student_name TEXT NOT NULL, created_at DATETIME NOT NULL, UNIQUE (name, student_name) );
- テーブル制約の書き方
- PRIMARY KEY (属性名の並び) 主キー
- UNIQUE (属性名の並び) 一意
- CHECK (式) 更新時にチェック
CHECK は SQLite 固有の機能
- 関連の種類
- 一対一
テーブルの1行が,別のテーブルの1行と関連
- 一対多
テーブルの1行が,別のテーブルの複数行と関連
- 多対多
テーブルの複数行が,別のテーブルの複数行と関連
- 一対一
- 参照整合性制約
CREATE TABLE 購入 ( id INTEGER PRIMARY KEY, 購入者 TEXT, 商品ID INTEGER, 数量 INTEGER, FOREIGN KEY(商品ID) REFERENCES products(id));
dd-4. 問い合わせと SQL
PDF 資料: 問い合わせと SQL
YouTube 動画: https://www.youtube.com/watch?v=Ry1L8uNpXaA
- 第4回のアウトライン
- 問い合わせ(クエリ)
- 問い合わせ(クエリ)の結果はテーブルである
- SQL による問い合わせ(クエリ)の例
- SQL の特徴
- 問い合わせ(クエリ)
- 問い合わせ(クエリ)は,データベースの検索,集計
- 集約,ソート(並べ替え)などを行う
- リレーショナルデータベースでの問い合わせ(クエリ)の結果は,テーブル形式のデータ
- SQL の特徴
- SQL は,リレーショナルデータベースシステムの標準言語
- 豊富な機能
- 簡単簡潔
- コマンドなので,自動実行も簡単.あとからの確認も簡単
- SELECT * FROM products;
- SELECT name, price FROM products;
- SELECT name, price FROM products WHERE price > 80;