SELECT文①(準備/構文/Order By句)



SELECT文①(準備/構文/Order By句)

今回と次回の2回で、SELECT文に使用される句について説明します。今までで、SELECT句、FROM句、WHERE句について説明しましたが、他にもいくつかの句を使用することができます。

1.準備

まず今回使用するテーブルですが、地域テーブルというテーブルを使用します。イメージは以下のとおりです。

地域テーブル

支店名と地域は、VARCHAR(20)、社員数と店舗面積は、INTで定義しています。
データ投入用Insert文は以下のとおりです。

Insert into 地域 values(‘札幌支店’,’地域1’,60,520);
Insert into 地域 values(‘山形支店’,’地域1’,95,758);
Insert into 地域 values(‘日本橋支店’,’地域2’,126,1108);
Insert into 地域 values(‘新宿支店’,’地域2’,60,801);
Insert into 地域 values(‘渋谷支店’,’地域2’,102,988);
Insert into 地域 values(‘新潟支店’,’地域2’,50,650);
Insert into 地域 values(‘大阪支店’,’地域3’,120,850);
Insert into 地域 values(‘京都支店’,’地域3’,46,690);
Insert into 地域 values(‘高松支店’,’地域4’,55,450);
Insert into 地域 values(‘広島支店’,’地域4’,67,520);
Insert into 地域 values(‘博多支店’,’地域4’,86,569);
Insert into 地域 values(‘宮崎支店’,’地域4’,35,483);

2.構文

SELECT文の構文は以下のとおりです。

SELECT [DISTINCT | ALL] { * |
<列名> [[AS] <別名> …] <式> [[AS] <別名> …]}
FROM
{<表名> [[AS] <別名>]}
<結合表>}
[ WHERE <検索条件>] [ GROUP BY <列名>] [ HAVING <検索条件> ]] [{UNION | UNION ALL | INTERSECT | EXECEPT }] <SELECT文>] [ ORDER BY <式> [ ASC | DESC ] …]

実際の動作の確認は後述します。

3.Order By句

SQLを実行して表を出力する場合、その中に登録されている行が表示される順序は、RDBMS製品によって異なります。多くの製品では、データを登録した順序で出力されます。しかし、場合によっては、特定の順序で表示させたいということもあるでしょう。ORDER BY句を使うと特定の順序に行を並び替えることができます。
動作の確認を行います。地域表を社員数の少ない順に表示させます。SQLは以下のとおりになります。

SELECT * FROM 地域 ORDER BY 社員数 ASC;

結果は以下のようになります。

社員数の少ない順で表示されています。このような並びを昇順といいます。昇順の場合のASCは省略可能です。逆に社員数の多い順に並び替えるには、SQLを以下のようにします。

SELECT * FROM 地域 ORDER BY 社員数 DESC;

結果は以下のようになります。

このような並びを降順といいます。
ORDER BY句で指定した列をSELECT句の列に指定しないことも可能です。

SELECT 支店名 FROM 地域 ORDER BY 社員数 ASC;

結果は以下のようになります。

ORDER BY句は複数の列を指定することもできます。その場合は、”,”で区切って複数の列を指定します。例えば、地域名と店舗面積で基準として地域表を並び替えるには以下のようにします。

SELECT * FROM 地域 ORDER BY 地域,店舗面積 ;

結果は以下のようになります。

このクエリーは、まず地域が第一の並び替え基準となり、店舗面積が第二の並び替え基準となります。なので、地域名の並びは”地域1”~”地域4”で昇順になり、さらにその中で店舗面積の並び替えが行われます。
今回の説明は以上となります。次回は、GROUP BY句、HAVING句、複数の句の使用などの説明をします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です