Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104674334
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-04-07 08:00:52

  出处:Unix爱好者家园unix-cd.com   


1、概述

RDSQL是由IBM创建的用于建立和查询数据库的专用语言,是结构查询语言(SQL)的增强版。作为SQL工具,它适应了ANSI标准的要求。语言中增强的RDS允许用户在数据库表与系统文件之间装载和卸下,允许用户修改数据库,修改表名和字段名。扩展的其他部分增强可标准SQL语句的功能。

RDSQL是INFORMIX-SQL设计的相关查询语言。作为语言,RDSQL还可以用于设计用户所需的报表,以及选择其中的数据。

       RDSQL是一种自由格式的语言,它把所有连续的空白(包括空格、制表符、甚至换行符)都看作一个单独的空格。关键字串和数据至关重要;而对于RDSQL,屏幕上语句排列的物理顺序无关紧要。用户应将语句格式化以利于用户和他人。命令文件中可以包含一些注释(用{}符号括起来),RDSQL将忽略不执行这些语句。

RDSQL标识符为某一对象的名称,它可以由字母,数字和下划线组成。其第一个字符必须为字母。除非另加注明,标识符可以包含1到8个字符。

Database       数据库名是一个标识符。在DOS操作系统下由1到8个字符组成,在UNIX操作系统由1到10个字符组成。

Table            作为表名也必须唯一。

Column         在表中的字段名也必须唯一;而在某库中可以有重复字段名。当在查询中同样字段名的字段出现在一个以上的表中时,请使用table.column(表名.字段名)作特别指定。

 

2、如何使用RDSQL

       用户每次可以执行一句RDSQL语句,或者同时执行由分号分隔的一组RDSQL语句

              statement;

              statement;

              .

              .

              statement;

       RDSQL语句以分号间隔,无终止符。如果只执行单句,则无须分号。

选择主菜单上的Query-language项即可使用RDSQL。如果没有当前数据库,INFORMIX-SQL将显示出CHOOSE DATABASE屏幕,一旦选择了一个数据库,RDSQL屏幕将显示如下:

 

RDSQL:       New Run Modify User-editor Output Choose Save Info Drop Exit

Enter new RDSQL statements using RDSQL editor.

………………..store…………………Presss CTRL-W for Help…………………

 

当用户使用INFORMIX-SQL工作时,RDSQL将保持最后调出的一组语句,并利用其工作。这组语句称为当前语句。

RDSQL菜单有10项选择:

New        允许录入一组新的语句作为当前语句。当用户选择了New项而又没有用Save选择项存好当前语句时,当前句将被丢失,取而代之的是新的语句。

Run        执行当前语句

Modify           以RDSQL编辑程序显示当前语句。用户可以更改句法错误,作出某些改动,或者加入一些语句。

User-editor            允许用户使用系统编辑程序在编辑空间中对当前语句进行编辑。用户可以通过改变DBEDIT环境变量改变编辑程序的选择。当用户在磁盘上写下某文件时,无须给出名称;RDSQL将给出一个临时名称直至用户将其作为系统文件存放存放起来。

Output          将执行当前语句的结果送到打印机。或者文件系统,或者其他程序。

Choose         允许用户选择适当的命令文件作当前语句。所有以后缀为.sql存放的当前目录中的命令文件均可选择。如果没有当前数据库,则将提示给用户当前目录中所有命令文件的清单和包括当前数据库的目录。

Save             存放当前语句到某一命令文件。RDSQL将在用户给定的文件名后附上.sql后缀。

Info        显示当前数据库中某个表的信息。

Drop       从数据库中删除某个RDSQL命令文件。

Exit         返回INFORMIX-SQL主菜单。

 

3、数据库数据类型

       用户在数据库中必须注明每一字段的数据类型。

       简要的RDSQL有效数据类型如下:

       CHAR(n)              字符串的长度为n       (1<=n<32,767)

SMALLINT              范围在-32,767到+32,767的全体整数

INTERGER            范围在-2,147,483,647到+2,147,483,647的全体整数

DECIMAL[(m{,n})]  十进制浮点数,其中包括所有有效数字为m(<=32)(精度)及小数点右边n(<=m)(标度)的数字。当用户给定了m值和n值,对DECIMAL变量的操作将采用“固定小数点”的算法。所有绝对值小于0.5*10-n被赋为零,可以正确存储的此种类型的最大变量值为10m-n-10-n。

SMALLFLOAT              二进制浮点数,与单精度浮点类型数据一致。SMALLFLOAT数据类型值的范围与用户机器中C语言的“float”数据类型的值域相同。在小机器中,RDSQL将FLOAT置为DECIMAL(8)。

FLOAT          二进制浮点数,与双精度浮点类型数据一致。FLOAT数据类型值的范围与用户机器中C语言的“double”数据类型的值域相同。在小机器中,RDSQL将FLOAT置为DECIMAL(16)。

MONEY[(m[,n])]    与DECIMAL数据类型相似,MONEY类型数据也可以包含两个参数。其中m,n的限度与DECIMAL(m,n)中的相同。两者之间的不同就在于MONEY型变量显示有$符。MONEY(m)型被定义为DECIMAL(m,2)并且如再无其它参数,MONEY的缺省定义为DECIMAL(16,2)忽略参数的数目,MONEY型数据通常被看作定点十进制数。

SERIAL{(n)}     这是唯一由RDSQL标定的序列型整数。用户可以指定超始值n。缺省的初值为1。

DATE       日期型值必须包含两个隔线标志,格式可以为mm/dd/yy或者mm/dd/yyyy。Mm指明月份(1或者01为1月,2或者02为2月,以此类推)。Dd指明月中的某一天(从1到某月最大天数)。Yy和yyyy指明年份,当你仅用两位标明年份时,RDSQL假定你是指“19”**年。RDSQL的DATE型数据含有从1899年12月31起至某年某月某日的天数。

 

4、RDSQL语句摘要

INFORMIX-SQL使用5种不同类型的RDSQL语句:

·           数据定义语句

·           数据处理语句

·           数据存取语句

·           数据完整性语句

·           辅助性语句

 

4.1数据定义语句

数据定义语句包括建立、删除数据库及其表名、视图及索引等;还包括修改或重命名某表和字段的语句。在下列语句中,只有DATABASE语句在对已存在的库中数据进行处理前是必须的。

CREATE               建立一个数据库目录,启动系统目录,并且使新建的数据库

DATABASE           为当前数据库。任何时候只能有一个当前数据库。

DATABASE           选择某数据库并使其成为当前数据库。任何时候,只能有一

                             个当前数据库。

CLOSE                 关闭当前数据库文件,使得不存在当前数据库。如果没有当

DATABASE           前数据库,只有3种RDSQL语句可以执行:

·           CREATE DATABASE

·           DATABASE

·           DROP DATABASE

DROP DATABASE 删除某数据库子目录,所有的表,索引,系统目录。

CREATE TABLE    建立一个表及其各字段和数据类型。

ALTER TABLE    从某个表中增加或删除字段及修改字段的数据类型。

RENAME TABLE    改变表的名称。

DROP TABLE    删除某表的所有数据,索引并消除该表在系统目录中的入口。

CREATE VIEW   从现存的表和视图中选择记录和字段定义一个表。由于基础

DROP VIEW           表中数据的变化,所以视图建立在基础表之上。

DROP VIEW           从系统目录中删除视图的定义,同时与之相关的视图定义也

                             被删除了。基础表不受影响。

CREATE               定义某个表或视图的别名。别名将作用为只允许它的定义者

SYNONYM     才可以将它删除。这意味着如果多个人想使用某个表或视图,

                             则他们必须分别建立别名。

DROP            从系统目录中删除别名。

SYNONYM

RENAME COLUMN 改变字段名称。

CREATE INDEX 对某表中的一个或多个字段建立索引。

ALTER INDEX 允许用户修改表以使记录顺序与索引顺序一致。该索引称为

综合索引。

DROP INDEX           删除索引。

UPDATE STATISTICS 在系统目录上修改表的统计数字。

 

4.2数据处理语句

数据处理语句是经常使用的语句,语句如下:

DELETE       从表中删除一个或多个记录。

INSERT       从表中增加一个或多个记录。

SELECT       从数据库中提取数据。

UPDATE       从表中的记录上修改数据。

SELECT语句是十分重要和复杂的RDSQL语句。举例如下:

       SELECT lname,company

              FROM customer

                     WHERE customer_num=101;

此语句查询的是名为customer的表,返回值是客户编号为101的记录。从该记录中选择并显示相应的名和公司名称的字段值。

 

4.3数据存取语句

只有数据库管理员或表的主人特定准予了使用权的用户才能从数据库和表中特定的字段中存取数据。用户可以通过执行LOCK TABLE语句暂时限制某个表的存取。(执行之后,RDSQL仅仅锁住记录直至执行结束。通常不必要直接锁表/记录)。

RDSQL提供如下语句便于用户作数据存取:    

GRANT         对特殊用户或对所有用户准予数据库存取权限。

REVOKE       对特殊用户或对所有用户撤消数据库存取权限。

LOCK TABLE   仅允许当前用户存取某个表,而其它用户只可以读此表。只有当多用户环境和同时作用于此表会引起用户间干扰时使用LOCK TABLE语句。由于限制了其它用户对表的存取,LOCK TABLE语句减少了数据库此时的存取能力。如果需要这种处理,用户必须在写入LOCKTABLE语句之前写上BEGIN WORK语句。

UNLOCK TABLE   恢复已锁住的表的存取能力。

SET LOCK MODE       决定是否要随后的RDSQL等待已锁住的记录变成开锁状态。

注意:数据处理语句仅作用于多用户系统。

 

4.4数据完整性语句

RDSQL通过履行轨迹跟踪和事务处理的手段来提供数据完整性。轨迹跟踪是指以一个文件来完成轨迹记录,其中包括增加、删除、修改以及维护某数据库表的历史。在发生系统故障的情况下,用户可以通过利用轨迹跟踪容易地从备份拷贝表中恢复表和跟踪文件。

事务处理是在数据库上作为独立单元实施的一系列操作(RDSQL语句)。例如,在书籍销售方面,在几处不同的结算部门的多种操作都要作为一个单元进行,否则这些书将收支不平衡。利用INFORMIX-SQL,通过记录所有对数据库的修改操作,用户可以得到数据的完整性。用户还可以通过选项修改数据库或是相反的操作以使数据库不被接触。

轨迹跟踪和事务处理这两项工作都会影响系统功能和存储。因此使用这些技术必须多加小心。

下列语句将在维护数据库的完整性中使用:

CREATE AUDIT           检查表的索引以确定是否已被破坏。此语句允许用户在RDSQL中运行bcheck工具。

DROP AUDIT                  维护已被破坏的表的索引。此语句允许用户在RDSQL中运行bcheck工具。

RECOVER TABLE          在备份的拷贝和跟踪文件的基础上恢复数据库表。

BEGIN WORK                 开始处理的标志。

COMMIT WORK          从最后的BEGIN WORK语句开始所有对数据库的修改的标志。

ROLLBACK WORK              利用某个处理日志文件来从最后的备份拷贝中恢复数据库。

START DATABASE       开始一个新的事务处理日志文件。

ROLLFORWARD           利用某个处理日志文件来从最后的备份中恢复数据

DATABASE                   库。

 

4.5辅助性语句

下列语句是RDS对SQL的扩充:

CHECK TABLE              检查表的索引以确定是否已被破坏。此语句允许用户在RDSQL中运行bcheck工具。

REPAIR TABLE   维护已被破坏的表的索引。此语句允许用户在RDSQL中运行bcheck工具。

LOAD                          把以ASCII码形式的系统文件读入数据库表中。

UNLOAD                     把数据库表的内容写到ASCII格式的系统文件上。

INFO                           显示保持在系统目录中的数据库信息。

OUTPUT                     描述了SELECT语句的输出端口,或是一个系统文件,或是打印机,或是通道。
阅读(1233) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~