記入日:2022-12-16 編集日:2022-12-16
SQL見るだけクエリを始めるにあたって、まずはサンプルデータが必要な為用意しました。せっかく用意したので、まずは初めの第一歩、このサンプルデータの中身を、SQLを使って全件取得してみます。の続きで、今回は取得する条件を指定して取得レコードを絞り込んでみます。
この記事を読むと(約5分)
データベース内のあるテーブルから、レコード(保存された内容)をSQLで取得する際に、指定した条件のレコードのみ取得する為に、どのようなプログラムを書いているかが分かります。
まずは前回のおさらい。全てのレコードを取得するには以下のようにSQLを書きました。
// 前回全てのレコードを取得した際のSQL $query = 'SELECT * FROM table_name';
SELECT * FROM table_name この部分で、データベース内にあるtable_nameという名前のテーブルの全てのレコード(保存された内容)を取得しております。
今回は、人口が150万人を超えている都市のみ取得してみます。
// 人口が150万人以上の都市のみ取得する $query = 'SELECT * FROM table_name WHERE population >= 1500000';
WHERE population >= 1500000 というSQLを書き足しました、WHERE句と言われる構文を使う事で条件の指定が可能になります。populationという項目が数値的に1500000以上のもののみ取得対象。という意味です。>=の記号は演算子と言われるものですが、その他 [以上、以下、等しい]など、いくつかの種類があります。
さらに条件を追加して、エリアが関東のレコードのみという条件を追加して取得してみます。
// 人口が150万人以上の都市のみ取得する かつ 関東地方のみ $query = 'SELECT * FROM table_name WHERE population >= 1500000 AND area = "関東"';
AND area = "関東" というSQLを書き足しました。ANDで繋いだのちに、area項目が"関東"と同じもののみ という条件を足しました。WHERE句の中に、複数の条件を指定するためには、ANDで条件を連結することで、AとBの条件に一致するもの という形になります。ANDの部分をORにすると、AもしくはBの条件に一致するもの という形になります。
これを二次元連想配列という形式で取得すると、2件の情報を取得することができました。
Array ( [0] => Array ( [id] => 1 [name1] => 横浜市 [name2] => 神奈川県 [population] => 3771961 [img] => dbsample [area] => 関東 ) [1] => Array ( [id] => 6 [name1] => 川崎市 [name2] => 神奈川県 [population] => 1540890 [img] => dbsample [area] => 関東 ) )
見やすくする為に、HTMLとCSSで体裁を整えると、以下のようになります。
市名 | 都道府県名 | 人口 | エリア | |
---|---|---|---|---|
1 | ![]() |
神奈川県 |
3771961 |
関東 |
6 | ![]() |
神奈川県 |
1540890 |
関東 |
簡易的な説明ではありましたが、データベースからSQLでレコードを取得して、ウェブ画面に表示するまでのイメージが湧きますでしょうか... 次回からは、よく使うSQL構文を自身のチートシート的にまとめていこうと思います。
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。