MySQL:SELECT(データの検索・抽出)

MySQL

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;

機械忍者

某SEO会社(?)勤務。 多分日本語よりHTMLの方が得意です。 最近はRubyとかいうキラキラな言語も勉強中です。 SEOはもう標準スキルになってきてると思うので正直もうあんまり昔ほどの熱意は感じません。 新たに躍動してる人も多いですしね。 だれか強化骨格コスプレあったら教えてください。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください