ブラウザだけでMySQLを即学習【サザエさんの例 その5】|テーブルの結合(内部結合)

この記事では、ブラウザだけでMySQLを「サザエさんの例」を通してサンプルのコードを書きながら学習する内容になっております。

途中からでもなるべく学習可能な様に書いております。

使用ブラウザはmyCompilerのMySQLを使っています。

今回は2つのテーブルを結合します。

1つ目のテーブルは、sazaefamilyです。

簡単にこのテーブルについて説明しますと、一番左のidが主キーで、あとはキャラクターの名前、性別、年齢、右端にjobIdというフィールドを新たに追加しました。

100が会社員、200が主婦、300が学生です。

2つ目のテーブルは、jobIdを主キーとして、それぞれの職業が書かれたテーブルjobcodeです。

jobIdはテーブルsazaefamilyでは外部キー、テーブルjobcodeでは主キーです。
この両方のテーブルにあるjobIdをINNER JOINを使って結合します。

結合のイメージ図です。

拙い図ですが、イメージをご覧頂いた所でブラウザにMySQLのコードを書いて行きます。


まず、新たにjobIdを付け足したテーブルsazaefamilyです。

-- sazaefamily table
CREATE TABLE sazaefamily (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  gender TEXT NOT NULL,
  age INTEGER NOT NULL,
  jobId INTEGER NOT NULL
);

-- sazaefamily values
INSERT INTO sazaefamily VALUES (1, '磯野波平', '男性',54,100);
INSERT INTO sazaefamily VALUES (2, 'フグ田サザエ', '女性',24,200);
INSERT INTO sazaefamily VALUES (3, '磯野カツオ', '男性',11,300);
INSERT INTO sazaefamily VALUES (4, '磯野ワカメ', '女性',9,300);
INSERT INTO sazaefamily VALUES (5, '穴子さん', '男性',27,100);

-- fetch sazaefamily values
SELECT * FROM sazaefamily;

出力結果です。
無事にテーブルが表示されました。


次に、結合する新たなテーブルjobcodeを作って行きます。

-- jobcode table
CREATE TABLE jobcode (
  jobId INTEGER PRIMARY KEY,
  jobs TEXT NOT NULL
);


-- jobcode values
INSERT INTO jobcode VALUES (100, '会社員');
INSERT INTO jobcode VALUES (200, '主婦');
INSERT INTO jobcode VALUES (300, '学生');


-- fetch jobcode values
SELECT * FROM jobcode;

実行結果です。


2つのテーブルを結合して表示する表のイメージです。

nameとageはテーブルsazaefamilyから、jobsはテーブルjobcodeから取得しています。

結合して取得するコードと実行結果です。

SELECT sazaefamily.name, sazaefamily.age, jobcode.jobs FROM sazaefamily INNER JOIN jobcode ON sazaefamily.jobId = jobcode.jobId

ここまでのコードのまとめです。

-- sazaefamily table
CREATE TABLE sazaefamily (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  gender TEXT NOT NULL,
  age INTEGER NOT NULL,
  jobId INTEGER NOT NULL
);

-- sazaefamily values
INSERT INTO sazaefamily VALUES (1, '磯野波平', '男性',54,100);
INSERT INTO sazaefamily VALUES (2, 'フグ田サザエ', '女性',24,200);
INSERT INTO sazaefamily VALUES (3, '磯野カツオ', '男性',11,300);
INSERT INTO sazaefamily VALUES (4, '磯野ワカメ', '女性',9,300);
INSERT INTO sazaefamily VALUES (5, '穴子さん', '男性',27,100);

-- fetch sazaefamily values
SELECT * FROM sazaefamily;



-- jobcode table
CREATE TABLE jobcode (
  jobId INTEGER PRIMARY KEY,
  jobs TEXT NOT NULL
);


-- jobcode values
INSERT INTO jobcode VALUES (100, '会社員');
INSERT INTO jobcode VALUES (200, '主婦');
INSERT INTO jobcode VALUES (300, '学生');


-- fetch jobcode values
SELECT * FROM jobcode;

-- inner join
SELECT sazaefamily.name, sazaefamily.age, jobcode.jobs FROM sazaefamily INNER JOIN jobcode ON sazaefamily.jobId = jobcode.jobId


お疲れ様でした。ブレイクタイムPhotoは、

しながわ花海道のコスモスです。

ご精読誠にありがとうございました。

【オススメ入門書】
3ステップでしっかり学ぶ My SQL入門

MySQL自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

nekosiestr
プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。

モバイルバージョンを終了