LoginSignup
2
0

More than 3 years have passed since last update.

データベースの基本2(MySQL)

Last updated at Posted at 2019-06-06
id item_name price keyword
1 いちご 180 赤い、甘い、ケーキ
2 りんご 90 丸い、赤い、パイ
3 バナナ 120 パック、甘い、黄色
4 ベリー 200 袋入り、青い、眼精疲労

データベースに上記のデータが入っていることを前提に。テーブル名はmy_items

ORDER BY

データを昇順、降順で並べる

データベースのデータの並び順は、基本的にはidの小さい順(昇順)で並べられている。が、実際にはそうとも限らないので、OREDER BYで並び替えが必要になることがあります。

/* 昇順 */
SELECT * FROM my_items ORDER BY id ASC;
/* 降順 */
SELECT * FROM my_items ORDER BY id DESC;

標準はASCなので、ASCは省略してもOK

WHEREと組み合わせる

例えば、価格が180円以下の商品を安い順に並べる場合は次のように

SELECT * FROM my_items WHERE price<=180 ORDER BY price;

さまざまな算出機能

/* 最も高価な商品を検索 */
SELECT MAX(price) FROM my_items;
/* 最も低価格な商品を検索 */
SELECT MIN(price) FROM my_items;
/* ヒットしたデータ数を取り出す */
SELECT COUNT(id) FROM my_items;
/* 価格の平均を算出 */
SELECT AVG(price) FROM my_items;

リレーション

リレーションは、複数のテーブルをその関連性からつないで1つのテーブルのように扱うことができる。

my_itemsテーブル

id maker_id item_name price keyword
1 1 いちご 180 赤い、甘い、ケーキ
2 2 りんご 90 丸い、赤い、パイ
3 1 バナナ 120 パック、甘い、黄色
4 3 ベリー 200 袋入り、青い、眼精疲労

makersテーブル

id name address tel
1 ヤマダ 東京都港区 0000
2 サイトウ 北海道小樽市 1111
3 カワカミ 神奈川県横浜市 2222

リレーションを使う

SELECT * FROM makers, my_items WHERE my_items.id=1 AND makers.id=my_items.maker_id;

実際に実行してみると、1つのテーブルで管理されているかのように関連付けて表示されます。
ポイントはFROM。テーブルを,で区切っていくつも指定できる。複数のテーブルからデータを一括で取り出せる。

WHEREでリレーションを張る

ただし、複数のテーブルを指定したら、必ずキーとなるカラムを使って結びつけないといけない。

... AND makers.id=my_items.maker_id;

これは、makersテーブルのidとmy_itemsテーブルのmake_idが一致したデータを検索するという意味。テーブル名に続けて.でくっつけてカラム名を記述。
このように、複数のテーブルをつないでデータを検索することをリレーションを張るといいます。

テーブル名のショートカット

SELECT * FROM makers m, my_items i WHERE i.id=1 AND m.id=i.maker_id;

このように書くと、makersをmに、my_itemsをiに指定できる。見分けがつく短い名前がいいでしょう。

データベースの基本1(MySQL)
【参考】
よくわかるPHPの教科書

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0