SELECT句とは
SELECT文の最初の句は当然ながらSELECT句となりますが、ここではキーワード「SELECT」に続く単語の記述法について述べます。
また、SELECT句はSELECT文の最初にのみ記述する句とは限らず、「サブSQL」(後述)としてSELECT文の中に別のSELECT文として記述することが可能です。話がややこしくなりましたが、ここでは軽く流して先に進めましょう。
サンプルSQLコードはSample_SQL3.txtを使用します。
列名の書式
列名を記述する正式な書式は下記のとおりです。テーブル名と列名を「.」(ピリオド)で繋いで記述します。
<書式3.1>
SELECT <テーブル名>.<列名1>,<テーブル名>.<列名2>,…
FROM <テーブル名>;
ただし、FROM句で指定するテーブル名がひとつの場合や、複数のテーブルを指定しても記述する列名が複数のテーブルに存在しない場合はテーブル名を省略することが可能です。(複数のテーブルを指定するSQLについては後述します。)
<SQL例3.1>
SELECT
“Staff“.“ID”,
“Staff”.“Department_ID”,
“Staff“.“Name”
FROM “Staff“;
【<SQL例3.1>の実行結果】(一部表示)
(注)上記例のように列指定すると実行結果はテーブルに定義されている順に関わらず、SELECT句で記述した順に表示されます。
別名(エイリアス)を付ける
列名にはテーブルに定義されたフィールド名とは別の名前を付けることができます。書式は下記のとおりです。別名はキーワード「AS」の後に記述します。
<書式3.2>
SELECT
<テーブル名>.<列名1> AS <別名1>,
<テーブル名>.<列名2> AS <別名2>,…
FROM <テーブル名>;
<SQL例3.2>
SELECT
“Staff“.“ID”,
“Staff”.“Department_ID” AS “部門”,
“Staff“.“Name” AS “担当者”
FROM “Staff“;
【<SQL例3.2>の実行結果】(一部)
数値の表示
列名を記述する位置には数値や数式を記述する事ができます。書式は下記のとおりです。
<書式3.3>
SELECT <数値または数式1>,<数値または数式2>,…
FROM <テーブル名>;
<SQL例3.3>
SELECT
123,
+123,
-456,
3.14,
7+8,
9-1,
2*3,
4/3
FROM “z“;
【<SQL例3.3>の実行結果】
上図のとおり、実行結果の列名には記述した数値または数式がそのまま表示され、列には数値の場合はその数値、数式の場合は演算結果の数値が表示されます。
(注)<SQL例3.3>では「+」「–」などの算術演算子が使用されています。この算術演算子についての詳細は第5章「行の選択」で詳しく説明します。
なお、<SQL例3.3>で使用したテーブル「z」はSQL文の文法エラーを避けるためのもので、1レコードだけ登録したダミーのテーブルです。
文字列(リテラル)の表示
列名を記述する位置には文字列を記述する事ができます。書式は下記のとおりです。文字列は「’」(シングルクオーテーション)で囲みます。
<書式3.4>
SELECT <文字列1>,<文字列2>,… FROM <テーブル名>;
<SQL例3.4>
SELECT
’Hello’ + ’ World’,
’Let’’s try’ || ‘ SQL’,
‘漢字もOK’
FROM “z“;
【<SQL例3.4>の実行結果】
※ 1列目と2列目の文字列で使用している「+」(プラス)および「||」(バーティカルバー2文字)は連結演算子といい、これによって2つの文字列を連結してひとつの文字列にすることが可能になります。
(注)関数との組み合わせ等で「+」が使えない場合があります。
集約関数の使用
Base SQLで使用できる関数は沢山あります。関数一般については次章で詳しく説明しますが、ここではSELECT句だけで使用できる集約関数(集合関数ともいいます)について説明します。
書式は下記のとおりです。
<書式3.5>
SELECT <集約関数> FROM <テーブル名>;
なお、集約関数については第9章「集約時のグループ化」で再び取り上げます。
COUNT関数
COUNT関数はレコード件数を求める関数です。()の中に「*」を記述します。
<SQL例3.5>
SELECT COUNT(*) FROM “Employee“;
<SQL例3.5>で検索するテーブル「Employee」の全レコードは下図のとおりです。11レコード登録されているのが確認できます。
【<SQL例3.5>の実行結果】
実行結果にレコード件数「11」が表示されています。
MIN関数
MIN関数は指定した列の最小値を求める関数です。()の中に列名を指定します。
<SQL例3.6>
SELECT MIN(“Salary“) FROM “Employee“;
【<SQL例3.6>の実行結果】
実行結果に最も低い基本給「200000」が表示されています。
MAX関数
MAX関数は指定した列の最大値を求める関数です。()の中に列名を指定します。
<SQL例3.7>
SELECT MAX(“Salary“) FROM “Employee“;
【<SQL例3.7>の実行結果】
実行結果に最も高い基本給「430000」が表示されています。
SUM関数
SUM関数は指定した列の合計値を求める関数です。()の中に列名を指定します。
<SQL例3.8>
SELECT SUM(“Salary“) FROM “Employee“;
【<SQL例3.8>の実行結果】
実行結果に基本給の合計値が表示されています。
AVG関数
AVG関数は指定した列の平均値を求める関数です。()の中に列名を指定します。
<SQL例3.9>
SELECT AVG(“Salary“) FROM “Employee“;
【<SQL例3.9>の実行結果】
実行結果に基本給の平均値が表示されています。