DM8_SQL语言(一)达梦数据库结构化查询语言

DM8_SQL语言使用全部内容如下:
在这里插入图片描述
由于篇幅的原因分为篇文章来阐述
第一篇:结构化查询语言:
在这里插入图片描述1.1DM_SQL语言的特点

1.功能一体化
DM_SQL支持多媒体数据类型,用户在建表时可直接使用。DM系统在处理常规数据与多媒体数据时达到了四个一体化:一体化定义、一体化存储、一体化检索、一体化处理,最大限度地提高了数据库管理系统处理多媒体的能力和速度;
DM_SQL语言集数据库的定义、查询、更新、控制、维护、恢复、安全等一系列操作于一体,每一项操作都只需一种操作符表示,格式规范,风格一致,简单方便,很容易为用户所掌握。

2.两种用户接口使用统一语法结构的语言
DM_SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能独立运行于联机交互方式。作为嵌入式语言,DM_SQL语句能够嵌入到C和C++语言程序中,将高级语言(也称主语言)灵活的表达能力、强大的计算功能与DM_SQL语言的数据处理功能相结合,完成各种复杂的事务处理。而在这两种不同的使用方式中,DM_SQL语言的语法结构是一致的,从而为用户使用提供了极大的方便性和灵活性。

3.高度非过程化
DM_SQL语言是一种非过程化语言。用户只需指出“做什么”,而不需指出“怎么做”,对数据存取路径的选择以及DM_SQL语句功能的实现均由系统自动完成,与用户编制的应用程序与具体的机器及关系DBMS的实现细节无关,从而方便了用户,提高了应用程序的开发效率,也增强了数据独立性和应用系统的可移植性。

4.面向集合的操作方式
DM_SQL语言采用了集合操作方式。不仅查询结果可以是元组的集合,而且一次插入、删除、修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言(一次只能操作一条记录)来说,DM_SQL语言的使用简化了用户的处理,提高了应用程序的运行效率。

5.语言简洁,方便易学


1.2保留字与标识符

标识符的语法规则兼容标准GJB1382A-9X,标识符分为正规标识符和定界标识符两大类。
正规标识符以字母、_、$、#或汉字开头,后面可以跟随字母、数字、_、$、#或者汉字,正规标识符的最大长度是128个英文字符或64个汉字。正规标识符不能是保留字。
正规标识符的例子:A,test1,_TABLE_B,表1。定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中使用连续两个双引号转义为一个双引号。定界标识符的例子:“table”,“A”,"!@#$"。


1.3DM_SQL语言的功能及语句

DM_SQL语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、查询、操纵和控制四个方面,通过各种不同的SQL语句来实现。按照所实现的功能,DM_SQL语句分为以下几种:
1.用户、模式、基表、视图、索引、序列、全文索引、存储过程、触发器等数据库对象的定义和删除语句,数据库、用户、基表、视图、索引、全文索引等数据库对象的修改语句;
2.查询(含全文检索)、插入、删除、修改语句;
3.数据库安全语句。包括创建角色语句、删除角色语句,授权语句、回收权限语句,修改登录口令语句,审计设置语句、取消审计设置语句等。

在嵌入方式中,为了协调DM_SQL语言与主语言不同的数据处理方式,DM_SQL语言引入了游标的概念。因此在嵌入方式下,除了数据查询语句(一次查询一条记录)外,还有几种与游标有关的语句:
1.游标的定义、打开、关闭、拨动语句;
2.游标定位方式的数据修改与删除语句。

为了有效维护数据库的完整性和一致性,支持DBMS的并发控制机制,DM_SQL语言提供了事务的回滚(ROLLBACK)与提交(COMMIT)语句。同时DM允许选择实施事务级读一致性,它保证同一事务内的可重复读,为此DM提供用户多种手动上锁语句,和设置事务隔离级别语句。


1.4DM_SQL所支持的数据类型
在这里插入图片描述

1.4.1常规数据类型
1.字符数据类型

CHAR 类型

语法:CHAR[(长度)]
功能:CHAR数据类型指定定长字符串。在基表中,定义CHAR类型的列时,其最大存储长度由数据库页面大小决定,可以指定一个不超过其最大存储长度的正整数作为字符长度,例如:CHAR(100)。如果未指定长度,缺省为1

CHARACTER 类型

语法:CHARACTER[(长度)]
功能:与CHAR相同。

VARCHAR 类型/VARCHAR2 类型

语法:VARCHAR[(长度)]
功能:VARCHAR数据类型指定变长字符串,用法类似CHAR数据类型,可以指定一个不超过8188的正整数作为字符长度,例如:VARCHAR(100)。如果未指定长度,缺省为8188

2.数值数据类型

精确数值数据类型

NUMERIC 类型

语法:NUMERIC[(精度[,标度])]
功能:NUMERIC数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是138。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。所有NUMERIC数据类型,如果其值超过精度,DM会返回一个出错信息,如果超过标度,则多余的位会被截断。如果不指定精度和标度,缺省精度为38,标度无限定。

DECIMAL 类型

语法:DECIMAL[(精度[,标度])]
功能:与NUMERIC相似。

DEC 类型

语法:DEC[(精度[,标度])]功能:与DECIMAL相同。NUMBER类型语法:NUMBER[(精度[,标度])]
功能:与NUMERIC相同。

INTEGER 类型

语法:INTEGER
功能:用于存储有符号整数,精度为10,标度为0。取值范围为:-2147483648(-2^31^)+2147483647(2^31^-1)

INT 类型

语法:INT
功能:与INTEGER相同。

BIGINT 类型

语法:BIGINT
功能:用于存储有符号整数,精度为19,标度为0。取值范围为:-9223372036854775808(-2^63^)~9223372036854775807(2^63^-1)

TINYINT 类型

语法:TINYINT
功能:用于存储有符号整数,精度为3,标度为0。取值范围为:-128+127

BYTE 类型

语法:BYTE
功能:与TINYINT相似,精度为3,标度为0

SMALLINT 类型

语法:SMALLINT
功能:用于存储有符号整数,精度为5,标度为0。取值范围为:-32768(-2^15^)+32767(2^15^-1)

BINARY 类型

语法:BINARY[(长度)]
功能:BINARY数据类型用来存储定长二进制数据。缺省长度为1个字节。最大长度由数据库页面大小决定,具体最大存储长度算法与CHAR类型的相同,其在表达式计算中的长度上限也与CHAR类型相同,为32767BINARY常量以0x开始,后面跟着数据的十六进制表示。例如0x2A3B4058

VARBINARY 类型

语法:VARBINARY[(长度)]
功能:VARBINARY数据类型用来存储变长二进制数据,用法类似BINARY数据类型,可以指定一个不超过8188的正整数作为数据长度。缺省长度为8188个字节。VARBINARY数据类型的实际最大存储长度由数据库页面大小决定,具体最大长度算法与VARCHAR类型的相同,其在表达式计算中的长度上限也与VARCHAR类型相同,为32767

近似数值数据类型
FLOAT 类型

语法:FLOAT[(精度)]
功能:FLOAT是带二进制精度的浮点数。该类型直接使用标准C语言中DOUBLE。精度值设置无实际意义,精度设置用于保证数据移植的兼容性,实际精度在达梦内部是固定的。精度处于范围(1~126)时忽略精度,超过此范围直接报错。FLOAT取值范围-1.7X10^308^1.7X10^308^

DOUBLE 类型

语法:DOUBLE[(精度)]
功能:DOUBLE是带二进制精度的浮点数。DOUBLE类型的设置是为了移植的兼容性。该类型直接使用标准C语言中DOUBLE。精度与取值范围用法与FLOAT完全一样。

REAL 类型

语法:REAL
功能:REAL是带二进制精度的浮点数,但它不能由用户指定使用的精度,系统指定其二进制精度为24,十进制精度为7。取值范围-3.4X10^38^3.4X10^38^

DOUBLE PRECISION 类型

语法:DOUBLEPRECISION[(精度)]
功能:该类型指明双精度浮点数。DOUBLEPRECISION类型的设置是为了移植的兼容性。该类型直接使用标准C语言中DOUBLE。精度与取值范围用法与FLOAT完全一样。

1.4.2位串数据类型
BIT 类型

语法:BIT
功能:BIT类型用于存储整数数据10NULL,只有0才转换为假,其他非空、非0值都会自动转换为真,可以用来支持ODBCJDBC的布尔数据类型。	DMBIT类型与SQLSERVER2000BIT数据类型相似。功能与ODBCJDBC的bool相同。

1.4.3日期时间数据类型

日期时间数据类型分为一般日期时间数据类型、时间间隔数据类型和时区数据类型三类,用于存储日期、时间和它们之间的间隔信息。

1.一般日期时间数据类型

DATE 类型

语法:DATE
功能:DATE类型包括年、月、日信息,定义了'-4712-01-01''9999-12-31'之间任何一个有效的格里高利日期。DM支持儒略历,并考虑了历史上从儒略历转换至格里高利日期时的异常,不计算'1582-10-05''1582-10-14'之间的10天。
DM支持SQL92标准或SQLSERVERDATE字值,例如:DATE'1999-10-01''1999/10/01''1999.10.01'都是有效的DATE值,且彼此等价。年月日中第一个非0数值前的0亦可省略,例如'0001-01-01'等价于'1-1-1'

TIME 类型

语法:TIME[(小数秒精度)]
功能:TIME类型包括时、分、秒信息,定义了一个在'00:00:00.000000''23:59:59.999999'之间的有效时间。TIME类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为06,如果未定义,缺省精度为0
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值