sql 語(yǔ)言使用手冊(cè)_第1頁(yè)
sql 語(yǔ)言使用手冊(cè)_第2頁(yè)
sql 語(yǔ)言使用手冊(cè)_第3頁(yè)
sql 語(yǔ)言使用手冊(cè)_第4頁(yè)
sql 語(yǔ)言使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩252頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

DMSQL語(yǔ)言使用手冊(cè)

武漢華工達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司

2005年09月

目錄

第1章結(jié)構(gòu)化查詢語(yǔ)言DM_SQL簡(jiǎn)介1

1.1DM_SQL語(yǔ)言的特點(diǎn)1

1.2保留字與標(biāo)識(shí)符2

1.3字符集2

1.4DMSQL語(yǔ)言的功能及語(yǔ)句3

1.5DM_SQL所支持的數(shù)據(jù)類型4

1.5.1常規(guī)數(shù)據(jù)類型4

1.5.2日期時(shí)間數(shù)據(jù)類型7

1.5.3多媒體數(shù)據(jù)類型10

1.6DM_SQL語(yǔ)言支持的表達(dá)式11

1.6.1數(shù)值表達(dá)式12

1.6.2字符串表達(dá)式14

1.6.3時(shí)間值表達(dá)式15

1.6.4時(shí)間間隔值表達(dá)式17

1.6.5運(yùn)算符的優(yōu)先級(jí)18

1.7DM_SQL語(yǔ)言支持的數(shù)據(jù)庫(kù)模式19

第2章未手冊(cè)中的實(shí)例說(shuō)明20

2.1實(shí)例說(shuō)明20

2.2實(shí)例中的數(shù)據(jù)21

2.3參考腳本22

第3章數(shù)據(jù)定義語(yǔ)句26

3.1數(shù)據(jù)庫(kù)定義語(yǔ)句26

3.2數(shù)據(jù)庫(kù)修改語(yǔ)句27

3.3數(shù)據(jù)庫(kù)刪除語(yǔ)句28

3.4設(shè)置當(dāng)前數(shù)據(jù)庫(kù)語(yǔ)句28

3.5用戶定義語(yǔ)句29

3.6用戶刪除語(yǔ)句29

3.7登錄定義語(yǔ)句30

3.8登錄修改語(yǔ)句31

3.9登錄刪除語(yǔ)句33

3.10模式定義語(yǔ)句33

3.11模式刪除語(yǔ)句35

3.12基表定義語(yǔ)句35

3.13基表修改語(yǔ)句40

3.14基表刪除語(yǔ)句45

3.15全表刪除語(yǔ)句46

3.16索引定義語(yǔ)句47

3.17索引刪除語(yǔ)句48

-1-

3.18序列定義語(yǔ)句48

3.19序列刪除語(yǔ)句50

3.20全文索引定義語(yǔ)句50

3.21全文索引修改語(yǔ)句51

3.22全文索引刪除語(yǔ)句52

第4章數(shù)據(jù)查詢語(yǔ)句和全文檢索語(yǔ)句53

4.1單表查詢55

4.1.1簡(jiǎn)單查詢55

4.1.2帶條件查詢56

4.1.3集函數(shù)59

4.1.4情況表達(dá)式60

4.2連接查詢63

4.3子查詢68

4.3.1標(biāo)量子查詢68

4.3.2表子查詢69

4.3.3派生表子查詢72

4.3.4定量比較73

4.3.5帶EXISTS謂詞的子查詢74

4.4查詢的交75

4.5GROUPBY和HAVING子句76

4.5.1GROUPBY子句的使用76

4.5.2HAVING子句的使用77

4.6ORDERBY子句78

4.7選取前幾條數(shù)據(jù)79

4.8全文檢索80

第5章數(shù)據(jù)的插入、刪除和修改85

5.1數(shù)據(jù)插入語(yǔ)句85

5.2數(shù)據(jù)修改語(yǔ)句89

5.3數(shù)據(jù)刪除語(yǔ)句90

5.4偽列的使用91

5.4.1ROWID91

5.4.2UID和USER91

5.5DM自增列的使用91

5.5.1DM自增列定義91

5.5.2SETIDENTITYJNSERT屬性93

笫6章視圖95

6.1視圖的定義95

6.2視圖的刪除98

6.3視圖的查詢98

6.4視圖數(shù)據(jù)的更新99

-II-

6.5視圖的作用101

第7章嵌入式SQL102

71-SQL刖綴和終結(jié)付102

7.2宿主變量103

7.2.1輸入和輸出變量103

7.2.2指示符變量104

7.3服務(wù)器登錄與退出104

7.3.1登錄服務(wù)器104

7.3.2退出服務(wù)器105

7.4游標(biāo)的定義與操縱106

7.4.1定義游標(biāo)語(yǔ)句106

7.4.2打開(kāi)游標(biāo)語(yǔ)句107

7.4.3撥動(dòng)游標(biāo)語(yǔ)句108

7.4.4關(guān)閉游標(biāo)語(yǔ)句109

7.4.5關(guān)于可更新游標(biāo)110

7.4.6游標(biāo)定位刪除語(yǔ)句110

7.4.7游標(biāo)定位修改語(yǔ)句111

7.5單元組查詢語(yǔ)句112

7.6動(dòng)態(tài)SQL114

7.6.1EXECUTEIMMEDIATE立即執(zhí)行語(yǔ)句114

7.6.2PREPARE準(zhǔn)備語(yǔ)句115

7.6.3EXCUTE執(zhí)行語(yǔ)句115

7.7異常處理116

第8章函數(shù)118

8.1數(shù)值函數(shù)122

8.2字符串函數(shù)129

8.3日期時(shí)間函數(shù)140

8.4空值判斷函數(shù)150

8.5類型轉(zhuǎn)換函數(shù)151

8.6雜類函數(shù)153

8.7系統(tǒng)函數(shù)153

第9章數(shù)據(jù)庫(kù)元信息157

9.1數(shù)據(jù)字典查詢語(yǔ)句157

9.2數(shù)據(jù)字典表結(jié)構(gòu)158

9.3信息模式158

第10章一致性和并發(fā)性160

10.1DM事務(wù)相關(guān)語(yǔ)句160

10.1.1事務(wù)的開(kāi)始160

10.1.2事務(wù)的結(jié)束160

10.1.3保存點(diǎn)相關(guān)語(yǔ)句161

-III-

10.1.4設(shè)置事務(wù)隔離級(jí)及讀寫(xiě)特性163

10.2DM手動(dòng)上鎖語(yǔ)句163

第11章存儲(chǔ)模塊166

11.1存儲(chǔ)模塊的定義166

11.2存儲(chǔ)模塊的刪除171

11.3存儲(chǔ)模塊的控制語(yǔ)句172

11.3.1語(yǔ)句塊173

11.3.2賦值語(yǔ)句174

11.3.3條件語(yǔ)句175

11.3.4循環(huán)語(yǔ)句176

11.3.5EXIT語(yǔ)句178

11.3.6調(diào)用語(yǔ)句178

11.3.7RETURN語(yǔ)句180

11.3.8NULL語(yǔ)句180

11.3.9GOTO語(yǔ)句180

11.3.10RAISE語(yǔ)句181

11.3.11打印語(yǔ)句182

11.4存儲(chǔ)模塊的異常處理182

11.4.1異常變量的說(shuō)明182

11.4.2異常的拋出182

11.4.3異常處理器183

11.4.4異常處理用法舉例183

11.5存儲(chǔ)模塊的SQL語(yǔ)句185

11.5.1游標(biāo)185

11.5.2動(dòng)態(tài)SQL187

11.5.3游標(biāo)變量187

11.5.4返回查詢結(jié)果集188

11.5.5SQL語(yǔ)句應(yīng)用舉例188

第12章觸發(fā)器192

12.1觸發(fā)器的定義192

12.1.1觸發(fā)器類型194

12.1.2觸發(fā)器激發(fā)順序197

12.1.3新、舊行值的引用198

12.1.4觸發(fā)器謂詞200

12.1.5變異表201

12.1.6設(shè)計(jì)觸發(fā)器的原則203

12.2觸發(fā)器的刪除203

12.3禁止和允許觸發(fā)器204

12.4觸發(fā)器應(yīng)用舉例206

12.4.1使用觸發(fā)器實(shí)現(xiàn)審計(jì)功能206

-IV-

12.4.2使用觸發(fā)器維護(hù)數(shù)據(jù)完整性207

12.4.3使用觸發(fā)器保障數(shù)據(jù)安全性208

12.4.4使用觸發(fā)器派生字段值209

第13章DM安全管理211

13.1創(chuàng)建角色語(yǔ)句211

13.2刪除角色語(yǔ)句212

13.3授權(quán)語(yǔ)句(系統(tǒng)權(quán)限)212

13.4授權(quán)語(yǔ)句(實(shí)體權(quán)限)213

13.5授權(quán)語(yǔ)句(角色權(quán)限)217

13.6回收權(quán)限語(yǔ)句(系統(tǒng)權(quán)限)217

13.7回收權(quán)限語(yǔ)句(實(shí)體權(quán)限)218

13.8回收權(quán)限語(yǔ)句(角色權(quán)限)220

13.9審計(jì)設(shè)置語(yǔ)句220

13.10審計(jì)取消語(yǔ)句222

13.11審計(jì)信息查閱語(yǔ)句223

附錄1DM保留字224

附錄2SQL語(yǔ)法描述說(shuō)明227

附錄3SQL命令參考228

附錄4系統(tǒng)存儲(chǔ)過(guò)程和函數(shù)230

附錄5DM技術(shù)支持250

-V-

第1章結(jié)構(gòu)化查詢語(yǔ)言DM_SQL簡(jiǎn)介

第1章結(jié)構(gòu)化查詢語(yǔ)言DM_SQL簡(jiǎn)介

結(jié)構(gòu)化查詢語(yǔ)言SQL(StructuredQueryLanguage)是在1974年提出的一種關(guān)系數(shù)

據(jù)庫(kù)語(yǔ)言。由于SQL語(yǔ)言接近英語(yǔ)的語(yǔ)句結(jié)構(gòu),方便簡(jiǎn)潔、使用靈活?、功能強(qiáng)大,倍受

用戶及計(jì)算機(jī)工業(yè)界的歡迎,被眾多計(jì)算機(jī)公司和數(shù)據(jù)庫(kù)廠商所采用,經(jīng)各公司的不斷

修改、擴(kuò)充和完善,SQL語(yǔ)言最終發(fā)展成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。

SQL的第一個(gè)標(biāo)準(zhǔn)是1986年10月由美國(guó)國(guó)家標(biāo)準(zhǔn)化組織(ANSI)公布的ANSI

X3.135-1986數(shù)據(jù)庫(kù)語(yǔ)言SQL,簡(jiǎn)稱SQL-86,1987年國(guó)際標(biāo)準(zhǔn)化組織(ISO)也通過(guò)了這一

標(biāo)準(zhǔn)。以后通過(guò)對(duì)SQL-86的不斷修改和完善,于1989年第二次公布了SQL標(biāo)準(zhǔn)ISO/IEC

9075-1989(E),即SQL-89。1992年又公布了SQL標(biāo)準(zhǔn)1SO/1EC9075:1992,即SQL-92。

最新的SQL標(biāo)準(zhǔn)是SQL-3(也稱SQL-99),1999年作為ISO/IEC9075:1999《信息技術(shù)

——數(shù)據(jù)庫(kù)語(yǔ)言SQL》發(fā)布。我國(guó)也相繼公布了數(shù)據(jù)庫(kù)語(yǔ)言SQL的國(guó)家標(biāo)準(zhǔn)。

在SQL成為國(guó)際標(biāo)準(zhǔn)以后,其影響遠(yuǎn)遠(yuǎn)超出了數(shù)據(jù)庫(kù)領(lǐng)域,例如,在CAD、軟件工

程、人工智能、分布式等領(lǐng)域,不僅把SQL作為檢索數(shù)據(jù)的語(yǔ)言規(guī)范,而且也把SQL作

為檢索圖形、圖象、聲音、文字、知識(shí)等信息類型的語(yǔ)言規(guī)范。目前,世界上大型的著

名數(shù)據(jù)庫(kù)管理系統(tǒng)均支持SQL語(yǔ)言,如Oracle>Sybase、SQLServer,DB2等。在未來(lái)

相當(dāng)長(zhǎng)的時(shí)間里,SQL仍將是數(shù)據(jù)庫(kù)領(lǐng)域以至信息領(lǐng)域中數(shù)據(jù)處理的主流語(yǔ)言之一。

由于不同的DBMS產(chǎn)品,大都按自己產(chǎn)品的特點(diǎn)對(duì)SQL語(yǔ)言進(jìn)行了擴(kuò)充,很難完全符

合SQL標(biāo)準(zhǔn)。目前在DBMS市場(chǎng)上已將SQL的符合率作為衡量產(chǎn)品質(zhì)量的重要指標(biāo),并研

制成專門(mén)的測(cè)試軟件,如NIST。目前,DMSQL-92入門(mén)級(jí)和過(guò)渡級(jí)的符合率均達(dá)到100%,

并且部分支持更新的SQL-99標(biāo)準(zhǔn)。同時(shí)DM還兼容Oracle8i和SQLServer2000的部

分語(yǔ)言特性。本章主要介紹DM系統(tǒng)所支持的SQL語(yǔ)言——DM_SQL語(yǔ)言。

1.1DM_SQL語(yǔ)言的特點(diǎn)

DM_SQL語(yǔ)言符合結(jié)構(gòu)化查詢語(yǔ)言SQL標(biāo)準(zhǔn),是標(biāo)準(zhǔn)SQL的擴(kuò)充。它集數(shù)據(jù)定義、數(shù)

據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制于一體,是一種統(tǒng)一的、綜合的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。它功能

強(qiáng)大,使用簡(jiǎn)單方便、容易為用戶掌握。DM_SQL語(yǔ)言具有如下特點(diǎn):

1.功能一體化

DM_SQL的功能一體化表現(xiàn)在以下兩個(gè)方面:

(1)DM_SQL支持多媒體數(shù)據(jù)類型,用戶在建表時(shí)可直接使用。DM系統(tǒng)在處理常規(guī)數(shù)

據(jù)與多媒體藪據(jù)時(shí)達(dá)到了四個(gè)一體化:一體化定義、一體化存儲(chǔ)、一體化檢索、一體化

處理,最大限度地提高了數(shù)據(jù)庫(kù)管理系統(tǒng)處理多媒體的能力和速度。

(2)DM_SQL語(yǔ)言集數(shù)據(jù)庫(kù)的定義、查詢、更新、控制、維護(hù)、恢復(fù)、安全等一系列

操作于一體,每一操作都只需一種操作符表示,格式規(guī)范,風(fēng)格一致,簡(jiǎn)單方便,很容

易為用戶所掌握。

2.兩種用戶接口使用統(tǒng)一語(yǔ)法結(jié)構(gòu)的語(yǔ)言

DM_SQL語(yǔ)言既是自含式語(yǔ)言,又是嵌入式語(yǔ)言。作為自含式語(yǔ)言,它能獨(dú)立運(yùn)行于

-1-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

聯(lián)機(jī)交互方式。作為嵌入式語(yǔ)言,DM_SQL語(yǔ)句能夠嵌入到C和C++語(yǔ)言程序中,將高級(jí)

語(yǔ)言(也稱主語(yǔ)言)靈活的表達(dá)能力、強(qiáng)大的計(jì)算功能與DM_SQL語(yǔ)言的數(shù)據(jù)處理功能相結(jié)

合,完成各種復(fù)雜的事務(wù)處理。而在這兩種不同的使而方式中,DM_SQL語(yǔ)言的語(yǔ)法結(jié)構(gòu)

是一致的,從而為用戶使用提供了極大的方便性和靈活性。

3.高度非過(guò)程化

DM_SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言。用戶只需指出“做什么”,而不需指出“怎么做”,

對(duì)數(shù)據(jù)看取路徑的選擇以及DM_SQL語(yǔ)句功能的實(shí)現(xiàn)均由系統(tǒng)自動(dòng)完成,使用戶編制的應(yīng)

用程序與具體的機(jī)器及關(guān)系DBMS的實(shí)現(xiàn)細(xì)節(jié)無(wú)關(guān),從而方便了用戶,提高了應(yīng)用程序的

開(kāi)發(fā)效率,也增強(qiáng)了數(shù)據(jù)獨(dú)立性和應(yīng)用系統(tǒng)的可移植性。

4.面向集合的操作方式

DM_SQL語(yǔ)言采用了集合操作方式。不僅查詢結(jié)果可以是元組的集合,而且一次插入、

刪除、核改操作的對(duì)象也可以是元組的集合,相對(duì)于面向記錄的數(shù)據(jù)庫(kù)語(yǔ)言(一次只能操

作一條記錄)來(lái)說(shuō),DM_SQL語(yǔ)言的使用簡(jiǎn)化了用戶的處理,提高了應(yīng)用程序的運(yùn)行效率。

5.語(yǔ)言簡(jiǎn)潔,方便易學(xué)

DM_SQL語(yǔ)言功能強(qiáng)大,格式規(guī)范,表達(dá)簡(jiǎn)潔,接近英語(yǔ)的語(yǔ)法結(jié)構(gòu),容易為用戶所

掌握。

1.2保留字與標(biāo)識(shí)符

標(biāo)識(shí)符的語(yǔ)法規(guī)則兼容標(biāo)準(zhǔn)GJB1382A-9X,標(biāo)識(shí)符分為正規(guī)標(biāo)識(shí)符和定界標(biāo)識(shí)符兩

大類。

正規(guī)標(biāo)識(shí)符以字母、_、$、#或漢字開(kāi)頭,后面可以跟隨字母、數(shù)字、_、$、#或者

漢字,正規(guī)標(biāo)識(shí)符的最大展度是128個(gè)英文字符或64個(gè)漢字。正規(guī)標(biāo)識(shí)蔣不能是保留字。

正規(guī)標(biāo)識(shí)符的例子:A,testl,_TABLE_B,表1。

定界標(biāo)識(shí)符的標(biāo)識(shí)符體用雙引號(hào)括起來(lái)同,標(biāo)識(shí)符體可以包含任意字符,特別地,

其中使用連續(xù)兩個(gè)雙引號(hào)轉(zhuǎn)義為一個(gè)雙引號(hào)。

定界標(biāo)識(shí)符的例子:"table","A","!@#$"o

保留字的清單參見(jiàn)附錄1。

1.3字符集

不同國(guó)家和地區(qū)往往使用不同的字符集。僅中文就有GB2312、GBK等簡(jiǎn)體字符集和

臺(tái)灣、香港等不同的繁體字符集。此外,英文、日文、韓文等字符集也互不相同,且不

一定能互相轉(zhuǎn)化。一個(gè)優(yōu)秀的軟件應(yīng)能適應(yīng)不同國(guó)家和地區(qū)使用不同的字符集的現(xiàn)實(shí)需

要。

Unicode標(biāo)準(zhǔn)為全球商業(yè)領(lǐng)域中廣泛使用的大部分字符定義了一個(gè)單一編碼方案。

Unicode數(shù)據(jù)中的位模式被一致地翻譯成字符,保證了同?個(gè)位模式在所有的計(jì)算機(jī)上

總是轉(zhuǎn)換成同一個(gè)字符。Unicode數(shù)據(jù)可以隨意地從一個(gè)數(shù)據(jù)庫(kù)或計(jì)算機(jī)傳送到另一個(gè)

數(shù)據(jù)庫(kù)或計(jì)算機(jī),而不用擔(dān)心接收系統(tǒng)是否會(huì)錯(cuò)誤地翻譯位模式。一般各種字符集,都

-2-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

能與Unicode相互轉(zhuǎn)換。所以,支持Unicode的系統(tǒng)往往可支持多種字符集。

DM系統(tǒng)內(nèi)部支持Unicode字符集(具體地說(shuō),是UTF-8字符集),具有支持各種字符

集的擴(kuò)展能力。DM目前支持以下多個(gè)字符集(對(duì)其它字符集的支持須定制):

UTF-8/*壓縮Unicode*/

GBK/*中國(guó)大陸,漢語(yǔ)*/

B1G5/*中國(guó)臺(tái)灣地區(qū),漢語(yǔ)*/

ISO-8859-9/*Latin-5,土耳其語(yǔ)*/

EUC_JP/*日文版Unix*/

EUCKR/*韓語(yǔ)版Unix*/

K0I8/*俄羅斯*/

安裝DM時(shí),用戶可以選擇在DM服務(wù)器端是使用操作系統(tǒng)缺省字符集還是使用UTF-8

字符集來(lái)存儲(chǔ)數(shù)據(jù)。

選擇前者時(shí),用戶須保證客戶端、服務(wù)器端使用相同的缺省字符集。這時(shí)DM不考

慮字符集轉(zhuǎn)換因素,直接按缺省字符集處理,效率較高。

選擇后者時(shí).,用戶可以隨時(shí)使用系統(tǒng)提供的接口(JDBC.API)設(shè)置客戶端使用的字

符集(缺省使用客戶端操作系統(tǒng)的缺省字符集)。設(shè)置之后,用戶就可以透明地使用該字

符集。DM負(fù)責(zé)不同字符集之間的自動(dòng)轉(zhuǎn)換,但有一定的時(shí)間、空間消耗。

1.4DM_SQL語(yǔ)言的功能及語(yǔ)句

DM_SQL語(yǔ)言是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言,其功能主要包括數(shù)據(jù)定

義、查向、操縱和控制四個(gè)方面,通過(guò)各種不同的SQL語(yǔ)句來(lái)實(shí)現(xiàn)。按照所實(shí)現(xiàn)的功能,

DM_SQL語(yǔ)句分為以下幾種:

1.數(shù)據(jù)庫(kù)、登錄、用戶、模式、基表、視圖、索引、序列、全文索引、存儲(chǔ)過(guò)程

和觸發(fā)器的定義和刪除語(yǔ)句,登錄、基表、視圖、全文索引的修改語(yǔ)句,對(duì)象的更名語(yǔ)

句;

2.查詢(含全文檢索)、插入、刪除、修改語(yǔ)句;

3.數(shù)據(jù)庫(kù)安全語(yǔ)句。包括創(chuàng)建角色、刪除角色語(yǔ)句,授權(quán)語(yǔ)句、回收權(quán)限語(yǔ)句,

修改登錄口令語(yǔ)句,審計(jì)設(shè)置語(yǔ)句、取消審計(jì)設(shè)置語(yǔ)句等。

在嵌入方式中,為了協(xié)調(diào)DM_SQL語(yǔ)言與主語(yǔ)言不同的數(shù)據(jù)處理方式,DM_SQL語(yǔ)言

引入了游標(biāo)的概念。因此在嵌入方式下,除了數(shù)據(jù)查詢語(yǔ)句(一次查詢一條記錄)外,還

有幾種與游標(biāo)有關(guān)的語(yǔ)句:

1.游標(biāo)的定義、打開(kāi)、關(guān)閉、撥動(dòng)語(yǔ)句;

2.游標(biāo)定位方式的數(shù)據(jù)修改與刪除語(yǔ)句。

為了有效維護(hù)數(shù)據(jù)庫(kù)的完整性和一致性,支持DBMS的并發(fā)控制機(jī)制,DM_SQL語(yǔ)言

提供了事務(wù)的回滾(ROLLBACK)與提交(COMMIT)語(yǔ)句。同時(shí)DM允許選擇實(shí)施事務(wù)級(jí)讀

一致性,它保證同一事務(wù)內(nèi)的可重復(fù)讀,為此DM提供用戶多種手動(dòng)上鎖語(yǔ)句,和設(shè)置事

務(wù)隔離級(jí)別語(yǔ)句。

-3-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

1.5DM_SQL所支持的數(shù)據(jù)類型

數(shù)據(jù)類型是可表示值的集。值的邏輯表示是〈字值3值的物理表示依賴于實(shí)現(xiàn)。DM

系統(tǒng)具有SQL-92的絕大部分?jǐn)?shù)據(jù)類型,以及部分SQL-99和SQLServer2000的數(shù)據(jù)類

型。

1.5.1常規(guī)數(shù)據(jù)類型

1.字符數(shù)據(jù)類型

CHAR類型

語(yǔ)法:CHAR[(長(zhǎng)度)]

功能:CHAR數(shù)據(jù)類型指定定長(zhǎng)字符串。在基表中,定義CHAR類型的列時(shí),可以

指定一個(gè)不超過(guò)8188的正整數(shù)作為字符長(zhǎng)度,例如:CHAR(100)o如果未指定長(zhǎng)度,

缺省為1,DM確保存儲(chǔ)在該列的所有值都具有這一長(zhǎng)度。CHAR數(shù)據(jù)類型的最大

長(zhǎng)度由數(shù)據(jù)庫(kù)頁(yè)面大小決定,字符類型最大長(zhǎng)度和頁(yè)面大小的對(duì)應(yīng)關(guān)系請(qǐng)見(jiàn)下表

5.1.1oDM支持按字節(jié)存放字符串。

表5.1.1

數(shù)據(jù)庫(kù)頁(yè)面大小最大長(zhǎng)度

4K1900

8K3900

16K8000

32K8188

CHARACTER類型

語(yǔ)法:CHARACTER[(長(zhǎng)度)]

功能:與CHAR相同。

VARCHAR類型

語(yǔ)法:VARCHAR[(長(zhǎng)度)]

功能:VARCHAR數(shù)據(jù)類型指定變長(zhǎng)字符串,用法類似CHAR數(shù)據(jù)類型,可以指定

一個(gè)不超過(guò)8188的正整數(shù)作為字符長(zhǎng)度,例如:VARCHAR(100)o如果未指定長(zhǎng)

度,缺省為1。在DM系統(tǒng)中,VARCHAR數(shù)據(jù)類型的實(shí)際最大長(zhǎng)度由數(shù)據(jù)庫(kù)頁(yè)面

大小決定,具體最大長(zhǎng)度算法如表5.1.2。CHAR同VARCHAR的區(qū)別在于前者長(zhǎng)

度不足時(shí),系統(tǒng)自動(dòng)填充空格,而后者只占用實(shí)際的字節(jié)空間。

表5.1.2

數(shù)據(jù)庫(kù)貝向大小實(shí)際最大長(zhǎng)度

4K1900

8K3900

-4-

第I章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

16K8000

32K8188

2.數(shù)值數(shù)據(jù)類型

(1)精確數(shù)值數(shù)據(jù)類型

NUMERIC類型

語(yǔ)法:NUMERICR精度[,標(biāo)度])]

功能:NUMERIC數(shù)據(jù)類型用于存儲(chǔ)零、正負(fù)定點(diǎn)數(shù)。其中:精度是一個(gè)無(wú)符號(hào)整

數(shù),定義了總的數(shù)字?jǐn)?shù),精度范圍是1至38,標(biāo)度定義了小數(shù)點(diǎn)右邊的數(shù)字位數(shù),

定義時(shí)如省略精度,則默認(rèn)是16。如省略標(biāo)度,則默認(rèn)是0。一個(gè)數(shù)的標(biāo)度不應(yīng)大

于其精度。例如:NUMER1C(4,1)定義了小數(shù)點(diǎn)前面3位和小數(shù)點(diǎn)后面1位,共4

位的數(shù)字,范圍在-999.9到999.9o所有NUMERIC數(shù)據(jù)類型,如果其值超過(guò)精度,

DM返回一個(gè)出錯(cuò)信息,如果超過(guò)標(biāo)度,則多余的位截?cái)唷?/p>

DECIMAL類型

語(yǔ)法:DECIMALR精度[,標(biāo)度])]

功能:與NUMERIC相似。

DEC類型

語(yǔ)法:DECK精度[,標(biāo)度])]

功能:與DECIMAL相同。

MONEY類型

語(yǔ)法:MONEY

功能:該類型用于存儲(chǔ)貨幣數(shù)據(jù),貨幣數(shù)據(jù)表示正的或負(fù)的貨幣值。貨幣數(shù)據(jù)存儲(chǔ)

的精度為19,標(biāo)度為4的精確數(shù)值。貨幣數(shù)值用句點(diǎn)將局部的貨幣單位(如角分)

從總體貨幣單位中分隔出來(lái)。例如2.15表示2元15分。

BIT類型

語(yǔ)法:BIT

功能:BIT類型用于存儲(chǔ)整數(shù)數(shù)據(jù)1、0或NULL,可以用來(lái)支持ODBC和JDBC

的布爾數(shù)據(jù)類型。DM的BIT類型與SQLSERVER2000的BIT數(shù)據(jù)類型相似。

INTEGER類型

語(yǔ)法:INTEGER

功能:用于存儲(chǔ)有符號(hào)整數(shù),精度為10,標(biāo)度為0。取值范圍為:-2147483648

(-2A31)?+2147483647(2人31-1)。

INT類型

語(yǔ)法:INT

-5-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

功能:與INTEGER相同。

BIGINT類型

語(yǔ)法:BIGINT

功能:用于存儲(chǔ)有符號(hào)整數(shù),精度為19,標(biāo)度為0。取值范

圍為:

-9223372036854775808(-2A63)?9223372036854775807(2A63-1)。

TINYINT類型

語(yǔ)法:TINYINT

功能:用于存儲(chǔ)有符號(hào)整數(shù),精度為3,標(biāo)度為0o取值范圍為:-128?+127。

BYTE類型

語(yǔ)法:BYTE

功能:與TINYINT相似,精度為3,標(biāo)度為0o

SMALLINT類型

語(yǔ)法:SMALLINT

功能:用于存儲(chǔ)有符號(hào)整數(shù),精度為5,標(biāo)度為0。取值范圍為:-32768(-275?

+32767(2Al5-1)。

BINARY類型

語(yǔ)法:B1NARYR長(zhǎng)度)]

功能:BINARY數(shù)據(jù)類型指定定長(zhǎng)二進(jìn)制數(shù)據(jù)。缺省長(zhǎng)度為1個(gè)字節(jié)。最大長(zhǎng)度

由數(shù)據(jù)庫(kù)頁(yè)面大小決定,具體最大長(zhǎng)度算法與CHAR類型的相同。BINARY常量以

Ox開(kāi)始,后面跟著數(shù)據(jù)的十六進(jìn)制表示。例如0x2A3B4058。

VARBINARY類型

語(yǔ)法:VARBINARY-長(zhǎng)度)]

功能:VARBINARY數(shù)據(jù)類型指定變長(zhǎng)二進(jìn)制數(shù)據(jù),用法類似BINARY數(shù)據(jù)類型,

可以指定一個(gè)不超過(guò)8188的正整數(shù)作為數(shù)據(jù)長(zhǎng)度。缺省長(zhǎng)度為1個(gè)字節(jié)。

VARBINARY數(shù)據(jù)類型的實(shí)際最大長(zhǎng)度由數(shù)據(jù)庫(kù)頁(yè)面大小決定,具體最大長(zhǎng)度算法

與VARCHAR類型的相同。

(2)近似數(shù)值數(shù)據(jù)類型

FLOAT類型

語(yǔ)法:FLOAT[(精度)]

功能:FLOAT是帶二進(jìn)制精度的浮點(diǎn)數(shù),精度最大不超過(guò)53,如省略精度,則二

進(jìn)制精度為53,十進(jìn)制精度為15。取值范圍為-1.7E+308?1.7E+308,

DOUBLE類型

-6-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

語(yǔ)法:DOUBLE[(精度)]

功能:同F(xiàn)LOAT相似,精度最大不超過(guò)53o

REAL類型

語(yǔ)法:REAL

功能:REAL是帶二進(jìn)制的浮點(diǎn)數(shù),但它不能由用戶指定使用的精度,系統(tǒng)指定其

二進(jìn)制精度為24,十進(jìn)制精度為7。取值范圍-3.4E+38?3.4E+38。

DOUBLEPRECISION類型

語(yǔ)法:DOUBLEPRECISION

功能:該類型指明雙精度浮點(diǎn)數(shù),其二進(jìn)制精度為53,卜進(jìn)制精度為15。取值范圍

-1.7E+308~1.7E+308。

1.5.2日期時(shí)間數(shù)據(jù)類型

日期時(shí)間數(shù)據(jù)類型分為一般日期時(shí)間數(shù)據(jù)類型和時(shí)間間隔數(shù)據(jù)類型兩類,用于存儲(chǔ)

日期、時(shí)間和它們之間的間隔信息。

1.一般日期時(shí)間數(shù)據(jù)類型

DATE類型

語(yǔ)法:DATE

功能:DATE類型包括年、月、日信息,定義了,0001-01-0「和,9999-12-3」之間任何

一個(gè)有效的格里高利日期。

DM支持SQL92標(biāo)準(zhǔn)或SQLSERVER的DATE字值,例如:DATE'1999-10-01\

'1999-10-01'、'1999/10/01'或'19或.10.0「都是有效的DATE值,且彼此等價(jià)。年月

日中第一個(gè)非0數(shù)值前的0亦可省略,例如,0001-01-01'等價(jià)于11-1'。

TIME類型

語(yǔ)法:TIME[(小數(shù)秒精度)]

功能:TIME類型包括時(shí)、分、秒信息,定義了一個(gè)在100:00:00.000000,和

?23:59:59.999999,之間的有效時(shí)間。TIME類型的小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)

后面的位數(shù),取值范圍為0?6,如果未定義,缺省精度為6。

DM支持SQL92標(biāo)準(zhǔn)或SQLSERVER的TIME字值,例如:TIME,09:10:21',

,09:10:2「或,9:10:21,都是有效的TIME值,且彼此等價(jià)。

TIMESTAMP類型

語(yǔ)法:TIMESTAMP[(小數(shù)秒精度)]

功能:TIMESTAMP類型包括年、月、日、時(shí)、分、秒信息,定義了一個(gè)在,0001-01-01

00:00:00.000000'和'9999-12-3123:59:59.999999'之間的有效格里高利日期時(shí)間。

TIMESTAMP類型的小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)后面的位數(shù),取值范圍為。?

-7-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

6,如果未定義,缺省精度為6。

DM支持SQL92標(biāo)準(zhǔn)或SQLSERVER的TIMESTAMP字值,例如:TIMESTAMP

'2002-12-1209:10:21'或'2002-12-129:10:21'或'2002/12/1209:10:21'或'2002.12.12

09:10:215都是有效的TIMESTAMP值,且彼此等價(jià)。

語(yǔ)法中,TIMESTAMP也可以寫(xiě)為DATETIME。

2.時(shí)間間隔數(shù)據(jù)類型

DM支持兩類十三種時(shí)間間隔類型:兩類是年-月間隔類和日-時(shí)間隔類,它們通過(guò)

時(shí)間間隔限定符區(qū)分,前者結(jié)合了日期字段年和月,后者結(jié)合了時(shí)間字段日、時(shí)、分、

秒。由時(shí)間間隔數(shù)據(jù)類型所描述的值總是有符號(hào)的。

(1)年-月間隔類

INTERVALYEARTOMONTH類型

語(yǔ)法:INTERVALYEAR[(引導(dǎo)精度)]TOMONTH

功能:描述?個(gè)若干年若干月的間隔,引導(dǎo)精度規(guī)定了年的取值范圍,而月的取值

范圍在0至1J11之間,如果不定義引導(dǎo)精度默認(rèn)精度為2。例如:INTERVALYEAR(4)

TOMONTH,其中YEAR(4)表示年的精度為4,表示范圍為負(fù)9999年零12月到正

9999年零12月。一個(gè)合適的字值例子是:INTERVALP015-08,YEARTOMONTH。

INTERVALYEAR類型

語(yǔ)法:INTERVALYEAR[(引導(dǎo)精度)]

功能:描述一個(gè)若干年的間隔,引導(dǎo)精度規(guī)定了年的取值范圍,如果不定義引導(dǎo)精

度默認(rèn)精度為2。例如:INTERVALYEAR(4),其中YEAR(4)表示年的精度為4,

表示范圍為負(fù)9999年到正9999年。一個(gè)合適的字值例子是:INTERVAL400155

YEAR?

INTERVALMONTH類型

語(yǔ)法:INTERVALMONTH[(弓I導(dǎo)精度)1

功能:描述一個(gè)若干月的間隔,引導(dǎo)精度規(guī)定了月的取值范圍,如果不定義引導(dǎo)精

度默認(rèn)精度為2。例如:INTERVALMONTH(4),其中MONTH(4)表示月的精度為4,

表示范圍為負(fù)9999月到正9999月。?個(gè)合適的字值例子是:INTERVAL'0015'

MONTH?

(2)日-時(shí)間隔類

INTERVALDAY類型

語(yǔ)法:INTERVALDAY[(引導(dǎo)精度)]

功能:描述一個(gè)若干日的間隔,引導(dǎo)精度規(guī)定了日的取值范圍,如果不定義引導(dǎo)精

度默認(rèn)精度為2。例如:INTERVALDAY(3),其中DAY(3)表示日的精度為3,表示

范圍為負(fù)999日到正999日。一個(gè)合適的字值例子是:INTERVAL,150,DAY。

INTERVALDAYTOHOUR類型

-8-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

語(yǔ)法:INTERVALDAY[(引導(dǎo)精度)]TOHOUR

功能:描述一個(gè)若干日若干小時(shí)的間隔,引導(dǎo)精度規(guī)定了日的取值范圍,如果不定

義引導(dǎo)精度默認(rèn)精度為2。而時(shí)的取值范圍在0至U23之間。例如:INTERVALDAY(l)

TOHOUR,其中DAY(l)表示日的精度為1,表示范圍為負(fù)9日零23小時(shí)到正9日

零23小時(shí)。一個(gè)合適的字值例子是:INTERVALS23,DAYTOHOUR。

INTERVALDAYTOMINUTE類型

語(yǔ)法:INTERVALDAY[(引導(dǎo)精度)]TOMINUTE

功能:描述一個(gè)若干日若干小時(shí)若干分鐘的間隔,引導(dǎo)精度規(guī)定了日的取值范圍,

如果不定義引導(dǎo)精度默認(rèn)精度為2。而小時(shí)的取值范圍在0到23之間,分鐘的取值

范圍在0至1J59之間。例如:INTERVALDAY(2)TOMINUTE,其中DAY(2)表示日

的精度為2,表示范圍為負(fù)99日零23小時(shí)零59分到正99日零23小時(shí)零59分。

一個(gè)合適的字值例子是:INTERVAL40923:12*DAYTOMINUTE。

INTERVALDAYTOSECOND類型

語(yǔ)法:INTERVALDAY[(引導(dǎo)精度)]TOSECOND[(小數(shù)秒精度)]

功能:描述一個(gè)若干日若干小時(shí)若干分鐘若干秒的間隔,引導(dǎo)精度規(guī)定了日的取值

范圍,如果不定義引導(dǎo)精度默認(rèn)精度為2,小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)后面

的位數(shù),取值范圍為0?6,如果不定義小數(shù)秒精度默認(rèn)精度為6。小時(shí)的取值范圍

在0到23之間,分鐘的取值范圍在0到59之間。例如:INTERVALDAY(2)TO

SECOND(l),其中DAY(2)表示日的精度為2,SECOND(l)表示秒的小數(shù)點(diǎn)后面取1

位,表示范圍為負(fù)99日零23小時(shí)零59分零59.9秒到正99日零23小時(shí)零59分零

59.9秒。一個(gè)合適的字值例子是:INTERVAL。0923:12:011DAYTOSECOND。

INTERVALHOUR類型

語(yǔ)法:INTERVALHOUR[(引導(dǎo)精度)]

功能:描述一個(gè)若干小時(shí)的間隔,引導(dǎo)精度規(guī)定了小時(shí)的取值范圍,如果不定義引

導(dǎo)精度默認(rèn)精度為2。例如:INTERVALHOUR(3),其中HOUR(3)表示時(shí)的精度為

3,表示范圍為負(fù)999小時(shí)到正999小時(shí)。一個(gè)合適的字值例子是:INTERVAL350'

HOURo

INTERVALHOURTOMINUTE類型

語(yǔ)法:INTERVALHOUR[(引導(dǎo)精度)]TOMINUTE

功能:描述一個(gè)若干小時(shí)若干分鐘的間隔,引導(dǎo)精度規(guī)定了小時(shí)的取值范圍,如果

不定義引導(dǎo)精度默認(rèn)精度為2。而分鐘的取值范圍在0至U59之間。例如:INTERVAL

HOUR(2)TOMINUTE,其中HOUR(2)表示小時(shí)的精度為2,表示范圍為負(fù)99小時(shí)

零59分到正99小時(shí)零59分。一個(gè)合適的字值例子是:INTERVA「23:12,HOURTO

MINUTEo

INTERVALHOURTOSECOND類型

-9-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

語(yǔ)法:INTERVALHOUR[(引導(dǎo)精度)]TOSECOND[(小數(shù)秒精度)]

功能:描述一個(gè)若干小時(shí)若干分鐘若干秒的間隔,引導(dǎo)精度規(guī)定了小時(shí)的取值范圍,

如果不定義引導(dǎo)精度默認(rèn)精度為2,小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)后面的位數(shù),

取值范圍為0?6,如果不定義小數(shù)秒精度默認(rèn)精度為60分鐘的取值范圍在0到59

之間。例如:INTERVALHOUR(2)TOSECOND(l),其中HOUR(2)表示小時(shí)的精度

為2,SECOND(l)表示秒的小數(shù)點(diǎn)后面取1位,表示范圍為負(fù)99小時(shí)零59分零59.9

秒到正99小時(shí)零59分零59.9秒。一個(gè)合適的字值例子是:INTERVAL'23:12:01.「

HOURTOSECOND.,

INTERVALMINUTE類型

語(yǔ)法:INTERVALMINUTE[(引導(dǎo)精度)]

功能:描述一個(gè)若干分鐘的間隔,引導(dǎo)精度規(guī)定了分鐘的取值范圍,如果不定義引

導(dǎo)精度默認(rèn)精度為2。例如:INTERVALMINUTE0),其中MINUTE(3)表示分鐘的

精度為3,表示范圍為負(fù)999分鐘到正999分鐘。一個(gè)合適的字值例子是:INTERVAL

'150'MINUTEo

INTERVALMINUTETOSECOND類型

語(yǔ)法:INTERVALMINUTE[(引導(dǎo)精度)]TOSECOND[(小數(shù)秒精度)]

功能:描述一個(gè)若干分鐘若干秒的間隔,引導(dǎo)精度規(guī)定了分鐘的取值范圍,如果不

定義引導(dǎo)精度默認(rèn)精度為2,小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)后面的位數(shù),取值

范圍為0?6,如果不定義小數(shù)秒精度默認(rèn)精度為6。例如:INTERVALMINUTE(2)

TOSECOND(l),其中MINUTEQ)表示分鐘的精度為2,SECOND(l)表示秒的小數(shù)

點(diǎn)后面取1位,表示范圍為負(fù)99分零59.9秒到正99分零59.9秒。一個(gè)合適的字

值例子是:INTERVAL'12:01.15MINUTETOSECOND,

INTERVALSECOND類型

語(yǔ)法:INTERVALSECOND[(引導(dǎo)精度[,小數(shù)秒精度])]

功能:描述一個(gè)若干秒的間隔,引導(dǎo)精度規(guī)定了秒整數(shù)部分的取值范圍,如果不定

義引導(dǎo)精度默認(rèn)精度為2,小數(shù)秒精度規(guī)定了秒字段中小數(shù)點(diǎn)后面的位數(shù),取值范

圍為0?6,如果不定義小數(shù)秒精度默認(rèn)精度為6。例如:INTERVALSECOND(2,1),

表示范圍為負(fù)99.9秒到正99.9秒。?個(gè)合適的字值例子是:INTERVAL,51.「

SECONDo

1.5.3多媒體數(shù)據(jù)類型

TEXT類型

語(yǔ)法:TEXT

功能:TEXT為變長(zhǎng)字符串類型。其字符串的長(zhǎng)度最大為2G-1。DM利用它存儲(chǔ)長(zhǎng)

的文本串。

-10-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

LONGVARCHAR(又名TEXT)類型

語(yǔ)法:LONGVARCHAR

功能:與TEXT相同。

IMAGE類型

語(yǔ)法:IMAGE

功能:IMAGE用于指明多媒體信息中的圖像類型。圖像由不定長(zhǎng)的象素點(diǎn)陣組成,

長(zhǎng)度最大為2G-1字節(jié)。該類型除了存儲(chǔ)圖像數(shù)據(jù)之外,還可用于存儲(chǔ)任何其它二

進(jìn)制數(shù)據(jù)。

LONGVARBINARY(又名IMAGE)類型

語(yǔ)法:LONGVARBINARY

功能:與IMAGE相同。

BLOB類型

語(yǔ)法:BLOB[(長(zhǎng)度)]

功能:BLOB類型用于指明一個(gè)長(zhǎng)度從1到定義長(zhǎng)度的變長(zhǎng)二進(jìn)制大對(duì)象。其中長(zhǎng)

度是一個(gè)無(wú)符號(hào)正整數(shù),長(zhǎng)度以字節(jié)為單位。BLOB的長(zhǎng)度最大為2G-1字節(jié)。定義

長(zhǎng)度指明了在BLOB字段中可接受的最大字節(jié)長(zhǎng)度數(shù)值,例如BLOB(IOOO),則該

字段長(zhǎng)度不得超過(guò)1000字節(jié)。若不定義長(zhǎng)度,缺省長(zhǎng)度為2G-1。

CLOB類型

語(yǔ)法:CLOB[(長(zhǎng)度)]

功能:CLOB類型用于指明一個(gè)長(zhǎng)度從1到定義長(zhǎng)度的變長(zhǎng)字母數(shù)字字符串。其中

長(zhǎng)度是一個(gè)無(wú)符號(hào)正整數(shù),長(zhǎng)度以字節(jié)為單位。CLOB的長(zhǎng)度最大為2G-1字節(jié)。定

義長(zhǎng)度指明了在CLOB字段中可接受的最大字節(jié)長(zhǎng)度數(shù)值,例如CLOB(IOOO),則

該字段長(zhǎng)度不得超過(guò)1000字節(jié)。若不定義長(zhǎng)度,缺省長(zhǎng)度為2G-1。

注:多媒體數(shù)據(jù)類型的字值有兩種格式,一種類似于字符串類型,例如:4BCD,,

一種類似于BINARY,如0x61626364。

1.6DM_SQL語(yǔ)言支持的表達(dá)式

DM支持多種類型的表達(dá)式,包括數(shù)值表達(dá)式、字符串表達(dá)式、時(shí)間值表達(dá)式、時(shí)

間間隔值表達(dá)式等。本節(jié)中引用的數(shù)據(jù)庫(kù)實(shí)例請(qǐng)參見(jiàn)第2章。

-11-

第I章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

1.6.1數(shù)值表達(dá)式

1.一元算符+和-

語(yǔ)法:+exp、-exp

(exp代表表達(dá)式,卜.同)

當(dāng)單獨(dú)使用時(shí),+和-改變表達(dá)式的符號(hào)。

例:

SELECT-(-5),+資產(chǎn)總值

FROM廠商登記

WHERE資產(chǎn)總值<50;

結(jié)果是:

530.00

520.00

注意:在SQL中由于兩短橫即-表示“注釋開(kāi)始”,則雙負(fù)號(hào)必須是-(-5),而不是

-5。

2.一元算符~

語(yǔ)法:?exp

它是按位非算符,要求參與運(yùn)算的操作數(shù)都為整數(shù)數(shù)據(jù)類型。

例:

SELECT-10

FROM廠商登記

WHERE資產(chǎn)總值<50;

結(jié)果是:

-11

-11

3.二元算符+、-、*、/

語(yǔ)法:expl+exp2、expl-exp2、expl*exp2、expl/exp2

(expl代表表達(dá)式1,exp2代表表達(dá)式2,下同)

當(dāng)在表達(dá)式之間使用+、-、*、/時(shí),分別表示加、減、乘、除運(yùn)算。對(duì)于結(jié)果的精

度規(guī)定如下:

(1)只有精確數(shù)值數(shù)據(jù)類型的運(yùn)算

兩個(gè)相同類型的整數(shù)運(yùn)算的結(jié)果類型不變,兩個(gè)不同類型的整數(shù)運(yùn)算的結(jié)果類型轉(zhuǎn)

換為范圍較大的那個(gè)整數(shù)類型。

整數(shù)與NUMERIC,DEC等類型運(yùn)算時(shí),SMALLINT類型的精度固定為5,標(biāo)度為

0;INTEGER類型的精度固定為10,標(biāo)度為0;BIGINT類型的精度固定為19,標(biāo)度為

0。

expl+exp2結(jié)果的精度為二者整數(shù)部分長(zhǎng)度(即精度一標(biāo)度)的最大值與二者標(biāo)度的

-12-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

最大值之和,標(biāo)度是二者標(biāo)度的最大值;

expl-exp2結(jié)果的精度為二者整數(shù)部分長(zhǎng)度的最大值與二者標(biāo)度的最大值之和,標(biāo)度

是二者標(biāo)度的最大值;

expl*exp2結(jié)果的精度為二者的精度之和,標(biāo)度也是二者的標(biāo)度之和;

expl/exp2結(jié)果的標(biāo)度為下面兩個(gè)值中的較大者:

值一?:expl標(biāo)度+exp2精度-exp2標(biāo)度+L

值二:exp2標(biāo)度+1。

expl/exp2結(jié)果的精度為:上面求得的標(biāo)度+expl精度-expl標(biāo)度+exp2標(biāo)度。

例:

SELECT資產(chǎn)總值+10,資產(chǎn)總值-10

FROM廠商登記

WHERE資產(chǎn)總值<50;

結(jié)果是:

40.0020.00

30.0010.00

例:

SELECT資產(chǎn)總值*10,資產(chǎn)總值/10

FROM廠商登記

WHERE資產(chǎn)總值<50;

結(jié)果是:

300.003.0000000000000

200.002.0000000000000

(2)有近似數(shù)值數(shù)據(jù)類型的運(yùn)算

對(duì)于expl+exp2、expl-exp2、expl*exp2、expl/exp2中expl和exp2只要有一個(gè)

為近似數(shù)值數(shù)據(jù)類型,則結(jié)果為近似數(shù)值數(shù)據(jù)類型。

例:

CREATETABLEAPPROXIMATE(

ClFLOAT(53),

C2REAL,

C3DOUBLEPRECISION

);

INSERTINTOAPPROXIMATEVALUES(5E+20,5E+2,5E+2);

SELECTCl+50,C2-50,C2*C3,C3/50FROMAPPROXIMATE;

結(jié)果是:

500000000000000000000.0000000000450.0000000000

250000.000000000010.0000000000

4.二元算符&

-13-

第I章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

語(yǔ)法:expl&exp2

它是按位與算符,要求參與運(yùn)算的操作數(shù)都為整數(shù)數(shù)據(jù)類型。

例:

SELECT20&10FROM廠商登記WHERE資產(chǎn)總值<50;

結(jié)果是:

0

0

5.二元算符I

語(yǔ)法:expl|exp2

它是按位或算符,要求參與運(yùn)算的操作數(shù)都為整數(shù)數(shù)據(jù)類型。

例:

SELECT20|10FROM廠商登記WHERE資產(chǎn)總值<50;

結(jié)果是:

30

30

6.二元算符人

語(yǔ)法:explAexp2

它是按位異或算符,要求參與運(yùn)算的操作數(shù)都為整數(shù)數(shù)據(jù)類型。

例:

SELECT20A10FROM廠商登記WHERE資產(chǎn)總值<50;

結(jié)果是:

30

30

1.6.2字符串表達(dá)式

連接II

語(yǔ)法:STR1||STR2

(STR1代表字符串1,STR2代表字符串2)

連接操作符對(duì)兩個(gè)運(yùn)算數(shù)進(jìn)行運(yùn)算,其中每一個(gè)都是對(duì)屬于同一字符集的字符串的

求值。它以給定的順序?qū)⒆址B接在一起,并返回一個(gè)字符串。其長(zhǎng)度等于兩個(gè)運(yùn)算

數(shù)長(zhǎng)度之和。如果兩個(gè)運(yùn)算數(shù)中有一個(gè)是NULL,則運(yùn)算的結(jié)果是NULLo

例:

SELEC「中國(guó)廠商名FROM廠商登記;

結(jié)果是:

中國(guó)華樂(lè)電視機(jī)廠

-14-

第1章結(jié)構(gòu)化查詢語(yǔ)言DMSQL簡(jiǎn)介

中國(guó)日東冰箱廠

中國(guó)萬(wàn)里鞋廠

中國(guó)美的服裝廠

中國(guó)海天電視機(jī)廠

中國(guó)小鴨洗衣機(jī)廠

1.6.3時(shí)間值表達(dá)式

時(shí)間值表達(dá)式的結(jié)果為時(shí)間值類型,包括日期(DATE)類型,時(shí)間(TIME)類型和時(shí)間

戳(TIMESTAMP)間隔類型。DMSQL不是對(duì)于任何的日期時(shí)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論