コンテンツにスキップ

第3章 行の検索

3.1 全行の表示

検索はSELECT命令で行う。

全行、全列表示

SELECT * FROM テーブル名;

SELECT * FROM shouhin;

列を指定して表示

SELECT 列名 FROM テーブル名;

SELECT sname,tanka FROM shouhin;

重複を避けて表示

SELECT DISTINCT 列名 FROM テーブル名;

SELECT DISTINCT tanka FROM shouhin;

3.2 条件による行の選択

条件を指定し行を絞り込むにはSELECT文の後ろにWHEREで条件を書く。

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

例:sidが1の行を表示

SELECT * FROM shouhin WHERE sid=1;

条件では等号や不等号を使うことが出来る。 文字列や日付は''で囲む。

比較演算子

  • A = B  AとBは等しい
  • A > B  AはBより大きい
  • A < B  AはBより小さい
  • A >= B  AはB以上
  • A <= B  AはB以下
  • A <> B  AとBは等しくない

文字列の部分条件指定

LIKE演算子を使用し、文字列を部分検索できる。

SELECT * FROM shouhin WHERE sname LIKE 'り%';
  • %は0文字以上の文字とマッチング
  • _は1文字の文字とマッチング

どちらかの条件にあてはまる

WHERE 条件 OR 条件

SELECT * FROM shouhin WHERE sid=1 OR sid=3;

sidが1または3があてはまる。

両方の条件にあてはまる

WHERE 条件 AND 条件

SELECT * FROM shouhin WHERE sid >= 2 AND sid <= 4;

sidが2以上でかつ4以下があてはまる。

どれかと一致する条件

WHERE 列名 IN (値,値,,,);

SELECT * FROM shouhin WHERE sid IN (1,3);

sidが1または3があてはまる。

条件の範囲指定

値1~値2の範囲

WHERE 列名 BETWEEN 値1 AND 値2

例:sidが2~4まで

SELECT * FROM shouhin WHERE sid BETWEEN 2 AND 4;

NULLの検索

NULLは = では検索できない。ISを使う。

SELECT * FROM shouhin WHERE tanka IS NULL

否定(NOT)

LIKE や BETWEEN 、NULLを使用するときには、その前にNOT を付けて否定を表すことが出来る。

SELECT * FROM shouhin WHERE tanka IS NOT NULL
SELECT * FROM shouhin WHERE sname NOT LIKE 'り%'

3.3 行数と開始位置の指定

LIMITを使うとSELECTで行を取得する際にその行数を限定する。

SELECT 列名 FROM テーブル名 LIMIT 行数

例:先頭から3行表示

SELECT * FROM shouhin LIMIT 3

LIMITでは行数だけでなく表示の開始位置を指定することもできる。 開始位置は0行目から数える。

LIMIT 開始位置,行数

例:2件目から3行表示

SELECT * FROM shouhin LIMIT 2,3

3.4 並べ替え

SELECTの後ろにORDER BY句を使用し結果を並べ替えて表示できる。

SELECT 列名 FROM テーブル名 ORDER BY 列名 並べ替え順;

「並べ替え順」には昇順の場合 ASC、降順の場合、DESC を指定する。省略時には昇順。

例:tankaの昇順で並べ替え。

SELECT * FROM shouhin ORDER BY tanka ASC;

並べ替えの列名は複数指定することも可能。最初の列名で比較し同じ場合には次の列名で比較する。

例:tankaの昇順、同じ場合にはsidの降順

SELECT * FROM shouhin ORDER BY tanka ASC,sid DESC;

ORDER BYはSELECT文の最後に付ける。