




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 PostgreSQL數據庫一:PostgreSQL介紹1.PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名為POSTGRES,版本 4.2為基礎的對象關系型數據庫管理系統(ORDBMS)。PostgreSQL支持大部分 SQL標準并且提供了許多其他現代特性:復雜查詢、外鍵、觸發器、視圖、事務完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言。并且,因為許可證的靈活,任何人都可以以任何目的免費使用、修改、和分發 PostgreSQL,不管是私用、商用、還是學術研究使用
2、。2.PostgreSQL圖標3. PostgreSQL優點有目前世界上最豐富的數據類型的支持支持,其中有些數據類型可以說連商業數據庫都不具備,具體類型下文會說明.PostgreSQL擁有一支非常活躍的開發隊伍,而且在許多黑客的努力下,PostgreSQL 的質量日益提高PostgreSQL 對接口的支持也是非常豐富的,幾乎支持所有類型的數據庫客戶端接口。這一點也可以說是 PostgreSQL 一大優點。4. PostgreSQL缺點首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問題:過于學院味,因為首先它的目的是數據庫研究,因
3、此不論在穩定性, 性能還是使用方方面面,長期以來一直沒有得到重視,直到 PostgreSQL 項目開始以后,情況才越來越好,PostgreSQL 已經完全可以勝任任何中上規模范圍內的應用范圍的業務其次,PostgreSQL 的確還欠缺一些比較高端的數據庫管理系統需要的特性,比如數據庫集群,更優良的管理工具和更加自動化的系統優化功能 等提高數據庫性能的機制等。5. 目前官方最新版本:9.3.2二、windows下安裝過程1、開始安裝: 2、 選擇程序安裝目錄: 注:安裝 PostgreSQL 的分區最好是 NTFS 格式的。PostgreSQL 首要任務是要保證數據的完整性,而 FAT 和 FA
4、T32 文件系統不能提供這樣的可靠性保障,而且 FAT 文件系統缺乏安全性保障,無法保證原始數據在未經授權的情況下被更改。此外,PostgreSQL 所使用的"多分點"功能完成表空間的這一特征在FAT文件系統下無法實現。然而,在某些系統中,只有一種 FAT 分區,這種情況下,可以正常安裝 PostgreSQL,但不要進行數據庫的初始化工作。安裝完成后,在 FAT 分區上手動執行 initdb.exe 程序即可,但不能保證其安全性和可靠性,并且建立表空間也會失敗。 3、 選擇數據存放目錄: 4、 輸入數據庫超級用戶和創建的OS用戶的密碼 注:數據庫超級用戶是一個非管理員賬戶,
5、這是為了減少黑客利用在 PostgreSQL 發現的缺陷對系統造成損害,因此需要對數據庫超級用戶設置密碼,如下圖所示,安裝程序自動建立的服務用戶的用戶名默認為 postgres。 5、 設置服務監聽端口,默認為5432 6、 選擇運行時語言環境 注:選擇數據庫存儲區域的運行時語言環境(字符編碼格式)。在選擇語言環境時,若選擇"default locale"可能會導致安裝不正確;同時,PostgreSQL 不支持 GBK 和 GB18030 作為字符集,如果選擇其它四個中文字符集:中文繁體 香港(ChineseTraditional, Hong Kong S.A.R.)、中文
6、簡體 新加坡(ChineseSimplified, Singapore)、中文繁體 臺灣(ChineseTraditional, Taiwan)和中文繁體 澳門(ChineseTraditional, Marco S.A.R.),會導致查詢結果和排序效果不正確。建議選擇"C",即不使用區域。-我選擇了default localt,安裝正確;建議選擇default localt。 7、 安裝過程(2分鐘) 8、 安裝完成注:多選框是安裝額外的驅動和工具,可以不點。在安裝目錄可以看到其中:data存放數據文件、日志文件、控制文件、配置文件等。uninstall-postgres
7、ql.exe用于卸載已安裝的數據庫管理系統。pg_env.bat里配置了數據庫的幾個環境變量. 3、 圖形化界面pgAdmin(大象) 對于每種數據庫管理系統,都有相當多的設計與管理工具(可視化界面管理工具),有的是數據庫廠商自己提供的(一般都至少有一個),有的是第三方公司開發的,你甚至可以自己寫一個簡單易用的管理工具。例如Oracle的Oracle SQL Developer(自己開發的)、PLSQL Developer(第三方公司開發的)、SQL Server Management Studio(自己開發的)、PostgreSQL就有好幾款流行的管理工具,例如:pgAdmin、navica
8、t_pgsql、phppgsql等。pgAdmin是一個針對PostgreSQL數據庫的設計和管理接口,可以在大多數操作系統上運行。軟件用C+編寫,具有很優秀的性能。pgadmin 是與 Postgres 分開發布的,可以從下載。目前裝個全功能的PostgreSQL數據庫,自帶該管理工具。打開pgAdmin,可以看到在第一部分安裝的本地數據庫的屬性,如下圖所示: 成功連接服務器后,如下圖所示:圖中可以看出,新安裝的PostgreSQL數據庫管理系統帶有一個數據庫postgres;已建好兩個表空間:pg_default、pg_global。initdb.exe初始化
9、的兩個默認表空間pg_global、pg_default。數據庫默認的表空間pg_default 是用來存儲系統目錄對象、用戶表、用戶表index、和臨時表、臨時表index、內部臨時表的默認空間,他是模板數據庫template0和template1的默認表空間。initdb.exe初始化的兩個默認表空間pg_global、pg_default。數據庫默認的表空間pg_global是用來存儲共享系統目錄的默認空間。pg_default 為 PostgreSQL也可以理解成系統表空間,它對應的物理位置為 $PGDATA/base目錄。在PostgreSQL(pg_catalog)下可以看到pos
10、tgers數據庫的一些數據字典和數據字典視圖。新建一個服務器連接,連接遠程服務器上的PostgreSQL數據庫(假設已有遠程服務器上已安裝好PostgreSQL數據庫管理系統): 4、 Pgsql 對于每種數據庫管理系統,都會提供一個命令行管理接口,例如Oracle的sqlplus,SQL Server的isql和osql等。凡是用圖形管理界面可以實現的功能原則上都可以通過命令行界面命令實現。兩者各有優缺點,使用場合不同。在windows下當然常用圖形管理界面,因為在圖像管理界面中往往都嵌有命令行工具,而在unix和linux下,當然就常用命令行工具了,除了我們在類unix下主要使用字符界面的
11、原因外,還因為大部分情況下我們只能通過telnet或ssh工具遠程連接服務器進行操作,此時也只能使用命令行了。從開始目錄打開SQL shell(pgsql)輸入密碼得到如下圖界面: 5、 PostgreSQL常用數據類型一、數值類型1. 整數類型: 類型smallint、integer和bigint存儲各種范圍的全部是數字的數,也就是沒有小數部分的數字。試圖存儲超出范圍以外的數值將導致一個錯誤。常用的類型是integer,因為它提供了在范圍、存儲空間和性能之間的最佳平衡。一般只有在磁盤空間緊張的時候才使用smallint。而只有在integer的范圍不夠的時候才使用bigint,因為前者(in
12、teger)絕對快得多。2. 任意精度數值: 類型numeric可以存儲最多1000位精度的數字并且準確地進行計算。因此非常適合用于貨幣金額和其它要求計算準確的數量。不過,numeric類型上的算術運算比整數類型或者浮點數類型要慢很多。 numeric字段的最大精度和最大比例都是可以配置的。要聲明一個類型為numeric的字段,你可以用下面的語法: NUMERIC(precision,scale) 比如數字23.5141的精度為6,而刻度為4。 在目前的PostgreSQL版本中,decimal和numeric是等效的。3. 浮點數類型: 數據類型real和double是不準確的、犧牲精度的數
13、字類型。不準確意味著一些數值不能準確地轉換成內部格式并且是以近似的形式存儲的,因此存儲后再把數據打印出來可能顯示一些缺失。4. Serial(序號)類型: serial和bigserial類型不是真正的類型,只是為在表中設置唯一標識做的概念上的便利。 CREATE TABLE tablename ( colname SERIAL ); 等價于 CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename( colname integer DEFAULT nextval('tablename_colname_seq')
14、 NOT NULL ); 這樣,我們就創建了一個整數字段并且把它的缺省數值安排為從一個序列發生器取值。應用了一個NOT NULL約束以確??罩挡粫徊迦?。在大多數情況下你可能還希望附加一個UNIQUE或者PRIMARY KEY約束避免意外地插入重復的數值,但這個不是自動發生的。因此,如果你希望一個序列字段有一個唯一約束或者一個主鍵,那么你現在必須聲明,就像其它數據類型一樣。 還需要另外說明的是,一個serial類型創建的序列在其所屬字段被刪除時,該序列也將被自動刪除,但是其它情況下是不會被刪除的。因此,如果你想用同一個序列發生器同時給幾個字段提供數據,那么就應該以獨立對象的方式創建該序列發生器
15、。2、 字符類型SQL 定義了兩種基本的字符類型,varchar(n)和char(n),這里的n是一個正整數。兩種類型都可以存儲最多n個字符長的字串,試圖存儲更長的字串到這些類型的字段里會產生一個錯誤,除非超出長度的字符都是空白,這種情況下該字串將被截斷為最大長度。如果沒有長度聲明,char等于char(1),而varchar則可以接受任何長度的字串。這里需要注意的是,如果是將數值轉換成char(n)或者varchar(n),那么超長的數值將被截斷成n個字符,而不會拋出錯誤。最后需要提示的是,這三種類型之間沒有性能差別,只不過是在使用char類型時增加了存儲尺寸。雖然在某些其它的數據庫系統里,
16、char(n)有一定的性能優勢,但在PostgreSQL里沒有。在大多數情況下,應該使用text或者varchar。3、 日期/時間類型1. 日期/時間輸入: 任何日期或者時間的文本輸入均需要由單引號包圍,就象一個文本字符串一樣。日期格式時間格式時間戳類型的有效輸入由一個日期和時間的聯接組成,后面跟著一個可選的時區。因此,1999-01-08 04:05:06和1999-01-08 04:05:06 -8:00都是有效的數值。2,示例在插入數據之前先查看datestyle系統變量的值:Sql: 輸出窗口5、 布爾類型:PostgreSQL支持標準的SQL boolean數據類型。boolean
17、只能有兩個狀態之一:真(True)或 假(False)。該類型占用1個字節。"真"值的有效文本值是:TRUE ,'t' ,'true', 'y' ,'yes' ,'1'而對于"假"而言,你可以使用下面這些:FALSE ,'f' ,'false' ,'n' ,'no' ,'0'6、 位串類型:位串就是一串1和0的字串。它們可以用于存儲和視覺化位掩碼。我們有兩種類型的SQL位類型:bit(n)和bit
18、 varying(n); 這里的n是一個正整數。bit類型的數據必須準確匹配長度n; 試圖存儲短些或者長一些的數據都是錯誤的。類型bit varying數據是最長n的變長類型;更長的串會被拒絕。寫一個沒有長度的bit等效于bit(1),沒有長度的bit varying相當于沒有長度限制。 針對該類型,最后需要提醒的是,如果我們明確地把一個位串值轉換成bit(n),那么它的右邊將被截斷或者在右邊補齊零,直到剛好n位,而不會拋出任何錯誤。類似地,如果我們明確地把一個位串數值轉換成bit varying(n),如果它超過n位,那么它的右邊將被截斷。 見如下具體使用方式:這句sql執行時就會報錯,因為
19、.a的數據的長度是3,如果所插數據長度不為三則報錯.注:(:)為轉換符7、 數組類型:1. 數組類型聲明: 創建字段含有數組類型的表。 插入數組數據2查詢數組數據和其他語言一樣,PostgreSQL中數組也是通過下標數字(寫在方括弧內)的方式進行訪問,只是PostgreSQL中數組元素的下標是從1開始n結束。PostgreSQL中還提供了訪問數組范圍的功能,即ARRAY腳標下界:腳標上界。3. 修改數組數據代替全部數組值:更新數組中某一元素:更新數組某一范圍的元素:直接賦值擴大數組:8、 復合類型PostgreSQL中復合類型有些類似于C語言中的結構體,也可以被視為Oracle中的記錄類型,但
20、是還是感覺復合類型這個命名比較貼切。它實際上只是一個字段名和它們的數據類型的列表。PostgreSQL允許像簡單數據類型那樣使用復合類型。比如,表字段可以聲明為一個復合類型。CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric );和聲明一個數據表相比,聲明類型時需要加AS關鍵字,同時在聲明TYPE時不能定義任何約束。下面我們看一下如何在表中指定復合類型的字段,如:CREATE TABLE on_hand ( item inventory_item, count integer);最后需要指出
21、的是,在創建表的時候,PostgreSQL也會自動創建一個與該表對應的復合類型,名字與表字相同,即表示該表的復合類型。復合類型值輸入: 我們可以使用文本常量的方式表示復合類型值,即在圓括號里包圍字段值并且用逗號分隔它們。你也可以將任何字段值用雙引號括起,如果值本身包含逗號或者圓括號,那么就用雙引號括起,對于上面的inventory_item復合類型的輸入如下:'("fuzzy dice",42,1.99)'如果希望類型中的某個字段為NULL,只需在其對應的位置不予輸入即可,如下面的輸入中price字段的值為NULL, '("fuzzy di
22、ce",42,)' 如果只是需要一個空字串,而非NULL,寫一對雙引號,如: '("",42,)'在更多的場合中PostgreSQL推薦使用ROW表達式來構建復合類型值,使用該種方式相對簡單,無需考慮更多標識字符問題,如: ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL) 注:對于ROW表達式,如果里面的字段數量超過1個,那么關鍵字ROW就可以省略,因此以上形式可以簡化為: ('fuzzy dice', 42, 1.99) ('', 4
23、2, NULL)訪問復合類型: 訪問復合類型中的字段和訪問數據表中的字段在形式上極為相似,只是為了對二者加以區分,PostgreSQL設定在訪問復合類型中的字段時,類型部分需要用圓括號括起,以避免混淆,如: SELECT (item).name FROM on_hand WHERE (item).price > 9.99; 如果在查詢中也需要用到表名,那么表名和類型名都需要被圓括號括起,如: SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9.99;修改復合類型: 見如下幾個示例: -直接插入
24、復合類型的數據,這里是通過ROW表達式來完成的。 INSERT INTO on_hand(item) VALUES(ROW("fuzzy dice",42,1.99); -在更新操作中,也是可以通過ROW表達式來完成。 UPDATE on_hand SET item = ROW("fuzzy dice",42,1.99) WHERE count = 0; -在更新復合類型中的一個字段時,我們不能在SET后面出現的字段名周圍加圓括號, 但是在等號右邊的表達式里引用同一個字段時卻需要圓括號。 UPDATE on_hand SET item.price = (item).price + 1 WHERE count = 0; -可以在插入中,直接插入復合類型中字段。 INSERT INTO on_hand (item.supplier_id, item.price) VALUES(100, 2.2);九 postgreS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創新驅動下數據要素流動網絡的演化機制
- 智能投顧算法與金融市場預測-洞察闡釋
- 超微結構對農產品營養成分釋放的影響研究-洞察闡釋
- 虛擬現實技術演進-洞察闡釋
- 2025年甘肅省天水市中考生物試卷及答案
- 長江職業學院《電氣控制與PC實驗》2023-2024學年第二學期期末試卷
- 廈門軟件職業技術學院《國際商務談判模擬實踐》2023-2024學年第二學期期末試卷
- 廣元中核職業技術學院《工程項目招投標》2023-2024學年第二學期期末試卷
- 廣東機電職業技術學院《配飾設計與制作》2023-2024學年第二學期期末試卷
- 末日主題題目大全及答案
- 律師事務所設立承諾書
- 2024陜西延長石油氣田公司遴選選聘筆試參考題庫附帶答案詳解
- 安全與發展同步進行
- 民盟入盟申請書(通用6篇)
- 調度自動化系統主站信息自動聯調技術規范
- 中藥材種植及深加工項目建議書
- 監理抽檢表 - 06防護支擋工程
- 直腸惡性腫瘤的護理查房課件
- 稅收籌劃 第4版 課件全套 蔡昌 第1-12章 稅收籌劃的基礎理論-跨國經營的稅收籌劃
- 高等數學(南京理工大學)智慧樹知到課后章節答案2023年下南京理工大學
- 光污染調查報告
評論
0/150
提交評論