MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説
MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。
本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。
1つ目のテーブル「demo77」を作成する
まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。
mysql> create table demo77
-> (
-> userid int not null primary key,
-> username varchar(20)
-> );
Query OK, 0 rows affected (2.63 sec)
レコードを挿入する
INSERT文を使って、テーブルにデータを追加します。
mysql> insert into demo77 values(1,'John'); Query OK, 1 row affected (0.19 sec) mysql> insert into demo77 values(2,'Bob'); Query OK, 1 row affected (0.36 sec)
登録されたデータを確認する
SELECT文でテーブルの中身を表示してみましょう。
mysql> select *from demo77;
実行結果は以下の通りです。
+--------+----------+ | userid | username | +--------+----------+ | 1 | John | | 2 | Bob | | 3 | Mike | +--------+----------+
2つ目のテーブル「demo78」を作成する
次に、国名を格納するテーブルを作成します。ここでは、demo77のuseridを参照する外部キー制約を設定し、2つのテーブルを関連付けています。
mysql> create table demo78
-> (
-> id int not null primary key,
-> countryname varchar(20),
-> constraint fk_id foreign key(id) references demo77(userid)
-> );
Query OK, 0 rows affected (0.75 sec)
レコードを挿入する
mysql> insert into demo78 values(1,'US'); Query OK, 1 row affected (0.14 sec) mysql> insert into demo78 values(2,'AUS'); Query OK, 1 row affected (0.15 sec)
登録されたデータを確認する
mysql> select *from demo78;
実行結果は以下の通りです。
+----+-------------+ | id | countryname | +----+-------------+ | 1 | US | | 2 | AUS | +----+-------------+ 2 rows in set (0.00 sec)
JOINを使ってIDからユーザー名を取得する
それでは、2つのテーブルをJOINして、IDをもとにユーザー名を取得してみましょう。結合条件は「demo77.userid = demo78.id」とON句で指定します。
mysql> select username from demo77
-> join demo78
-> on demo77.userid=demo78.id;
実行結果は以下の通りです。
+----------+ | username | +----------+ | John | | Bob | +----------+ 2 rows in set (0.05 sec)
まとめ
このように、JOIN ... ON構文を使えば、共通のキー(今回はID)をもとに複数のテーブルを結合できます。外部キー制約を設定しておくことで、テーブル間のデータ整合性も保たれ、より安全なデータベース設計につながります。なお、ユーザー名と一緒に国名も取得したい場合は、SELECT句に「countryname」を追加するだけで対応可能です。
-
MySQL Workbenchを使ってサーバー上のデータベースからERモデルを取得する方法
サーバー上のデータベースからERモデル(ER図)を取得するには、まずMySQL Workbenchを起動します。起動直後の画面は以下のとおりです。1. リバースエンジニアリングの開始次に、メニューバーから「Database」メニューを選択し、「Reverse Engineer」をクリックします。Database -> Reverse Engineer2. データベースへの接続すると、下のスクリーンショットのようなウィザードが表示されます。ここでデータベースのパスワードを入力し、「OK」ボタンを2回押してください。3. ウィザードの進行「OK」ボタンを押すと、次のウィザード画面に移行します
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI