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でも実装されつつある。
要するに
「どのDB程度でも共通のクエリを使えるようにしようぜ」な規格があって、その中で「INFORMATION_SCHEMA
という名前でメタデータとかを参照できるようにしなさいよ」と決められているので、MySQLではスキーマという概念が存在しないにも関わらずINFORMATION_SCHEMA
と命名せざるえない
みたいな感じなのかもしれない。
正直、調べてもそれ以上のことが分からなかったので、真偽は不明です。
もし知っている方がいればコメントしてくださるとうれしいです。
参考にしたページ
https://qastack.jp/programming/11618277/difference-between-schema-database-in-mysql
コメント