[转帖]Informix SQL 语句详解 (2)

发表于:2007-06-22来源:作者:点击数: 标签:
Informix SQL 语句详解(2) GR ANT {DBA|RESOURCE|CONNECT}TO{PUBLIC|user-list} 授权命令。 PUBLIC|user-list:全部或指定的用户。 三种权限居且仅居其一,事务处理过程中不要执行GRANT语句。 例:gr ant resourcetopulbic GRANTtab-privilegeONtable-name

   
Informix SQL 语句详解 (2) 

GRANT {DBA|RESOURCE|CONNECT} TO {PUBLIC|user-list} 
授权命令。 

PUBLIC|user-list:全部或指定的用户。 

三种权限居且仅居其一,事务处理过程中不要执行GRANT语句。 

例:grant resource to pulbic; 

GRANT tab-privilege ON table-name TO {PUBLIC|user-list} [WITH GRANT OPTION] 

授表级权限。 

tab-privilege:表级权限。 

table-name:表名称。 

PUBLIC|user-list:全部或指定的用户。 

[WITH GRANT OPTION]:表示被授权用户有否权限进行二次授权。 

用户可以在自己建立表达式或被[WITH GRANT OPTION]准许的表中进行赋权;限定越多的权限优先级越高。 

例:grant update(c1,c6) on user to dick with grant option; 



附(INFORMIX的权限) 

(1) 数据库的权限(控制对数据库的访问以及数据库中表的创建和删除) 

DBA权限:全部权利,修改系统表,建立和删除表与索引、增加和恢复表数据,以及授予其他用户数据库权限等; 

RESOURCE权限:允许对数据库表中的数据进行存取,建立永久性表以及索引。 

CONNECT权限:只允许对数据库表中的数据进行存取,建立和删除视图与临时表。 

(2)表级权限(对表的建立、修改、检索和更新等权限) 

ALTER:更改权限 

DELETE:删除权限 

INDEX:索引权限 

INSERT:插入权限 

SELECT [(cols)]:指定字段或所有字段上的查询权限,不指明字段缺省为所有字段。 

UPDATE [(cols)] :指定字段或所有字段上的更新权限,不指明字段缺省为所有字段。 

ALL [PRIVILEGES]:以上所有表级权限 



19. REVOKE {DBA|RESOURCE|CONNECT} FROM {PUBLIC|user-list} 

收权命令。 

PUBLIC|user-list:全部或指定的用户。 

三种权限居且仅居其一,事务处理过程中不要执行GRANT语句。 

例:revoke resource from john; 

REVOKE tab-privilege ON table-name FROM {PUBLIC|user-list} 

收表级权限。 

tab-privilege:表级权限。 

table-name:表名称。 

PUBLIC|user-list:全部或指定的用户。 

[WITH GRANT OPTION]:表示被授权用户有否权限进行二次授权。 

用户只能取消由其本人赋予其他用户的表级存取权限;不能取消自己的权限,对SELECT和UPDATE作取消时,将取消
所有表中字段的SELECT 和UPDATE权限。 

例;revoke update on user from dick; 



LOCK TABLE table-name IN {SHARE|EXCLUSIVE} MODE 
记录级加锁和表级加锁或文件加锁。 

table-name:表名称。 

SHARE:允许读表中数据,但不允许作任何修改 

EXCLUSIVE:禁止其他任何形式访问表 

每次只能对表琐定一次;事务处理过程中,BEGIN WORK后立即执行LOCK TABLE以取代记录级加锁,COMMIT WORK和
ROLLBACK WORK语句取消所有对表的加锁;若没有事务处理,锁将保持到用户退出或执行UNLOCK为止。 

例:lock table user in exclusive mode; 



UNLOCK TABLE table-name 
取消记录级加锁和表级加锁或文件加锁。 

table-name:表名称。 

例:unlock user; 



SET LOCK MODE TO [NOT] WAIT 
改变锁定状态。 

TO [NOT]:等待解锁,有可能被死锁或不等待并提示错误信息,表示此记录被锁,缺省值。 

访问一个EXCLUSIVE状态下的记录,将返回一个错误。 



START DATABSE db_name [WITH LOG IN “pathname”] 
启动事务处理。 

“pathname”:事务处理日志文件。 

执行该语句前,需要先关闭当前数据库。 

例;clost database; 

start databse customer with log in “/usr/john/log/customer.log”; 



BEGIN WORK 
开始事务。例:begin work; 



COMMIT WORK 
提交(正常结束)事务。例:commit work; 



ROLLBACK WORK 
回滚(非正常结束)事务。例:rollback work; 



SELECT 
SELECT select_list FROM tab_name|view_name 

WHERE condition 

GROUP BY column_name 

HAVING condition 

ORDER BY column_list 

INTO TEMP table_name 

查询语句。 

select_list:选择表或* 

tab_name:表名称 

view_name:视图名称。 

condition:查询条件,可使用BETWEEN、IN、LIKE、IS NULL、LIKE、MATCHES、NOT、 

AND、OR、=、!=或<>、>、 >= 、<=、<、ALL、ANY、SOME 

column_name:分组字段名称 

condition:群聚条件 

column_list:排序字段列表,缺省ASC,可指定DSC;排序时,NULL值小于非零值。 

table_name:临时表名称 

例:略 

附(常用函数) 

(1)集合函数: 

count(*)、 

sum(数据项/表达式)、avg(数据项/表达式)、max(数据项/表达式)、min(数据项/表达式) 

count(distinct 数据项/表达式)、sum(distinct数据项/表达式)、avg(distinct数据项/表达式) 

(2)代数函数和三角函数 

HEX(数据项/表达式)、ROUND(数据项/表达式)、TRUNC(数据项/表达式)、 

TAN(数据项/表达式)、ABS(数据项/表达式)、MOD(被除数,除数) 

(3)统计函数 

标准差,stdev()、方差,variance()、范围,rang() 

(4)时间函数 

DAY(日期/时间表达式):返回数字型 

MONTH(日期/时间表达式):返回整数 

WEEKDAY(日期/时间表达式):0 

原文转自:http://www.ltesting.net