(1)範囲をあらわすBETWEEN
WHERE句にBETWEENを用いることで勤続年数が2年から5年の間である行を選択することができます。逆の条件にする場合NOT BETWEENを用います。
SELECT 社員名FROM 社員 WHERE 勤続年数 BETWEEN '2' AND '5'
これは、以下と同じ演算結果が得られます。
SELECT 社員名FROM 社員 WHERE 勤続年数 >= '2' AND勤続年数 <= '5'
(2)複数の値を指定するIN
INを利用すると、「IN」の後に「複数指定した値のどれかに合致する場合」、という条件を指定することができます。逆の条件にする場合NOT INを用います。
SELECT * FROM 社員 WHERE 社員名 IN( '安達' , '伊藤')
※IN()の括弧内をSQL文にし、副問合せの形にすることも可能です
(3)文字列の部分一致を指定するLIKE
WHERE句にLIKEを用いることで、部分一致検索を行うことができます。逆の条件にする場合NOT LIKEを用います。
WHERE 社員名 LIKE '安%' 先頭に「安」がつく任意の社員名 WHERE 社員名 LIKE '%安' 文字列の最後に「安」がつく任意の社員名 WHERE 社員名 LIKE '%安%' 文字列に「安」を含む任意の社員名 WHERE 社員名 LIKE '_安' 1文字目が任意の文字で、2文字目が「安」となる社員名
※ _は任意の文字、%は任意の文字列という意味です
(4)NULLであることを指定するIS NULL
NULLであることを指定するためには「= NULL」とは記述しません。以下の通り「IS NULL」と記述します。逆の条件にする場合「IS NOT NULL」と記述します。
WHERE 休業日数 IS NULL
(5)「あるSQL文の結果に合致する場合」を示すEXISTS
以上のように記述すると、「あるSQL文の実行結果と同じ行が存在する場合」、という意味になります。逆の条件にする場合NOT EXISTS (SQL文)を用います。
WHERE EXISTS(SQL文)
※ 上記のように括弧の中にSQL文を埋め込み、WHERE 句の条件式やFROM 句につなげることを副問合せと呼びます。
GROUP BY句は、ある列について値が等しい行を全て集計します。GROUP BY句では、以下の集約関数を利用することができます。また、GROUP BYの後にHAVING句を使い、グループ化する条件を指定することができます。
集約関数 | 集約関数の説明 | |
---|---|---|
AVG(列名) | ある列について、グループ化した範囲での平均値を求める | |
MAX(列名) | ある列について、グループ化した範囲での最大値を求める | |
MIN(列名) | ある列について、グループ化した範囲での最小値を求める | |
SUM(列名) | ある列について、グループ化した範囲での合計値を求める | |
COUNT(列名) | ある列について、グループ化した範囲での行数を求める | |
以下の例では、所属部署ごとの社員の平均勤続年数を出力します。
SELECT 所属部署, AVG(勤続年数) AS 平均勤続年数 GROUP BY 所属部署
所属部署 | 平均勤続年数 | |
---|---|---|
営業部 | 9 | |
総務部 | 4 | |
以下の例では、所属部署毎の平均勤続年数を集計し、平均勤続年数が5年より多い部署について出力します。
SELECT 所属部署, AVG(勤続年数) AS 平均勤続年数 GROUP BY 所属部署 HAVING 平均勤続年数 > 5
所属部署 | 平均勤続年数 | |
---|---|---|
営業部 | 9 | |
Copyright © ITmedia, Inc. All Rights Reserved.