SQLの式
SQL式は、1つ以上の値、演算子、SQL関数の組み合わせであり、値に結果をもたらします。これらのSQL式は、フォーミュラのようなものであり、クエリ言語で記述されます。また、特定のデータセットをデータベースでクエリするためにも使用することができます。
SQL式
-
- ブール値
-
- 数値
- 日付
サンプルプログラムを用いて、表現のさまざまなタイプを詳細に理解しよう。
SQLのブール式
SQL ブール式は、SQL クエリの一部として指定された条件に基づいてデータを取得します。クエリが実行されると、単一の値のみを取得する必要があります。以下にその構文を示します。
SELECT column
FROM table_name
WHERE SINGLE_VALUE_MATCHING_EXPRESSION;
サンプルデータを使った表を使って、ブール式を理解しようとしてみましょう。
EmpId | EmpName | EmpAge | EmpSalary |
---|---|---|---|
1 | John | 32 | 2000 |
2 | Smith | 25 | 2500 |
3 | Henry | 29 | 3000 |
上記で言及された従業員テーブルを例として考慮します。例のクエリは以下の通りです。
SELECT EmpName FROM Employee WHERE EmpId = 1;
上記のクエリは、クエリ結果として “John” という単一の値を返します。SQLのブール式は、常に単一の結果を取得するために主キーと一緒に使用するべきです。これは、ネストされたSQLの選択クエリの場合に必要です。
select posts.title, posts.author_id from posts, authors
where posts.author_id = authors.id and
posts.author_id = (select id from authors where name = 'Pankaj');
上記のクエリでは、作者名がPankajであるポストの名前とIDがすべて返されます。ここでは、ネストされたSQLクエリは常に1行だけを返す必要があります。それ以外の場合、Subquery returns more than 1 rowというエラーメッセージが表示されます。
SQL数値式
SQLクエリで数学的演算を実行するためにSQL数値式が使用されます。その構文は以下の通りです。
SELECT NUMERICAL_EXPRESSION as OPERATION_NAME
FROM table_name
数値式は、SQLクエリで使用される関数の数学的な式です。例を使って数値式を理解してみましょう。
SELECT count(*) FROM Employee; -- 3
上記のクエリは、WHERE句の条件に基づいて行の総数を提供するため、COUNT(*)関数によって3と結果が返されます。たとえば、select count(*) from employee where empsalary > 2400; の場合、2が返されます。sum()、avg()、min()、max()など、他の関数もあります。これらの関数は数学的な操作に使用されます。SQL数値式のさらなるコードスニペットの例を見てみましょう。
SELECT sum(EmpSalary) as "Salary" FROM Employee; -- 7500
select min(EmpSalary) from Employee; -- 2000
select max(EmpSalary) from Employee; -- 3000
select sum(EmpSalary) from Employee; -- 7500
select avg(EmpSalary) from Employee; -- 2500.0000
SQLの日付式
SQLの日付式は、日時の値を返します。いくつかのSQLステートメントで日付式を理解してみましょう。
SELECT CURRENT_TIMESTAMP; -- 2018-01-20 10:32:37
-- For MYQSL
SELECT now(); -- 2018-01-20 10:32:57
-- For SQL Server
SELECT GetDate();
-- For Oracle DB
select sysdate from Dual; -- 20-JAN-18
上記のクエリはシステムの現在時刻を取得します。データベースのベンダーごとに、現在の日付やタイムスタンプの値を取得するための特定のメソッドがありますので、データベース間である関数が動作しない可能性がわずかにあります。これがSQL式に関する情報です。後のSQLチュートリアルやプログラムでこれらを頻繁に使用します。さらなる参考資料:SQLデータ型。参照:Oracleドキュメント。