データベースを使いこなせればデータ分析も自由自在!MySQLで複数テーブルのデータ操作をマスターしよう
MySQLで別のテーブルからIDでレコードを選択する
MySQLデータベースで、別のテーブルからIDを使ってレコードを選択することは、よく行われる操作です。この操作は、JOINと呼ばれる機能を使って行うことができます。
JOINの種類
MySQLには、さまざまな種類のJOINがあります。ここでは、最もよく使用される2つのJOINについて説明します。
- INNER JOIN: 両方のテーブルから一致するレコードのみを返します。
- LEFT JOIN: 左側のテーブルからすべてのレコードを返し、右側のテーブルから一致するレコードがあればそれも返します。
INNER JOINを使った例
次の例では、customers
テーブルとorders
テーブルをINNER JOINして、各顧客とその注文情報を選択します。
SELECT customers.name, orders.order_id, orders.product_id
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
このクエリは、次の結果を返します。
name | order_id | product_id
------- | -------- | --------
田中 | 1 | 123
鈴木 | 2 | 456
高橋 | 3 | 789
WHERE句を使った条件指定
WHERE
句を使って、JOINの結果をさらに絞り込むことができます。
次の例では、orders.product_id
が123である注文情報を持つ顧客のみを選択します。
SELECT customers.name, orders.order_id, orders.product_id
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id
WHERE orders.product_id = 123;
name | order_id | product_id
------- | -------- | --------
田中 | 1 | 123
MySQLで別のテーブルからIDを使ってレコードを選択するには、JOIN機能を使用します。
SELECT customers.name, orders.order_id, orders.product_id
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
このコードの説明
SELECT
: この句は、SELECTする列を指定します。customers.name
:customers
テーブルのname
列を選択します。orders.order_id
:orders
テーブルのorder_id
列を選択します。
FROM
: この句は、SELECTするテーブルを指定します。orders
:orders
テーブルを選択します。
INNER JOIN
: この句は、customers
テーブルとorders
テーブルを結合します。;
: このセミコロンは、クエリを終了します。
このコードの実行結果
このコードを実行すると、次の結果が返されます。
name | order_id | product_id
------- | -------- | --------
田中 | 1 | 123
鈴木 | 2 | 456
高橋 | 3 | 789
- このコードは、
customers
テーブルとorders
テーブルが同じデータベースにあることを前提としています。 - テーブル名や列名が異なる場合は、コードを適宜変更する必要があります。
WHERE
句を追加して、結果をさらに絞り込むことができます。- 例:
WHERE orders.product_id = 123
を追加すると、product_id
が 123 である注文情報のみが返されます。
- 例:
SELECT customers.name, orders.order_id, orders.product_id
FROM customers
WHERE id IN (
SELECT customer_id
FROM orders
);
WHERE
: この句は、SELECTするレコードを条件で絞り込みます。
name | order_id | product_id
------- | -------- | --------
田中 | 1 | 123
鈴木 | 2 | 456
高橋 | 3 | 789
WHERE
句の条件を変更することで、結果をさらに絞り込むことができます。
CSVデータのインポート
CSV ファイルからデータをインポートして、MySQL テーブルに格納することもできます。
この方法は、テーブル間の結合が必要ない場合に役立ちます。
- CSV ファイルをテキスト エディタで開きます。
- 各列をコンマで区切ります。
- 各行を改行で区切ります。
- CSVファイルを保存します。
- 次のコマンドを使用して、CSVファイルをMySQLテーブルにインポートします。
LOAD DATA INFILE 'path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
例
LOAD DATA INFILE '/Users/username/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
LOAD DATA INFILE
: このキーワードは、CSVファイルをインポートすることを示します。'path/to/file.csv'
: この引数は、CSVファイルのパスを指定します。INTO TABLE table_name
: この句は、データをインポートするテーブルを指定します。FIELDS TERMINATED BY ','
: この句は、CSVファイルの各列を区切る文字を指定します。
- CSVファイルの列数と、テーブルの列数が一致している必要があります。
- エラーが発生した場合は、MySQLエラーログを確認してください。
mysql sql database