【SQL】コマンド

SQLコマンド

今回はSELECT文のみまとめました。SQLにはもちろん検索以外にもあるんですが、SELECTだけで多くなったので他はまた今度。

SELECT(検索)

ひとつの列のデータを取得

$ SELECT 列名 FROM テーブル名;

複数の列のデータを取得

$ SELECT 列名1, 列名2, …, FROM テーブル名;

カンマで区切って複数の列名を指定すればそれらの列のデータを取得できます。

すべての列を取得

$ SELECT * FROM テーブル名;

アスタリスク(*)がすべてという意味になります。

重複を除いてデータを取得(DISTINCT)

$ SELECT DISTINCT 列名 FROM テーブル名;

例えば、以下のように重複を除いて(まとめて)くれます。

+---------+
+  gender +
+---------+
|  male  |
|  male  |
| female |
|  male  |
| female |
+---------+

+---------+
+  gender +
+---------+
|  male  |
| female |
+---------+

条件を指定してデータを取得(WHERE)

$ SELECT 列名 FROM テーブル名 WHERE 条件;

条件の部分は様々な記述が可能。

値が等しいデータ(=)

$ SELECT 列名 FROM テーブル名 WHERE 列名 = 値;

値が等しくないデータ(<> )

$ SELECT 列名 FROM テーブル名 WHERE 列名 <> 値;

列がNULLであるデータ(IS NULL)

$ SELECT 列名 FROM テーブル名 WHERE 列名 IS NULL;

列がNULLでないデータ(IS NOT NULL)

$ SELECT 列名 FROM テーブル名 WHERE 列名 IS NOT NULL;

比較演算子(<, >, <=, >=)

$ SELECT 列名 FROM テーブル名 WHERE 列名 > 値; // 値より大きい
$ SELECT 列名 FROM テーブル名 WHERE 列名 < 値; // 値より小さい
$ SELECT 列名 FROM テーブル名 WHERE 列名 >= 値; // 値以上
$ SELECT 列名 FROM テーブル名 WHERE 列名 <= 値; // 値以下

複数の条件を指定してデータを取得

論理演算子(AND, OR, NOT)

$ SELECT 列名 FROM テーブル名 WHERE 条件1 AND 条件2; // 条件1かつ条件2
$ SELECT 列名 FROM テーブル名 WHERE 条件1 OR 条件2; // 条件1または条件2
$ SELECT 列名 FROM テーブル名 WHERE NOT 条件; // 条件に該当しない

範囲指定(BETWEEN A AND B)

$ SELECT 列名 FROM テーブル名 WHERE BETWEEN 値1 AND 値2; // 値1から値2の範囲

有無指定(IN, NOT IN)

$ SELECT 列名 FROM テーブル名 WHERE 列名 IN (値1, 値2, …, 値n); // 値1, 値2, …, 値nの中にある
$ SELECT 列名 FROM テーブル名 WHERE 列名 NOT IN (値1, 値2, …, 値n); // 値1, 値2, …, 値nの中にない

ある文字を含むデータを取得(LIKE)

LIKE演算子ワイルドカードを使ってあいまいな検索ができます。

特定の任意の文字列に一致(%)

$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’文字列%’; // 前方一致
$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’%文字列’; // 後方一致
$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’%文字列%’; // 列の中に指定した文字がある

より厳密な文字列の一致( _ )

任意の位置に任意の数の文字列に一致

$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’AAA_’; // AAAを含み最後に1文字含む4文字の文字列
$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’_AAA’; // AAAを含み最初に1文字含む4文字の文字列
$ SELECT 列名 FROM テーブル名 WHERE 列名 LIKE ’_AAA_’; // AAAを含み前後に1文字ずつ含む5文字の文字列

指定した文字列を含まないデータ(NOT LINE)

LIKE演算子と使用例は同じ。

$ SELECT 列名 FROM テーブル名 WHERE 列名 NOT LIKE ’文字列%’;

参考にした書籍