MySQLでテーブルからデータを取得するコマンドが select です。selectコマンドに色々な条件を追加することで、取得したいデータをテーブルから抽出することが可能です。この記事では、サンプルデータベースを準備し、実例を挙げて欲しいデータを抽出する際の条件指定について説明しています。下の目次からコマンド例を逆引き出来る形にしていますので、取得されたい条件の項目をクリックして見て下さい。
【サンプルテーブル テーブル名 : testDB】
ID | Name | AGE |
1 | Sato | 19 |
2 | Ito | 20 |
3 | Inoue | NULL |
4 | Saito | 30 |
Contents
全てのレコードを取得
select * from testDB;
実行結果
テーブルの内容全てを取得出来ました。
selectの後にアスタリスクを指定することで、全てのカラムのデータを取得されます。
カラムを指定し全てのレコードを取得
Nameだけを取得します。
select Name from testDB;
実行結果
Nameカラムだけ取得出来ました。
特定のカラムだけ取得する場合は、selectの後に取得したいカラム名を入力します。複数のカラムからデータを取得したい場合は、 select ID, Name のようにカラム名をカンマで区切り入力します。
カラムのフィールドに特定文字列を含むレコードを取得
NameがInoueさんのレコードを取得します。
select * from testDB where Name="Inoue";
実行結果
Nameが”Inoue"であるレコードが取得されました。
取得するレコードの条件の指定はwhereに続く式で入力します。この例ではName="Inoue"がその条件式です。データがテキスト情報の場合はダブルクオテーションかシングルクオテーションで囲む必要があります。
カラムのデータがある値より大きいレコードを取得
AGEが20以上のレコードを取得します。
select * from testDB where age>=20;
実行結果
AGEが20以上であるレコードが取得されました。
繰り返しになりますが、whereに続く式で条件を指定しています。"age>=20"でAGEが20以上という条件指定になります。
カラムのデータがある値より小さいレコードを取得
AGEが20より小さいレコードを取得します。
select * from testDB where AGE<20;
実行結果
AGEが20より小さいレコードが取得されました。
20より小さいなので条件式は"AGE<20"となります。
カラムのデータがある値と等しいレコードを取得
ID=3のレコードを取得します。
select * from testDB where ID=3";
実行結果
ID=3のレコードが取得されました。
等しい、という条件はイクオール記号を使用します。
カラムのデータが大きい順番でレコードを取得
AGEが大きい順番に並び替えてレコードを取得します。
select * from testDB order by AGE desc;
実行結果
AGEが大きい順番でレコードが取得されました。
順番を指定する場合は"order by"を入力し、その後に対象のカラム名を入力します。"desc"はdescendingの略で大きい順番という指定になります。NULLのレコードも取得されており、大きい順番で並べる場合は順番は後になっています。ただし、データベースによりNULLの仕様が異なるため、一概に大きい順番で並べるときに後ろに来るとは言えません。
カラムのデータが小さい順番でレコードを取得
AGEが小さい順番に並び替えてレコードを表示します。
select * from testDB order by AGE ASC;
実行結果
AGEが小さい順番でレコードが取得されました。
順番を指定するので、"order by"を入力し、その後に対象のカラム名を入力します。 "ASC" はascendの略で小さい順番という指定になります。NULLは昇順で並べる場合は最初に来ています。ただし、データベースによりNULLの仕様が異なるため、一概に小さい順番で並べるときに先に来るとは言えません。
NULLを含むレコードを取得
AGEにNULLが含まれるレコードを取得します。
select * from testDB where AGE=NULL;
実行結果
AGEがNULLのレコードが取得されました。
NULL指定の場合は"age = null"とするのではなく、"age is null"と指定します。
カラムのデータがある値より大きく、特定の文字列を含むレコードを取得
AGEが20より大きく、Nameに"Sa"が含まれるレコードを取得します。
select * from testDB where AGE>20 AND name like "Sa%";
実行結果
AGEが20より大きく、Nameに"Sa"が含まれるレコードが取得されました。
複数の条件指定がある場合は、ANDで各条件を繋ぎます。AGE>20でAGEが20より大きいレコードの条件指定、さらにname like "sa%"でnameにsaが含まれるレコードの指定をしています。条件が2つありますのでANDで2つの条件を繋いでいます。文字列の条件指定で、「ある文字を含むもの」で指定したい場合はLIKE演算子で指定します。like "sa%"の指定により、頭がsaであれば後ろがどんな文字列であっても条件に当てはまることになります。例えば、"sakai", "sanada","saita","saeki"、等も条件に当てはまります。
以上です。 最後までお読みいただきありがとうございます。
下の記事ではMySQLの基本コマンドを紹介していますので、MySQLの基本的な内容を知りたい方は参照頂ければと思います。