Previous: 行内への文字列の表示
Up: selectの基本形
Previous Page: 行内への文字列の表示

項目リスト中の式

SQLでは、項目リストに、関数や四則演算を含んだ式を置くことができる。 この時、項目は、他のプログラム言語での「変数」と同じような働きをする事になる。 「図書データベース」では、あまり数値演算の必要がないので、ここでは、別のデータ ベースの計算例を見てみることにしよう。次の例は、書店ごとの本の売り上げを管理す るあるデータベースの salesview というテーブルを、select * で表示させたものであ る。このテーブルの項目の意味を簡単に述べておこう。

stor_id		書店のID番号
	title_id	本のID番号
	price		本の定価
	qty		売上部数

テーブルの一行目は、'7066'という番号の書店で、定価8800円の、'PS2091'という番号 の書籍が、75冊売れたということを示している。

例 8:

select * from salesview

stor_id title_id price qty ------- -------- ----------- ------ 7066 PS2091 8800 75 7067 PS2091 8800 10 7131 PS2091 8800 20 7131 MC3021 25750 25 8042 MC3021 25750 15 8042 BU1032 3000 10 6380 PS2091 8800 3 6380 BU1032 3000 5 8042 BU1111 2781 25 7896 BU2075 1339 35 7896 BU7832 2369 15 7896 MC2222 1854 10 7066 PC8888 2000 50 7131 PS1372 1300 20 7131 PS2106 1494 25

一見すると、stor_idやtitle_idが、どんな店や本を指しているのか不明なので、分かり にくいテーブルに見える。実際には、このデータベースでは、この売上のテーブルとは 別に、stor_idと本屋の名前を含んだテーブルと、title_idと本のタイトルを含んだテ ーブルが、データベース内に含まれているのであるが、どうして、そんな回り道をして 直接この売上のテーブルに、書店名と書籍名を書き込んでいないのであろうか? それ には、実は理由があり、後の章で扱われるのだが、。ここでは、自分で、次のようなこ とを考えてみて欲しい。データベースで特定の本を指定するのに、この例のように ID番号を使うのと、書籍名を使うのとではどちらが便利であろうか。データベース内の 様々なテーブルに書籍名のエントリーがあるのと、本のID番号のエントリーがあるのと では、どちらがコンパクトなデータの表現が可能であろうか。

次の例の、select文の最後の、 price * qty に注目して欲しい。もちろん、これは、 同じ行の中の本の定価に、売上部数を掛けたものである。結果の出力を見れば、見出し 無しではあるが、新しい項目が作られていることが分かる。
この例では、 price * qty であったが、次に見るように、定数やかっこを含む式を、 自由に、select文の項目リスト中に、自由に書くことが出来る。以下の例で、priceや、 qty、また、原価、定価、売値等は、項目名である。

price * ( qty - 1 ) + 100
	qty * qty + 2 * qty + 1
	定価 - 原価 
	( 売値 - 定価 ) * 100 / 定価

例 9: 式の利用1

select stor_id , title_id , price , qty , price * qty
	from salesview

stor_id title_id price qty ------- -------- ----------- ------ ----------- 7066 PS2091 8800 75 660000 7067 PS2091 8800 10 88000 7131 PS2091 8800 20 176000 7131 MC3021 25750 25 643750 8042 MC3021 25750 15 386250 8042 BU1032 3000 10 30000 6380 PS2091 8800 3 26400 6380 BU1032 3000 5 15000 8042 BU1111 2781 25 69525 7896 BU2075 1339 35 46865 7896 BU7832 2369 15 35535 7896 MC2222 1854 10 18540 7066 PC8888 2000 50 100000 7131 PS1372 1300 20 26000 7131 PS2106 1494 25 37350

先の例では、見出しはデフォールトの項目名が使われていたため、演算で出来た新しい 項目には見出しが無かったが、例5・例6の方法を用いると、次のように、計算の結果 できた項目に見出しを与えることが出来る。意味からみればきわめて自然な、 総売上 = price * qty とか、利益率 = ( 定価 - 原価 ) * 100 / 原価 といった見出 しの指定法が使えるのは、直観的で便利である。

例 10: 式の利用2

select stor_id 店, title_id 本 , price 定価,
	qty 部数 , 総売上 = price * qty
	from salesview

店 本 定価 部数 総売上 ---- ------ ----------- ------ ----------- 7066 PS2091 8800 75 660000 7067 PS2091 8800 10 88000 7131 PS2091 8800 20 176000 7131 MC3021 25750 25 643750 8042 MC3021 25750 15 386250 8042 BU1032 3000 10 30000 6380 PS2091 8800 3 26400 6380 BU1032 3000 5 15000 8042 BU1111 2781 25 69525 7896 BU2075 1339 35 46865 7896 BU7832 2369 15 35535 7896 MC2222 1854 10 18540 7066 PC8888 2000 50 100000 7131 PS1372 1300 20 26000 7131 PS2106 1494 25 37350

maruyama@wakhok.ac.jp
1995年02月10日 (金) 00時49分16秒 JST