濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > PostgreSQL教程(十三):數(shù)據(jù)庫(kù)管理詳解

PostgreSQL教程(十三):數(shù)據(jù)庫(kù)管理詳解

熱門(mén)標(biāo)簽:外呼調(diào)研系統(tǒng) 漯河外呼電話系統(tǒng) 打電話智能電銷(xiāo)機(jī)器人授權(quán) 海豐有多少商家沒(méi)有地圖標(biāo)注 辦公外呼電話系統(tǒng) 合肥公司外呼系統(tǒng)運(yùn)營(yíng)商 地圖標(biāo)注和圖片名稱的區(qū)別 重慶自動(dòng)外呼系統(tǒng)定制 美容工作室地圖標(biāo)注

一、概述:

    數(shù)據(jù)庫(kù)可以被看成是SQL對(duì)象(數(shù)據(jù)庫(kù)對(duì)象)的命名集合,通常而言,每個(gè)數(shù)據(jù)庫(kù)對(duì)象(表、函數(shù)等)只屬于一個(gè)數(shù)據(jù)庫(kù)。不過(guò)對(duì)于部分系統(tǒng)表而言,如pg_database,是屬于整個(gè)集群的。更準(zhǔn)確地說(shuō),數(shù)據(jù)庫(kù)是模式的集合,而模式包含表、函數(shù)等SQL對(duì)象。因此完整的對(duì)象層次應(yīng)該是這樣的:服務(wù)器、數(shù)據(jù)庫(kù)、模式、表或其他類型的對(duì)象。

    在與數(shù)據(jù)庫(kù)服務(wù)器建立連接時(shí),該連接只能與一個(gè)數(shù)據(jù)庫(kù)形成關(guān)聯(lián),不允許在一個(gè)會(huì)話中進(jìn)行多個(gè)數(shù)據(jù)庫(kù)的訪問(wèn)。如以postgres用戶登錄,該用戶可以訪問(wèn)的缺省數(shù)據(jù)庫(kù)為postgres,在登錄后如果執(zhí)行下面的SQL語(yǔ)句將會(huì)收到PostgreSQL給出的相關(guān)錯(cuò)誤信息。

復(fù)制代碼 代碼如下:

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

    在PostgreSQL中,數(shù)據(jù)庫(kù)在物理上是相互隔離的,對(duì)它們的訪問(wèn)控制也是在會(huì)話層次上進(jìn)行的。然而模式只是邏輯上的對(duì)象管理結(jié)構(gòu),是否能訪問(wèn)某個(gè)模式的對(duì)象是由權(quán)限系統(tǒng)來(lái)控制的。
    執(zhí)行下面的基于系統(tǒng)表的查詢語(yǔ)句可以列出現(xiàn)有的數(shù)據(jù)庫(kù)集合。
 
復(fù)制代碼 代碼如下:

    SELECT datname FROM pg_database;
 

    注:psql應(yīng)用程序的\l元命令和-l命令行選項(xiàng)也可以用來(lái)列出當(dāng)前服務(wù)器中已有的數(shù)據(jù)庫(kù)。 
   
二、創(chuàng)建數(shù)據(jù)庫(kù):

    在PostgreSQL服務(wù)器上執(zhí)行下面的SQL語(yǔ)句可以創(chuàng)建數(shù)據(jù)庫(kù)。
 

復(fù)制代碼 代碼如下:

    CREATE DATABASE db_name;
 

    在數(shù)據(jù)庫(kù)成功創(chuàng)建之后,當(dāng)前登錄角色將自動(dòng)成為此新數(shù)據(jù)庫(kù)的所有者。在刪除該數(shù)據(jù)庫(kù)時(shí),也需要該用戶的特權(quán)。如果你想讓當(dāng)前創(chuàng)建的數(shù)據(jù)庫(kù)的所有者為其它角色,可以執(zhí)行下面的SQL語(yǔ)句。
 
復(fù)制代碼 代碼如下:

    CREATE DATABASE db_name OWNER role_name;
 

三、修改數(shù)據(jù)庫(kù)配置:

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

復(fù)制代碼 代碼如下:

    ALTER DATABASE db_name SET varname TO new_value;
 

    這樣在之后基于該數(shù)據(jù)庫(kù)的會(huì)話中,被修改的配置值已經(jīng)生效。如果要撤消這樣的設(shè)置并恢復(fù)為原有的缺省值,可以執(zhí)行下面的SQL命令。
 
復(fù)制代碼 代碼如下:

    ALTER DATABASE dbname RESET varname;
 

四、刪除數(shù)據(jù)庫(kù):

    只有數(shù)據(jù)庫(kù)的所有者和超級(jí)用戶可以刪除數(shù)據(jù)庫(kù)。刪除數(shù)據(jù)庫(kù)將會(huì)刪除數(shù)據(jù)庫(kù)中包括的所有對(duì)象,該操作是不可恢復(fù)的。見(jiàn)如下刪除SQL命令:
 

復(fù)制代碼 代碼如下:

    DROP DATABASE db_name;
 

   
五、表空間:

    在PostgreSQL中,表空間表示一組文件存放的目錄位置。在創(chuàng)建之后,就可以在該表空間上創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象。通過(guò)使用表空間,管理員可以控制一個(gè)PostgreSQL服務(wù)器的磁盤(pán)布局。這樣管理員就可以根據(jù)數(shù)據(jù)庫(kù)對(duì)象的數(shù)據(jù)量和數(shù)據(jù)使用頻度等參照來(lái)規(guī)劃這些對(duì)象的存儲(chǔ)位置,以便減少I(mǎi)O等待,從而優(yōu)化系統(tǒng)的整體運(yùn)行性能。比如,將一個(gè)使用頻繁的索引放在非常可靠、高效的磁盤(pán)設(shè)備上,如固態(tài)硬盤(pán)。而將很少使用的數(shù)據(jù)庫(kù)對(duì)象存放在相對(duì)較慢的磁盤(pán)系統(tǒng)上。下面的SQL命令用于創(chuàng)建表空間。
 

復(fù)制代碼 代碼如下:

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

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

    CREATE TABLE foo(i int) TABLESPACE space1;
 

    此外,我們還可以通過(guò)修改default_tablespace配置變量,以使指定的表空間成為缺省表空間,這樣在創(chuàng)建任何數(shù)據(jù)庫(kù)對(duì)象時(shí),如果沒(méi)有顯示指定表空間,那么該對(duì)象將被創(chuàng)建在缺省表空間中,如:
 
復(fù)制代碼 代碼如下:

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

    與數(shù)據(jù)庫(kù)相關(guān)聯(lián)的表空間用于存儲(chǔ)該數(shù)據(jù)庫(kù)的系統(tǒng)表,以及任何使用該數(shù)據(jù)庫(kù)的服務(wù)器進(jìn)程創(chuàng)建的臨時(shí)文件。
    要?jiǎng)h除一個(gè)空的表空間,可以直接使用DROP TABLESPACE命令,然而要?jiǎng)h除一個(gè)包含數(shù)據(jù)庫(kù)對(duì)象的表空間,則需要先將該表空間上的所有對(duì)象全部刪除后,才可以再在刪除該表空間。

    要檢索當(dāng)前系統(tǒng)中有哪些表空間,可以執(zhí)行以下查詢,其中pg_tablespace為PostgreSQL中的系統(tǒng)表。
 

復(fù)制代碼 代碼如下:

    SELECT spcname FROM pg_tablespace;
 

    我們還可以通過(guò)psql程序的\db元命令列出現(xiàn)有的表空間。

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

標(biāo)簽:晉城 蚌埠 衡陽(yáng) 烏海 株洲 來(lái)賓 錦州 珠海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL教程(十三):數(shù)據(jù)庫(kù)管理詳解》,本文關(guān)鍵詞  PostgreSQL,教程,十三,數(shù)據(jù)庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL教程(十三):數(shù)據(jù)庫(kù)管理詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PostgreSQL教程(十三):數(shù)據(jù)庫(kù)管理詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    岐山县| 儋州市| 新闻| 广德县| 昌吉市| 沛县| 饶河县| 太湖县| 府谷县| 胶南市| 北安市| 锡林浩特市| 石楼县| 南华县| 松江区| 丹棱县| 无极县| 昌黎县| 湛江市| 西安市| 景东| 大庆市| 五台县| 高安市| 嵊州市| 鄂尔多斯市| 凤凰县| 永胜县| 嘉鱼县| 武乡县| 红桥区| 汽车| 丹阳市| 宜良县| 五台县| 拉萨市| 阳新县| 娱乐| 金门县| 常德市| 绵阳市|