PDOで接続エラーが出たときの原因とチェックリスト
当サイトではアフィリエイト広告を利用しています
はじめに
MySQLでは、次のような書き方ができます。
INSERT INTO users SET name = 'Taro', age = 20;
この「INSERT INTO ~ SET 構文」はとても分かりやすく、
PHPの連想配列のような感覚で書けるため、よく使われます。
では、この構文は他のデータベース(OracleやPostgreSQLなど)でも使えるのでしょうか?
この記事では、その違いを分かりやすく解説します。
結論:MySQL独自の構文です
INSERT INTO ~ SET 構文は、MySQL(およびMariaDB)独自の書き方です。
標準SQLでは、次のように書きます。
INSERT INTO users (name, age) VALUES ('Taro', 20);
他のデータベースでは使える?
代表的なデータベースで確認してみましょう。
| データベース | 使用可否 |
|---|---|
| MySQL / MariaDB | ✅ 使用可能 |
| PostgreSQL | ❌ 使用不可 |
| Oracle | ❌ 使用不可 |
| SQL Server | ❌ 使用不可 |
「INSERT INTO ~ SET 構文」が利用できるのは、MySQL / MariaDBだけとなります。
なぜMySQLだけ使えるの?
MySQLは、開発者の利便性を重視して標準SQLに加えて「拡張構文」をいくつか用意しています。
「INSERT INTO ~ SET 構文」もその一つです。
UPDATE文と似た書き方ができるため、混乱しにくいという利点があります。
しかし、他のデータベースでは使用できないので、他のデータベースへ移行した場合エラーになります。
そのため
- 将来的に他DBを使う可能性がある
- 資格試験対策としてSQLを学んでいる
という場合は、標準構文で書くことをおすすめします。
まとめ
- 「INSERT INTO ~ SET 構文」はMySQL独自の構文
- 他の主要データベース(PostgreSQL / Oracle / SQL Server)では使えない
- 移植性を考えるなら標準構文を使うのが安全
MySQLを学び始めると便利に感じる構文ですが、「標準ではない」という点は覚えておきましょう。

