HighgoDB數(shù)據(jù)庫1[1].0版本使用手冊_第1頁
HighgoDB數(shù)據(jù)庫1[1].0版本使用手冊_第2頁
HighgoDB數(shù)據(jù)庫1[1].0版本使用手冊_第3頁
HighgoDB數(shù)據(jù)庫1[1].0版本使用手冊_第4頁
HighgoDB數(shù)據(jù)庫1[1].0版本使用手冊_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、HighgoDB數(shù)據(jù)庫開發(fā)使用手冊目錄第一部分 HighgoDB安裝配置第1章 windows系統(tǒng)下,安裝配置1.1 安裝配置1、安裝準(zhǔn)備及注意事項(xiàng)軟件版本:highgo-db-1.0.msi注意:HighgoDB數(shù)據(jù)庫目錄,必須安裝在NTFS格式 磁盤下2、安裝雙擊highgo-db-1.0.msi圖標(biāo),進(jìn)行安裝。 安裝程序類別的選擇及安裝目錄的選擇,如下圖:注意安裝目錄的選擇,一定選擇NTFS格式的 磁盤。需要一個highgo的賬號名稱,注意賬號密碼和校驗(yàn)密碼的輸入。如果系統(tǒng)中沒有highgo賬號,將會自動為你創(chuàng)建該賬號。初始化數(shù)據(jù)庫,這一步,需要對管理員賬號highgo設(shè)置口令和重復(fù)口令

2、,這個就是以后對數(shù)據(jù)庫進(jìn)行操作,管理的超級用戶和口令。Secondary Logon服務(wù)的啟動計(jì)算機(jī)管理-服務(wù)和應(yīng)用程序找到Secondary Logon服務(wù)并進(jìn)行啟動 1.2 測試使用1、hgAdmin III管理平臺的連接測試 選擇Highgo DB Admin然后打開highgo db admin2、psql的連接測試 選擇psql至highgo連接highgo數(shù)據(jù)庫,進(jìn)行測試創(chuàng)建一個表查詢數(shù)據(jù)1.3 程序卸載1、卸載HighgoDB主程序2、刪除highgo用戶4、刪除HighgoDB的安裝目錄如:下圖是默認(rèn)安裝的HighgoDB安裝路徑,需要刪除。第2章 命令和工具2.1 psqlP

3、sql是HighgoDB的一個重要的交互式前端工具命令,類似于oracle的sql*plus。是HighgoDB所提供的標(biāo)準(zhǔn)數(shù)據(jù)庫訪問工具。2.1.1 連接數(shù)據(jù)庫連接數(shù)據(jù)庫的兩種方法:第一種方法:psql h ip d dbname Uuserpsql dbnam在這種連接形式中,數(shù)據(jù)庫為dbname,連接用戶為當(dāng)前登錄的Linux shell用戶或者windows系統(tǒng)登錄用戶。psql沒有指定數(shù)據(jù)庫和用戶名,即:用戶名為當(dāng)前登錄的linux用戶名,數(shù)據(jù)庫為與用戶名同名的數(shù)據(jù)庫。第二種方法:Postgrs=#c testdb userPsql命令更詳細(xì)的參數(shù),使用psql help,進(jìn)行查看退

4、出數(shù)據(jù)庫2.1.2 psql命令psql命令分為兩種類型:一種專有命令,另一種是SQL命令1、專有命令專有命令“?”列出所有的專有命令信息。2、SQL命令通過專有命令“h”列出所有的SQL命令清單。也可以詳細(xì)的顯示語法格式2.1.3 幾種常用的命令1、i命令整理腳本執(zhí)行腳本2、o命令將查詢的結(jié)果寫入到文件查看寫入的文件 如下:3、l顯示所有的數(shù)據(jù)庫4、d 顯示表 視圖和序列 dt 顯示表 d tablename 顯示表結(jié)構(gòu)2.2 hgAdmin III2.2.1 連接服務(wù)器點(diǎn)擊菜單欄中的“文件”-“添加服務(wù)器”添加名稱、主機(jī)等信息,進(jìn)行確定連接。2.2.2 hgAdmin III的使用1、配置

5、用戶、組和權(quán)限創(chuàng)建組創(chuàng)建角色2、創(chuàng)建和刪除表空間、數(shù)據(jù)庫、表和schemas創(chuàng)建表空間創(chuàng)建數(shù)據(jù)庫創(chuàng)建模式創(chuàng)建表3、編輯和插入表數(shù)據(jù)修改表結(jié)構(gòu) 選中某個字段,點(diǎn)擊右鍵屬性。右鍵單擊表xx。點(diǎn)擊查看數(shù)據(jù)。即可出現(xiàn)如下:4、在查詢窗口執(zhí)行SQL語句選擇菜單欄上“工具”“查詢工具”輸入SQL語句5、導(dǎo)出SQL查詢結(jié)果到一個文件點(diǎn)擊文件。下拉菜單選擇導(dǎo)出6、備份和恢復(fù)數(shù)據(jù)庫或者個別表刪除數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫xnlt 進(jìn)行恢復(fù)。第二部分 HighgoDB基本操作第3章 select操作3.1 select命令語法3.2 select子句的使用查詢所有的字段“*”表示所有的字段,也可以把表的各個字段逐一寫出。但

6、是編寫程序的時候,盡量避免使用“*”這種方法,因?yàn)檫@種方法影響查詢的速度。查詢指定的字段改變字段標(biāo)示3.3 from子句的使用3.4 where子句的使用3.5 order by子句的使用升序降序3.6 limit子句的使用Limit語句,在編寫分頁程序的時候,經(jīng)常使用到該子句。Limit n1 offset n2表示從結(jié)果第n2+1行開始,輸入n1行。第4章 運(yùn)算符 表達(dá)式4.1 運(yùn)算符HighgoDB的運(yùn)算符大致可以分為五大類:通用運(yùn)算符、數(shù)學(xué)運(yùn)算符、幾何運(yùn)算符、時間間隔運(yùn)算符和網(wǎng)絡(luò)運(yùn)算符。除此之外,用戶還可以自己定義運(yùn)算符。4.1.1通用運(yùn)算符 左邊的對象小于右邊的對象,結(jié)果為真,否則為

7、假= 左邊的對象小于或者等于右邊的對象,結(jié)果為真,否則為假 左邊的對象不等于右邊的對象,結(jié)果為真,否則為假= 左邊的對象等于右邊的對象,結(jié)果為真,否則為假 左邊的對象大于右邊的對象,結(jié)果為真,否則為假= 左邊的對象大于或者等于右邊的對象,結(jié)果為真,否則為假|(zhì) 連接兩個字符串4.1.2數(shù)學(xué)運(yùn)算符+ 加- 減* 乘/ 除% 取模4.1.3幾何運(yùn)算符幾何運(yùn)算符主要作用于各種幾何類型的數(shù)據(jù),如點(diǎn)、直線、多邊形等。+ 將幾何對象向右平移- 將幾何對象向左平移* 將幾何對象旋轉(zhuǎn)(順時針)/ 將幾何對象旋轉(zhuǎn)(逆時針)4.1.4時間間隔運(yùn)算符時間間隔運(yùn)算符主要作用于時間間隔(interval)類型的數(shù)據(jù)。#

8、判斷左邊的時間間隔是否小于右邊的時間間隔#= 判斷左邊的時間間隔是否小于或者等于右邊的時間間隔# 判斷左邊的時間間隔是否不等于右邊的時間間隔#= 判斷左邊的時間間隔是否等于右邊的時間間隔# 判斷左邊的時間間隔是否大于右邊的時間間隔#= 判斷左邊的時間間隔是否大于或者等于右邊的時間間隔4.1.5網(wǎng)絡(luò)運(yùn)算符網(wǎng)絡(luò)運(yùn)算符主要作用于網(wǎng)絡(luò)類型(CIDR、INET)類型的數(shù)據(jù)。4.2 表達(dá)式4.2.1常量表達(dá)式4.2.2字段表達(dá)式4.2.3函數(shù)表達(dá)式Function_name(a_expr)其中,a_expr也是表達(dá)式4.2.4聚集表達(dá)式聚集函數(shù)名(表達(dá)式)4.2.5 復(fù)合表達(dá)式將常量、變量、字段和函數(shù)組合

9、為一個符合表達(dá)式。第5章 函數(shù)Sql函數(shù)的類型可以分為兩種:單行函數(shù)和多行函數(shù)。5.1單行函數(shù)5.1.1數(shù)值函數(shù)Round() 取整數(shù)Trunc() 向零的方向截斷浮點(diǎn)數(shù)Sin() 正弦Cos() 余弦5.1.2字符串函數(shù)大小寫轉(zhuǎn)換函數(shù)LOWER 將字符串中大寫轉(zhuǎn)換成小寫UPPER 將字符串中小寫轉(zhuǎn)換成大寫INITCAP 將單詞中首個字母轉(zhuǎn)換成大寫字符操作函數(shù)SUBSTR() 取字符串LENGTH() 求字符串的長度LPAD() 左補(bǔ)指定的長度RPAD() 右補(bǔ)指定的長度REPLACE() 替換字符串TRIM() 從左邊或者右邊刪除指定字符串此函數(shù)與oracle 里面INSTR()對應(yīng)。Ora

10、cle里面的用法:INSTR(HelloWorld, W) 65.1.3日期時間函數(shù)Abstime() 取當(dāng)前的時間該函數(shù)與oracle中sysdate函數(shù)對應(yīng)。Oracle里面的用法:select sysdate from dual;5.1.4格式化函數(shù)To_char() 將時間 int float numeic其中的之一的轉(zhuǎn)換成字符串To_date() 將字符串轉(zhuǎn)換成日期To_number() 將字符串轉(zhuǎn)換成numeric類型的實(shí)數(shù)。5.2多行函數(shù)AVG() 求平均值SUM() 求總和MIN() 求最小值MAX() 求最大值COUNT()統(tǒng)計(jì)總記錄數(shù)第6章 select中其他語句6.1 g

11、roup by子句的使用如果select目標(biāo)列表中出現(xiàn)了一個聚集表達(dá)式,那么其他目標(biāo)要么是另外的聚集表達(dá)式,要么是group by子句中的字段,否則會導(dǎo)致語法錯誤。6.2 having子句的使用如果要在查詢中對聚集結(jié)果進(jìn)行條件判斷和控制,可以使用having子句。Where與having的區(qū)別:Where在應(yīng)用group by之前過濾出單獨(dú)的行,而where中表達(dá)式不允許使用聚集函數(shù)。6.3 復(fù)雜條件查詢And 邏輯和Or 邏輯或Not 邏輯非Like 模糊查詢 編程時候盡量少用,查詢速度較慢In 范圍查詢 編程時候盡量少用,查詢速度較慢Between and 范圍查詢 包含臨界值6.4 規(guī)則

12、表達(dá)式查詢編程開發(fā),最好不要使用規(guī)則表達(dá)式查詢,避免引起錯亂字符。 以指定的字符串開頭$ 以指定的字符串結(jié)束第7章 多表連接三個表的結(jié)構(gòu)及數(shù)據(jù)如下:Student學(xué)生表C 課程表Sc 成績表7.1 內(nèi)連接兩個表中某一數(shù)據(jù)項(xiàng)相等的連接稱為內(nèi)連接。連接的結(jié)果是形成一個新的數(shù)據(jù)表。 內(nèi)連接中參與連接的表的地位是相等的。內(nèi)連接的運(yùn)算順序是:1.參與的數(shù)據(jù)表中的每列與其它數(shù)據(jù)表的列相匹配,形成臨時數(shù)據(jù)表; 2.將滿足數(shù)據(jù)項(xiàng)相等的記錄從臨時數(shù)據(jù)表中選擇出來。內(nèi)連接返回查詢結(jié)果集合中僅是符合查詢條件( WHERE 搜索條件或 HAVING 條件)和連接條件的行。7.2 外連接外連接返回的查詢結(jié)果集合中的不僅

13、包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全連接)中的所有數(shù)據(jù)行。注意:外連接,oracle可以使用“(+)”來表示。但HighgoDB數(shù)據(jù)庫不支持,所以在oracle向HighgoDB數(shù)據(jù)庫遷移的時候,特別注意的地方。7.2.1 左連接包含左邊表的全部行(不管右邊的表是否存在與它們匹配的行),以及右邊表中全部匹配的行。7.2.2 右連接包含右邊表的全部行(不管左邊的表是否存在與它們匹配的行),以及左邊表中全部匹配的行。7.2.3 全連接包含左、右兩個表的全部行,不管在另一邊的表中是否存在與它們匹配的行。7.3 交叉連接交叉連接不帶WHERE 子句,它

14、返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。例如:student表中有10條記錄,而sc表中有8條記錄,則下列交叉連接檢索到的記錄數(shù)將等于10*8=80行。交叉連接在編程的時候,很少用到。但有時候在測試數(shù)據(jù)的時候可能使用到。第8章 子查詢子查詢的語法SELECTselect_listFROMtableWHEREexpr operator (SELECTselect_list FROMtable);子查詢規(guī)則 ()最好放在右邊,提高查詢的速度。子查詢類型兩種:單行子查詢多行子查詢8.1 單行子查詢1、

15、單行子查詢所用的操作符號=2、簡單的單行子查詢顯示所有年齡大于姓名為“www”同學(xué)的信息3、組函數(shù)在子查詢顯示年齡最小的學(xué)生信息4、having語句使用子查詢按照年級進(jìn)行統(tǒng)計(jì),各個年級年齡小于姓名為“bbb”的年齡總共個數(shù)。8.2 多行子查詢1、多行子查詢所用的操作符號inany 大于 大于最小 小于 大于最大 小于 小于最小2、in的使用顯示與年級為2的年齡相同的,所有學(xué)生信息3、Any的使用4、All的使用8.3 子查詢?yōu)閒rom子句子查詢作為from的子句 必須添加別名,這一點(diǎn)與oracle不一樣,需要特別注意。Oracle寫下面的語句就可以成功執(zhí)行,但是HighgoDB必須添加別名才能

16、進(jìn)行執(zhí)行。正確的如下:或者第9章 集合操作兩個相同的表結(jié)構(gòu),但是記錄不完全相同。Studenttemp表Student表9.1 union 并集union 合并集合 去掉重復(fù)行 union all 合并集合 不去掉重復(fù)行9.2 intersect 交集9.3 except 差集注意:該集合操作,與oracle有所不同。Oracle差集的 關(guān)鍵字是minus,其格式如:Select * from studentMinusSelect * from studenttemp;第10章insert update delete操作10.1 Insert操作1、insert語法結(jié)構(gòu)2、單條記錄插入下面執(zhí)行

17、了3條語句,對studenttemp表插入3條記錄。也可以對表中,某些字段插入。3、通過另外的表插入記錄4、通過腳本插入整理腳本如下:執(zhí)行腳本:10.2 Update操作1、update語法結(jié)構(gòu)簡單的更新例子:如下2、利用子查詢更新多列將學(xué)號為“1002”的學(xué)生年齡和年級更新,其年齡和年級與學(xué)號“3001”的學(xué)生信息相同3、通過另外表的條件更新數(shù)據(jù)將studenttemp表所有年齡為空的學(xué)生,統(tǒng)一更改為與student表中年齡最小的學(xué)生年齡相同。10.3 Delete操作1、Delete的語法結(jié)構(gòu)刪除表studenttmp編號為“4005”的學(xué)生信息2、通過另外表的條件刪除數(shù)據(jù)刪除studen

18、ttemp表中,與student表所有相同的記錄。第11章create table操作11.1 創(chuàng)建表1、創(chuàng)建表的語法結(jié)構(gòu)Create table向當(dāng)前數(shù)據(jù)庫中追加一個新的表,新表為執(zhí)行本命令的用戶所有。HighgoDB對表的基本限制是:一個表的字段數(shù)目不能超過1600個,每一個字段的大小不能超過8192字節(jié)(大對象字段除外),用戶表不能與系統(tǒng)表同名。2、簡單的創(chuàng)建表d test 命令是顯示test表結(jié)構(gòu)3、通過腳本文件創(chuàng)建表編寫腳本執(zhí)行腳本4、顯示表結(jié)構(gòu)d 表名 5、通過子查詢生成表創(chuàng)建語法結(jié)構(gòu)Create table 表名AsSelect * from 原表名 where 1!=1 ;wh

19、ere 1!=1 加上該條件,將表示只創(chuàng)建表結(jié)構(gòu),不復(fù)制表記錄。不加此條件,表示創(chuàng)建表結(jié)構(gòu),并且復(fù)制所有的表記錄。例如:11.2 數(shù)據(jù)類型HighgoDB的數(shù)據(jù)類型比較豐富,并且用戶可以自行定義任意多的數(shù)據(jù)類型。所以說只有全面的了解HighgoDB的數(shù)據(jù)類型,才能更好的進(jìn)行數(shù)據(jù)庫的分析設(shè)計(jì),才能更好的完成由其它數(shù)據(jù)庫到HighgoDB數(shù)據(jù)庫或者HighgoDB數(shù)據(jù)庫到其它數(shù)據(jù)庫的數(shù)據(jù)遷移。11.2.1字符串類型HighgoDB支持四種不同字符串類型:TextVarchar(length)CharChar(length)Char類型 描述單個字節(jié)的字段。Char(length)類型 存放定長的字

20、符到字符串中,不足length的字符串,用空格進(jìn)行補(bǔ)充。Varchar(length)類型 存放變長的字符串,但有長度限制Text類型 不限制字符串的數(shù)目,通常用于描述長度變化較大或長度不可預(yù)知的數(shù)據(jù)字段。Char(length)類型處理速度上要比Varchar(length)類型和Text類型要快,但是存儲上要占用很大空間。所以說在設(shè)計(jì)數(shù)據(jù)庫的時候,需要注意的地方。11.2.2數(shù)值類型Int2類型Int4、integer類型Int8類型Float4類型Float8類型Numeric類型serial類型integer、int2和int8用于描述存放整型數(shù)值的變量。Integer類型和int4類

21、型的變量都是占用4個字節(jié)的存儲容量;int2類型的變量是占用2個字節(jié)的存儲容量;int8類型的變量是占用8個字節(jié)的存儲容量。Float8和float4用于描述浮點(diǎn)類型變量。前者精度為15位數(shù)據(jù),后者的精確度為6位數(shù)據(jù)。Numeric類型用于描述用戶自定義精度的實(shí)數(shù)變量。這種類型的處理速度最慢。盡量避免使用。Serial類型是HighgoDB用其他類型構(gòu)造出來的一種特殊類型。典型的用途是創(chuàng)建表的唯一標(biāo)識。默認(rèn)情況下,能創(chuàng)建一個隱含的序列,當(dāng)刪除表的時候,隱含序列并不會被刪除。11.2.3時間類型DateTimeTimestampIntervalDate類型用于描述日期變量,包括年、月、日,它的格

22、式由DATESTYLE配置項(xiàng)的值來決定。Time類型用于描述時間數(shù)據(jù)變量,包括時、分、秒,三者之間用“:”分隔。Timestamp類型用于描述時間戳數(shù)據(jù)變量,包括年、月、日和時、分、秒Interval類型用于描述時間間隔變量,包括年、月、日和時、分、秒等分量。11.2.4邏輯類型Boolean類型 用于描述邏輯變量,只能存放兩個值:true和false11.2.5幾何類型幾何類型是HighgoDB特有的數(shù)據(jù)類型,主要用于描述存放平面二維幾何圖參數(shù)的變量。11.2.6網(wǎng)絡(luò)類型CIDR類型 Ip v4地址INET類型 Ip v4地址或主機(jī)名通常在數(shù)據(jù)庫設(shè)計(jì)的時候,由字符類型進(jìn)行代替。也減少了在編程

23、的時候進(jìn)數(shù)據(jù)類型的轉(zhuǎn)換。11.2.7數(shù)組類型數(shù)組類型是HighgoDB的一個獨(dú)創(chuàng),這種字段可以用于存放多個簡單類型的數(shù)據(jù)。數(shù)組字段可以是一維的,也可以是二維的,甚至可以是多維的。1、定義方法定義數(shù)組字段時候,可以在方括號指定數(shù)組的維數(shù)。也可以不用指定數(shù)組的維數(shù),表示可變的。2、數(shù)據(jù)的插入但是不允許3、數(shù)組字段的引用4、用途對于長度不固定、對數(shù)據(jù)類型有特別要求的數(shù)據(jù),數(shù)組字段特別有用。11.2.8大對象類型HighgoDB提供一種用于存儲超大型文本和二進(jìn)制數(shù)據(jù)的類型BLOB類型,利用BLOB類型可以存儲任何形式的文件,如圖像、文本文件、二進(jìn)制文件等。大對象的引用可以利用HighgoDB的函數(shù)lo

24、_import()將大對象插入到數(shù)據(jù)庫中,也可以利用lo_export()函數(shù)從數(shù)據(jù)庫中取出大對象。11.2.9預(yù)定義變量HighgoDB定義了一些變量,用于描述服務(wù)器的當(dāng)前時間和用戶。1、current_date顯示數(shù)據(jù)庫服務(wù)器的當(dāng)前日期2、current_time顯示數(shù)據(jù)庫服務(wù)器的當(dāng)前時間。3、current_timestamp顯示服務(wù)器的當(dāng)前時間戳。4、current_user顯示數(shù)據(jù)庫服務(wù)器當(dāng)前連接的用戶名。11.3 約束關(guān)系11.3.1非空約束在創(chuàng)建表時候,使用NOT NULL可以防止用戶給某字段賦空值。插入一條合法的記錄試圖插入一條非法的記錄11.3.2唯一性約束在創(chuàng)建表時候,使用

25、unique可以將某字段標(biāo)記為唯一字段。插入合法的記錄試圖插入非法的記錄值得注意:如果該唯一值字段,插入空值的時候,可以插入多條記錄11.3.3主鍵約束主鍵約束相當(dāng)于非空約束和唯一約束的組合。這種約束不僅能保證字段只能取非空值,而且保證字段的值在表中唯一。插入合法的記錄試圖插入非法的記錄11.3.4外鍵約束外鍵約束主要用于保證數(shù)據(jù)庫的參照完整性。例如:創(chuàng)建主表,并插入記錄創(chuàng)建子表,并插入合法的記錄試圖往test4表 插入非法的記錄注意:on update cascade (父表修改,子表也修改)on delete cascade (父表刪除,子表也刪除)on delete set null (

26、父表刪除,子表設(shè)置為null)例如:創(chuàng)建子表,并插入記錄更新主表 某條記錄刪除主表 某條記錄11.3.5數(shù)據(jù)檢驗(yàn)在創(chuàng)建表時候,使用check可以規(guī)定字段的合法值。插入合法的記錄試圖插入非法的記錄11.4 修改表結(jié)構(gòu)1、增加字段2、刪除字段3、修改字段最好的方法先建一個臨時的表,然后刪除該表,再創(chuàng)建新表,最后從臨時表把記錄導(dǎo)入進(jìn)去。11.5 刪除表刪除表的語法格式例如:刪除test7表第12章 視圖 序列 觸發(fā)器 存儲過程12.1 視圖視圖是從一個或多個基本表(或試圖)導(dǎo)出的“虛表”。視圖在使用之前必須創(chuàng)建,一旦創(chuàng)建,就可以像基本表一樣被查詢,也可以在視圖上創(chuàng)建新的視圖。視圖是只讀的,不允許對視

27、圖進(jìn)行插入、刪除和更新。注意:HighgoDB目前不直接支持物化視圖。這一點(diǎn)與oracle不相同,遷移數(shù)據(jù)的時候,若有物化視圖,需要通過規(guī)則進(jìn)行轉(zhuǎn)化。1、創(chuàng)建視圖創(chuàng)建視圖的語法結(jié)構(gòu)例如:三個基本表結(jié)構(gòu)如下:創(chuàng)建每個學(xué)生的選修課程及其成績的視圖2、刪除視圖刪除視圖的語法結(jié)構(gòu)例如:刪除stusc視圖12.2 序列序列是HighgoDB的一種特殊計(jì)算器,它由用戶創(chuàng)建,由系統(tǒng)管理。創(chuàng)建一個序列后,可以將其作為某個字段的默認(rèn)值。在insert命令的執(zhí)行期間,序列的值會被自動生成,并作為數(shù)據(jù)行的唯一性編號,存放在該數(shù)據(jù)行相應(yīng)的字段中。1、序列的創(chuàng)建序列不能由系統(tǒng)自動創(chuàng)建,必須用create sequenc

28、e命令顯示創(chuàng)建。注意:HighgoDB默認(rèn)情況下,建立的序列最大值可以是9223372036854775807,超過此值將是無效的。這一點(diǎn)與oracle是有區(qū)別的,oracle的最大值是999999999999999999999999999。三個常用的序列操作函數(shù):nextval (序列名): 函數(shù)返回下一個可用的序列計(jì)數(shù)器的值,并自動將序列計(jì)算器的值加1Currval (序列名): 函數(shù)返回當(dāng)前可用的序列計(jì)數(shù)器的值,并且不修改序列計(jì)數(shù)器的值Setval (序列名,新計(jì)數(shù)器值):函數(shù)將序列計(jì)數(shù)器的值設(shè)置為指定的值。2、序列的使用使用序列插入記錄,例如:創(chuàng)建表的時候,默認(rèn)某個字段為序列值,例如:

29、3、序列的刪除注意:當(dāng)有正在使用的序列是無法刪除的。12.3 觸發(fā)器1、觸發(fā)器的創(chuàng)建創(chuàng)建觸發(fā)器的語法結(jié)構(gòu)例如:假設(shè)有一個表a需要被觸發(fā)監(jiān)控,我們建立一個日志表alog; 創(chuàng)建觸發(fā)器函數(shù)創(chuàng)建觸發(fā)器測試2、觸發(fā)器的刪除12.4 存儲過程1、創(chuàng)建2、測試注意:不能使用create or replace procedure 存儲過程名() 來進(jìn)行創(chuàng)建,這一點(diǎn)是與oracle有所不同的。第三部分HighgoDB編程第13章 java訪問HighgoDB13.1 jdk的安裝1. 在文件夾JRE中找到j(luò)dk-1_5_0_08-windows-i586-p.exe可執(zhí)行文件,雙擊運(yùn)行;2. 出現(xiàn)許可證協(xié)議確

30、認(rèn)界面如下:3. 選擇接受條款后,點(diǎn)擊下一步:4. 默認(rèn)安裝路徑,點(diǎn)擊下一步:5. 點(diǎn)擊下一步:6. 點(diǎn)擊下一步:7. 點(diǎn)擊完成。13.2 MyEclipse環(huán)境的搭配下載MyEclipse免安裝版本,配置步驟如下:1、配置jdk打開MyEclipse,在菜單欄選擇windowpreferences一項(xiàng),然后選擇javainstalled jres最后點(diǎn)擊add 添加jdk2、配置tomcat打開MyEclipse,在菜單欄選擇windowpreferences一項(xiàng),然后選擇tomcat最后選擇安裝的tomcat的版本,并瀏覽加載13.3 HighgoDB數(shù)據(jù)庫JDBC驅(qū)動配置1、下載驅(qū)動Hi

31、ghgoDB的JDBC驅(qū)動很多,根據(jù)jdk的版本選擇自己合適的驅(qū)動。以下是jdk版本與JDBC驅(qū)動的對應(yīng)關(guān)系,一定要選擇對了,否則連接不上數(shù)據(jù)庫。 JDK 1.1 - JDBC 1. Note that with the 8.0 release JDBC 1 support has been removed, so look to update your JDK when you update your server. JDK 1.2, 1.3 - JDBC 2. JDK 1.3 + J2EE - JDBC 2 EE. This contains additional support for

32、javax.sql classes. JDK 1.4, 1.5 - JDBC 3. This contains support for SSL and javax.sql, but does not require J2EE as it has been added to the J2SE release. JDK 1.6 - JDBC4. Support for JDBC4 methods is limited. The driver builds, but the majority of new methods are stubbed out. 2、配置驅(qū)動把下載的驅(qū)動包,如:安裝的jdk

33、1.5 ,選擇的是postgresql-9.0-801.jdbc3.jar放到%tomcat%commonlib 下面。3、JDBC連接參數(shù)如下:String dbDriver = org.postgresql.Driver;String url = jdbc:postgresql:/ip地址:端口號/數(shù)據(jù)庫名;String userName=用戶名;String password=密碼;13.4 編寫程序 連接HighgoDB數(shù)據(jù)庫連接HighgoDB中aaa數(shù)據(jù)庫,student表數(shù)據(jù)如下:1、新建連接數(shù)據(jù)庫的類選擇MyEclipse的菜單欄,選擇file-class填寫class類的na

34、me名稱:比如testpostgresql3、編寫代碼import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class testpostgresql public static void main(String args) Connection ct=null;Statement sm=null;ResultSet rs=null;try /加載HighgoDB的驅(qū)動Class.forName(org.postgres

35、ql.Driver); ct=DriverManager.getConnection(jdbc:postgresql:/localhost:5432/aaa, Administrator, );sm=ct.createStatement(); /執(zhí)行查詢語句String sql=select name,num from student order by name;System.out.println(sql=+sql);rs=sm.executeQuery(sql); /循環(huán)結(jié)果,并打印while(rs.next()System.out.println(nmu=+rs.getString(2)

36、+ name=+rs.getString(1); /拋出異常catch (Exception e)e.printStackTrace();finally /關(guān)閉數(shù)據(jù)庫連接 try if(rs!=null) rs.close(); if(sm!=null) sm.close(); if(ct!=null) ct.close(); catch (Exception ex) ex.printStackTrace(); 4、編譯 運(yùn)行在項(xiàng)目管理欄中,選擇testpostgresql,右鍵選擇run as-java application5、查看結(jié)果第14章 hibernate與HighgoDB整合14

37、.1 HighgoDB中創(chuàng)建新庫及表連接HighgoDB中aaa數(shù)據(jù)庫,student表數(shù)據(jù)如下:14.2 MyEclipse中創(chuàng)建新項(xiàng)目選擇菜單欄file-new-project選擇web project進(jìn)行下一步輸入project name 選擇完成14.3 下載hibernate架包,并進(jìn)行配置1、網(wǎng)上下載hibernate架包如下:antlr.jarasm.jarasm-attrs.jarcglib-2.1.3.jarcommons-collections.jarcommons-logging.jardom4j-1.6.1.jarjta.jarlog4j-1.2.11.jarhiber

38、nate3.jarpostgresql-9.0-801.jdbc3.jar2、配置hibernate架包將以上架包拷貝到新的項(xiàng)目中去。比如:D:testhibernateWebRootWEB-INFlib目錄下面查看一下testhibernate項(xiàng)目是否加載上:首先刷新testhibernate項(xiàng)目然后選擇testhibernate項(xiàng)目,點(diǎn)擊右鍵 選擇properties再選擇java build path -libraries查看剛才拷貝的架包是否 加載過來。14.4 編寫持久類 Student.java,并創(chuàng)建hibernate映射文件student.hbm.xml1、編寫一個學(xué)生對象類

39、Student.javapackage model;public class Student private Integer num;private String name;private Integer age;private String addr;private String grade;/以下是get()/set()方法public String getAddr() return addr;public void setAddr(String addr) this.addr = addr;public Integer getAge() return age;public void se

40、tAge(Integer age) this.age = age;public String getGrade() return grade;public void setGrade(String grade) this.grade = grade;public String getName() return name;public void setName(String name) = name;public Integer getNum() return num;public void setNum(Integer num) this.num = num;2、編寫hib

41、ernate映射文件student.hbm.xml!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 2.0/EN 14.5 編寫取得session的類 HibernateUtil.javapackage persistence;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration

42、;public class HibernateUtil private static final SessionFactory sessionFactory;statictrysessionFactory=new Configuration().configure().buildSessionFactory();catch(HibernateException ex)throw new RuntimeException(ex.getMessage();public static Session currntSession() throws HibernateExceptionSession s

43、=sessionFactory.openSession();return s;public static void closeSession(Session s)if(s!=null)s.close();14.6 編寫操作數(shù)據(jù)庫的java文件 DAOImp.javapackage persistence;import java.util.List;import model.Student;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import o

44、rg.hibernate.Transaction;public class DAOImp static Session session=null;/創(chuàng)建新的學(xué)生信息public static void createStu(Student stu)trysession=HibernateUtil.currntSession();Transaction tx=session.beginTransaction();session.save(stu);mit();catch(HibernateException ex)ex.printStackTrace();finallyHibernateUtil.

45、closeSession(session);/刪除學(xué)生信息public static void delStu(Integer num)trysession=HibernateUtil.currntSession();Transaction tx=session.beginTransaction();Student stu=(Student)session.get(Student.class, num);session.delete(stu);mit();catch(HibernateException ex)ex.printStackTrace();finallyHibernateUtil.c

46、loseSession(session);/修改學(xué)生信息public static void mdStu(Student stu)trysession=HibernateUtil.currntSession();Transaction tx=session.beginTransaction();session.update(stu);mit();catch(HibernateException ex)ex.printStackTrace();finallyHibernateUtil.closeSession(session);/顯示所有學(xué)生信息public static List getAllStu()List list=null;trysession=HibernateUtil.currntSession();Transaction tx=session.beginTransaction();Query q=session.createQuery(from St

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論