. 1 2 3 4 5

関係データベースとSQL

関係データベースを計算機に入れ、 前回行った演算を実行するには専用の言語を必要とする。 アプリケーションは PostgreSQL (ぽすとぐれしーける) を使う。 言語は SQL, Structured Query Language を用いる。英語では "しーける" と発音するが、日本ではアルファベット読みが通用している。

SQL で実行したいことは、 そもそも表を作ったり変更したりする許可を与えること、 どの表を閲覧できる許可を与えること、 その上でレコードを操作すること、である。 SQL は表に対して設定する言語と、 レコードに対して動作を行う言語から成り立っている。 表に実行を行う許可を与えることは、 データ定義言語と呼ばれる DDL, Data Definition Language を使って行い、 表の操作はデータ操作言語と呼ばれる DML, Data Manipulation Language を使う。

DDL は、情報処理基礎論 I 内で講義予定である。

DML, データ操作言語

関係データベースにおいてデータを操作するのには、射影、選択、結合があった。 このような操作は、データを照会しながら行うので、query (照会) と呼ばれる。

Query には SELECT, INSERT, UPDATE, DELETE, をよく使うので覚えておこう。

ワイルドカードの文字は * を使う。 ワイルドカードとは、あらゆる文字列の代わりになる文字のこと。

SELECT 文

あるレコードを取り出すときに使う。

SELECT 属性 FROM 表 [WHERE 条件]

演習6-1:前回の「キャラクタと番組」において、以下の SELECT 文を実行せよ。

SELECT 文に使う関数

何かを取り出すのに関数を使うことができる。以下のような関数を知っておくと便利である。

関数目的使いかた
AVG平均を出すAVG(属性)
COUNT行数を出すCOUNT(*)
MAX最大値を出すMAX(属性)
MIN最小値を出すMIN(属性)
SUM合計を出すSUM(属性)

演習6-2:以下の文を実行した結果を示せ。表は前回のものを使用する。

上の演習問題でも、順位の和や平均は意味がないが、練習のために行っている。

COUNT は、* で全てを数えること以外に、重複しない行数を数える指定ができる。 それには重複している情報を含む属性を DISTINCT で指定すればよい。

COUNT (DISTINCT (属性)):重複を排除した行数を数える

演習6-3:以下の文を実行した結果を示せ。表は前回のものを使用する。

グループ化

GROUP BY を使って、属性に関して重複する行をグループ化することができる。 もしそこに条件をつける場合は、HAVING を使う。

GROUP BY 属性:属性に関して重複する行をグループ化。複数の属性を SELECT した場合は、それらを指定する必要がある。 
HAVING 条件式:集計結果に対する問い合わせ条件を指定 

グループ化した結果を求めるには

SELECT 属性1, 属性2 ... FROM 表 GROUP BY 属性1, 属性2 ... HAVING 条件式

とする。

演習6-4:以下の文を実行した結果を示せ。表は前回のものを使用する。

同じ属性が複数の表に含まれている場合

表を指定してから属性を指定する必要がある。

表.属性

として、区別する。

複数の条件をつける場合

AND あるいは OR を使う。

WHERE 条件 1 AND 条件 2 [OR 条件 3] ...

属性を日本語に変換して表したい場合

SELECT english AS '日本語' で表すことができる。

E-R 図

関係データベースを作るに際し、関係をまとめるために使われる図である。

E-R モデル:Entity (実体) と Relation (関連) に分けてデータベース化すること

E-R 図:E-R モデルを図で表したもの。 データモデルに独立なデータモデルを表現する方法

矢印に数が示されている場合はその対応の数を示すが、 一般に矢でないほうの対応する数は多く、矢のほうは 1 である。

実体
属性
関連
直線 1 対 1
矢印 1 対多
両矢印 多対多

E-R 図は、属性を関係づけるものである。

関係表の例:公益大学の学生と必修科目
属性
「名前」「学籍番号」「語学クラス」「情報科目クラス」
レコード 1相田みつこc105901中国語情報 A
レコード 2飯島なおきc105902中国語情報 B
レコード 3内田外男c105903ロシア語情報 C
レコード 4江口洋子c105904ロシア語情報 C
レコード 5岡田増太c105905韓国語情報 A
レコード 6鎌田鍬夫c105906韓国語情報 A
レコード 7木村拓世c105907英語情報 C
レコード 8熊本みかんc105908英語情報 D
レコード 9今朝羽根坊c105909英語情報 D

本日の演習の解答はこちら

本日のレポート課題 : (Subject: 第 6 回レポート 「E-R 図演習」)

宛先は
it-sip-0522-report@e.koeki-u.ac.jp
である。

前回のデータベースを使用し、E-R 図を作れ。もし無理であるならば、 自分の家族構成や好きなこと、就職希望業種などを考察し E-R 図を作れ。 Tgif の Edit--Shape を使うとよい。

を明記すること。前回のデータであっても、再度記入する。

次回、E-R 図について発表する(5 分)。