最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年05月04日 09:03:40   投稿:junjie  
這篇文章主要介紹了PostgreSQL教程(二):模式Schema詳解,本文講解了創(chuàng)建模式、public模式、權(quán)限、刪除模式、模式搜索路徑等內(nèi)容,需要的朋友可以參考下

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

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

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

復制代碼 代碼如下:

    CREATE SCHEMA myschema;
 

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

    在介紹后面的內(nèi)容之前,這里我們需要先解釋一下public模式。每當我們創(chuàng)建一個新的數(shù)據(jù)庫時,PostgreSQL都會為我們自動創(chuàng)建該模式。當?shù)卿浀皆摂?shù)據(jù)庫時,如果沒有特殊的指定,我們將以該模式(public)的形式操作各種數(shù)據(jù)對象,如:
 

復制代碼 代碼如下:

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

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

    GRANT ALL ON SCHEMA myschema TO public;
 

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

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

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

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

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

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

    在為模式下的所有函數(shù)賦予權(quán)限時,僅考慮執(zhí)行權(quán)限,如:
 
復制代碼 代碼如下:

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

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

    CREATE ROLE myschema LOGIN PASSWORD '123456'; --創(chuàng)建了和該模式關(guān)聯(lián)的角色對象。
    CREATE SCHEMA myschema AUTHORIZATION myschema; --將該模式關(guān)聯(lián)到指定的角色,模式名和角色名可以不相等。
 

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

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

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

    DROP SCHEMA myschema;
 

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

    DROP SCHEMA myschema CASCADE;
 

    
    5. 模式搜索路徑:

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

復制代碼 代碼如下:

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

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

    SET search_path TO myschema,public;
 

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

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

相關(guān)文章

  • postgresql 循環(huán)函數(shù)的簡單實現(xiàn)操作

    postgresql 循環(huán)函數(shù)的簡單實現(xiàn)操作

    這篇文章主要介紹了postgresql 循環(huán)函數(shù)的簡單實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSql從庫重新配置的詳情

    PostgreSql從庫重新配置的詳情

    這篇文章主要介紹了PostgreSql從庫重新配置的詳情,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • postgreSQL如何設(shè)置數(shù)據(jù)庫執(zhí)行超時時間

    postgreSQL如何設(shè)置數(shù)據(jù)庫執(zhí)行超時時間

    本文我們將深入探討PostgreSQL數(shù)據(jù)庫中的一個關(guān)鍵設(shè)置SET?statement_timeout,這個設(shè)置對于管理數(shù)據(jù)庫性能和優(yōu)化查詢執(zhí)行時間非常重要,讓我們一起來了解它的工作原理以及如何有效地使用它
    2024-01-01
  • PostgreSQL因大量并發(fā)插入導致的主鍵沖突的解決方案

    PostgreSQL因大量并發(fā)插入導致的主鍵沖突的解決方案

    在數(shù)據(jù)庫操作中,并發(fā)插入是一個常見的場景,然而,當大量并發(fā)插入操作同時進行時,可能會遇到主鍵沖突的問題,本文將深入探討 PostgreSQL 中解決因大量并發(fā)插入導致的主鍵沖突的方法,并通過具體的示例進行詳細說明,需要的朋友可以參考下
    2024-07-07
  • PostgreSQL 更新視圖腳本的注意事項說明

    PostgreSQL 更新視圖腳本的注意事項說明

    這篇文章主要介紹了PostgreSQL 更新視圖腳本的注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql數(shù)據(jù)庫根據(jù)年月查詢出本月的所有數(shù)據(jù)操作

    postgresql數(shù)據(jù)庫根據(jù)年月查詢出本月的所有數(shù)據(jù)操作

    這篇文章主要介紹了postgresql數(shù)據(jù)庫根據(jù)年月查詢出本月的所有數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL 序列增刪改案例

    PostgreSQL 序列增刪改案例

    這篇文章主要介紹了PostgreSQL 序列增刪改案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • pgsql鎖表后kill進程的操作

    pgsql鎖表后kill進程的操作

    這篇文章主要介紹了pgsql鎖表后kill進程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • postgresql 中的COALESCE()函數(shù)使用小技巧

    postgresql 中的COALESCE()函數(shù)使用小技巧

    這篇文章主要介紹了postgresql 中的COALESCE()函數(shù)使用小技巧,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL用戶登錄失敗自動鎖定的處理方案

    PostgreSQL用戶登錄失敗自動鎖定的處理方案

    這篇文章主要介紹了PostgreSQL用戶登錄失敗自動鎖定的解決辦法,本文給大家分享解決方案,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論

云南省| 固原市| 梧州市| 德阳市| 阿勒泰市| 新巴尔虎左旗| 松溪县| 新和县| 六盘水市| 新巴尔虎左旗| 敦化市| 乐东| 永顺县| 旬邑县| 汶上县| 台江县| 固原市| 乐清市| 时尚| 宝兴县| 闽清县| 正安县| 和平县| 清水河县| 玉林市| 肥西县| 牟定县| 襄樊市| 舟山市| 铁岭县| 蒙阴县| 平乐县| 盐城市| 包头市| 柘城县| 长白| 霞浦县| 晋江市| 宾阳县| 区。| 江油市|