ホーム > MySQL > データ検索/抽出

MySQL -データ検索/抽出-

データの検索

既存のデータの検索(問い合わせ結果)には、SELECT命令を使用します。

構文(一般的)

SELECT 列名1,列名2,… FROM テーブル名 [条件句など];


構文(すべてのデータを表示)

SELECT * FROM テーブル名;

レコードの抽出

特定に条件に合致したレコードを抽出する場合には、WHERE句を使用します。

WHERE句に集計関数は使用できません。
その場合は、HAVINGを使用します。

比較演算子

比較演算子を利用して値を比較することができます。

主な比較演算子

演算子 概要
= 等しい title = 'Java'
> より大きい birth > '2012-01-01'
< より小さい birth < '2012-01-01'
>= 以上 birth >= '2012-01-01'
<= 以下 birth <= '2012-01-01'
<> 等しくない title <> 'Java'
IS NULL NULLである
※NULL値の抽出に
「=」は使用できません。
title IS NULL
IS NOT NULL NULLではない title IS NOT NULL
LIKE 指定パターンに一致 title LIKE 'Ja%'
NOT LIKE 指定パターンに一致しない title NOT LIKE 'Ja%'
BETWEEN 指定範囲に含まれる price BETWEEN 1000 AND 2000
NOT BETWEEN 指定範囲に含まれる price NOT BETWEEN 1000 AND 2000
IN 指定値のいずれかである id IN('A0001','A0002','A0003')
NOT IN 指定値のいずれでもない id NOT IN('A0001','A0002','A0003')

論理演算子

論理演算子を利用することで、複数の条件式を組み合わせることも可能です。

演算子 概要
AND a と b が共にTRUEの時にTRUE a AND b
&& a と b が共にTRUEの時にTRUE a && b
OR a か b の少なくとも1つがTRUEの場合にTRUE a OR b
|| a か b の少なくとも1つがTRUEの場合にTRUE a || b
XOR a か b のどちらか1つがTRUEの場合にTRUE a XOR b
NOT a がTRUEならFALSE、a がFALSEならTRUE NOT a
! a がTRUEならFALSE、a がFALSEならTRUE ! a

論理演算子の優先順位

NOT → AND → OR

ただし、カッコで囲むと最優先して評価されます。

あいまい検索

既存のデータの検索とは、列にある文字列が含まれる(あるいは、「で始まる」「で終わる」)というような あいまいな条件で検索することをいいます。

構文例

SELECT 列名1,列名2,… FROM テーブル名 WHERE like %文字列;

「%」は、ワイルドカードと呼ばれる記号で、「0文字以上の文字列」です。

  • 「で始まる」  %文字列
  • 「を含む」    %文字列%
  • 「で終わる」  文字列%

ワイルドカードには、その他にも任意の1文字を表す「_」(アンダースコア)があります。

ソート件数の指定

ソートした結果からレコード数を指定することができます。

ソート条件が明確でない場合、データベースは任意の順でレコード取得してしまいますので、 LIMIT句は、原則としてORDER BY句とセットで利用します。

構文

SELECT 表示したい列名1,列名2… FROM テーブル名 ORDER BY 取出したい列名 LIMIT 開始位置,件数;

レコード取得の開始位置は、省略可能です。省略した場合は、0(先頭)を指定したことになります。

重複行を取り除く

通常SELECT文での問い合わせ結果には重複行が含まれることがあります。
こうした検索内容から重複する行を取除くためには、DISTINCT句を利用します。

構文

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

DISTINCTで重複を抑制しているのは、SELECT文で得られた行データです。
言い換えれば、SELECT文に含まれる全列名の組み合わせでの重複データということになります。
よって、単独列のみの重複ではありません。

<< 前のページへ次のページへ >>