国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > PostgreSQL > 正文

PostgreSQL7.0手冊(cè)-程序員手冊(cè) -37. 擴(kuò)展的 SQL: 概述

2019-09-08 23:33:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
第三十七章. 擴(kuò)展 SQL:概述
內(nèi)容 
擴(kuò)展性是如何工作的 
Postgres 類型系統(tǒng) 
關(guān)于 Postgres 系統(tǒng)表 
在本章的剩余部分,我們將討論你如何通過(guò)增加下面幾種對(duì)象來(lái)擴(kuò)展 PostgresSQL查詢語(yǔ)言: 
函數(shù)
類型
操作符 

聚集

擴(kuò)展性是如何工作的
Postgres 是可擴(kuò)展的是因?yàn)樗牟僮魇潜眚?qū)動(dòng)的.如果你對(duì)標(biāo)準(zhǔn)的關(guān)系系統(tǒng)熟悉,你知道它們把與數(shù)據(jù)庫(kù),表,字段等的信息存儲(chǔ)在一個(gè)被稱為系統(tǒng)表的地方.(有些系統(tǒng)稱這些為數(shù)據(jù)字典).這些表在用戶面前表現(xiàn)為表,和其他表一樣,只不過(guò) DBMS 把它自己內(nèi)部的信息存放在此.Postgres 和標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫(kù)的系統(tǒng)表有一個(gè)關(guān)鍵區(qū)別是Postgres 在它的系統(tǒng)表里面存儲(chǔ)了更多的信息?。〔粌H是關(guān)于表和列/字段的信息,而且還有關(guān)于它們的類型,函數(shù),訪問(wèn)方式等的信息.這些表可以被用戶修改,而且由于Postgres 的內(nèi)部操作是以這些表為基礎(chǔ)的,這就意味著 Postgres 可以被用戶所擴(kuò)展.相比之下,傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)只能通過(guò)修改DBMS 內(nèi)部的硬代碼或裝載由 DBMS 供應(yīng)商提供的特殊的模塊來(lái)擴(kuò)展. 
Postgres 與大多數(shù)其他數(shù)據(jù)庫(kù)管理器不同的是它還可以通過(guò)動(dòng)態(tài)裝載的方法與用戶書寫的代碼偶合在一起.也就是說(shuō),用戶可以把一個(gè)目標(biāo)代碼文件(例如,一個(gè)編譯好的 .o 文件或一個(gè)共享庫(kù))聲明為一個(gè)新類型或函數(shù)的實(shí)現(xiàn),這時(shí)Postgres 將根據(jù)需要裝載它們.用 SQL 寫的代碼甚至更容易加入到服務(wù)器中去.這種可以"動(dòng)態(tài)地"更改其操作的能力使Postgres 特別適合于新應(yīng)用和新存儲(chǔ)結(jié)構(gòu)的快速定型.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

Postgres 類型系統(tǒng)
Postgres 的類型系統(tǒng)可以有好幾種方法分解開來(lái).類型可以分為基本類型和復(fù)合類型.基本類型是那些用象C 這樣的語(yǔ)言實(shí)現(xiàn)的(例如 int4)。這些數(shù)據(jù)類型通常與那些常被認(rèn)為是"抽象數(shù)據(jù)類型"的類型對(duì)應(yīng);Postgres 對(duì)這些數(shù)據(jù)類型只能通過(guò)用戶提供的方法來(lái)操作,并且對(duì)這些數(shù)據(jù)類型的特性的理解只限于用戶所描述的范圍.復(fù)合類型是當(dāng)用戶創(chuàng)建表時(shí)創(chuàng)建的,EMP是復(fù)合類型的一個(gè)例子. 
Postgres 對(duì)這些類型的存儲(chǔ)方法只有一種(在存儲(chǔ)表的所有記錄的文件里),但是用戶可以從查詢語(yǔ)言中"深入觀察"這些屬性,而且可以通過(guò)在字段上定義索引(這類)方法來(lái)優(yōu)化對(duì)這些類型的檢索.Postgres的基礎(chǔ)類型可以進(jìn)一步分為內(nèi)建類型和用戶定義類型.內(nèi)建類型(象 int4)是那些編譯進(jìn)入系統(tǒng)里面去的類型.用戶定義類型是那些由用戶用后面提到的方法創(chuàng)建的類型.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

關(guān)于 Postgres 系統(tǒng)表
在介紹了擴(kuò)展性的基本概念后,我們現(xiàn)在看看系統(tǒng)表實(shí)際上是個(gè)什么布局.你目前可以忽略這章,但是如果沒有這一章的信息,后面的一些章節(jié)的內(nèi)容會(huì)變得很難懂,所以你最好把這一章打上標(biāo)記,以備查詢.所有系統(tǒng)表都具有以 pg_ 開頭的名稱.下面的表格包含可能對(duì)最終用戶有用的信息.(還有許多其他系統(tǒng)表,但是很難得有機(jī)會(huì)直接對(duì)它們進(jìn)行查詢.) 
  
表 37-1. Postgres 系統(tǒng)表 
   
 
 表名稱 描述 
pg_database 數(shù)據(jù)庫(kù) 
pg_class 表 
pg_attribute 表屬性 
pg_index 從索引 
pg_proc 過(guò)程 ( C 和 SQL) 
pg_type 類型 (包括基本類型和復(fù)合類型) 
pg_operator 操作符 
pg_aggregate 聚集和聚集函數(shù) 
pg_am 訪問(wèn)方法 
pg_amop 訪問(wèn)方法操作符 
pg_amproc 訪問(wèn)方法支持函數(shù) 
pg_opclass 訪問(wèn)方法操作符表 

圖 37-1. 主要的Postgres 系統(tǒng)表 



參考手冊(cè)給出了關(guān)于這些表和它們的字段的更多的詳細(xì)信息.不過(guò),主要的 Postgres 系統(tǒng)表 顯示了系統(tǒng)表的主要成員和它們的字段.(與其他表無(wú)關(guān)的字段在這里沒有顯示出來(lái),除非它們是主鍵的一部分.)這個(gè)表看起來(lái)或多或少有些難懂,除非你真正看了這些表的內(nèi)容而且看了它們之間是如何相關(guān)的.從現(xiàn)在開始,我們要從這個(gè)圖里面挖出下面這些東西: 
在后面的幾章里,我們將提供一些在系統(tǒng)表上的聯(lián)合查詢--這些查詢展示了我們?cè)跀U(kuò)展系統(tǒng)時(shí)所需要的信息.仔細(xì)研究這張圖會(huì)讓我們對(duì)這些聯(lián)合查詢(通常是三或四路聯(lián)合)更容易理解,因?yàn)檫@樣你就能看到在查詢里用到的字段是其他表的外部鍵字.
許多不同的特性(表,屬性,函數(shù),類型,訪問(wèn)模式等.)是按照這個(gè)結(jié)構(gòu)緊密集成在一起的.因而一個(gè)簡(jiǎn)單的 create 命令就有可能更改許多這些表.
類型和過(guò)程是這個(gè)圖表的核心.

  
注意:我們?cè)谶@里多多少少把 過(guò)程 和 函數(shù) 混起來(lái)用. 
幾乎每個(gè)表都包含其他一個(gè)或多個(gè)表的字段的引用.例如, Postgres 經(jīng)常使用類型簽名(例如,函數(shù)或操作符的)來(lái)標(biāo)識(shí)其他表的唯一記錄. 
有許多字段和關(guān)系有明顯的含義,但是還有許多(尤其是那些與訪問(wèn)模式打交道的字段)沒有(明顯含義).表 pg_am,pg_amop,pg_amproc,pg_operator 和 pg_opclass 之間的關(guān)系尤其難以理解,所以我們將在討論完基本擴(kuò)展后更深入地討論之(在類型接口和用于索引的操作符章節(jié)之后).


--------------------------------------------------------------------------------
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 恩平市| 琼海市| 桂阳县| 清苑县| 柘荣县| 临洮县| 公主岭市| 夏津县| 信丰县| 南投市| 浦县| 泾川县| 胶州市| 灵武市| 青州市| 隆回县| 阳原县| 怀宁县| 府谷县| 鄂托克前旗| 曲周县| 吉安县| 普兰店市| 浮梁县| 桦川县| 漳平市| 赣榆县| 浮山县| 赣州市| 阿克陶县| 沧州市| 临朐县| 绥江县| 焦作市| 贺兰县| 搜索| 湘潭市| 揭西县| 平乐县| 海宁市| 慈溪市|