MySQLでスキーマという名前が使われる理由

MySQLでは、スキーマという概念がないらしい。

いや正確にいうとあるのかもしれないけど、MySQLではスキーマ = データベースという認識なのらしい。

 

その証拠に、以下のクエリはどちらを実行しても「test」というデータベースが作成される。

CREATE SCHEMA test
CREATE DATABASE test

 

しかしながら、デフォルトで用意されているデータベースには

  • information_schema
  • performance_schema
  • sampledb

という風に「スキーマ」という名前のデータベースが存在したり、「db」という名前のサンプルデータベースも用意されていたりして、わけがわからん。

 

「スキーマという名前を使うのはいいとしてもdbかスキーマ、どっちかに名前を統一しろよ紛らわしい」

と疑問だったんだけど、どうやら以下のような理由かららしい。

INFORMATION_SCHEMAはSQL:2003(ISO/IEC 9075:2003)で定められているシステムカタログへの標準インタフェースで、他のDBMSでも実装されつつある。

引用:https://l-w-i.net/t/mysql/meta_001.txt

要するに

「どのDB程度でも共通のクエリを使えるようにしようぜ」な規格があって、その中で「INFORMATION_SCHEMAという名前でメタデータとかを参照できるようにしなさいよ」と決められているので、MySQLではスキーマという概念が存在しないにも関わらずINFORMATION_SCHEMAと命名せざるえない

みたいな感じなのかもしれない。

 

正直、調べてもそれ以上のことが分からなかったので、真偽は不明です。

もし知っている方がいればコメントしてくださるとうれしいです。

 

 

参考にしたページ

https://qastack.jp/programming/11618277/difference-between-schema-database-in-mysql

https://l-w-i.net/t/mysql/meta_001.txt

SQL
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました