麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

PostgreSQL7.0手冊-程序員手冊 -37. 擴展的 SQL: 概述

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

聚集

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


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

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


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

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

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



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

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


--------------------------------------------------------------------------------
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产免费人做人爱午夜视频 | 国产一区二区免费在线观看 | 中文字幕亚洲一区二区三区 | 亚洲一区在线免费视频 | 久久精品中文字幕一区二区三区 | 13一14毛片免费看 | 欧洲黄色一级视频 | 真人一级毛片免费 | 久久久久av69精品 | 91九色蝌蚪国产 | 激情宗合网 | 精品一区二区免费 | 日韩黄色片免费看 | 午夜视频在线观 | 日本免费aaa观看 | 婷婷久久综合九色综合色多多蜜臀 | 成熟女人特级毛片www免费 | 国产精品久久久免费 | 日韩毛片一区二区三区 | 综合97| 一级看片免费视频 | 黄wwww| 福利四区 | h色视频网站 | av色哟哟 | 最新一级毛片 | 亚洲导航深夜福利涩涩屋 | 国产91丝袜在线播放 | 亚洲日韩精品欧美一区二区 | 国产一级在线免费观看 | 亚州综合图片 | 欧美日日操 | 99精品视频久久精品视频 | 色视频在线 | 91美女视频在线观看 | 成人一区三区 | 国产精品刺激对白麻豆99 | 中国美女一级黄色片 | 久久久www成人免费毛片 | 国产宾馆3p国语对白 | 色网免费观看 |