Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

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の教科書

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?