婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL教程(十三):數據庫管理詳解

PostgreSQL教程(十三):數據庫管理詳解

熱門標簽:外呼調研系統 漯河外呼電話系統 打電話智能電銷機器人授權 海豐有多少商家沒有地圖標注 辦公外呼電話系統 合肥公司外呼系統運營商 地圖標注和圖片名稱的區別 重慶自動外呼系統定制 美容工作室地圖標注

一、概述:

    數據庫可以被看成是SQL對象(數據庫對象)的命名集合,通常而言,每個數據庫對象(表、函數等)只屬于一個數據庫。不過對于部分系統表而言,如pg_database,是屬于整個集群的。更準確地說,數據庫是模式的集合,而模式包含表、函數等SQL對象。因此完整的對象層次應該是這樣的:服務器、數據庫、模式、表或其他類型的對象。

    在與數據庫服務器建立連接時,該連接只能與一個數據庫形成關聯,不允許在一個會話中進行多個數據庫的訪問。如以postgres用戶登錄,該用戶可以訪問的缺省數據庫為postgres,在登錄后如果執行下面的SQL語句將會收到PostgreSQL給出的相關錯誤信息。

復制代碼 代碼如下:

    postgres=# SELECT * FROM MyTest."MyUser".testtables;
    ERROR:  cross-database references are not implemented: "otherdb.otheruser.sometable"
    LINE 1: select * from otherdb.otheruser.sometable
 

    在PostgreSQL中,數據庫在物理上是相互隔離的,對它們的訪問控制也是在會話層次上進行的。然而模式只是邏輯上的對象管理結構,是否能訪問某個模式的對象是由權限系統來控制的。
    執行下面的基于系統表的查詢語句可以列出現有的數據庫集合。
 
復制代碼 代碼如下:

    SELECT datname FROM pg_database;
 

    注:psql應用程序的\l元命令和-l命令行選項也可以用來列出當前服務器中已有的數據庫。 
   
二、創建數據庫:

    在PostgreSQL服務器上執行下面的SQL語句可以創建數據庫。
 

復制代碼 代碼如下:

    CREATE DATABASE db_name;
 

    在數據庫成功創建之后,當前登錄角色將自動成為此新數據庫的所有者。在刪除該數據庫時,也需要該用戶的特權。如果你想讓當前創建的數據庫的所有者為其它角色,可以執行下面的SQL語句。
 
復制代碼 代碼如下:

    CREATE DATABASE db_name OWNER role_name;
 

三、修改數據庫配置:

    PostgreSQL服務器提供了大量的運行時配置變量,我們可以根據自己的實際情況為某一數據庫的某一配置變量指定特殊值,通過執行下面的SQL命令可以使該數據庫的某一配置被設置為指定值,而不再使用缺省值。
 

復制代碼 代碼如下:

    ALTER DATABASE db_name SET varname TO new_value;
 

    這樣在之后基于該數據庫的會話中,被修改的配置值已經生效。如果要撤消這樣的設置并恢復為原有的缺省值,可以執行下面的SQL命令。
 
復制代碼 代碼如下:

    ALTER DATABASE dbname RESET varname;
 

四、刪除數據庫:

    只有數據庫的所有者和超級用戶可以刪除數據庫。刪除數據庫將會刪除數據庫中包括的所有對象,該操作是不可恢復的。見如下刪除SQL命令:
 

復制代碼 代碼如下:

    DROP DATABASE db_name;
 

   
五、表空間:

    在PostgreSQL中,表空間表示一組文件存放的目錄位置。在創建之后,就可以在該表空間上創建數據庫對象。通過使用表空間,管理員可以控制一個PostgreSQL服務器的磁盤布局。這樣管理員就可以根據數據庫對象的數據量和數據使用頻度等參照來規劃這些對象的存儲位置,以便減少IO等待,從而優化系統的整體運行性能。比如,將一個使用頻繁的索引放在非常可靠、高效的磁盤設備上,如固態硬盤。而將很少使用的數據庫對象存放在相對較慢的磁盤系統上。下面的SQL命令用于創建表空間。
 

復制代碼 代碼如下:

    CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data';
 

    需要說明的是,表空間指定的位置必須是一個現有的空目錄,且屬于PostgreSQL系統用戶,如postgres。在成功創建之后,所有在該表空間上創建的對象都將被存放在這個目錄下的文件里。
    在PostgreSQL中只有超級用戶可以創建表空間,但是在成功創建之后,就可以允許普通數據庫用戶在其上創建數據庫對象了。要完成此操作,必須在表空間上給這些用戶授予CREATE權限。表、索引和整個數據庫都可以放在特定的表空間里。見如下SQL命令:
 
復制代碼 代碼如下:

    CREATE TABLE foo(i int) TABLESPACE space1;
 

    此外,我們還可以通過修改default_tablespace配置變量,以使指定的表空間成為缺省表空間,這樣在創建任何數據庫對象時,如果沒有顯示指定表空間,那么該對象將被創建在缺省表空間中,如:
 
復制代碼 代碼如下:

    SET default_tablespace = space1;
    CREATE TABLE foo(i int);
 

    與數據庫相關聯的表空間用于存儲該數據庫的系統表,以及任何使用該數據庫的服務器進程創建的臨時文件。
    要刪除一個空的表空間,可以直接使用DROP TABLESPACE命令,然而要刪除一個包含數據庫對象的表空間,則需要先將該表空間上的所有對象全部刪除后,才可以再在刪除該表空間。

    要檢索當前系統中有哪些表空間,可以執行以下查詢,其中pg_tablespace為PostgreSQL中的系統表。
 

復制代碼 代碼如下:

    SELECT spcname FROM pg_tablespace;
 

    我們還可以通過psql程序的\db元命令列出現有的表空間。

您可能感興趣的文章:
  • PostgreSQL教程(一):數據表詳解
  • PostgreSQL教程(二):模式Schema詳解
  • PostgreSQL教程(三):表的繼承和分區表詳解
  • PostgreSQL教程(四):數據類型詳解
  • PostgreSQL教程(五):函數和操作符詳解(1)
  • PostgreSQL教程(六):函數和操作符詳解(2)
  • PostgreSQL教程(七):函數和操作符詳解(3)
  • PostgreSQL教程(八):索引詳解
  • PostgreSQL教程(九):事物隔離介紹
  • PostgreSQL教程(十):性能提升技巧
  • PostgreSQL教程(十一):服務器配置
  • PostgreSQL教程(十二):角色和權限管理介紹
  • PostgreSQL教程(十四):數據庫維護

標簽:晉城 蚌埠 衡陽 烏海 株洲 來賓 錦州 珠海

巨人網絡通訊聲明:本文標題《PostgreSQL教程(十三):數據庫管理詳解》,本文關鍵詞  PostgreSQL,教程,十三,數據庫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL教程(十三):數據庫管理詳解》相關的同類信息!
  • 本頁收集關于PostgreSQL教程(十三):數據庫管理詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 靖西县| 广昌县| 嵊州市| 清水河县| 抚松县| 永川市| 陵水| 阿瓦提县| 犍为县| 盈江县| 伊川县| 灵石县| 长汀县| 闽侯县| 奎屯市| 商水县| 淳化县| 固阳县| 建昌县| 开平市| 长兴县| 巫山县| 安义县| 高唐县| 长治市| 札达县| 西平县| 潜江市| 瑞安市| 仁布县| 随州市| 长海县| 城口县| 张家港市| 贵南县| 旬邑县| 淮安市| 黑龙江省| 兴国县| 岑溪市| 红安县|