SQL - 表現式

こんにちは、未来のSQL魔術師たち!今日は、SQL表現式の世界への興味深い旅に出発します。プログラミングが初めてであっても心配しないでください。私はあなたの親切なガイドとして、ステップバイステップで進めていきます。このチュートリアルの終わりには、プロのようにSQL表現式を構築できるようになるでしょう!

SQL - Expressions

SQL表現式とは?

まず基本から始めましょう。SQL表現式は、SQLクエリ内で使用できる式や計算です。一つ以上の値、演算子、SQL関数の組み合わせで、値を評価します。データベースクエリに味を加える秘密のソースだと思ってください!

例えば、製品テーブルがあり、全ての価格に10%の割引を適用したいとします。以下のような表現式を使用できます:

SELECT product_name, price, price * 0.9 AS discounted_price
FROM products;

このクエリでは、price * 0.9が私たちのSQL表現式です。価格を0.9倍することで、10%の割引を適用しています。

SQLブール表現式

次に、ブール表現式について見ていきましょう。これらはSQL世界の真偽質問のようなものです。常にTRUE、FALSE、またはNULL(未知を意味します)のいずれかの結果になります。

ブール表現式は、データをフィルタリングしたり、クエリ内で決定を行いたいときに非常に有用です。以下はブール表現式で使用される一般的な演算子です:

演算子 説明
= 等しい
<> 等しくない
> より大きい
< より小さい
>= より大きいか等しい
<= より小さいか等しい
AND 論理AND
OR 論理OR
NOT 論理NOT

以下に、これらを使用した例を示します:

-- 100ドル以上の価格を持つ全ての製品を見つける
SELECT * FROM products WHERE price > 100;

-- 直近30日間の注文を見つける
SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '30 days';

-- ニューヨークまたはカリフォルニアのアクティブ顧客を見つける
SELECT * FROM customers
WHERE (state = 'NY' OR state = 'CA') AND is_active = TRUE;

これらの例のそれぞれで、WHERE句の後ろにある部分がブール表現式です。データの各行に対してはい/いいえの質問を行っているようなものです。

SQL数値表現式

次に、数値表現式について見ていきましょう。これらはSQLの数学の問題のようなもので、数字と算術演算子を含みます。

以下は基本的な算術演算子です:

演算子 説明
+ 加算
- 減算
* 掛け算
/ 除算
% モジュロ(余り)

以下に例を示します:

-- 在庫の総価値を計算する
SELECT product_name, quantity, price, quantity * price AS total_value
FROM inventory;

-- 従業員の年齢を計算する
SELECT first_name, last_name, EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM birth_date) AS age
FROM employees;

-- 使用された予算の割合を計算する
SELECT project_name, budget, spent, (spent / budget) * 100 AS percent_spent
FROM projects;

これらの例では、数値表現式を使用してデータに計算を適用しています。これは、既存データから新しい洞察を導出するのに非常に有用です。

SQL日付表現式

最後に、日付表現式について話しましょう。SQLでの日付の取り扱いは厄介なことがありますが、非常に強力です。日付表現式を使用することで、クエリ内で日付を操作および比較できます。

以下は一般的な日付関数です:

関数 説明
CURRENT_DATE 現在の日付を返す
CURRENT_TIMESTAMP 現在の日付と時刻を返す
DATE_ADD 指定された時間間隔を日付に追加する
DATE_SUB 指定された時間間隔を日付から引く
DATEDIFF 二つの日付の差を計算する

以下にこれらを使用した例を示します:

-- 今日注文された注文を見つける
SELECT * FROM orders WHERE order_date = CURRENT_DATE;

-- 直近90日間注文しなかった顧客を見つける
SELECT * FROM customers
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '90 days'
);

-- 各注文がどれだけ前に注文されたか計算する
SELECT order_id, order_date,
DATEDIFF(CURRENT_DATE, order_date) AS days_ago
FROM orders;

これらの日付表現式を使用することで、日付に関する複雑な操作を行うことができます。これは、時間に基づくデータの分析には非常に重要です。

そして、ここまでましたね、皆さん!SQL表現式の世界を旅しました。ブール論理から数値計算、そして時間旅行(少しの)まで。心に留めておいてください、練習は完璧を生みます。これらの表現式を自分のクエリで実験してみてください。

最後に、ちょっとしたSQLジョークをどうぞ:データベース管理者はなぜ妻を離れましたか?彼女は多対多の関係を持っていました!(バダムタス!)

快適なクエリを楽しんでください。そして、あなたのジョインが常に迅速で、クエリがタイムアウトしないことを祈っています!

Credits: Image by storyset