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数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是1至38。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。所有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类型相同,为32767。BINARY常量以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类型用于存储整数数据1、0或NULL,只有0才转换为假,其他非空、非0值都会自动转换为真,可以用来支持ODBC和JDBC的布尔数据类型。 DM的BIT类型与SQLSERVER2000的BIT数据类型相似。功能与ODBC和JDBC的bool相同。
1.4.3日期时间数据类型
日期时间数据类型分为一般日期时间数据类型、时间间隔数据类型和时区数据类型三类,用于存储日期、时间和它们之间的间隔信息。
1.一般日期时间数据类型
DATE 类型
语法:DATE
功能:DATE类型包括年、月、日信息,定义了'-4712-01-01'和'9999-12-31'之间任何一个有效的格里高利日期。DM支持儒略历,并考虑了历史上从儒略历转换至格里高利日期时的异常,不计算'1582-10-05'到'1582-10-14'之间的10天。
DM支持SQL92标准或SQLSERVER的DATE字值,例如: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类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为0~6,如果未定义,缺省精度为0。