主要SQL语句详解<2>

---摘自互联网
  1. 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]:以上所有表级权限

 

  1. REVOKE {DBA|RESOURCE|CONNECT} FROM {PUBLIC|user-list}
  2. 收权命令。

    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;

     

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

    table-name:表名称。

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

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

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

    例:lock table user in exclusive mode;

     

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

    table-name:表名称。

    例:unlock user;

     

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

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

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

     

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

    pathname:事务处理日志文件。

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

    例;clost database;

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

     

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

     

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

     

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

     

  17. 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

ANDOR=!=<>>、 >= <=<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��60星期天,1星期一;返回整数

YEAR(日期/时间表达式)、返回整数

DATE(非日期表达式):返回日期型

EXTEND(日期/时间表达式,[第一个至最后一个]):返回指定的整数

MDY(,,):返回日期型

CURRENT:返回日期型

(5)时间函数

ROUND(),四舍五入。如:ROUND(10.95,position)position进行四舍五入的前一位置

TRUNC(),截取。如:TRUNC(10.95,0)position截取的位置

INFORMIX临时表在下列情况下自动取消:

A.退出数据库访问工具(如DBACCESS

B.SQL通话结束(DISCONNECT

C.发出取消表语句

D.退出程序时

 

  1. INSERT

INSERT INTO view_name|table_name [(column_list)] VALUES (value_list)

INSERT INTO view_name|table_name [(column_list)] select_statement

插入数据

view_name|table_name:视图名或表名称

column_list:数据项列表。

value_list:值列表

select_statement:查询语句。

例:略

 

  1. DELETE FROM view_name|table_name WHERE search-conditions

删除语句。

view_name|table_name:视图名或表名称

search-conditions;删除条件

例:略

 

  1. UPDATE

UPDATE view_name|table_name SET column_1 = value_1ist WHERE search_conditions

UPDATE view_name|table_name SET column_1|* = value_1ist WHERE search_conditions

更新数据语句。

view_name|table_name:表名称或视图表名称

value_1ist:字段值

search_conditions:更新数据的条件

例:略

 

  1. CHECK TABLE table-name

检查索引语句。

语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。

例:略

 

  1. REPAIR TABLE table-name

修复索引。

语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。

例:略

 

  1. LOAD FROM “file-name” INSERT INTO table_name [(column_name[,…])]

将文本数据栽入表中。

例:load form “aa.txt” insert into user;

 

  1. UNLOAD TO “pathname”

将表中数据卸为文本。

例:unload to “aa.txt” select * from user;

 

  1. INFO

系统信息查询。

INFO TABLES:得到当前数据库上表的名字。

INFO columns FOR table_name:指定表上的字段信息。

INFO INDEXES FOR table_name:指定表上的索引信息。

INFO [ACCESS|PRIVILEGES] FOR table_name:指定表上的存取权限。

INFO STATUS FOR table_name:指定表的状态信息。

例: info tables;