SQLでテーブル名にpublicをつけるのはなぜですか?
Q&A
解決したいこと
SQLでテーブル名にpublicをつけるのはなぜですか?
自分で試したこと
ネットで調べたところ、スキーマ?だとか所属がpublicだからなど書いてありましたがよく理解できず。
また、DBによってつけないとエラーになったり、つけなくてもSQL文が通るものもあり、何が違うのでしょうか。
せめて調べ方のヒントだけでもいただけたら嬉しいです。
Q&A
SQLでテーブル名にpublicをつけるのはなぜですか?
ネットで調べたところ、スキーマ?だとか所属がpublicだからなど書いてありましたがよく理解できず。
また、DBによってつけないとエラーになったり、つけなくてもSQL文が通るものもあり、何が違うのでしょうか。
せめて調べ方のヒントだけでもいただけたら嬉しいです。
SELECT name FROM public.products;
のような public
のことでしょうか。これは public
スキーマ の products
テーブルを読み込むことを表します。
この「スキーマ」は「データベーススキーマを設計する」などと言うときのような概念的な意味ではなく、データベースが持つ構造の名前です。 PostgreSQL では1つのデータベースクラスタに複数のスキーマがあり、各スキーマの中に複数のテーブルが入る形になっています。テーブルをファイルにたとえると、スキーマは親フォルダにあたるものです。
PostgreSQL では public
スキーマが最初から存在し、スキーマ名を省略するとデフォルトでは public
スキーマを指定したものと扱います。つまり SELECT name FROM products;
は SELECT name FROM public.products;
と同じ意味になります。
ただし、スキーマ名を省略したときの扱いは設定で変更することができ、 public
以外のスキーマにしたり、接続したデータベースユーザーによって切り替えたりできます。この曖昧さが困る場合などには明示的に public
スキーマを指定することがあります。
なお、 MySQL や Oracle DB などの他のデータベースシステムでは、システムごとにスキーマの仕組みや位置づけが違い、デフォルトで public
スキーマが存在しなかったり、自動でユーザー名と同じスキーマが作られたりします。詳しくは各システムのマニュアルを読んでください。
@usausa000
Questioner
あなたの言う SQL とは何ですか? PostgreSQL? SQL Server? MySQL? その他?
@usausa000
Questioner