【初学者は仕組みを知らない】MySQLでリレーションする方法を解説します

今日は、MySQLでリレーションする方法を解説します。

よくRDBと呼ばれたりしますが、MySQLの最大の利点は、テーブル同士をリレーションする、つまりつなげることができることです。

webアプリの開発では必ず必要になるスキルなので、ここでしっかり覚えておきましょう。

今日は、

  • テーブル同士をリレーションするにはどうしたいいの?
  • リレーションした後にデータを取ってくるSQLはどうやって書くの?
  • テーブル作成からデータ挿入まで全てコマンドでやってみたい

こんな方におすすめです。

それでは、やっていきましょう。

データベースを作成する

まずは、データベースを作成してデータを登録していきましょう。

3ステップに分けて登録していきます。

1. データベースを作成する

create datebase item;

2. テーブルを作成する

create table my_items (id int primary key auto_increment,
                       iten_name text,
                       price int,
                       maker_id int
);
create table makers (id int primary key auto_increment,
                     name text, address text,
                     tel text
);

3. データを登録する

insert into my_items set id=1, item_name='いちご', price=200, maker_id=1;
insert into makers set name='斎藤さん', address='北海道小樽市', tel='111-222-3333'; 

ここまででデータベースの準備はできました。

もしここまでで、「分からないことがある」という方は、【webアプリ作成に必須?】MySQLでデータベースを作成するで解説しているのでご参考ください。

テーブル同士をリレーションする

早速データベースをリレーションしていきましょう。

select * from makers, my_items where my_items.id=1 and makers.id=my_items.maker_id; 

かなり長いSQLになっていますね。

分解しながら考えていきましょう。

プログラミングで分からないことがあったら分解して考えて行くことが重要です。

select * from makers, my_items

makersテーブルとmy_itemsテーブルの情報をselect文で全て取ってきています。

where my_items.id=1

makersテーブルにもmy_itemsテーブルにもidカラムが存在するので、明示的にどちらのテーブルのidかを命令しています。

※もし指定のid列のみ取得したい場合は、こちらの記述が必要です。

and

論理演算子ですね。

他のプログラミング言語だと「&&」でも表現されたりしています。

makers.id=my_items.maker_id; 

今回重要なのがここです。

makersテーブルのidとmy_itemsテーブルのmaker_idが一致する情報を取り出しています。

どうでしょうか?

分解して考えると複雑なSQLも少しづつ簡単に見えてくるので、ぜひ皆さんも実践してみてください。

まとめ

select * from テーブル名, テーブル名 where 検索条件 and 参照先テーブル=参照元テーブル; 

今回は、MySQLでテーブル同士のリレーションを行っていきました。

webアプリ開発でもリレーションの概念はとても重要なので、しっかり抑えておきましょう。

参考:

PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門