MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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」を追加するだけで対応可能です。

  1. MySQL Workbenchを使ってサーバー上のデータベースからERモデルを取得する方法

    サーバー上のデータベースからERモデル(ER図)を取得するには、まずMySQL Workbenchを起動します。起動直後の画面は以下のとおりです。1. リバースエンジニアリングの開始次に、メニューバーから「Database」メニューを選択し、「Reverse Engineer」をクリックします。Database -> Reverse Engineer2. データベースへの接続すると、下のスクリーンショットのようなウィザードが表示されます。ここでデータベースのパスワードを入力し、「OK」ボタンを2回押してください。3. ウィザードの進行「OK」ボタンを押すと、次のウィザード画面に移行します

  2. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI