第 1 章 结构化查询语言 DM_SQL 简介
结构化查询语言 SQL(Structured Query Language)是在 1974 年提出的一种关系数据库语言。由于 SQL 语言接近英语的语句结构,方便简洁、使用灵活、功能强大,倍 受用户及计算机工业界的欢迎,被众多计算机公司和数据库厂商所采用,经各公司的不断修改、扩充和完善,SQL 语言最终发展成为关系数据库的标准语言。
SQL 的第一个标准是 1986 年 10 月由美国国家标准化组织(ANSI)公布的 ANSI X3.135-1986 数据库语言 SQL,简称 SQL-86,1987 年国际标准化组织(ISO)也通过了 这一标准。以后通过对 SQL-86 的不断修改和完善,于 1989 年第二次公布了 SQL 标准 ISO/IEC 9075-1989(E),即 SQL-89。1992 年又公布了 SQL 标准 ISO/IEC 9075:
1992,即 SQL-92。最新的 SQL 标准是 SQL-3(也称 SQL-99),1999 年作为 ISO/IEC 9075:1999《信息技术——数据库语言 SQL》发布。我国也相继公布了数据库语言 SQL 的 国家标准。 SQL 成为国际标准以后,其影响远远超出了数据库领域。例如在 CAD、软件工程、人 工智能、分布式等领域,人们不仅把 SQL 作为检索数据的语言规范,而且也把 SQL 作为检 索图形、图象、声音、文字等信息类型的语言规范。目前,世界上大型的著名数据库管理系
统均支持 SQL 语言,如 Oracle、Sybase、SQL Server、DB2 等。在未来相当长的时间 里,SQL 仍将是数据库领域以至信息领域中数据处理的主流语言之一。
由于不同的 DBMS 产品,大都按自己产品的特点对 SQL 语言进行了扩充,很难完全符 合 SQL 标准。目前在 DBMS 市场上已将 SQL 的符合率作为衡量产品质量的重要指标,并研 制成专门的测试软件,如 NIST。目前,DM SQL-92 入门级符合率达到 100%,过渡级符合 率达到 95%,并且部分支持更新的 SQL-99 标准。同时 DM 还兼容 Oracle 11g 和 SQL Server 2008 的部分语言特性。本章主要介绍 DM 系统所支持的 SQL 语言——DM_SQL 语言。
1.1 DM_SQL 语言的特点
DM_SQL 语言符合结构化查询语言 SQL 标准,是标准 SQL 的扩充。它集数据定义、数 据查询、数据操纵和数据控制于一体,是一种统一的、综合的关系数据库语言。它功能强大, 使用简单方便、容易为用户掌握。DM_SQL 语言具有如下特点:
1. 功能一体化
DM_SQL 的功能一体化表现在以下两个方面:
1) DM_SQL 支持多媒体数据类型,用户在建表时可直接使用。DM 系统在处理常规数 据与多媒体数据时达到了四个一体化:一体化定义、一体化存储、一体化检索、一 体化处理,最大限度地提高了数据库管理系统处理多媒体的能力和速度;
2) 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. 语言简洁,方便易学
DM_SQL 语言功能强大,格式规范,表达简洁,接近英语的语法结构,容易为用户所掌 握
1.2 保留字与标识符
标识符的语法规则兼容标准 GJB 1382A-9X,标识符分为正规标识符和定界标识符两 大类。
正规标识符以字母、_、$、#或汉字开头,后面可以跟随字母、数字、_、$、#或者汉 字,正规标识符的最大长度是 128 个英文字符或 64 个汉字。正规标识符不能是保留字。
正规标识符的例子:A,test1,_TABLE_B,表 1。
定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中 使用连续两个双引号转义为一个双引号。 定界标识符的例子:"table","A","!@#$"。 保留字的清单参见附录
1.3 DM_SQL 语言的功能及语句
DM_SQL 语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、查询、操纵和控制四个方面,通过各种不同的 SQL 语句来实现。按照所实现的功能,DM_SQL 语句分为以下几种:
1. 用户、模式、基表、视图、索引、序列、全文索引、存储过程和触发器的定义和删 除语句,基表、视图、全文索引的修改语句,对象的更名语句;
2. 查询(含全文检索)、插入、删除、修改语句;
3. 数据库安全语句。包括创建角色语句、删除角色语句,授权语句、回收权限语句, 修改登录口令语句,审计设置语句、取消审计设置语句等。
在嵌入方式中,为了协调 DM_SQL 语言与主语言不同的数据处理方式,DM_SQL 语言引 入了游标的概念。因此在嵌入方式下,除了数据查询语句(一次查询一条记录)外,还有几 种与游标有关的语句:
1. 游标的定义、打开、关闭、拨动语句;
2. 游标定位方式的数据修改与删除语句。
为了有效维护数据库的完整性和一致性,支持 DBMS 的并发控制机制,DM_SQL 语言提供了事务的回滚(ROLLBACK)与提交(COMMIT)语句。同时 DM 允许选择实施事务级读一致 性,它保证同一事务内的可重复读,为此 DM 提供用户多种手动上锁语句,和设置事务隔离 级别语句
1.4 DM_SQL 所支持的数据类型
数据类型是可表示值的集。值的逻辑表示是<字值>。值的物理表示依赖于实现。DM 系 统具有 SQL-92 的绝大部分数据类型,以及部分 SQL-99 和 SQL Server 2000 的数据类 型。
1.4.1 常规数据类型
1. 字符数据类型
CHAR 类型
语法:CHAR[(长度)]
功能:CHAR 数据类型指定定长字符串。在基表中,定义 CHAR 类型的列时,其最大存 储长度由数据库页面大小决定,可以指定一个不超过其最大存储长度的正整数作为字符长 度,例如:CHAR(100)。如果未指定长度,缺省为 1。DM 确保存储在该列的所有值都具有 这一长度。CHAR 数据类型最大存储长度和页面大小的对应关系请见下表 1.4.1。但是,在 表达式计算中,该类型的长度上限不受页面大小限制,为 32767。DM 支持按字节存放字符 串
这个限制长度只针对建表的情况,在定义变量的时候,可以不受这个限制长度的限制。 另外,实际插入表中的列长度要受到记录长度的约束,每条记录总长度不能大于页面大小的 一半。
CHARACTER 类型
语法:CHARACTER[(长度)]
功能:与 CHAR 相同。
VARCHAR 类型/VARCHAR2 类型
语法:VARCHAR[(长度)]
功能:VARCHAR 数据类型指定变长字符串,用法类似 CHAR 数据类型,可以指定一个 不超过 8188 的正整数作为字符长度,例如:VARCHAR (100)。如果未指定长度,缺省为 8188。
在基表中,当没有指定 USING LONG ROW 存储选项时,插入 VARCHAR 数据类型的实 际最大存储长度由数据库页面大小决定,具体最大长度算法如表 1.4.1;如果指定了 USING LONG ROW 存储选项,则插入 VARCHAR 数据类型的长度不受数据库页面大小限制。VARCHAR 类型在表达式计算中的长度上限不受页面大小限制,为 32767;CHAR 同 VARCHAR 的区别在于前者长度不足时,系统自动填充空格,而后者只占用实际的字节空间。另外,实际插入表中的列长度要受到记录长度的约束,每条记录总长度不能 大于页面大小的一半。 VARCHAR2 类型和 VARCHAR 类型用法相同.
2. 数值数据类型
1. 精确数值数据类型
NUMERIC 类型
语法:NUMERIC[(精度 [, 标度])]
功能:NUMERIC数据类型用于存储零、正负定点数。其中:精度是一个无符号整数, 定义了总的数字数,精度范围是1至38。标度定义了小数点右边的数字位数。一个数的标度 不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。例 如:NUMERIC(4,1)定义了小数点前面3位和小数点后面1位,共4位的数字,范围在-999.9 到999.9。所有NUMERIC数据类型,如果其值超过精度,DM会返回一个出错信息,如果超 过标度,则多余的位会被截断。 如果不指定精度和标度,缺省精度为38,标度无限定。
DECIMAL类型
语法:DECIMAL[(精度 [, 标度])]
功能:与 NUMERIC 相似。
DEC 类型
语法:DEC[(精度[, 标度])]
功能:与 DECIMAL 相同。
NUMBER 类型
语法:NUMBER[(精度[, 标度])]
功能:与 NUMERIC 相同。
INTEGER 类型
语法:INTEGER
功能:用于存储有符号整数,精度为 10,标度为 0。取值范围为:-2147483648
(-2 31)~ +2147483647(231-1)。
INT 类型
语法:INT
功能:与 INTEGER 相同。
BIGINT 类型
语法:BIGINT
功 能 : 用 于 存 储 有 符 号 整 数 , 精 度 为 19 ,标度为 0 。 取 值 范 围 为 :
-9223372036854775808(-2 63)~9223372036854775807(263-1)。
TINYINT 类型
语法:TINYINT
功能:用于存储有符号整数,精度为 3,标度为 0。取值范围为:-128 ~ +127。
BYTE 类型
语法:BYTE
功能:与 TINYINT 相似,精度为 3,标度为 0。
SMALLINT 类型
语法:SMALLINT
功能:用于存储有符号整数,精度为 5,标度为 0。取值范围为:-32768(-2 15) ~
+32767(215-1)。
4</DI< div>
标签:语句,DM,语言,数据类型,标度,使用手册,SQL From: https://www.cnblogs.com/ios9/p/17957818