找回密码
 立即加入
搜索

查看: 1413|回复: 3

数据库爱好者必备资料

[复制链接]
vicwr 发表于 2004-5-17 20:37:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。

您需要 登录 才可以下载或查看,没有账号?立即加入

×
informix SQL汇总</P>6 N- v9 d/ B1 F3 k2 K+ j3 Z4 ~% d, \

/ ^8 u6 D& F, B; Q: y% V% Y                  每个数据库管理系统(DBMS)都有其自己的数据处理语言(DML),但所有DML都基于一种语言SQL语言——结构化查询语言(SQL),其发音为“sequel”或“S-Q-L”。 </P>6 X( _$ I% D; _% H! C) T' ~$ U2 L
<>                    目前SQL的前身是E.F.Codd博士70年代发明的。第一个实现是在76年,称为sequel。而SQL首先被采用是在IBM的System
1 v5 G6 h9 P6 l7 z- y- w8 F                  R项目中。86年10月由ANSI确定为正式的关系查询语言标准。ISO在对其修改后在90年制定为国际工业标准。
! ~3 y8 ~2 Z3 [- O+ {% y. _                    无论进行何种数据库学习,SQL语言都是必学内容。在我国数据库语言SQL标准(GB12991)中规定了两个数据库语言的语法与语义:
: r3 }* L& M# h                  模式定义语言(SQL-DDL),描述SQL数据库的结构与完整性的约束;  
+ u9 L& _! {4 {  C2 f8 ?                  数据操纵语言(SQL-DML),描述操作数据库的执行语句  
8 y. ^: Y0 o7 M                    在本文章中涉及以上两个中的主要部分,(为叙述方便,以下对其统称为SQL),由于SQL在嵌入C时表现略有不同,所以下面均以非嵌入时的SQL进行。另外本文章也不是SQL的入门教材,阅读者应学习并实际用SQL操作过某种数据库。
! C- l4 ?8 S* Z" w" v3 B                    如果你系统学习过数据库理论,又能熟练操作INFORMIX关系数据库,甚至从事过有关数据库程序的设计,还那么作者在此恭喜你了。如果你尚未系统学习过数据库理论,并对INFORMIX数据库了解甚少,建议你先阅读有关的文档。</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
 楼主| vicwr 发表于 2004-5-17 20:38:33 | 显示全部楼层
<>【主要SQL语句详解】 </P><>            CREATE DATABASE database_name [WITH LOG IN “pathname”] </P><>. R- e/ |! `( p3 P& c
            创建数据库。 </P><>            database_name:数据库名称。 </P><>            “pathname”:事务处理日志文件。 </P><>            创建一database_name.dbs目录,存取权限由GRANT设定,无日志文件就不能使用 </P><>            BEGIN WORK等事务语句(可用START DATABASE语句来改变)。 </P><>            可选定当前数据库的日志文件。 </P><>            如:select dirpath form systables where tabtype = “L”; </P><>            例:create databse customerdb with log in , A/ I  v- ^. `  H4 E) ?& u8 W
            “/usr/john/log/customer.log”; </P><P>            DATABASE databse-name [EXCLUSIVE]  </P><P>            选择数据库。 </P><P>            database_name:数据库名称。 </P><P>            EXCLUSIVE:独占状态。 </P><P>            存取当前目录和DBPATH中指定的目录下的数据库,事务中处理过程中不要使用此语句。 </P><P>            例:dtabase customerdb; </P><P>            CLOSE DATABASE </P><P>- h# n4 i- W. j: r
            关闭当前数据库。 </P><P>            database_name:数据库名称。 </P><P>            此语句之后,只有下列语句合法: </P><P>            CREATE DATABASE; DATABASE; DROP DATABSE; ROLLFORWARD DATABASE; </P><P>            删除数据库前必须使用此语句。 </P><P>            例:close database; </P><P>            DROP DATABASE database_name </P><P>2 q0 h0 y. i  A$ j0 `& r
            删除指定数据库。 </P><P>            database_name:数据库名称。
3 r& l+ ?7 N9 m' S  i            用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK " o# o0 r( R! a9 A
            WORK 也不可将数据库恢复。 </P><P>            例:drop databse customerdb; </P><P>            CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …) </P><P>
9 k; q' s' U2 t0 P: O; q            [IN “pathname”] </P><P>            创建表或临时表。 </P><P>            table-name :表名称。 </P><P>            column_name:字段名称。 </P><P>            data-type:字段数据类型。 </P><P>            path-name:指定表的存放位置 </P><P>            TEMP用于指定建立临时表;表名要唯一,字段要唯一;有CONNECT权限的用户可建立临时表;创建的表缺省允许CONNECT用户存取,但不可以ALTER。 </P><P>
. E& N/ {( A6 C3 W; C% ?! |            例:create table user </P><P>            ( c0 serial not null, c1 char (10), </P><P>            c2 char(2), </P><P>            c3 smallint, </P><P>            c4 decimal(6,3), </P><P>            c5 date </P><P>            ) in “usr/john/customer.dbs/user; </P><P>            ALTER TABLE </P><P>
' l% ~% Q  o! ~            ALTER TABLE table-name  </P><P>            {ADD (newcol_name newcol_type [BEFORE oldcol_name], …) | DROP 2 }; n7 l8 o+ G/ |
            (oldcol_name, …) </P><P>            | MODIFY (oldcol_name newcol_type [NOT NULL], … )}, … </P><P>            修改表结构。 </P><P>            table-name:表名称。 </P><P>            newcol_name:新字段名称 </P><P>            newcol_type:新字段类型 </P><P>            oldcol_name:老字段名称 </P><P>            可以使用单个或多个ADD子句、DROP子句、MODIFY子句,但某个字句失败,操作即中止;原字段是NULL,不允许MODIFY为NOT " n& Y* u, `+ r* l- s
            NULL,除非所有NULL字段中均非空,反之可以;ALTER使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语句。 </P><P>
0 L. _5 ], r+ e3 i+ b9 T            例:alter table user </P><P>            add ( c6 char(20) before c5); </P><P>            RENAME TABLE oldname TO newname </P><P>3 Z  y: H. ~$ j$ L% k. `' e0 ?
            修改表名。 </P><P>            oldname:原名称。 </P><P>            newname:新名称。 </P><P>            RENAME使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语句。 例:rename user to bbb; </P><P>            DROP TABLE table-name </P><P>
1 G; k# L$ B+ g/ Y  i4 D            删除表。 </P><P>            table-name:表名称。 </P><P>            删除表意味着删除其中所有数据、各字段上的索引及对表的赋权、视图等;用户不能删除任何系统目录表;语句使用者是表拥有者或拥有DBA权限,事务中处理过程中不要使用此语句。 </P><P>
2 D+ z' n8 X" O- J            RENAME COLUMN table.oldcolumn, TO newcolumn </P><P>
9 v: s- G( n7 _- o            修改字段名。 </P><P>            table.oldcolumn:表名及原字段名称 </P><P>            newcolumn:新字段名称。 </P><P>            语句使用者是表的拥有者或拥有DBA权限或有ALTER权限的用户,事务中处理过程中不要使用此语句。 </P><P>            例:rename column user.c6 to c7; </P><P>            CREATE VIEW view-name column-list </P><P>0 q7 R4 f! j. m1 T2 x8 `- g2 S- x5 S
            CREATE VIEW view-name column-list AS select_statement [WITH CHECK & J( o! F4 `4 V! T7 w
            OPTION] </P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

 楼主| vicwr 发表于 2004-5-17 20:39:30 | 显示全部楼层
<>  创建视图。 </P><>            view-name:视图名称。 </P><>            column-list:字段列表。 </P><>            select_statement:SELECT语句。 </P><>            以下语句不使用视图:ALTER TABLE,DROP INDEX,ALTER INDEX,LOCK TABLE,CREATE
8 m6 y* N9 P1 P1 O. c: P2 {            INDEX, RENAME - G: C$ ?: q; x* }
            TABLE;视图将延用基表的字段名,对表达式等虚字段和多表间字段重名必须指明标识其字段名;若对视图中某些字段命名,则所有字段都必须命名;视图中数据类型延用基表中的数据类型,虚字段起诀于表达式;不能使用ORDER
  m( `  _- j0 u            BY和UNION子句;对视图中所有的字段要有SELECT权限;事务中处理过程中使用此语句,即使事务回滚,视图也将建立,不能恢复。 </P><>            例:create view v_user as select * from user where c1 = “B1”; </P><>            DROP VIEW view-name </P><>
1 Q/ h3 u5 |5 K) t3 G  b/ n            删除视图。 </P><>            view-name:视图名称。 </P><>            用户可删除自己建立的视图;视图的后代视图也被删除;事务中处理中不要使用此语句。 </P><P>            例:drop view v_user; </P><P>            CREATE INDEX  </P><P>  P. d9 \; x4 {: ~! S
            CREATE [UNIQUE/DISTINCT] [CLUSTER] INDEX index_name ON table_name </P><P>            ([column_name ASC/DESC],…)  </P><P>            创建索引。 </P><P>            index_name:索引名称。 </P><P>            table_name:表名称。 </P><P>            column_name:字段名称。 </P><P>            UNIQUE/DISTINCT:唯一索引。 </P><P>            CLUSTER:使表的物理存放顺序按索引排列。 </P><P>            ASC/DESC:升序或降序,缺省升序。
4 K- Q; Y% P0 R9 `4 i6 i         语句执行时,将表的状态置为EXCLUSIVE;复合索引最多包含8个字段,所有字段长度和不得大于120字节;事务中处理过程中使用此语句,即使事务回滚,索引将建立,不能恢复。 </P><P>            例:create cluster index ix_user on user(c5); </P><P>            ALTER INDEX index-name TO [NOT] CLUSTER </P><P>            修改索引性质。 </P><P>            index-name:索引名称。 </P><P>            TO [NOT] CLUSTER:去掉或加上CLUSTER属性。 </P><P>            语句执行时,将表的状态置为EXCLUSIVE;事务中处理过程中使用此语句,即使事务回滚,索引性质将改变,不能恢复。 </P><P>            例:alter index ix_user to not cluster; </P><P>            DROP INDEX index-name </P><P>1 @4 ]! x- Z9 W3 @
            删除索引。 </P><P>            index-name:索引名称。 </P><P>            语句使用者是索引的拥有者或拥有DBA权限,事务中处理过程中不要使用此语句,否则事务无法恢复。 </P><P>            例:drop index ix_user; </P><P>            CREATE SYNONYM synonym FOR table-name </P><P>
# e/ Y6 I3 E/ B: r0 _+ N            创建同义名。 </P><P>            synonym:同义名 </P><P>            table-name:表名称 </P><P>            数据库的创建者可以使用同义名;没有赋予同义名权限的用户不能使用同义名;同义名不能和表名相同;事务中处理过程中不要使用此语句。 </P><P>            例:create synonym user_alias for user; </P><P>            DROP SYNONYM synonym </P><P>
! K: ?. y* }( o            删除同义名。 </P><P>            synonym:同义名 </P><P>            可以删除自己建立的同义名;事务中处理过程中不要使用此语句,否则无法恢复。 </P><P>            例:drop synonym user_alias; </P><P>            UPDATE STATISTICS [FOR TABLE table-name] </P><P>
: U" a( `# h0 r            更新数据库的统计数字。 </P><P>            table-name:表名称 </P><P>            此语句仅作用于当前数据库;可提高查询效率;只有执行此语句,才改变统计数据。 </P><P>            例:update statistics for table user;: d  Z3 x5 ]2 Y, y/ B/ E8 X
            【续】
3 [1 J# F$ l6 z$ c; D# e1 n6 Y            GRANT {DBA|RESOURCE|CONNECT} TO {PUBLIC|user-list}  
) k" p: e* ], T7 }. Y7 V            授权命令。 </P><P>            PUBLIC|user-list:全部或指定的用户。 </P><P>            三种权限居且仅居其一,事务处理过程中不要执行GRANT语句。 </P><P>            例:grant resource to pulbic; </P><P>            GRANT tab-privilege ON table-name TO {PUBLIC|user-list} [WITH GRANT
5 v% s+ W- V& N8 a, f/ I/ F. y) p            OPTION]  </P><P>
: ?9 H3 }9 c$ b) S            授表级权限。 </P><P>            tab-privilege:表级权限。 </P><P>            table-name:表名称。 </P><P>            PUBLIC|user-list:全部或指定的用户。 </P><P>            [WITH GRANT OPTION]:表示被授权用户有否权限进行二次授权。 </P><P>            用户可以在自己建立表达式或被[WITH GRANT OPTION]准许的表中进行赋权;限定越多的权限优先级越高。 </P><P>            例:grant update(c1,c6) on user to dick with grant option; </P><P>
' P' x" l7 Z) I, N. {7 |0 I            附(INFORMIX的权限) </P><P>            (1) 数据库的权限(控制对数据库的访问以及数据库中表的创建和删除)  </P><P>9 U0 ^/ ]% `# j" M
            DBA权限:全部权利,修改系统表,建立和删除表与索引、增加和恢复表数据,以及授予其他用户数据库权限等; </P><P>            RESOURCE权限:允许对数据库表中的数据进行存取,建立永久性表以及索引。 </P><P>            CONNECT权限:只允许对数据库表中的数据进行存取,建立和删除视图与临时表。 </P><P>            (2)表级权限(对表的建立、修改、检索和更新等权限)  </P><P>  v3 Y: L. L: t  p6 b) G
            ALTER:更改权限 </P><P>            DELETE:删除权限 </P><P>            INDEX:索引权限 </P><P>            INSERT:插入权限 </P><P>            SELECT [(cols)]:指定字段或所有字段上的查询权限,不指明字段缺省为所有字段。 </P><P>            UPDATE [(cols)] :指定字段或所有字段上的更新权限,不指明字段缺省为所有字段。 </P><P>            ALL [PRIVILEGES]:以上所有表级权限 </P><P>            REVOKE {DBA|RESOURCE|CONNECT} FROM {PUBLIC|user-list}  </P><P>            收权命令。 </P><P>            PUBLIC|user-list:全部或指定的用户。 </P><P>            三种权限居且仅居其一,事务处理过程中不要执行GRANT语句。 </P><P>            例:revoke resource from john; </P><P>            REVOKE tab-privilege ON table-name FROM {PUBLIC|user-list} </P><P>
* q& I' u. s- i6 \! }) T0 F            收表级权限。 </P><P>            tab-privilege:表级权限。 </P><P>            table-name:表名称。 </P><P>            PUBLIC|user-list:全部或指定的用户。 </P><P>            [WITH GRANT OPTION]:表示被授权用户有否权限进行二次授权。 </P><P>            用户只能取消由其本人赋予其他用户的表级存取权限;不能取消自己的权限,对SELECT和UPDATE作取消时,将取消所有表中字段的SELECT
; j/ Z2 G* C3 f) L( h! M5 E1 C            和UPDATE权限。 </P><P>            例;revoke update on user from dick; </P><P>            LOCK TABLE table-name IN {SHARE|EXCLUSIVE} MODE  </P><P>            记录级加锁和表级加锁或文件加锁。 </P><P>            table-name:表名称。 </P><P>            SHARE:允许读表中数据,但不允许作任何修改 </P><P>            EXCLUSIVE:禁止其他任何形式访问表 </P><P>            每次只能对表琐定一次;事务处理过程中,BEGIN WORK后立即执行LOCK TABLE以取代记录级加锁,COMMIT & p6 F$ n. g5 \% ?6 @
            WORK和ROLLBACK WORK语句取消所有对表的加锁;若没有事务处理,锁将保持到用户退出或执行UNLOCK为止。 </P><P>            例:lock table user in exclusive mode; </P><P>            UNLOCK TABLE table-name  </P><P>            取消记录级加锁和表级加锁或文件加锁。 </P><P>            table-name:表名称。 </P><P>            例:unlock user; </P><P>            SET LOCK MODE TO [NOT] WAIT  </P><P>            改变锁定状态。 </P><P>            TO [NOT]:等待解锁,有可能被死锁或不等待并提示错误信息,表示此记录被锁,缺省值。 </P><P>            访问一个EXCLUSIVE状态下的记录,将返回一个错误。 </P><P>            START DATABSE db_name [WITH LOG IN “pathname”]  </P><P>            启动事务处理。 </P><P>            “pathname”:事务处理日志文件。 </P><P>            执行该语句前,需要先关闭当前数据库。 </P><P>            例;clost database; </P><P>            start databse customer with log in “/usr/john/log/customer.log”; </P><P>            BEGIN WORK  </P><P>            开始事务。例:begin work; </P><P>            COMMIT WORK  </P><P>            提交(正常结束)事务。例:commit work; </P><P>            ROLLBACK WORK  </P><P>            回滚(非正常结束)事务。例:rollback work; </P><P>            SELECT  </P><P>            SELECT select_list FROM tab_name|view_name  </P><P>            WHERE condition  </P><P>            GROUP BY column_name  </P><P>            HAVING condition  </P><P>            ORDER BY column_list  </P><P>            INTO TEMP table_name </P><P>            查询语句。 </P><P>            select_list:选择表或* </P><P>            tab_name:表名称 </P><P>            view_name:视图名称。 </P><P>            condition:查询条件,可使用BETWEEN、IN、LIKE、IS NULL、LIKE、MATCHES、NOT、 </P><P>            AND、OR、=、!=或&lt;&gt;、&gt;、 &gt;= 、&lt;=、&lt;、ALL、ANY、SOME </P><P>            column_name:分组字段名称 </P><P>            condition:群聚条件 </P><P>            column_list:排序字段列表,缺省ASC,可指定DSC;排序时,NULL值小于非零值。 </P><P>            table_name:临时表名称 </P><P>            例:略   }6 v& q$ G4 _. }7 M
</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

 楼主| vicwr 发表于 2004-5-17 20:39:52 | 显示全部楼层
<>           附(常用函数) </P><>            (1)集合函数: </P><>            count(*)、 </P><>            sum(数据项/表达式)、avg(数据项/表达式)、max(数据项/表达式)、min(数据项/表达式) </P><>            count(distinct 数据项/表达式)、sum(distinct数据项/表达式)、avg(distinct数据项/表达式) </P><>            (2)代数函数和三角函数 </P><>            HEX(数据项/表达式)、ROUND(数据项/表达式)、TRUNC(数据项/表达式)、 </P><>            TAN(数据项/表达式)、ABS(数据项/表达式)、MOD(被除数,除数) </P><>            (3)统计函数 </P><>            标准差,stdev()、方差,variance()、范围,rang() </P><P>            (4)时间函数 </P><P>            DAY(日期/时间表达式):返回数字型 </P><P>            MONTH(日期/时间表达式):返回整数 </P><P>            WEEKDAY(日期/时间表达式):0&amp;#0;&amp;#0;6,0星期天,1星期一;返回整数 </P><P>            YEAR(日期/时间表达式)、返回整数 </P><P>            DATE(非日期表达式):返回日期型 </P><P>            EXTEND(日期/时间表达式,[第一个至最后一个]):返回指定的整数 </P><P>            MDY(月,日,年):返回日期型 </P><P>            CURRENT:返回日期型 </P><P>            (5)时间函数 </P><P>            ROUND(),四舍五入。如:ROUND(10.95,position)position进行四舍五入的前一位置 </P><P>            TRUNC(),截取。如:TRUNC(10.95,0)position截取的位置 </P><P>            INFORMIX临时表在下列情况下自动取消: </P><P>            A.退出数据库访问工具(如DBACCESS) </P><P>            B.SQL通话结束(DISCONNECT) </P><P>            C.发出取消表语句 </P><P>            D.退出程序时 </P><P>9 [. d; d8 ?! R& o5 k
            INSERT  
' v0 V. _. K3 f: R+ G            INSERT INTO view_name|table_name [(column_list)] VALUES (value_list) </P><P>" U* a0 c1 A/ a1 P* E: n$ B( S
            或 INSERT INTO view_name|table_name [(column_list)] select_statement </P><P>            插入数据 </P><P>            view_name|table_name:视图名或表名称 </P><P>            column_list:数据项列表。 </P><P>            value_list:值列表 </P><P>            select_statement:查询语句。 </P><P>            例:略 </P><P>
8 \& z1 e) k7 \3 q8 y4 ~            DELETE FROM view_name|table_name WHERE search-conditions  . R% y9 n2 \7 p% I% M
            删除语句。 </P><P>            view_name|table_name:视图名或表名称 </P><P>            search-conditions;删除条件 </P><P>            例:略 </P><P>; E. I; s# c# B0 ^
            UPDATE  / D9 j* \- u, K# h+ b2 P( H
            UPDATE view_name|table_name SET column_1 = value_1ist WHERE
8 x0 j2 D8 v% D- D5 e2 A/ |& o            search_conditions </P><P>            或UPDATE view_name|table_name SET column_1|* = value_1ist WHERE
+ D: R# z, o. O, k+ g5 \/ Y            search_conditions </P><P>            更新数据语句。 </P><P>            view_name|table_name:表名称或视图表名称 </P><P>            value_1ist:字段值 </P><P>            search_conditions:更新数据的条件 </P><P>            例:略 </P><P>2 U4 M% ~1 S/ d: p; _$ S& O
            CHECK TABLE table-name  
" I; W4 d8 F0 G! F1 }4 p! s4 K% G) x            检查索引语句。 </P><P>            语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。 </P><P>            例:略 </P><P>
- Q  {2 z& J! p# E( j- h            REPAIR TABLE table-name  # h( `. }  ^1 @/ D. r8 j; |' [  {
            修复索引。 </P><P>            语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。 </P><P>            例:略 </P><P>/ g7 O- u8 l- K! D! k% q
            LOAD FROM “file-name” INSERT INTO table_name [(column_name[,…])]  - s3 O- f0 u3 ]+ z2 E. {' C
            将文本数据栽入表中。 </P><P>            例:load form “aa.txt” insert into user; </P><P>
- [3 O1 R* I% n            UNLOAD TO “pathname”  4 r+ Z8 S8 D: `
            将表中数据卸为文本。 </P><P>            例:unload to “aa.txt” select * from user; </P><P>6 o( j! n& k6 K" C' T
            INFO  . J" p4 |% z5 y" r+ Y( s6 C* S* e
            系统信息查询。 </P><P>            INFO TABLES:得到当前数据库上表的名字。 </P><P>            INFO columns FOR table_name:指定表上的字段信息。 </P><P>            INFO INDEXES FOR table_name:指定表上的索引信息。 </P><P>            INFO [ACCESS|PRIVILEGES] FOR table_name:指定表上的存取权限。 </P><P>            INFO STATUS FOR table_name:指定表的状态信息。 </P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2025-5-25 11:09 , Processed in 0.061967 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表