学んだこと
リレーションで複数テーブルを連結する
- リレーションとはテーブル同士のつながりを意味する。
- 例えば、同じテーブル内で品名と生産者名が存在していた場合
- 生産者と品名を分けて管理をすることができれば、他のデータを追加するとなった場合もデータの管理がしやすく検索が容易になる。
実際に分けるとなった場合、どう分けるべきか
- 生産者テーブルと販売テーブルと分ける
- 生産者テーブルでは id,生産者名,住所,電話番号
- 販売テーブルでは id,品名,価格,何個売れたか,生産者テーブル id
- 生産者テーブル id を販売テーブルに入れておくことで、生産者テーブルから id を用いて生産者名を検索することができる。
SQL を使ってリレーションを行う場合
- リレーションするテーブルを FROM で設定し、WHERE 句にてテーブル同士で紐づいているカラムを記述する。
- 紐づいているカラムを元に検索を行い結果を出力する。
- (例)
SELECT * FROM makers, my_items WHERE makers.id = my_items.maker_id;
- makers テーブルと my_items テーブルから makers 内にある id と my_items の make_id が同じものを検索してほしいという SQL になる。
- 省略した書き方もできる。
SELECT * FROM makers m, my_items i WHERE m.id = i.maker_id;
GROUP BY
- 複数行にわたるデータを集約し、集約した複数データをグループ化する。
- 構文:
SELECT カラム名 FROM テーブル名 GROUP BY グループ化したいカラム名
- 例:
SELECT item_id, SUM(count) FROM carts GROUP BY item_id;
- carts テーブルから item_id と、count を集計した値を取得し item_id でグループ化を行う処理となる。
LEFTJOIN RIGHTJOIN INNER JOIN
LEFT JOIN RIGHT JOIN
- どちらとも外部結合を行う処理。
- LEFTJOIN は左側を優先して処理が行われる。
- RIGHTJOIN は右側を優先して処理が行われる。
- 構文:
SELECT カラム名 FROM テーブル名 LEFT(RIGHT) JOIN テーブル名 ON 条件
- 例:
SELECT item_name, SUM(count) FROM my_items LEFT JOIN carts ON my_items.id=carts.item_id GROUP BY item_name;
- my_item から item_name と count の合計値を取得します。carts の左側を基準にテーブルを繋ぐ。
- my_items にあるテーブルはもし carts に紐づかなくても表示するようになる。
- GROUPBY で item_name としてグループ化する。
| item_name | SUM(count) |
| —- | —- |
| いちご | 7 |
| りんご | 3 |
| ブルーベリー | NULL |
INNER JOIN
- 共通するデータのみ結合を行う処理。
- 構文:
SELECT カラム名 FROM テーブル名 INNER JOIN テーブル名 ON 条件
- 例:
SELECT item_name, SUM(count) FROM my_items INNER JOIN carts ON my_items.id=carts.item_id GROUP BY item_name;
便利な SQL 構文
DISTINCT
- データの重複を取り除く
- 構文:
SELECT DESTINCT カラム名 FROM テーブル名
- 例:
SELECT DISTINCT item_id from carts;
- carts テーブルから items_id 内の重複したデータを取り除いて一覧を取得する。
BETWEEN
- 範囲指定ができる
- 構文:
SELECT カラム名 from テーブル名 WHERE 条件 BETWEEN 項目 AND 項目;
- 例:
SELECT * FROM my_items WHERE price BETWEEN 100 AND 1000;
- my_items から price が 100~1000 までのデータを取得する。
IN
- どちらかのデータを取得する
- 構文:
SELECT カラム名 FROM テーブル名 WHERE id IN(項目, 項目);
- 例:
SELECT * FROM my_items WHERE id IN(1, 3);
- my_items から id の 1 と 3 のデータをどちらかのデータを取得する。
LIMIT
- 検索結果の表示を絞る
- 構文:
SELECT カラム名 FROM テーブル名 LIMIT 数値
- 例:
SELECT * FROM my_items LIMIT 2;
- 例:
SELECT * FROM my_items LIMIT 2,3;
- my_items から 3 件目から 3 件取得する
AS
- 別名をつける
- 例:
SELECT sum(count) AS sales_count FROM carts;
- carts テーブルから count の合計値を sales_count としデータを取得する。
DB のインポート・エクスポート
- phpMyAdmin には DB のインポート・エクスポート機能が存在する。
- DB をエクスポートするには、左側からエクスポートしたい DB を選択した状態で、右上のエクスポートを押すことでエクスポートすることができる。
- エクスポート時の設定は特に変更する必要はなかった。
- 適宜設定を行う。

- DB をインポートするには、新規で DB を作成し、エクスポートしたファイルを使ってインポートを行えばインポートすることができる。
- インポート時の設定は特に変更する必要はなかった。
- 適宜設定を行う。

You May Also Enjoy
less than 1 minute read
学んだこと