LotosLabo

プログラミング技術とか気になった情報を載せていきます

PosgreSQLについて2

SELECT文について

テーブルからデータを取り出すときに使う文で、問い合わせまたはクエリと呼ぶことがあります。Accessのクエリと同じ意味です。SQLを学ぶ上ではとても重要な文になります。

列を出力

先ほどのSELECT文を使い列を出力します。

SELECT <列名1>,<列名2>・・・
From <テーブル名>;

(例)

Select shohin_id,shohin_mei
From table1;

ここでは商品IDと商品名をテーブル1から出力すると記述しています。


そうするとこんなかんじで出力されるかと思います。


shohin_id |  shohin_mei
ーーーーー+ーーーーーー
0001   |  チョコレート
0002   |  パン
0003   |  USB
0004   |  バームクーヘン

出力されなかったらもう一回やり直しですね。


全ての列を出力

Select *
From <テーブル名>;

例:Select *
From table1;

全ての列とデータを出力することが出来ます。
出力結果は省略させてもらいます。

列の名前変更

Select <列名1>, As <別名>
From <テーブル名>;

(例)

Select Shohin_id As id
From table1;

ASを使い列を別名に変更します。
ここでは、テーブル1の「商品ID」を「ID」に変更する処理をしています。

また、英語だけでなくASには日本語を使うことも可能です。

例:

Select shohin_id As "商品ID",
From table1;

「""」ダブルクォーテーションを使って文字を囲みます。

定数から出力


出力結果に文字列や数値を追加して表示するという意味です。

Select <文字列定数> As <新しい列>
From <テーブル名>;

(例)

Select '商品' As moji,shohin_id,shohin_mei
From table1;

出力結果


moji | shohin_id | shohin_mei
ーーー+ーーーーーー+ーーーーーーーー
商品 |  0001   | チョコレート
商品 |  0002   | パン
商品 |  0003   | USB
商品 |  0004   | バームクーヘン

こんなふうになってればいいです。


重複行を省いて出力

たとえば、商品分類のチョコレートの「お菓子」とバームクーヘンの「お菓子」が被ってるのでこれを1つにして出力します。


Select Distinct <列名>
From <テーブル名>;

(例)

Select Distinct shohin_bunrui
From table1;

結果

shohin_bunrui
ーーーーーーー
お菓子
パン類
パソコン機器

となります。

Distinctは先頭の列の前にしかかけないので、複数に使うことは出来ません。

WHEREによる条件を用いた出力

もしあの列の分類が〇〇だったら?
というような出力です。

Select <列名>
From <テーブル名>
Where <条件式>;

例:
もし商品分類がお菓子だったら?

Select shohin_bunrui,shohin_mei
From table1
Where shohin_bunrui = 'お菓子';

出力結果

shohin_bunrui | shohin_mei
ーーーーーーー+ーーーーーーー
お菓子    | チョコレート
お菓子    | バームクーヘン


ここでWhereはFromの後に書くことが重要になってきます。


コメントの書き方


他のプログラミング言語であれば


// コメント
# コメント
/* コメント
  コメント */

があります。SQLでも似たように

-- コメント一行のみ
/* 複数
Hello World! */

というように使えます。

算術演算子を使う

算術演算子とは説明しなくてもわかりますが、


×
÷
のことです。

ここでは金額などに値を増やしたり減らしたりするのに使用します。

Select <列名> 演算子
From <テーブル名>;


(例)

Select shohin_mei,shohine_tanka, shohin_tanka * 2 As "shohine_tanka_x2"
From table1;



出力結果


shohin_mei | hanbai_tanka | hanbai_tanka_x2
ーーーーーーー+ーーーーーーーー+ーーーーーーーーー
チョコレート |  150      |300
パン     |  98      |196
USB     |  500      | 1000
バームクーヘン|  98      |196

販売単価を×2した値を元の値を出力しています。

※値がNULLの値には何を演算してもNULLになるのでご注意を。


比較演算子

これも説明しなくてもわかるとは思いますが、
=、<>、>=、<=、>、<
これです。

WHEREと比較演算子を使ってデータを出力します。

Select <列名>
From <テーブル名>
Where <列名> 比較演算子 数値;

(例)

Select hanbai_tanka,shohin_mei
From table1
Where hanbai_tanka = 500;


出力結果


hanbai_tanka | shohin_mei
ーーーーーーー+ーーーーーー
500      | USB

販売単価が500円のUSBのみ表示されます。なお、
NULLには比較演算子は使えないのでご注意を。



NOT演算子

Select <列名>
From <テーブル名>
Where <列名> 論理演算子 数値;

(例)

Select hanabi_tanka,shohin_mei
From table1
Where Not hanbai_tanka = 500;


出力結果


hanbai_tanka | shohin_mei
ーーーーーーー+ーーーーーー
150      | チョコレート
98       | パン
98       | バームクーヘン

500円以外のものが出力されます


AND演算子

Select <列名>
From <テーブル名>
Where <列名> = データ
論理演算子 <列名> 比較演算子 数値;

(例)

Select shohin_bunrui,hanbai_tanka
From table1
Where shohin_bunrui = 'お菓子'
And hanbai_tanka = 98;


出力結果


shohin_bunrui | hanbai_tanka
ーーーーーーー+ーーーーーー
お菓子    |  98 


分類がお菓子で販売単価が98円のものだけ出力されます。



OR演算子

Select <列名>
From <テーブル名>
Where <列名> = データ
論理演算子 <列名> 比較演算子 数値;

(例)

Select shohin_bunrui,hanbai_tanka
From table1
Where shohin_bunrui = 'お菓子'
Or hanbai_tanka = 98;


出力結果


shohin_bunrui | hanbai_tanka
ーーーーーーー+ーーーーーー
お菓子    |  98 
お菓子    |  150

分類がお菓子で販売単価が98円のどちらかが出力されます。