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

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

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

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