TOP

SQL レッスン 4. データ フィルタリング (WHERE)

ほとんどの場合、すべてのレコードを受信する必要はなく、特定の基準を満たすレコードのみを受信する必要があります。 SQL にサンプリング フィルタリング用の特別な演算子 WHERE が存在するのはこのためです。


1. WHERE 演算子による単純なフィルタリング。

たとえば、特定の製品にのみ関連するレコードをテーブルから選択してみましょう。 これを行うには、Product 列で値をフィルタリングする追加の選択パラメータを指定します。

テキスト値を選択するクエリの例:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

ご覧のとおり、選択条件は一重引用符で囲まれています。これは、テキスト値をフィルタリングするときに必須です。 数値をフィルタリングする場合、引用符は必要ありません。

数値を選択するクエリの例:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

この例では、売上収益が $40,000 を超えるレコードを選択し、さらに、すべてのレコードを [金額] フィールドで昇順に並べ替えました。

次の表に、SQL でサポートされる条件文を示します。

運転標識 価値
= と等しい
<> 等しくありません
< 少ない
<= 以下
> もっと
>= 以上
BETWEEN 2 つの値の間
IS NULL 記録はありません

2. 値の範囲によるフィルタリング (BETWEEN)

演算子 BETWEEN は、特定の範囲内にあるデータを選択するために使用されます。次のクエリでは、[金額] フィールドの $1,000 から $2,000 までのすべての値が選択されます。

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

並べ替えの順序は、クエリ内のフィールドの順序によって異なります。つまり、この場合、データは最初に Amount 列によって並べ替えられ、次に City によって並べ替えられます。

3. 空のレコードの選択 (IS NULL)

SQL には、空のレコードを選択するための特別な演算子 (NULL と呼ばれます) があります。空のエントリとは、文字が入力されていないテーブル内のセルです。セルに 0 またはスペースが入力されている場合、フィールドは入力されたとみなされます。

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

上の例では、NULL 演算子を示すために、Amount フィールドの 2 つの値を意図的に削除しました。

4. 高度なフィルタリング (AND、OR)

SQL 言語は 1 つの条件によるフィルタリングに限定されず、独自の目的に応じて、非常に複雑な構造を使用して、多くの条件でデータを同時に選択できます。 このため、SQL には WHERE 演算子の機能を拡張する追加の演算子があります。 このような演算子は、AND、OR、IN、NOT です。 これらの演算子の操作の例をいくつか示します。

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

AND 演算子と OR 演算子を組み合わせてみましょう。 これを行うために、3 月に販売された自転車 (Bike) とスケート靴 (Skate) を選択します。

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

サンプルには多くの値が含まれていることがわかります (3 月に加えて、1 月、2 月、4 月も)。 理由は何ですか? そして、SQLにはコマンド実行の優先順位があるという事実。 つまり、AND 演算子は OR 演算子よりも優先度が高いため、3 月に販売されたスケート靴のレコードが最初に選択され、次に自転車に関連するすべてのレコードが選択されます。

したがって、正しいサンプリングを取得するには、コマンドの実行優先順位を変更する必要があります。 このために、数学と同様に括弧を使用します。 次に、括弧内の演算子が最初に処理され、次に残りの演算子がすべて処理されます。

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. 高度なフィルタリング (IN 演算子)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

IN 演算子は OR と同じ機能を実行しますが、いくつかの利点があります。

  • 長いリストを扱う場合、IN を含む文は読みやすくなります。
  • 使用する演算子が少なくなるため、リクエストの処理が高速化されます。
  • IN の最も重要な利点は、その構築で追加の構築 SELECT を使用できることです。
  • відкриває великі можливості для створення складних підзапитів.

    6. 高度なフィルタリング (NOT 演算子)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    キーワード NOT を使用すると、サンプルから不要な値を削除できます。 また、フィルタリングに関係する列の名前の後ではなく、前に配置されるのも特徴です。