20040229

第2章 データの制限およびソート

2-1 問合せで取り出す行の制限
■WHERE句で条件に合う行のみが検索されます。

■WHERE句の基本構文
   SELECT 列名リスト 
     FROM 表名リスト 
      WHERE 条件式

  ・真(TRUE)の行だけ戻されます。

■比較条件
比較演算子 意味
等しい SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID=10;
より大きい SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID>10;
>= より大きい、または等しい SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID>=10;
より小さい SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID<10;
<= より小さい、または等しい SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID<=10;
<> または != または ^= 等しくない SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID!=10;
BETWEEN A AND B A以上B以下 SELECT SALARY, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE SALARY BETWEEN 4000 AND 5000;
IN(値1,値2) 値リストのいずれかを照合 SELECT JOB_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE JOB_ID IN ( 'AD_VP' , 'IT_PROG' );
LIKE 文字パターン 文字パターンを照合
%(パーセント) ゼロ文字または複数文字の任意の文字を表します。
_(アンダースコア) 任意の1文字を表します
SELECT FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE HIRE_DATE LIKE '2000%' ;
IS NULL NULL値かどうか SELECT COMMISSION_PCT, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE COMMISSION_PCT IS NULL;

■論理条件
論理条件 意味
NOT 条件式を否定する論理演算子 SELECT JOB_ID, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE JOB_ID NOT IN ('AD_VP', 'IT_PROG');
AND 2つの条件ともに真の時に結果を戻す演算子 SELECT DEPARTMENT_ID, JOB_ID, 
FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID=60 
AND JOB_ID IN ( 'AD_VP' , 'IT_PROG' ) ;
OR 2つの条件どちらか一方が(もしくはともに)真の時に結果を戻す演算子 SELECT DEPARTMENT_ID, JOB_ID, 
FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
WHERE DEPARTMENT_ID=60 
OR JOB_ID IN ('AD_VP', 'IT_PROG');
  ・優先順位1:( )
  ・優先順位2:NOT
  ・優先順位3:AND
  ・優先順位4:OR


2-2 問合せで取り出す行のソート
■ORDER BY句で問い合わせ選択された行を表示する順番を指定します。

■ORDER BY句の基本構文
  SELECT 列名リスト 
    FROM 表名リスト 
    [WHERE 句 ]
      ORDER BY 列名または式 [ASC|DESC] ;
  ・ORDER BYでは複数の列や式を指定できます。この場合、最初の列または式の値を基準にソートし、次に最初の列または式と同じ値を持つ行を2番目の列または式の値を基準としてソートします。

■昇順、降順
意味
ASC 行を昇順に並べるときに指定。
デフォルトの順序は、昇順です。
数値の場合は、数値の小さい値から表示されます。また、日付データは、日付の古い値から表示されます。文字データは英字順(Aが最初でZが最後)となります。
SELECT HIRE_DATE, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
ORDER BY HIRE_DATE ASC;

SELECT HIRE_DATE, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
ORDER BY 1 ASC;
DESC 行を降順に並べるときに指定。 SELECT HIRE_DATE, FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
ORDER BY HIRE_DATE DESC;

SELECT HIRE_DATE,FIRST_NAME, LAST_NAME 
FROM EMPLOYEES 
ORDER BY 1 DESC;