リレーショナルデータベース 超入門

リレーショナルデータベース
超入門
文部省核融合科学研究所
プラズマ計測系
江本雅彦
平成11年度東海北陸地区教室系術職員合同研修
1
核融合研で使用されているRDB
システム名
データベース
OS
目的
LMS
Oracle7
Windows NT
実験管理
解析情報
PostgreSQL6.5 RedHat 6.0
リアルタイム Sybase
System 11
平成11年度東海北陸地区教室系技術職員合同研修
Solaris 2.6
解析情報イン
デックス
装置管理
データ管理
2
代表的なリレーショナルデータベース
商用データベース
 Oracle8、Microsoft SQL Server7、
Informix、DB2 等
 フリーデータベース
 PostgreSQL、MySQL、mSQL、
GNUSQL等

平成11年度東海北陸地区教室系技術職員合同研修
3
SQL
リレーショナルデータベースの問い合わせ
言語
 ISO/JIS による標準化
 SQL92が現在の標準他言語から利用する
時は埋め込みSQL等が必要

平成11年度東海北陸地区教室系技術職員合同研修
4
歴史
1970
1976
1987
E.F.Coddリレーショナルデータモデ
ル発表
IBM SanJose研究所 SEQUEL2発
表
SQL-87規格化
1989~1990 SQL-89規格化
1992~1995 SQL-92規格化
SQL3策定中
平成11年度東海北陸地区教室系技術職員合同研修
5
テーブル
….
製品番号 製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブル
MD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
カラム
価格
ロウ
6
抽出
select * from 製品 where メーカコード=’234’
製品テーブル
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
価格
7
select 文
select
列名1,列名2,….
from
テーブル名
where
条件
平成11年度東海北陸地区教室系技術職員合同研修
8
条件
<条件>: <式> <オペレータ> <式>
比較オペレータ
=,!=,<,<=,>,>=
文字オペレータ
like
その他
in,between
平成11年度東海北陸地区教室系技術職員合同研修
9
条件(例)



売上 >= 100000
売上が10000以上の行にマッチ
製品名 like ‘%TV%’
%は任意の文字列にマッチするため、
‘14型TV’、’壁掛けTV’、’TVモニタ‘等にマッ
チ
製品コード in (‘1234’,’1235’)
製品コードが 1234 または 1235 の行にマッチ
平成11年度東海北陸地区教室系技術職員合同研修
10
複雑な条件
select * from 製品
where メーカコード=’234’ and 価格>30000
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
15型TV
234
41,800
1236
ポータブル
MD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
価格
11
合計、平均
売上テーブル
日付
製品番号
数量
1999/8/1
1234
234
1999/8/2
1235
123
1999/8/3
1235
20
1999/8/3
1237
34
….
select sum(数量) from 売上 where 日
付 = ‘19990801’
select avg(数量) from 売上 where 日
付 = ‘19990801’
平成11年度東海北陸地区教室系技術職員合同研修
12
最大・最小
売上テーブル
日付
製品番号
数量
1999/8/1
1234
234
1999/8/2
1235
123
1999/8/3
1235
20
1999/8/3
1237
34
….
select max(数量) from 売上 where 日
付 = ‘19990801’
select min(数量) from 売上 where 日
付 = ‘19990801’
平成11年度東海北陸地区教室系技術職員合同研修
13
create 文
create テーブル名
(
カラム名1 タイプ [ not null],
カラム名2 タイプ [ not null],
………..
カラム名n タイプ [ not null]
)
平成11年度東海北陸地区教室系技術職員合同研修
14
create 文(例)
create table 製品
(製品番号 char(4) not null,
メーカコード char(3) not null,
価格 money not null,
コメント varchar(255)
)
平成11年度東海北陸地区教室系技術職員合同研修
15
代表的なデータタイプ
タイプ名
説明
範囲
表現
int
整数
-2147483648
~2147483647
1, 2343,…
float
8バイト浮動小数
機種依存
0.13,6.02e23,…
char(n)
nバイト
固定長文字列
varchar(n)
n バイト
可変長文字列
money
4バイト
固定小数
21474836.48 ~
+21474836.47
‘24.00’,‘3234.00’
datetime
日付時間
μsec単位
4713 BC
~1465001 AD
‘19990805 235959’
平成11年度東海北陸地区教室系技術職員合同研修
‘a’,’abc’,…
16
NULL

NULL はデータが存在しないことを表す。
NULL であるカラムと‘=’、‘<=’等の比較
を行うと偽となるあるカラムがNULLである
かどうかを比較するには‘is null’を使用す
る。
平成11年度東海北陸地区教室系技術職員合同研修
17
insert 文
構文1
insert into テーブル名
values (値1、値2、値3、・・・)
構文2
insert into テーブル名
(カラム1、カラム2、・・・)
values (値1、値2、値3・・・)
平成11年度東海北陸地区教室系技術職員合同研修
18
insert文(例)
….
製品番号
製品名
メーカコード
価格
1234
14型TV
234
38,000
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
insert into 製品 values (‘1236’,’21型TV’,…’41800’)
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
価格
19
delete 文
delete from テーブル名
where 条件
平成11年度東海北陸地区教室系技術職員合同研修
20
delete文(例)
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブルMD
234
21,800
1237
236
delete
from ノート型PC
製品 where 製品番号=‘1235’
….
価格
198,000
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
価格
21
update 文
update テーブル名
set カラム1=値1、
カラム2=値2、
・・・・
where
条件
平成11年度東海北陸地区教室系技術職員合同研修
22
update 文(例)
….
製品番号
製品名
メーカコード
価格
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブルMD
234
21,800
1237
236
198,000
update
製品ノート型PC
set 価格=‘39800’
where 製品コード=‘1235’
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
39,800
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
平成11年度東海北陸地区教室系技術職員合同研修
価格
23
distinct
….
製品番号
製品名
メーカコード
1234
14型TV
234
38,000
1235
21型TV
234
41,800
1236
ポータブルMD
234
21,800
1237
ノート型PC
236
198,000
select distinct メーカコード from 製品
メーカコード
メーカコード
234
234
234
236
価格
234
236
平成11年度東海北陸地区教室系技術職員合同研修
24
結合(join)
売上テーブル
製品テーブル
日付
製品番号
数量
1999/8/1
1234
234
1999/8/2
1999/8/3
1999/8/3
1235
1235
1237
….
製品番
号
製品名
メーカコード
1234
14型TV
234
1235
21型TV
234
1236
ポータブ
ルMD
234
1237
ノート型
PC
236
….
123
20
34
Foreign
キー
平成11年度東海北陸地区教室系技術職員合同研修
Primary
キー
25
結合 続き
select 日付,売上.製品番号,製品名,数量
from 売上,製品
where 売上.製品番号=製品.製品番号
and 日付 >= ‘19990801’
日付
製品番号
製品名
数量
1999/8/1
1234
14型TV
234
1999/8/2
1235
21型TV
123
1999/8/3
1235
21型TV
20
1999/8/3
1237
ノート型PC
34
平成11年度東海北陸地区教室系技術職員合同研修
26
Group
日付
製品番号
数量
1999/8/1
1234
234
1999/8/2
1235
123
1999/8/3
1235
20
….
select
製品番号,sum(数量)
1999/8/3
1237
34 as 合計 from 売上
where 日付 between ‘19990801’ and ‘19990831’
group by 製品番号
製品番号
合計
1234
234
1235
143
1237
34
平成11年度東海北陸地区教室系技術職員合同研修
27
Order
select カラム
from テーブル
where 条件
order by カラム1 [DESC|ASC]、カラム2,・・・
平成11年度東海北陸地区教室系技術職員合同研修
28
Order
日付
製品番号
数量
1999/8/1
1234
234
1999/8/2
1235
123
1999/8/3
1235
20
….
select
製品番号,sum(数量)
1999/8/3
1237
34 as 合計 from 売上
where 日付 between ‘19990801’ and ‘19990831’
group by 製品番号
order by 合計
製品番号
合計
1237
34
1235
143
1234
234
平成11年度東海北陸地区教室系技術職員合同研修
29
副問合せ(サブキュエリ)
日付
製品番号
製品名
数量
1999/8/1
1234
14型TV
234
1999/8/2
1234
21型TV
123
1999/8/3
1235
21型TV
20
1999/8/3
1237
ノート型PC
34
select 製品番号 from 売上
where 数量 = ( select max(数量) from 売上)
平成11年度東海北陸地区教室系技術職員合同研修
30
多言語との接続
ODBC (VisualBasic 他)
 JDBC (Java)
 PHP (HTML)
 DBI(Perl)

平成11年度東海北陸地区教室系技術職員合同研修
31