なかなか覚えられない。MySQL 5.6。
👇下記の例で使うスキーマ。
CREATE TABLE authors (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE entries (
id INT NOT NULL AUTO_INCREMENT,
author_id INT NOT NULL,
title VARCHAR(255) NOT NULL,
body TEXT,
available TINYINT(1) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags (
entry_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (entry_id, name)
);
INSERT 文
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.5.1 INSERT ... SELECT 構文
-- JOIN 使わない場合
INSERT INTO tags (entry_id, name)
VALUES (1, 'rails');
-- VALUES の代わりに JOIN を含む SELECT の結果を使う
INSERT INTO tags (entry_id, name)
SELECT entries.id, LOWER(authors.name)
FROM entries JOIN authors ON entries.author_id = authors.id;
UPDATE 文
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.11 UPDATE 構文
-- JOIN 使わない場合
UPDATE entries
SET title = 'My 1st entry', body = 'Title only'
WHERE id = 1;
-- テーブル名を指定するところで JOIN
UPDATE entries JOIN authors ON entries.author_id = authors.id
SET available = TRUE
WHERE authors.name = 'labocho';
DELETE 文
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.2 DELETE 構文
-- JOIN 使わない場合
DELETE FROM entries
WHERE entry_id = 1;
-- DELETE table_name FROM table_references ...
DELETE entries FROM entries JOIN authors ON entries.author_id = authors.id
WHERE authors.name = 'labocho';