摘要:筆記一個(gè)數(shù)據(jù)庫(kù)包含多個(gè)里包含的下一層邏輯結(jié)構(gòu)就是也包括各種不同里的名可以相同在創(chuàng)建一個(gè)新的時(shí),會(huì)自動(dòng)為其創(chuàng)建一個(gè)名為的。如果未設(shè)置變量,那么會(huì)將你創(chuàng)建的所有對(duì)象默認(rèn)放入中。執(zhí)行就能看到其名稱(chēng)。
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.
一個(gè)數(shù)據(jù)庫(kù)包含多個(gè)schema, schema里包含tables, database 的下一層邏輯結(jié)構(gòu)就是 schema
schema 也包括各種 objects, data types, functions, operators
不同schem里的table名可以相同
在創(chuàng)建一個(gè)新的 database 時(shí), PostgreSQL 會(huì)自動(dòng)為其創(chuàng)建一個(gè) 名為 public 的 schema。 如果未設(shè)置 search_path 變量,那 么 PostgreSQL 會(huì)將你創(chuàng)建的所有對(duì)象默認(rèn)放入 public schema 中。_
使用schema帶來(lái)的好處
允許多用戶(hù)使用一個(gè)數(shù)據(jù)庫(kù)而不會(huì)相互干擾, 數(shù)據(jù)隔離
將數(shù)據(jù)庫(kù)對(duì)象組織到邏輯組中以使其更易于管理
第三方應(yīng)用程序可以放在多帶帶的模式中, 這樣它們就不會(huì)與其他對(duì)象的名稱(chēng)沖突
5.7.1. Creating a Schemacode example:
CREATE SCHEMA myschema;
訪(fǎng)問(wèn)schema的表
schema.table
實(shí)際上,更通用的語(yǔ)法
database.schema.table
在schema里創(chuàng)建表
CREATE TABLE myschema.mytable ( ... );
刪除空schema
DROP SCHEMA myschema;
刪除schema 并且也刪除其中的對(duì)象
DROP SCHEMA myschema CASCADE;
為某個(gè)用戶(hù)創(chuàng)建schema
CREATE SCHEMA schemaname AUTHORIZATION username;5.7.2. The Public Schema
默認(rèn)創(chuàng)建的表都在public schema里
下面兩條語(yǔ)句是等價(jià)的
CREATE TABLE products ( ... ); CREATE TABLE public.products ( ... );5.7.3. The Schema Search Path
當(dāng)執(zhí)行類(lèi) 似 SELECT * FROM dogs 這種語(yǔ)句時(shí), PostgreSQL 是怎么知道要查的是哪個(gè) schema 中的表 呢?
可以加schema前綴解決, 也可以設(shè)置 search_path 變量解決
查看
SHOW search_path;
search_path -------------- "$user",public
PostgreSQL 有一個(gè)少為人知的系統(tǒng)變量叫作 user , 它代表了當(dāng)前登錄用戶(hù)的名稱(chēng)。 執(zhí)行 SELECT user 就能看到其名稱(chēng)。
對(duì)于search_path 里的$user, 如果當(dāng)前登錄的角色是 doggy, 那么所有的查詢(xún)都會(huì)優(yōu)先去 doggy schema 中尋找目標(biāo)表, 如果找不到才會(huì)去 public schema 下找
設(shè)置新的schema倒search path里
SET search_path TO myschema,public;
這樣 默認(rèn) 創(chuàng)建訪(fǎng)問(wèn) table 都在 myschema schema里
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39032.html
摘要:但如果涉及到跨大版本升級(jí)比如升級(jí)到,這種直接替換軟件就不行了,因?yàn)榭绨姹镜膬?nèi)部存儲(chǔ)形式發(fā)生了變化官方對(duì)于升級(jí)提供了種方法,這里遷移我使用了來(lái)進(jìn)行處理細(xì)節(jié)可以參考官方文檔。 1 場(chǎng)景描述 最近使用 postgresql 命令行比較多,就找了個(gè)類(lèi)似 mycli 工具,pgcli,這個(gè)是針對(duì) postgresql 的,興沖沖的安裝了 brew install pgcli 沒(méi)想到這貨自動(dòng)幫我...
摘要:直接切換到對(duì)應(yīng)的庫(kù)下執(zhí)行注意,這個(gè)不能獲取到和的歸屬情況,只能獲取到表和序列的的情況上面的這個(gè),能查出下面的這種歸屬的對(duì)于下面的這種情況,都查不出來(lái)的。表的是一個(gè),表里面又有其它的授權(quán)非的下 直接切換到對(duì)應(yīng)的庫(kù)下執(zhí)行select nsp.nspname as SchemaName ,cls.relname a...
本文是PostgreSQL修煉之道這本書(shū)的學(xué)習(xí)筆記,記錄下疑惑或不解的地方. 這里也列一些資源: 官方文檔:http://www.postgresql.org/files/documentation/pdf/9.4/postgresql-9.4-A... 中文文檔:http://www.php100.com/manual/PostgreSQL8/ 阮一峰的博客:http://www.ruanyif...
閱讀 3242·2021-10-21 17:50
閱讀 3254·2021-10-08 10:05
閱讀 3380·2021-09-22 15:04
閱讀 581·2019-08-30 14:00
閱讀 1939·2019-08-29 17:01
閱讀 1508·2019-08-29 15:16
閱讀 3219·2019-08-26 13:25
閱讀 852·2019-08-26 11:44