SQL 概説

行の選択

表から特定の行を選択するには、SELECT ステートメントの後に WHERE 文節を使って、 行が選択されるために満たすべき条件を指定します。 表から行を選択する基準のことを、 検索条件 といいます。

検索条件は、1 つまたは複数の述部 で構成されます。 述部は、ある行に関して真か偽 (または不明) となる条件を指定します。 WHERE 文節の中で条件を指定するには、次の基本的な述部を使います。


述部 機能
x = y x は y に等しい
x <> y x は y に等しくない
x < y x は y より小さい
x > y x は y より大きい
x <= y x は y 以下である
x >= y x は y 以上である
IS NULL/IS NOT NULL NULL 値かどうかの検査

検索条件を作成する場合、 数値データ・タイプ以外には算術計算を実行しないようにし、 互換性のあるデータ・タイプの間以外では比較を行わないように注意してください。 たとえば、テキスト・ストリングと数値は比較できません。

文字値に基づいて行を選択する場合、 その値は単一引用符で囲む必要があり (たとえば WHERE JOB = 'Clerk')、 各文字値はデータベース中に存在しているものと正確に一致するように入力する必要があります。 データベースの中でデータ値が小文字になっているのに、 大文字として入力すると、行は選択されません。 数値に基づいて行を選択する場合、 その値は引用符で囲まないようにしてください (たとえば WHERE DEPT = 20)。

次の例では、STAFF 表から部署 20 の行だけを選択しています。

     SELECT DEPT, NAME, JOB
        FROM STAFF
        WHERE DEPT = 20

このステートメントの結果は、次のとおりです。

      DEPT   NAME      JOB
      ------ --------- -----
          20 Sanders   Mgr
          20 Pernal    Sales
          20 James     Clerk
          20 Sneider   Clerk

次の例では、AND を使って複数の条件を指定しています。 条件は、必要なだけ何個でも指定できます。 この例では、STAFF 表から部署 20 の事務員 (Clerk) を選択しています。

   
     SELECT DEPT, NAME, JOB
        FROM STAFF
        WHERE JOB = 'Clerk'
        AND DEPT = 20

このステートメントの結果は、次のとおりです。

     DEPT   NAME      JOB  
     ------ --------- -----
         20 James     Clerk
         20 Sneider   Clerk

省略時値がサポートされていない列に値が入力されていないなら、NULL 値になります。 また、値が特に NULL として設定されている場合もあります。 NULL 値になるのは、NULL 値をサポートするよう定義されている列だけです。 表の中の NULL 値の定義とサポートについては、 表の作成を参照してください。

NULL 値かどうかを調べるには、IS NULL 述部および IS NOT NULL 述部を使います。

次のステートメントは、歩合が該当しない従業員のリストを出力します。

     SELECT ID, NAME
        FROM STAFF
        WHERE COMM IS NULL

このステートメントの結果は、次のとおりです。

     ID     NAME     
     ------ ---------
         10 Sanders  
         30 Marenghi 
         50 Hanes    
        100 Plotz    
        140 Fraye    
        160 Molinare 
        210 Lu       
        240 Daniels  
        260 Jones    
        270 Lea      
        290 Quill    
        

値 0 (ゼロ) は、NULL 値と同じではありません。 次のステートメントでは、表に含まれている従業員のうち、 歩合が 0 の人を選択しています。

     SELECT ID, NAME
        FROM STAFF
        WHERE COMM = 0
     

サンプル表の中に、COMM 列の値が 0 のものはないため、 戻される結果セットは空です。

次の例では、 STAFF 表の中で YEARS の値が 9 より大きい行をすべて選択しています。

     SELECT NAME, SALARY, YEARS
        FROM STAFF
        WHERE YEARS > 9
     

このステートメントの結果は、次のとおりです。

     NAME      SALARY    YEARS 
     --------- --------- ------
     Hanes      20659.80     10
     Lu         20010.00     10
     Jones      21234.00     12
     Quill      19818.00     10
     Graham     21000.00     13


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]