MySQL Mode

MySQLモードで
独自の方言を体験しよう

Miria SQL Learningでは、設定を切り替えることでMySQL特有の構文をブラウザ上でそのまま試すことができます。

文字列結合のCONCAT()や、自動採番のAUTO_INCREMENTなど、MySQL環境でよく目にする機能や特徴的な記法を実際に書いて体験してみましょう。

ミリア

01

こんな方言に挑戦できます

SQLの基本的な考え方は共通していても、実際の書き方にはRDBMSごとの差があります。Miria SQLでは、その差を「読む」のではなく「書いて確かめる」ことができます。

AUTO_INCREMENT

AUTO_INCREMENTで連番のIDを作る

商品やユーザーのIDのように、新しい行を追加するたびに番号を自動的に増やしたい場合、MySQLではAUTO_INCREMENTを利用できます。

MySQL
CREATE TABLE items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price INT NOT NULL
);

この状態でidを指定せずに商品を追加すると、IDが自動的に採番されます。

MySQL
INSERT INTO items (name, price)
VALUES ('Blue Dress', 7200);
DBが変わると書き方も変わる

PostgreSQLではGENERATED ... AS IDENTITYや従来のSERIAL、OracleではIDENTITY列やSEQUENCEなどが利用されます。「連番を作る」という目的は同じでも、その表現方法には違いがあります。

CONCAT()

CONCAT()で文字列をつなげる

複数の文字列をひとつに結合したい場合、MySQLではCONCAT()がよく使われます。

MySQL
SELECT CONCAT(name, ' - ¥', price)
FROM items;

たとえば商品名と価格をひとつの文字列として表示したい場合などに利用できます。

MySQLで「||」を書くと?

PostgreSQLやOracleでは||が文字列結合として使われます。しかしMySQLの通常設定では、||は文字列結合ではなく論理ORとして扱われます。

SELECT
IFNULL()

IFNULL()でNULLを別の値に置き換える

データベースでは、値が存在しない状態をNULLとして扱います。MySQLではIFNULL()を使うことで、NULLだった場合に表示する値を指定できます。

MySQL
SELECT
    name,
    IFNULL(description, '説明なし')
FROM items;
PostgreSQLでは?

PostgreSQLでは同じ目的でCOALESCE()がよく利用されます。OracleではNVL()も代表的です。NULLを扱うという目的は同じでも、RDBMSごとに馴染みのある関数が異なります。

Comparison

PostgreSQL・Oracleと比べると?

「何をしたいか」は同じでも、DBを切り替えると書き方が変わります。

MySQL・PostgreSQL・Oracle Databaseの代表的なSQL方言比較
やりたいこと MySQL PostgreSQL Oracle DB
IDを自動採番 AUTO_INCREMENT IDENTITY / SERIAL IDENTITY / SEQUENCE
文字列を結合 CONCAT(a, b) a || b a || b
NULLを置換 IFNULL() COALESCE() NVL()
件数を制限 LIMIT 10 LIMIT 10 FETCH FIRST 10 ROWS ONLY

※ 表は「そのRDBMSでよく目にする代表的な書き方」を学習用に整理したものです。

PostgreSQLの書き方も確認すると、MySQL特有の部分が
より分かりやすくなります。

PostgreSQLモードも見る

Learning Point

「MySQLならどう書く?」を、実際に切り替えて確かめる。

SQLを学ぶとき、一つひとつの構文を独立して丸暗記するとRDBMSが変わったときに混乱しやすくなります。

たとえばCONCAT()を単に覚えるのではなく、「文字列結合をしたい」という目的から考えて、PostgreSQLなら||、MySQLならCONCAT()と比較すると違いが見えてきます。

Try MySQL

読んだら、次は
SQLを動かしてみよう。

構文の違いは、説明を読むだけでは意外と覚えにくいものです。

Miria SQL LearningでMySQLモードを選択して、SQLを書きながらRDBMSごとの違いを確認してみてください。

ミリア

Next Guide

MySQLで覚えた処理が別のデータベースではどう変わるのか、比較してみましょう。

Miria SQL Learning

MySQLの方言は、
実際に書くともっとわかる。

AUTO_INCREMENTもCONCAT()も、
ブラウザ上ですぐ試せます。

インストール不要・ブラウザから開始