リレーショナルデータベースの基本を学び,全体を把握する.SQL の実習付き.
【サイト内の関連ページ】
SQL の演習である.SQLite 3 を用いて演習を行う.(回数は3回である).
リレーショナルデータベースの基本として,SQL 等を用いたデータベースの利用,データベース設計,データベース運用を学ぶ.,IE 図の演習,Access の演習,MySQL の演習を行う.(回数は15回である).
リレーショナルデータベースの基礎であるテーブル定義,一貫性制約,SQL,結合と分解,トランザクション,埋め込みSQL,実行計画,二次索引を学ぶ.SQLite 3 を用いて,SQL についての演習も行う.(回数は12回である).
下のすべてのファイルをまとめたもの:[PDF ファイル],[パワーポイントファイル]
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='貸出';
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;
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;
PDF 資料: リレーショナルデータベースの特徴
YouTube 動画: https://www.youtube.com/watch?v=Srdtx3h2Pkk
リレーショナルデータベースシステム
PDF 資料: テーブルとテーブル定義
YouTube 動画: https://www.youtube.com/watch?v=juXiXiorzhY
リレーショナルデータベースでは,1つのセルに1つの値
テーブル定義では,
CREATE TABLE products ( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, price REAL);
この資料では次のように説明する。 通し番号,学生番号のように,1つのテーブルの中で同じ値が2回以上出ないと前もって分かっている属性
より正確には、1つのテーブルの中で同じ値が2回以上出ないと前もって分かっている属性あるいは属性の並びは、候補キー。そして候補キーのうち、管理に適するなどの理由で選ばれたものが主キー
NULL は「ヌル」あるいは「ナル」と読む リレーショナルデータベースで NULL は,次の場合に使う
PDF 資料: 種々の制約,関連
YouTube 動画: https://www.youtube.com/watch?v=TguFvP-LDvQ
カラム制約は,単一属性についての一貫性制約
CHECK は SQLite 3 固有の機能
複数の属性に関わるような一貫性制約はテーブル制約の形で記述
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) );
CHECK は SQLite 固有の機能
テーブルの1行が,別のテーブルの1行と関連
テーブルの1行が,別のテーブルの複数行と関連
テーブルの複数行が,別のテーブルの複数行と関連
CREATE TABLE 購入 ( id INTEGER PRIMARY KEY, 購入者 TEXT, 商品ID INTEGER, 数量 INTEGER, FOREIGN KEY(商品ID) REFERENCES products(id));
PDF 資料: 問い合わせと SQL
YouTube 動画: https://www.youtube.com/watch?v=Ry1L8uNpXaA