PostgreSQL 5.7. Schemasノート
2578 ワード
PostgreSQL 5.7. Schemasノート
https://www.postgresql.org/docs/9.4/ddl-schemas.html
A database contains one or more named schemas, which in turn contain tables. Schemas also contain other kinds of named objects, including data types, functions, and operators. The same object name can be used in different schemas without conflict; for example, both schema1 and myschema can contain tables named mytable. Unlike databases, schemas are not rigidly separated: a user can access objects in any of the schemas in the database he is connected to, if he has privileges to do so.
新しいdatabaseを作成すると、PostgreSQLはpublicというschemaを自動的に作成します.search_が設定されていない場合path変数では、PostgreSQLは作成したすべてのオブジェクトをpublic schemaにデフォルトで配置します._
schemaの使用によるメリット
5.7.1. Creating a Schema
code example:
CREATE SCHEMA myschema;
schemaのテーブルへのアクセス
schema.table
実際、もっと一般的な文法は
database.schema.table
schemaでテーブルを作成する
CREATE TABLE myschema.mytable (
...
);
空のschemaを削除
DROP SCHEMA myschema;
schemaを削除し、オブジェクトも削除します.
DROP SCHEMA myschema CASCADE;
ユーザーのschemaの作成
CREATE SCHEMA schemaname AUTHORIZATION username;
5.7.2. The Public Schema
デフォルトで作成されたテーブルは
public schema
にあります次の2つの文は等価です.
CREATE TABLE products ( ... );
CREATE TABLE public.products ( ... );
5.7.3. The Schema Search Path
SELECT * FROM dogs
のような文を実行すると、PostgreSQLはどのschemaのテーブルを調べるかをどのように知っていますか?schema接頭辞を付けて解決することもできるし、
search_path
変数を設定して解決することもできる.表示
SHOW search_path;
search_path
--------------
"$user",public
PostgreSQLには、現在ログインしているユーザーの名前を表す、あまり知られていないシステム変数がuserと呼ばれています.SELECT userを実行するとその名前が表示されます.
search_についてpathの$userは、現在ログインしているロールが
doggy
であれば、すべてのクエリーが優先されます.doggy
schemaでターゲットテーブルを探します.見つからない場合はpublic schemaで探します.新しいschema逆search pathを設定
SET search_path TO myschema,public;
デフォルトのアクセスtableは
myschema
schemaにあります