Chinaunix首页 | 论坛 | 博客
  • 博客访问: 312212
  • 博文数量: 94
  • 博客积分: 2220
  • 博客等级: 大尉
  • 技术积分: 975
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-17 21:17
文章分类

全部博文(94)

文章存档

2011年(5)

2010年(11)

2009年(1)

2008年(2)

2006年(1)

2005年(65)

2004年(9)

我的朋友

分类: DB2/Informix

2005-07-08 12:34:45

Informix SQL 语句详解

Informix SQL 语句详解

1.       CREATE  DATABASE  database_name [WITH  LOG  IN “pathname”] 
创建数据库。 
database_name
:数据库名称。 
“pathname”
:事务处理日志文件。 
创建一database_name.dbs目录,存取权限由GRANT设定,无日志文件就不能使用 
BEGIN  WORK
等事务语句(可用START  DATABASE语句来改变)。 
可选定当前数据库的日志文件。 
如:select  dirpath  form  systables  where  tabtype = “L”; 
例:create  databse  customerdb  with  log  in “/usr/john/log/customer.log”; 
DATABASE  databse-name [EXCLUSIVE]  
选择数据库。 
database_name:数据库名称。 
EXCLUSIVE
:独占状态。 
存取当前目录和DBPATH中指定的目录下的数据库,事务中处理过程中不要使用此语句。 

例:dtabase  customerdb; 
3.       CLOSE  DATABASE 
关闭当前数据库。 
database_name
:数据库名称。 
此语句之后,只有下列语句合法: 
CREATE  DATABASE
  DATABASE  DROP  DATABSE  ROLLFORWARD  DATABASE 
删除数据库前必须使用此语句。 
例:close  database; 
4.       DROP  DATABASE  database_name 
删除指定数据库。 
database_name
:数据库名称。 

用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK  WORK 也不可将数据库恢复。 

例:drop  databse  customerdb; 

  

5.       CREATE [TEMP]  TABLE  table-name (column_name  datatype [NOT  NULL], …) 

[IN “pathname”] 

创建表或临时表。 

table-name 
:表名称。 

column_name
:字段名称。 

data-type
:字段数据类型。 

path-name
:指定表的存放位置 

TEMP
用于指定建立临时表;表名要唯一,字段要唯一;有CONNECT权限的用户可建立临时表;创建的表缺省允许CONNECT用户存取,但不可以ALTER 

例:create  table  user 

(  c0  serial  not  null,  c1  char (10), 

c2  char(2), 

c3  smallint, 

c4  decimal(6,3), 

c5  date 

)  in “usr/john/customer.dbs/user; 

  

6.       ALTER  TABLE 

ALTER  TABLE  table-name 

{ADD (newcol_name  newcol_type [BEFORE  oldcol_name], …) |  DROP (oldcol_name, …) 

|  MODIFY (oldcol_name  newcol_type [NOT  NULL], … )}, … 

修改表结构。 

table-name
:表名称。 

newcol_name
:新字段名称 

newcol_type
:新字段类型 

oldcol_name
:老字段名称 

以使用单个或多个ADD子句、DROP子句、MODIFY子句,但某个字句失败,操作即中止;原字段是NULL,不允许MODIFYNOT  NULL,除非所有NULL字段中均非空,反之可以;ALTER使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语 句。 

例:alter  table  user 

add (  c6  char(20)  before  c5); 

  

7.       RENAME  TABLE  oldname  TO  newname 

修改表名。 

oldname
:原名称。 

newname
:新名称。 

RENAME使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语句。 

例:rename  user  to  bbb; 

  

8.       DROP  TABLE  table-name 

删除表。 

table-name
:表名称。 

删除表意味着删除其中所有数据、各字段上的索引及对表的赋权、视图等;用户不能删除任何系统目录表;语句使用者是表拥有者或拥有DBA权限,事务中处理过程中不要使用此语句。 

  

9.       RENAME  COLUMN  table.oldcolumn  TO  newcolumn 

修改字段名。 

table.oldcolumn
:表名及原字段名称 

newcolumn
:新字段名称。 

语句使用者是表的拥有者或拥有DBA权限或有ALTER权限的用户,事务中处理过程中不要使用此语句。 

例:rename  column  user.c6  to  c7; 

  

10.  CREATE  VIEW  view-name  column-list 

CREATE  VIEW  view-name  column-list  AS  select_statement [WITH  CHECK  OPTION] 

创建视图。 

view-name
:视图名称。 

column-list
:字段列表。 

select_statement
SELECT语句。 

下语句不使用视图:ALTER  TABLEDROP  INDEXALTER  INDEX LOCK  TABLECREATE  INDEX  RENAME  TABLE;视图 将延用基表的字段名,对表达式等虚字段和多表间字段重名必须指明标识其字段名;若对视图中某些字段命名,则所有字段都必须命名;视图中数据类型延用基表中 的数据类型,虚字段起诀于表达式;不能使用ORDER  BYUNION子句;对视图中所有的字段要有SELECT权限;事务中处理过程 中使用此语句,即使事务回滚,视图也将建立,不能恢复。 

例:create  view  v_user  as  select *  from  user  where  c1 = “B1”

  

11. 
DROP  VIEW  view-name 

删除视图。 

view-name
:视图名称。 

用户可删除自己建立的视图;视图的后代视图也被删除;事务中处理中不要使用此语句。 

例:drop  view  v_user; 

  

12.  CREATE  INDEX 

CREATE [UNIQUE/DISTINCT] [CLUSTER]  INDEX  index_name  ON  table_name 

([column_name  ASC/DESC],…) 

创建索引。 

index_name
:索引名称。 

table_name
:表名称。 

column_name
:字段名称。 

UNIQUE/DISTINCT
:唯一索引。 

CLUSTER
:使表的物理存放顺序按索引排列。 

ASC/DESC
:升序或降序,缺省升序。 

语句执行时,将表的状态置为EXCLUSIVE;复合索引最多包含8个字段,所有字段长度和不得大于120字节;事务中处理过程中使用此语句,即使事务回滚,索引将建立,不能恢复。 

例:create  cluster  index  ix_user  on  user(c5); 

  

13.  ALTER  INDEX  index-name  TO [NOT]  CLUSTER 

修改索引性质。 

index-name
:索引名称。 

TO [NOT]  CLUSTER
:去掉或加上CLUSTER属性。 

语句执行时,将表的状态置为EXCLUSIVE;事务中处理过程中使用此语句,即使事务回滚,索引性质将改变,不能恢复。 

例:alter  index  ix_user  to  not  cluster; 

  

14.  DROP  INDEX  index-name 

删除索引。 

index-name
:索引名称。 

语句使用者是索引的拥有者或拥有DBA权限,事务中处理过程中不要使用此语句,否则事务无法恢复。 

例:drop  index  ix_user; 

  

15.  CREATE  SYNONYM  synonym  FOR  table-name 

创建同义名。 

synonym
:同义名 

table-name
:表名称 

数据库的创建者可以使用同义名;没有赋予同义名权限的用户不能使用同义名;同义名不能和表名相同;事务中处理过程中不要使用此语句。 

例:create  synonym  user_alias  for  user; 

  

16.  DROP  SYNONYM  synonym 

删除同义名。 

synonym
:同义名 

可以删除自己建立的同义名;事务中处理过程中不要使用此语句,否则无法恢复。 

例:drop  synonym  user_alias; 

  

17.  UPDATE  STATISTICS [FOR  TABLE  table-name] 

更新数据库的统计数字。 

table-name:表名称 

此语句仅作用于当前数据库;可提高查询效率;只有执行此语句,才改变统计数据。 

    
例:update  statistics  for  table  user; 
 
  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]
:表示被授权用户有否权限进行二次授权。  

用户只能取消由其本人赋予其他用户的表级存取权限;不能取消自己的权限,对SELECTUPDATE作取消时,将取消 
所有表中字段的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
:查询条件,可使用BETWEENINLIKEIS  NULLLIKEMATCHESNOT  

AND
OR=!=<>>、 >= <=<ALLANYSOME  

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

阅读(1140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~