亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL教程(二):模式Schema詳解

2020-03-12 23:53:30
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PostgreSQL教程(二):模式Schema詳解,本文講解了創建模式、public模式、權限、刪除模式、模式搜索路徑等內容,需要的朋友可以參考下
 

一個數據庫包含一個或多個命名的模式,模式又包含表。模式還包含其它命名的對象,包括數據類型、函數,以及操作符。同一個對象名可以在不同的模式里使用而不會導致沖突; 比如,schema1和myschema都可以包含叫做mytable的表。和數據庫不同,模式不是嚴格分離的:一個用戶可以訪問他所連接的數據庫中的任意模式中的對象,只要他有權限。

    我們需要模式有以下幾個主要原因:

    1). 允許多個用戶使用一個數據庫而不會干擾其它用戶。
    2). 把數據庫對象組織成邏輯組,讓它們更便于管理。
    3). 第三方的應用可以放在不同的模式中,這樣它們就不會和其它對象的名字沖突。
    
    1. 創建模式:
 

復制代碼代碼如下:

    CREATE SCHEMA myschema;
 

    通過以上命令可以創建名字為myschema的模式,在該模式被創建后,其便可擁有自己的一組邏輯對象,如表、視圖和函數等。
    
    2. public模式:

 

    在介紹后面的內容之前,這里我們需要先解釋一下public模式。每當我們創建一個新的數據庫時,PostgreSQL都會為我們自動創建該模式。當登錄到該數據庫時,如果沒有特殊的指定,我們將以該模式(public)的形式操作各種數據對象,如:
 

復制代碼代碼如下:

    CREATE TABLE products ( ... ) 等同于 CREATE TABLE public.products ( ... )
   

    3. 權限:
    缺省時,用戶看不到模式中不屬于他們所有的對象。為了讓他們看得見,模式的所有者需要在模式上賦予USAGE權限。為了讓用戶使用模式中的對象,我們可能需要賦予額外的權限,只要是適合該對象的。PostgreSQL根據不同的對象提供了不同的權限類型,如:
 
復制代碼代碼如下:

    GRANT ALL ON SCHEMA myschema TO public; 
 

    上面的ALL關鍵字將包含CREATE和USAGE兩種權限。如果public模式擁有了myschema模式的CREATE權限,那么登錄到該模式的用戶將可以在myschema模式中創建任意對象,如:
 
復制代碼代碼如下:

    CREATE TABLE myschema.products (
        product_no integer,
        name text,
        price numeric CHECK (price > 0),
    );
 

    在為模式下的所有表賦予權限時,需要將權限拆分為各種不同的表操作,如:
 
復制代碼代碼如下:

    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO public;
 

    在為模式下的所有Sequence序列對象賦予權限時,需要將權限拆分為各種不同的Sequence操作,如:
 
復制代碼代碼如下:

    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT SELECT, UPDATE, USAGE ON SEQUENCES TO public;
 

    在為模式下的所有函數賦予權限時,僅考慮執行權限,如:
 
復制代碼代碼如下:

    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT EXECUTE ON FUNCTIONS TO public;
 

    可以看出,通過以上方式在public模式下為myschema模式創建各種對象是極為不方便的。下面我們將要介紹另外一種方式,即通過role對象,直接登錄并關聯到myschema對象,之后便可以在myschema模式下直接創建各種所需的對象了。
   
復制代碼代碼如下:

    CREATE ROLE myschema LOGIN PASSWORD '123456'; --創建了和該模式關聯的角色對象。
    CREATE SCHEMA myschema AUTHORIZATION myschema; --將該模式關聯到指定的角色,模式名和角色名可以不相等。
 

    在Linux Shell下,以myschema的角色登錄到數據庫MyTest,在密碼輸入正確后將成功登錄到該數據庫。
 
復制代碼代碼如下:

    /> psql -d MyTest -U myschema
    Password:
    MyTest=> CREATE TABLE test(i integer);
    CREATE TABLE
    MyTest=> /d   --查看該模式下,以及該模式有權限看到的tables信息列表。
              List of relations
     Schema     |   Name   | Type  |  Owner
    ------------+---------+------+----------
     myschema |   test     | table  | myschema
    (1 rows)
   

    4. 刪除模式:
 
復制代碼代碼如下:

    DROP SCHEMA myschema;
 

    如果要刪除模式及其所有對象,請使用級聯刪除:
 
復制代碼代碼如下:

    DROP SCHEMA myschema CASCADE;
 

    
    5. 模式搜索路徑:

 

    我們在使用一個數據庫對象時可以使用它的全稱來定位對象,然而這樣做往往也是非常繁瑣的,每次都不得不鍵入owner_name.object_name。PostgreSQL中提供了模式搜索路徑,這有些類似于Linux中的$PATH環境變量,當我們執行一個Shell命令時,只有該命令位于$PATH的目錄列表中,我們才可以通過命令名直接執行,否則就需要輸入它的全路徑名。PostgreSQL同樣也通過查找一個搜索路徑來判斷一個表究竟是哪個表,這個路徑是一個需要查找的模式列表。在搜索路徑里找到的第一個表將被當作選定的表。如果在搜索路徑中 沒有匹配表,那么就報告一個錯誤,即使匹配表的名字在數據庫其它的模式中存在也如此。
    在搜索路徑中的第一個模式叫做當前模式。除了是搜索的第一個模式之外,它還是在CREATE TABLE沒有聲明模式名的時候,新建表所屬于的模式。要顯示當前搜索路徑,使用下面的命令:
 

復制代碼代碼如下:

    MyTest=> SHOW search_path;
      search_path
    ----------------
     "$user",public
    (1 row)
 

    可以將新模式加入到搜索路徑中,如:
 
復制代碼代碼如下:

    SET search_path TO myschema,public;
 

    為搜索路徑設置指定的模式,如:
 
復制代碼代碼如下:

    SET search_path TO myschema; --當前搜索路徑中將只是包含myschema一種模式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频观看正片免费网站| 亚洲国产私拍精品国模在线观看| 在线激情影院一区| 91最新国产视频| 精品女同一区二区三区在线播放| 欧美丰满少妇xxxx| 日韩免费在线免费观看| 亚洲精品久久久久中文字幕欢迎你| 色香阁99久久精品久久久| 亚州国产精品久久久| 国产v综合ⅴ日韩v欧美大片| 国产一区av在线| 精品国产自在精品国产浪潮| 日韩av在线影视| 日韩精品中文字幕有码专区| 一级做a爰片久久毛片美女图片| 国产亚洲欧美另类中文| 国产精品入口夜色视频大尺度| 日韩成人中文电影| 国产成人精品免高潮费视频| 亚洲国产成人精品一区二区| 日韩小视频在线观看| 精品电影在线观看| 色琪琪综合男人的天堂aⅴ视频| 亚洲成人三级在线| 91在线视频一区| 亚洲欧美日韩天堂一区二区| 777777777亚洲妇女| 国产一区二区在线播放| 精品国产一区二区三区在线观看| 亚洲欧洲黄色网| 欧美最猛性xxxx| 国产精品男人的天堂| 性色av一区二区三区在线观看| 亚洲成年人影院在线| 91夜夜未满十八勿入爽爽影院| 亚洲欧美成人一区二区在线电影| 国产香蕉97碰碰久久人人| 亚洲国产日韩欧美在线99| 日韩精品久久久久| 日韩影视在线观看| 国产精品久久久久久久久粉嫩av| 亚洲精品久久视频| 中文字幕日本欧美| 91免费看片在线| 亚洲乱亚洲乱妇无码| 亚洲女同精品视频| 九九热r在线视频精品| 成人免费视频在线观看超级碰| 国产精品久久久精品| 亚洲人成在线免费观看| 最近2019中文字幕在线高清| 国产91对白在线播放| 成人午夜高潮视频| 亚洲精品电影在线观看| 高潮白浆女日韩av免费看| 国产精品综合久久久| 久久久亚洲精品视频| 国产精品久久久久91| 久久久亚洲天堂| 日韩中文有码在线视频| 久久久久国产精品免费网站| 成人免费高清完整版在线观看| 欧美性xxxxxxx| 日韩精品在线免费观看| 国产v综合ⅴ日韩v欧美大片| 萌白酱国产一区二区| 国产欧美精品久久久| 亚洲综合一区二区不卡| 久久亚洲精品一区| 精品视频9999| 国产视频精品自拍| 亚洲精品国产suv| 亚洲国产成人精品一区二区| 国产高清视频一区三区| 欧美日韩不卡合集视频| 韩国国内大量揄拍精品视频| 精品精品国产国产自在线| 亚洲国产天堂网精品网站| 国产精品一区二区久久国产| 国产精品精品一区二区三区午夜版| 欧美日韩精品在线播放| 欧美在线视频在线播放完整版免费观看| 欧美日韩中文在线观看| 亚洲一区亚洲二区| 日韩在线视频网站| 精品美女久久久久久免费| 欧美激情一二区| 亚洲电影av在线| 久久福利视频网| 欧美成人精品在线播放| 91av中文字幕| 主播福利视频一区| 九九热精品在线| 日本精品久久中文字幕佐佐木| 亚洲美女动态图120秒| 成人欧美一区二区三区在线| 国产精品美女无圣光视频| 亚洲精品成人久久电影| 精品呦交小u女在线| 在线观看亚洲视频| 亚洲电影免费观看高清完整版在线观看| 91精品国产高清久久久久久| 亚洲成人网在线观看| 91精品国产自产91精品| 中文字幕亚洲精品| 亚洲天堂日韩电影| 亚洲人午夜色婷婷| 亚洲一区二区久久| 成人免费看黄网站| 色综合天天狠天天透天天伊人| 国产成人精品电影| 欧美二区在线播放| 国模gogo一区二区大胆私拍| 中文字幕亚洲综合久久筱田步美| 日韩一二三在线视频播| 亚洲综合中文字幕在线| 精品av在线播放| 欧美成年人视频网站欧美| 国产一区二区三区丝袜| 亚洲欧美中文字幕| 久久久久久久久久久亚洲| 国产精品一香蕉国产线看观看| 最近2019年手机中文字幕| 欧美性视频精品| 亚洲美女又黄又爽在线观看| 欧美激情视频网站| 亚洲男人7777| 欧美午夜片欧美片在线观看| 成人久久久久爱| 日本欧美精品在线| 国产精品女人网站| 国产精品va在线播放我和闺蜜| 在线播放日韩av| 91wwwcom在线观看| 粉嫩av一区二区三区免费野| 久久精品成人一区二区三区| 久久久午夜视频| 中文字幕最新精品| 亚洲国产小视频| 亚洲精品国产suv| 狠狠躁夜夜躁人人爽超碰91| 少妇高潮久久久久久潘金莲| 中国人与牲禽动交精品| 国产精品高清免费在线观看| 国内精品久久久久久影视8| 国产成人精品av在线| 在线精品播放av| 亚洲激情视频网站| 国产精品日韩欧美综合| 成人中文字幕+乱码+中文字幕| 国产亚洲欧洲高清一区| 日本不卡高字幕在线2019| 啊v视频在线一区二区三区| 亚洲精品国产精品国自产在线| 国产有码在线一区二区视频| 久久久成人的性感天堂| 欧美在线免费看| 色无极亚洲影院| 久久亚洲欧美日韩精品专区| 欧美国产极速在线| 亚洲人成五月天| 国产精品欧美激情| 91超碰中文字幕久久精品|