|
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 BY | SELECT句で選択されたフィールドの値に対して、グループ化(集約化)する。 |
| HAVING | GROUP BYでグループ化されたグループに対して、ある条件を持つグループを選択する。 |
| ORDER BY | データを並び替える ASC…昇順、DESC…降順 |
【WHERE 条件式の説明】
|
WHERE フィールド名 { =,<>,>,<,>=,<= } 値(フィールド名) 例)学生コードが0001のものを選ぶ: WHERE 学生コード = 0001 例)年齢が20〜30までのものを選ぶ: WHERE 年齢 <= 20 AND 年齢 >= 30
WHERE フィールド名 [ NOT ] BETWEEN 値 AND 値
WHERE フィールド名 [ NOT ] LIKE "文字列"
WHERE フィールド名 IS [ NOT ] NULL
《副問合せ》 SELECT文による検索結果をさらに検索条件として使用する。 ※副問合せは複雑で十分な説明ができませんので、省略します。申し訳ありませんが、お手持ちの参考書などでご覧下さい。 |
【例題】
歌手以外のクラスの得点合計を求めるSQL文を作りなさい。
なお、得点合計の大きい順に上から並べること。
学生表
| 学生コード | 学生 | 性別 | クラスコード | 得点 |
| 000001 | 田村正和 | 男 | A01 | 90 |
| 000003 | 松村邦洋 | 男 | B01 | 80 |
| 000034 | タモリ | 男 | B01 | 100 |
| 000011 | 江角マキコ | 女 | A01 | 70 |
| 000190 | 野口五郎 | 男 | C01 | 60 |
| 000555 | 沢田研二 | 男 | C01 | 10 |
クラス表
| クラスコード | クラス名 |
| A01 | 俳優 |
| B01 | お笑い |
| C01 | 歌手 |
| SELECT | クラス表.クラスコード,クラス表.クラス名,SUM(学生表.得点) |
| FROM 学生表,クラス表 | |
| WHERE 学生表.クラスコード = クラス表.クラスコード | |
| GROUP BY クラス表.クラスコード,クラス表.クラス名 | |
| HAVING クラス表.クラスコード <> C01 | |
| ORDER BY SUM(学生表.得点) DESC |
| クラスコード | クラス | 得点合計 |
| B01 | お笑い | 180 |
| A01 | 俳優 | 160 |