SQL での NULL の処理

WBOY
リリース: 2024-07-16 22:21:18
オリジナル
1080 人が閲覧しました

NULL Handling in SQL

導入

SQL での NULL 値の処理は、すべてのデータベース専門家が理解する必要がある基本的な側面です。 NULL は、データベース テーブル内の欠落値または未定義の値を表します。データ操作の整合性と正確性を確保するには、これらの値を正しく処理することが重要です。この記事では、SQL における NULL の概念、その意味、および NULL 値を処理するためのさまざまな戦略について詳しく説明します。

SQL における NULL を理解する

SQL の

NULL は、データ値がデータベースに存在しないことを示すために使用される特別なマーカーです。これは、空の文字列またはゼロ値と同等ではありません。代わりに、NULL は値が存在しないことを示します。データベース テーブルに NULL 値が存在すると、特に比較、集計、結合などの操作を実行する場合、クエリの結果に影響を与える可能性があります。

NULL の主な特徴

  1. 不定値: NULL は不明な値または不定値を表します。
  2. 非比較: NULL を含む比較 (=、<、> など) は、TRUE または FALSE ではなく、常に NULL を返します。
  3. 関数での特別な処理: 多くの SQL 関数は、NULL 値を処理するときに特定の動作を行います。

SQL での NULL の操作

NULL のチェック

値が NULL かどうかを確認するには、IS NULL または IS NOT NULL 演算子を使用します。例:

SELECT * FROM employees WHERE manager_id IS NULL;
ログイン後にコピー
ログイン後にコピー

このクエリは、マネージャーがいないすべての従業員を取得します。

NULL と比較演算子

標準の比較演算子 (=、!=、< など) を使用した NULL との直接比較は、期待どおりに機能しません。例:

SELECT * FROM employees WHERE manager_id = NULL;
ログイン後にコピー

このクエリは、一部の manager_id 値が NULL であっても、行を返しません。代わりに、以下を使用する必要があります:

SELECT * FROM employees WHERE manager_id IS NULL;
ログイン後にコピー
ログイン後にコピー

集計では NULL

SUM、AVG、COUNT などの集計関数は、NULL 値を異なる方法で処理します。たとえば、SUM と AVG は NULL 値を無視しますが、COUNT は明示的に指定されていればカウントできます。

SELECT SUM(salary) FROM employees;  -- NULL values are ignored
SELECT AVG(salary) FROM employees;  -- NULL values are ignored
SELECT COUNT(manager_id) FROM employees;  -- NULL values are ignored
SELECT COUNT(*) FROM employees WHERE manager_id IS NULL;  -- Counts only NULL values
ログイン後にコピー

結合での NULL の処理

結合を実行する場合、NULL 値を使用すると予期しない結果が生じる可能性があります。たとえば、INNER JOIN では結合条件に NULL 値を含む行が除外されますが、LEFT JOIN では結合条件に NULL 値が含まれます。

SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;
ログイン後にコピー

このクエリは、LEFT JOIN により、部門を持たない従業員を含むすべての従業員を取得します。

SQL クエリでの NULL の処理

COALESCEの使用

COALESCE 関数は、式のリスト内の最初の非 NULL 値を返します。 NULL をデフォルト値に置き換えるのに便利です。

SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id
FROM employees;
ログイン後にコピー

このクエリは、NULL の manager_id 値を文字列「No Manager」に置き換えます。

IFNULL または ISNULL の使用

多くの SQL 言語では、NULL 値を処理するための IFNULL (MySQL) や ISNULL (SQL Server) などの関数が提供されています。

-- MySQL
SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees;

-- SQL Server
SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;
ログイン後にコピー

NULLIFの使用

NULLIF 関数は、2 つの引数が等しい場合は NULL を返します。それ以外の場合は、最初の引数を返します。ゼロ除算エラーを回避するのに役立ちます。

SELECT price / NULLIF(quantity, 0) AS unit_price
FROM products;
ログイン後にコピー

このクエリは、数量がゼロの場合に NULL を返すことにより、ゼロによる除算を防ぎます。

NULL 処理のベスト プラクティス

  1. デフォルト値の定義: テーブルを作成するとき、NULL の発生を最小限に抑えるために列のデフォルト値を定義します。
  2. 適切な関数を使用する: COALESCE、IFNULL、NULLIF などの関数を利用して、NULL 値を効果的に処理します。
  3. データの検証: データ検証ルールを実装して、望ましくない NULL 値を防ぎます。
  4. データベース設計を検討する: クエリとパフォーマンスへの影響を考慮して、NULL 値を適切に処理するようにデータベース スキーマを設計します。

結論

SQL で NULL 値を処理するには、さまざまな操作における NULL 値の動作を注意深く検討し、理解する必要があります。適切な SQL 関数を使用し、ベスト プラクティスに従うことで、データベース クエリが正確で信頼性の高い結果を生成することを保証できます。 NULL のチェック、集計の実行、テーブルの結合のいずれの場合でも、データの整合性を維持し、SQL 操作で望ましい結果を達成するには、NULL を適切に処理することが重要です。

以上がSQL での NULL の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート