MySQL:SELECT(データの検索・抽出)
select文、常に使ってれば覚えられるけど、インスタントリリーフの僕には無理ですw
特にwhereあたりがいつも分からなくなります。
ってことでメモ。
select フィールド名 [[as] フィールド別名], …
from テーブル名 [[as] テーブル別名], …
[where 条件式]
[order by フィールド名 [desc], … ]
[limit オフセット, 行数]
フィールド名
基本「*」で検索しちゃう。抽出するフィールド名をカンマ区切りで指定(*を使用すると、全てのフィールドが抽出されます)。
count(*)にすると抽出された件数が返されます。
from
対象のテーブル名をカンマ区切りで指定。
テーブルを複数指定した場合、そのテーブルのフィールドにアクセスするには、「テーブル名.フィールド名」のようにします。
where
抽出するための条件式を書きます。
演算子 | 説明 | 例 |
---|---|---|
= | 等しければ | id = 1 |
<>!= | 等しくなければ | id <> 1 または id != 1 |
> | 大きければ | id > 10 |
>= | 以上なら | id >= 10 |
< | 小さければ | id < 10 |
<= | 以下なら | id <= 10 |
is null | nullなら | zip is null |
is not null | nullでなければ | zip is not null |
in | どれかに等しければ | id in ( 1, 2, 3 ) |
between 値1 and 値2 | 値1から値2の間なら | id between 1 and 10 |
like | ワイルドカードによるあいまい検索 | handle_name like ‘%wind%’windという文字列が含まれていれば真になります。 |
and | 二つの条件が真なら | id = 1 and zip is null |
or | どちらかの条件が真なら | id = 1 or zip is null |
not | 条件の反転 | not( id = 1 ) |
order by
検索結果をソート(並べ替え)します。カンマ区切りで複数のフィールド名を指定すると、その優先順位でソートされます。
「order by フィールド名」の場合は昇順にソートされ、「order by フィールド名 desc」は降順にソートされます。
limit
抽出する件数を指定します。構文は「limit オフセット, 行数」となります。
例えば抽出した結果が50件あり、そのうちの最初の10件だけを取得するには以下のようになります。
limit 10
また次のように書く事もできます。
limit 0, 10
更に次の10件(11 – 20)を取得するには以下のようにします。
limit 10, 10
よく使う例
例:そのテーブルを全検索
select * from “TABLE名”
例:そのテーブルを全検索して上の方数件表示(値があるか確認するため)
select * from “TABLE名” limit 0 10;
例:特定の番号のレコードがあるか(IDが100番のレコード探し)
select * from “TABLE名” id == 100;