【基本・応用情報技術者】SQL ~SELECT文①~
スポンサーリンク
こんにちは。たろすです。
今回はSQLのSELECT文について説明します。
基本的な使い方
SELECT文はデータベースから特定のデータを取り出すときに使用します。
最も基本的な使い方は以下になります。
SELECT カラム名1, カラム名2,... FROM テーブル名;
これはテーブルから特定のカラム(列)のデータを取ってくる処理を行います。
例えば以下のようなテーブルがあるとします。
これに対し次のようなSQLを投げると、
SELECT 社員番号 FROM 社員;
以下のデータが取れます。
すべてのカラムを取りたい場合は*で取ることができます。
SELECT * FROM 社員;
WHERE句
先程のSQLは条件を絞っていないため、全件が出力されます。
条件で絞る場合はWHERE句を使います。
SELECT カラム名1, カラム名2,... FROM テーブル名 WHERE 条件1 [AND/OR 条件2...];
例えば先程の社員テーブルで役職が部長のレコードを取得したい場合、以下のようなSQLを使用します。
SELECT * FROM 社員 WHERE 役職 = '部長';
このように比較演算子を使えます。
比較演算子には以下があります。
= | 等しい |
---|---|
<> | 等しくない |
< | 左項より右項が大きい |
<= | 右項が左項以上 |
> | 左項より右項が小さい |
>= | 右項が左項以下 |
複数の条件を使用したい場合はAND(かつ)やOR(または)を使用します。
SELECT * FROM 社員 WHERE 社員番号 = 1000 AND 役職 = '部長';
文字列の場合は' 'で囲みます。
さらに柔軟に条件を指定することもできます。
IN句
IN句では複数の値を指定することができます。
SELECT カラム名1, カラム名2,... FROM テーブル名 WHERE カラム名 [NOT] IN (値1, 値2,...);
社員テーブルから社員番号1000と1001のレコードを取得したい場合は以下のようになります。
SELECT * FROM 社員 WHERE 社員番号 IN (1000, 1001);
逆に社員番号1000と1001以外を取得したい場合はNOTを入れます。
SELECT * FROM 社員 WHERE 社員番号 NOT IN (1000, 1001);
LIKE句
部分一致で取得したい場合はLIKE句を使用します。
SELECT カラム名1, カラム名2,... FROM テーブル名 WHERE カラム名 [NOT] LIKE パターン;
例えば苗字が「山田」の人を全員取得したい場合は次のようなSQLになります。
SELECT * FROM 社員 WHERE 社員名 LIKE '山田%';
名前の最後が「郎」の人を全員取得したい場合は、
SELECT * FROM 社員 WHERE 社員名 LIKE '%郎';
名前の中に「藤」が入る人を取得したい場合は、
SELECT * FROM 社員 WHERE 社員名 LIKE '%藤%';
となります。
一文字だけを任意の文字で取得したい場合は_を使います。
SELECT * FROM 社員 WHERE 役職 LIKE '_長';
BETWEEN句
範囲を指定したいときはBETWEEN句を用います。
SELECT カラム名1, カラム名2,... FROM テーブル名 WHERE カラム名 [NOT] BETWEEN 最小値 AND 最高値;
例えば社員番号が1001から1003のレコードを取得したい場合は以下のようなSQLになります。
SELECT * FROM 社員 WHERE 社員番号 BETWEEN 1001 AND 1003;