フリーPHPスクリプト配布サイト。
データベースを操作する命令で使用することが多いのは、データ表示用の命令です。検索を効率よく行うためにさまざまな命令が用意されており、これらを組み合わせてデータの抽出を行います。
検索条件を絞り込むには、WHERE
を使用します。=
、>
、>=
、<
、<=
、<>
で比較条件を指定する事ができます。
演算子 | 意味 |
---|---|
= |
等しい |
> |
右辺より大きい |
>= |
右辺以上 |
< |
右辺より小さい |
<= |
右辺以下 |
<> (もしくは != ) |
等しくない |
書式は SELECT 表示するカラム FROM テーブル名 WHERE 検索条件
となります。
SELECT * FROM address WHERE no = 10;
SELECT * FROM address WHERE no >= 7;
SELECT * FROM address WHERE name = '山田太郎';
AND
、OR
で検索条件を複数指定することができます。
SELECT * FROM address WHERE no = 10 OR no = 12;
SELECT * FROM address WHERE name = 'ヤマダタロウ' AND tel = '090-1234-5678';
部分的な文字列を検索条件に指定する場合、LIKE
を使用します。LIKE
は、英語で「~のような」という意味です。書式は SELECT 表示するカラム FROM テーブル名 WHERE 検索対象のカラム名 LIKE '検索文字列'
となります。
検索文字列にはワイルドカードを指定する事ができ、例えば以下のようにすると、名前が「山」で始まるデータ、「郎」で終わるデータ、「太郎」を含むデータがそれぞれ表示されます。%
は「何か文字が入るかもしれないし、入らないかもしれない」という意味になります。
SELECT * FROM address WHERE name LIKE '山%';
SELECT * FROM address WHERE name LIKE '%郎';
SELECT * FROM address WHERE name LIKE '%太郎%';
データベースからデータを表示する際、ORDER BY
を使用すれば表示順を指定する事ができます。書式は SELECT 表示するカラム FROM テーブル名 ORDER BY 並び替え対象のカラム名
となります。以下のようにすると、名前の順に表示させる事ができます。ただし、読み仮名順ではなく文字コード順に表示されます。
SELECT * FROM address ORDER BY name;
並び替え対象は ,
で区切って複数指定することができます。以下のようにすると「番号が同じものがあれば、それらをさらに名前で並べる」という意味になります。
SELECT * FROM address ORDER BY no, name;
また、ORDER BY
で指定したカラム名の末尾に DESC
を追加すると、降順に並び替える事ができます。
SELECT * FROM address ORDER BY no DESC;
データベースへの登録件数が多くなると、データの表示に時間がかかってしまいます。また、検索結果が1,000件あった場合にすべて表示すると、非常に見づらくなります。
そんな場合は LIMIT
を使用すれば、一度に表示する件数を制限する事ができます。書式は SELECT 表示するカラム FROM テーブル名 LIMIT 表示件数
となります。以下のようにすると、検索結果の最初のレコードから10件目までを表示する事ができます。
SELECT * FROM address LIMIT 10;
以下のようにすると、途中の5件目から10件分のみを表示する事ができます。(表示開始位置は0を起点として数えます。
SELECT * FROM address LIMIT 4, 10;
BETWEEN
を使用すると、指定した範囲に含まれるものを抽出する事ができます。以下のようにすると、番号が5~9のデータを表示することができます。
SELECT * FROM address WHERE no BETWEEN 5 AND 9;
以下のようにすると、連続していない値を指定する事ができます。この場合、番号が2のデータと4のデータと6のデータが表示されます。
SELECT * FROM address WHERE no IN(2, 4, 6);
これらの指定は、複数組み合わせて指定することができます。例えば、以下のようにすれば「名前に'太郎'を含むデータを名前順に10件表示」という条件なります。
SELECT * FROM address WHERE name LIKE '%太郎%' ORDER BY name LIMIT 10;
なお、これらの指定は「検索条件 → 並び替え → 表示件数」の順に指定します。