主要 SQL语句详解

主要  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/custo 
mer.log”; 
2.  DATABASE databse-name [EXCLUSIVE] 
选择数据库。 
database_name:数据库名称。 
EXCLUSIVE:独占状态。 
存取当前目录和  DBPATH 中指定的目录下的数据库,事务中处理过程中不 
要使用此语句。 
例:dtabase customerdb; 
3.  CLOSE DATABASE 
关闭当前数据库。database_name:数据库名称。 
此语句之后,只有下列语句合法: 
CREATE DATABASE; DATABASE; DROP DATABSE; ROLLFORWARD DATABASE; 
删除数据库前必须使用此语句。 
例:close database; 
·  DROP DATABASE database_name 
删除指定数据库。 
database_name:数据库名称。 
用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删 
除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通 
过ROLLBACK WORK 也不可将数据库恢复。 
例:drop databse customerdb; 
·  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; 
·  ALTER TABLE 
ALTER TABLE table-name 
{ADD (newcol_name newcol_type [BEFORE oldcol_name], …) | DROP (oldco 
l_name, …) 
| MODIFY (oldcol_name newcol_type [NOT NULL], … )}, … 
修改表结构。 
table-name:表名称。 
newcol_name:新字段名称 
newcol_type:新字段类型 
oldcol_name:老字段名称 
可以使用单个或多个  ADD 子句、DROP 子句、MODIFY 子句,但某个字句失败,操 
作即中止;原字段是  NULL,不允许  MODIFY 为  NOT NULL,除非所有  NULL 字段中 
均非空,反之可以;ALTER使用者是表的拥有者或拥有DBA权限,或被授权;事 
务中处理过程中不要使用此语句。 
例:alter table user 
add ( c6 char(20) before c5); 
·  RENAME TABLE oldname TO newname修改表名。 
oldname:原名称。 
newname:新名称。 
RENAME 使用者是表的拥有者或拥有  DBA 权限,或被授权;事务中处理过程中不 
要使用此语句。 
例:rename user to bbb; 
·  DROP TABLE table-name 
删除表。 
table-name:表名称。 
删除表意味着删除其中所有数据、各字段上的索引及对表的赋权、视图等;用户 
不能删除任何系统目录表;语句使用者是表拥有者或拥有DBA权限,事务中处理 
过程中不要使用此语句。 
·  RENAME COLUMN table.oldcolumn, TO newcolumn 
修改字段名。 
table.oldcolumn:表名及原字段名称 
newcolumn:新字段名称。 
语句使用者是表的拥有者或拥有DBA权限或有  ALTER权限的用户,  事务中处理过 
程中不要使用此语句。 
例:rename column user.c6 to c7; 
·  CREATE VIEW view-name column-list 
CREATE VIEW view-name column-list AS select_statement [WITH CHECK OPT 
ION] 
创建视图。 
view-name:视图名称。column-list:字段列表。 
select_statement:SELECT语句。 
以下语句不使用视图:ALTER TABLE,DROP INDEX,ALTER INDEX,LOCK TABLE, 
CREATE INDEX, RENAME TABLE;视图将延用基表的字段名,对表达式等虚字段 
和多表间字段重名必须指明标识其字段名;若对视图中某些字段命名,则所有字 
段都必须命名;视图中数据类型延用基表中的数据类型,虚字段起诀于表达式; 
不能使用ORDER BY和UNION子句;对视图中所有的字段要有SELECT权限;事务 
中处理过程中使用此语句,即使事务回滚,视图也将建立,不能恢复。 
例:create view v_user as select * from user where c1 = “B1”; 
·  DROP VIEW view-name 
删除视图。 
view-name:视图名称。 
用户可删除自己建立的视图;视图的后代视图也被删除;事务中处理中不要使用 
此语句。 
例:drop view v_user; 
·  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); 
·  ALTER INDEX index-name TO [NOT] CLUSTER 
修改索引性质。 
index-name:索引名称。 
TO [NOT] CLUSTER:去掉或加上CLUSTER属性。 
语句执行时,将表的状态置为EXCLUSIVE;事务中处理过程中使用此语句,即使 
事务回滚,索引性质将改变,不能恢复。 
例:alter index ix_user to not cluster; 
·  DROP INDEX index-name 
删除索引。 
index-name:索引名称。 
语句使用者是索引的拥有者或拥有 DBA 权限,事务中处理过程中不要使用此语 
句,否则事务无法恢复。 
例:drop index ix_user; 
·  CREATE SYNONYM synonym FOR table-name 
创建同义名。 
synonym:同义名 
table-name:表名称 
数据库的创建者可以使用同义名;没有赋予同义名权限的用户不能使用同义名; 
同义名不能和表名相同;事务中处理过程中不要使用此语句。例:create synonym user_alias for user; 
·  DROP SYNONYM synonym 
删除同义名。 
synonym:同义名 
可以删除自己建立的同义名;  事务中处理过程中不要使用此语句,  否则无法恢复。 
例:drop synonym user_alias; 
·  UPDATE STATISTICS [FOR TABLE table-name] 
更新数据库的统计数字。 
table-name:表名称 
此语句仅作用于当前数据库;可提高查询效率;只有执行此语句,才改变统计数 
据。 
例:update statistics for table user; 
18.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 O 
PTION] 
授表级权限。 
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、MAT 
CHES、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&#0;&#0;6,0星期天,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.退出程序时 
28. 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:查询语句。 
例:略 
29. DELETE  FROM  view_name|table_name  WHERE  search-conditions 
删除语句。 
view_name|table_name:视图名或表名称 
search-conditions;删除条件 
例:略 
30. UPDATE 
UPDATE  view_name|table_name  SET  column_1  =  value_1ist  WHERE  search_c 
onditions 
或  UPDATE  view_name|table_name  SET  column_1|*  =  value_1ist  WHERE  sear 
ch_conditions 
更新数据语句。view_name|table_name:表名称或视图表名称 
value_1ist:字段值 
search_conditions:更新数据的条件 
例:略 
31. CHECK  TABLE  table-name 
检查索引语句。 
语句使用者是表的拥有者或拥有DBA权限;不能对systable 使用此语句。 
例:略 
32. REPAIR  TABLE  table-name 
修复索引。 
语句使用者是表的拥有者或拥有DBA权限;不能对systable 使用此语句。 
例:略 
33. LOAD  FROM  “file-name”  INSERT  INTO  table_name  [(column_name 
[,…])] 
将文本数据栽入表中。 
例:load  form  “aa.txt”  insert  into  user; 
34. UNLOAD  TO  “pathname” 
将表中数据卸为文本。 
例:unload  to  “aa.txt”  select  *  from  user; 
35. 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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值