SQL

SQLには、SELECT文以外に、INSERT、DELETE、UPDATEがありますが、ここでは出題頻度の高いSELECT文について簡単に説明しています。

※全てを網羅しているわけではありませんので、予めご了承下さい。


【SELECT文の基本形】

SELECT [ ALL | DISTINCT ] フィールド名 [ 関数 ] FROM 表名
 [ WHERE 条件式 ]
 [ GROUP BY フィールド名 ]
 [ HAVING 条件式 ]
 [ ORDER BY フィールド名 ASC | DESC ]

[ ]の部分はオプション。   は省略した場合の既定値。


【オプションの説明】

ALL選択された行の内容が重複していても、そのまま出力する。
DISTINCT重複行は出力しない。
 
関数COUNT( )…行数をカウントする。
 SUM( )…合計、AVG( )…平均
 MAX( )…最大値、MIN( )…最小値
 
GROUP BYSELECT句で選択されたフィールドの値に対して、グループ化(集約化)する。
HAVINGGROUP BYでグループ化されたグループに対して、ある条件を持つグループを選択する。
 
ORDER BYデータを並び替える ASC…昇順、DESC…降順


【WHERE 条件式の説明】

WHERE フィールド名 { =,<>,>,<,>=,<= } 値(フィールド名)
  例)学生コードが0001のものを選ぶ: WHERE 学生コード = 0001
  例)年齢が20〜30までのものを選ぶ: WHERE 年齢 <= 20 AND 年齢 >= 30

WHERE フィールド名 [ NOT ] BETWEEN 値 AND 
  例)年齢が20〜30までのものを選ぶ: WHERE 年齢 BETWEEN 20 AND 30

WHERE フィールド名 [ NOT ] LIKE "文字列"
  文字列: _…任意の1文字、…0桁以上の任意の文字列
  例)氏名がMAで始まる4桁以上のものを選ぶ: WHERE 氏名 LIKE "MA_%"

WHERE フィールド名 IS [ NOT ] NULL
  例)氏名がNULL値(空白)かどうか調べる: WHERE 氏名 IS NULL

《副問合せ》 SELECT文による検索結果をさらに検索条件として使用する。
   WHERE [ NOT ] EXISTS (SELECT …)
   WHERE フィールド名 [ NOT ] IN (SELECT …)

※副問合せは複雑で十分な説明ができませんので、省略します。申し訳ありませんが、お手持ちの参考書などでご覧下さい。


【例題】
歌手以外のクラスの得点合計を求めるSQL文を作りなさい。
なお、得点合計の大きい順に上から並べること。

学生表
学生コード学生性別クラスコード得点
000001田村正和A0190
000003松村邦洋B0180
000034タモリB01100
000011江角マキコA0170
000190野口五郎C0160
000555沢田研二C0110

クラス表
クラスコードクラス名
A01俳優
B01お笑い
C01歌手

SELECT クラス表.クラスコード,クラス表.クラス名,SUM(学生表.得点)
 FROM 学生表,クラス表
 WHERE 学生表.クラスコード = クラス表.クラスコード
 GROUP BY クラス表.クラスコード,クラス表.クラス名
 HAVING クラス表.クラスコード <> C01
 ORDER BY SUM(学生表.得点) DESC

クラスコードクラス得点合計
B01お笑い180
A01俳優160


back home