一、where
WHERE 列名 <比较运算符> 常量或列名
一般的に使用される比較演算子は次のとおりです。
オペレーター | 意味 |
---|---|
=、>、<、>=、<=、!=、> | サイズ比較 |
そして、あるいは、そうではない | 多重条件 |
の | セットを決める |
との間 | 範囲を決定する |
無効である | 空の値 |
好き | 文字の一致 |
1. サイズを比較する
優先度: NOT、AND、OR は
括弧を使用して優先度を変更できます。
【例8-18】 90点以上の生徒の生徒番号、クラス番号、成績を問い合わせます。
SELECT*
FROM sC
WHERE Grade>90;
【例8-19】 成績が[70.80]の学生の学生IDと成績を問い合わせます。
SELECT Sno,Grade
FROM sC
WHERE Grade>=70 and Grade<=80;
【例】選択科目C1またはC2の学生番号、科目番号、成績が80点以上である場合を問い合わせます。
SELECT Sno,Cno,gradeFROM sc
WHERE (Cno='C1' OR Cno='C2') AND grade>=80;
#或者
WHERE Cno='C1' AND grade>=80
OR Cno='C2'AND grade>=80
2. IN によるクエリ
IN と NOT IN
[例 8-20] クラス C1、C2、または C3 の生徒番号とクラス番号を問い合わせます。
SELECT Sno,Cno
FROM sc
WHERE Cno IN('C1, 'C2', 'C3') ;
3. 範囲 ( と の間) を決定します。
【例8-21】(包括75和80)
成績が75点以上80点以下の生徒の生徒番号、クラス番号、成績を問い合わせます。
SELECT Sno,Cno,Grade
FROM Sc
WHERE Grade BETWEEN 75 AND 80;
或者不在此范围 NOT BETWEEN 75 AND 80
4. Null クエリ (IS NULL または IS NOT NULL)
述語 IS NULL または IS NOT NULL
注意“IS NULL”不能用“= NULL”代替。
[例 8-24] を使用して、コース選択後に試験を受けなかった学生の学生番号とプログラム番号を問い合せます。
SELECT Sno,Cno
FROM sc
WHERE Grade IS NULL;
5. 文字列のマッチング
形式:
属性名 LIKE '<一致する文字列>'
属性名 NOT LIKE '<一致する文字列>'
<一致する文字列> = 文字定数 + ワイルドカード 2 種類のワイルドカード:
%:任意长度
文字列を表します (長さは 0 も可能)
_: 任意の单个
文字を表します
【例】Sテーブルの姓がLi、名前が3文字の学生情報を問い合わせます。
SELECT *
FROM Stu
WHERE Sname LIKE '李__';
[例 8-26] Student テーブル Stu 内の Li という姓のすべての学生の情報をクエリします。
SELECT *
FROM Stu
WHERESname LIKE '李%';
【補足】名前に「めい」が含まれる生徒の学籍番号と名前を問い合わせます。
SELECT Sno,Sname
FROM Stu
WHERE Sname LIKE '%梅%';
【補足】 2文字目が「めい」の生徒の学籍番号と氏名を問い合わせる
SELECT Sno,Sname
FROM Stu
WHERE Sname LIKE '_梅%';
6. エスケープ文字を定義する
ESCAPE'<エスケープ文字>'
例: ESCAPE '/'
[補足] コース名が「DB_」で始まるコース番号、コース名、および単位を問い合わせます。
SELECT Cno, Cname, Ccredit
FROM C
WHERE Cname LIKE 'DB/_%'
ESCAPE '/';