MySQLでデータ検索をする際にはSELECT文を使用して検索することできます。
MySQLの学習を始めて一番最初に覚えるクエリといっても過言ではありませんが、このSELECTには全ての基本形が詰まっているとも言えます。
今回はそのSELECTについて初心者の方のためにわかりやすく説明してみたいと思います。
若干の理論もありますので最後まで読んでみてください。
データ取得に欠かせないSELECT
SELECTはもともと検索のためのクエリですが、データベースからデータを抽出する際、まずは検索をしないと何も始まりません。
これはデータベースが単一クエリの連続であるためで、MySQLに限らずプログラムに必要な全ての命令は上から順に下っていくというルールがあります。
これを無視して思い通りの事を可能にはできないため、必ずSELECTを使用して情報を列挙し、その中から必要なものだけを抽出する形になるわけです。
データの取得方法
それでは早速SELECTの使い方を実際に見てみましょう。
SELECTの構文は以下の通りです。
SELECT [カラム] FROM [データベース名.テーブル名]
カラムを複数指定する場合にはカンマ(,)で区切って複数指定します。
また「データベース名.テーブル名」の部分は、参照するデータベースが予め決まっていて且つ現在そのデータベースを参照している場合のみ、テーブル名だけの指定でも構いません。
次は実際のコードで見てみましょう。
// データベース名+テーブル名でカラム指定検索(カレントデータベース未指定) MariaDB [sample_db]> SELECT id, name FROM sample_db.sample_table_a; +----+---------+ | id | name | +----+---------+ | 1 | arex | | 2 | Jackson | | 3 | Liam | | 4 | Noah | | 5 | Aiden | | 6 | Caden | +----+---------+ 6 rows in set (0.000 sec) // カレントデータベースに上記データベースを指定した場合のクエリ MariaDB [sample_db]> SELECT id, name FROM sample_table_a; +----+---------+ | id | name | +----+---------+ | 1 | arex | | 2 | Jackson | | 3 | Liam | | 4 | Noah | | 5 | Aiden | | 6 | Caden | +----+---------+ 6 rows in set (0.000 sec)
上記クエリの違いとしては先ほど説明した通り、データベースを開き、”use データベース名”を使用する前のカレントデータベース未指定状態でカラム指定検索をしたものと、カレントデータベースを指定している場合の同クエリでの検索結果となっています。
どちらも同じように表示されていることが確認できます。
アスタリスクを使ったカラム検索
上で説明した方法のほかに、アスタリスク(*)を使った検索も可能です。
アスタリスクを使用することで、カラムの指定をすることなく全てのカラムを対象に検索をかけることが出来ます。
// アスタリスクを使用し、全てのカラムを対象に検索をかけた結果 MariaDB [sample_db]> SELECT * FROM sample_db.sample_table_a; +----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | arex | 20 | | 2 | Jackson | 23 | | 3 | Liam | 16 | | 4 | Noah | 30 | | 5 | Aiden | 18 | | 6 | Caden | 25 | +----+---------+-----+ 6 rows in set (0.000 sec)
このようにアスタリスクを使用することで、カラム指定を省略し、全てのカラムを表示させることが可能となります。
ただし全表示はデータ量が大きくなるにつれ、結果の表示までに時間がかかることがありますので注意してください。
データ量に関しては具体的な数字では表せませんが、例えばブログの内容を全て保存しているようなデータベースや、住所検索用データベースのように何十万件ものデータが保存されているようなケースとお考え下さい。
WHEREを使って条件検索をする
SELECT文で条件検索をかける方法についてもご紹介します。
下のクエリをご覧ください。
// 検索条件として22歳より上の年齢だけに絞って検索をかける MariaDB [sample_db]> SELECT * FROM sample_db.sample_table_a WHERE age > 22; +----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | Jackson | 23 | | 4 | Noah | 30 | | 6 | Caden | 25 | +----+---------+-----+ 3 rows in set (0.000 sec)
上記クエリは最後にWHERE句で検索条件を指定しています。
条件を複数指定する場合には、”or”もしくは”and”で指定できます。
データ毎に分けて表示させる
表示方法にはいくつかあり、先ほどまでの説明で使っていたクエリは基本形となっています。
そのほかにもデータ毎に表示させる方法があります。
次のクエリを見てください。
MariaDB [sample_db]> SELECT * FROM sample_db.sample_table_a\G *************************** 1. row *************************** id: 1 name: arex age: 20 *************************** 2. row *************************** id: 2 name: Jackson age: 23 *************************** 3. row *************************** id: 3 name: Liam age: 16 *************************** 4. row *************************** id: 4 name: Noah age: 30 *************************** 5. row *************************** id: 5 name: Aiden age: 18 *************************** 6. row *************************** id: 6 name: Caden age: 25 6 rows in set (0.000 sec)
クエリの最後に「\G」を使用することで、上記サンプルのような表形式ではなくレコード毎にまとめて表示させることもできます。
まとめ
いかがでしたか?
今回はSELECTについて解説してみました。
初心者の方にもわかりやすく解説してあるので応用のコードはありませんが、基本形を理解することで応用型にも順応しやすくなっています。
しっかりとマスターしてMySQLを使いこなせるよう努力してください。