リレーショナルデータベース・RDBのデータの取り出し方
リレーショナルデータベース(RDB)はデータを「行(レコード)」と「列(フィールド)」から構成する2次元の「表(テーブル)」として格納します。
そして、リレーショナルデータベースはテーブルに対して、選択・射影(投影)、結合の3つの機能・操作を使って、データを取り出すことができます。
選択
条件を指定して、その条件に合致した行(レコード)のみを取り出します。
射影・投影
条件に合った列(フィールド)を取り出します。
結合
複数の表を共通するキーで結び付けて、1つの表として取り出します。
上記は選択、射影(投影)、結合の1つずつの記載になりますが、実際のシステム、業務では選択、射影(投影)、結合をを組み合わせて使います。
SQLで選択、射影(投影)、結合を試してみる
2つのテスト用のテーブルを用意して、選択、射影(投影)、結合をSQLで使ってみましょう。
<テスト用テーブルの作成>
CREATE TABLE test1 (
id NUMBER(5) constraint id_pk PRIMARY KEY,
name VARCHAR2(10),
email VARCHAR2(14),
country_cd NUMBER(10)
);
CREATE TABLE test2 (
country_cd NUMBER(10),
country VARCHAR2(10)
);
<テスト用テーブルにデータを挿入>
・test1用データ
INSERT
INTO test1
VALUES (1, 'AAA', 'AAA@kaisha.com', 1);
INSERT
INTO test1
VALUES (2, 'BBB', 'BBB@kaisha.com', 2);
INSERT
INTO test1
VALUES (3, 'CCC', 'CCC@kaisha.com', 1);
INSERT
INTO test1
VALUES (4, 'DDD', 'DDD@kaisha.com', 3);
INSERT
INTO test1
VALUES (5, 'EEE', 'EEE@kaisha.com', 3);
・test2用データ
INSERT
INTO test2
VALUES (1, 'JAPAN');
INSERT
INTO test2
VALUES (2, 'AMERICA');
INSERT
INTO test2
VALUES (3, 'GERMAN');
選択 SQL
select * from test1 where country_cd = 3;
select * from test1 where id between 1 and 3;
射影・投影 SQL
select name from test1;
結合 SQL
select
*
from
test1 a
inner join test2 b
on a.country_cd = b.country_cd;
select
id,name,a.country_cd,country
from
test1 a
inner join test2 b
on a.country_cd = b.country_cd;