找回密码
 立即加入
搜索

查看: 1412|回复: 3

数据库爱好者必备资料

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

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

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

×
informix SQL汇总</P>8 q( X' W2 `* G, g

0 m- `1 k: P) y) k                  每个数据库管理系统(DBMS)都有其自己的数据处理语言(DML),但所有DML都基于一种语言SQL语言——结构化查询语言(SQL),其发音为“sequel”或“S-Q-L”。 </P>
/ K" u4 c/ Z9 a6 R<>                    目前SQL的前身是E.F.Codd博士70年代发明的。第一个实现是在76年,称为sequel。而SQL首先被采用是在IBM的System
: z3 B! J4 X2 [1 z" F                  R项目中。86年10月由ANSI确定为正式的关系查询语言标准。ISO在对其修改后在90年制定为国际工业标准。 * I0 w; j: U$ ^4 S
                    无论进行何种数据库学习,SQL语言都是必学内容。在我国数据库语言SQL标准(GB12991)中规定了两个数据库语言的语法与语义:
1 u9 ^0 G& {. k( L/ i                  模式定义语言(SQL-DDL),描述SQL数据库的结构与完整性的约束;  
% t# ]% x- ]' G0 l                  数据操纵语言(SQL-DML),描述操作数据库的执行语句  $ E: v3 `) I7 @, L
                    在本文章中涉及以上两个中的主要部分,(为叙述方便,以下对其统称为SQL),由于SQL在嵌入C时表现略有不同,所以下面均以非嵌入时的SQL进行。另外本文章也不是SQL的入门教材,阅读者应学习并实际用SQL操作过某种数据库。
0 s/ m5 f8 h0 `1 L- I                    如果你系统学习过数据库理论,又能熟练操作INFORMIX关系数据库,甚至从事过有关数据库程序的设计,还那么作者在此恭喜你了。如果你尚未系统学习过数据库理论,并对INFORMIX数据库了解甚少,建议你先阅读有关的文档。</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
 楼主| vicwr 发表于 2004-5-17 20:38:33 | 显示全部楼层
<>【主要SQL语句详解】 </P><>            CREATE DATABASE database_name [WITH LOG IN “pathname”] </P><>% i; \5 E  H- y6 S& r
            创建数据库。 </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
% F# R  R. `' L! V4 O2 n: Q            “/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& R1 }0 o* Z# B            关闭当前数据库。 </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>$ F5 t5 K# Q! L9 J4 ?
            删除指定数据库。 </P><P>            database_name:数据库名称。 ( [1 V% [  q1 u# e
            用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK ! K5 i8 g8 X  O6 Y. L4 ?' Y+ I9 {
            WORK 也不可将数据库恢复。 </P><P>            例:drop databse customerdb; </P><P>            CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …) </P><P>
1 B( j  ]4 W* C; p            [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>
4 F$ p( ?7 p7 ]4 g( Q            例: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>
9 _' o1 L. d- ?0 ?            ALTER TABLE table-name  </P><P>            {ADD (newcol_name newcol_type [BEFORE oldcol_name], …) | DROP & t; t/ P, F1 O- k( S" Q/ g* 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 , \* c3 `4 j& ^* O
            NULL,除非所有NULL字段中均非空,反之可以;ALTER使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语句。 </P><P>5 U; V# W. H* S( h$ {5 D5 E* N) K
            例:alter table user </P><P>            add ( c6 char(20) before c5); </P><P>            RENAME TABLE oldname TO newname </P><P>
9 f9 P3 Z8 ~% [" K$ y            修改表名。 </P><P>            oldname:原名称。 </P><P>            newname:新名称。 </P><P>            RENAME使用者是表的拥有者或拥有DBA权限,或被授权;事务中处理过程中不要使用此语句。 例:rename user to bbb; </P><P>            DROP TABLE table-name </P><P>
% u. {) `! N5 K, ~# t            删除表。 </P><P>            table-name:表名称。 </P><P>            删除表意味着删除其中所有数据、各字段上的索引及对表的赋权、视图等;用户不能删除任何系统目录表;语句使用者是表拥有者或拥有DBA权限,事务中处理过程中不要使用此语句。 </P><P>. Q+ x+ L' i# D$ D3 U
            RENAME COLUMN table.oldcolumn, TO newcolumn </P><P>8 U9 P! D4 s$ K; r5 e3 W3 O( l% N
            修改字段名。 </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>
8 K! Y9 M5 ]; f. o# [  f3 c            CREATE VIEW view-name column-list AS select_statement [WITH CHECK 2 U& p. |. u' V; X( u- {
            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 9 @. @) [( S" T- s+ b
            INDEX, RENAME 5 L7 m  V4 j) [! A! x. r% [. Y
            TABLE;视图将延用基表的字段名,对表达式等虚字段和多表间字段重名必须指明标识其字段名;若对视图中某些字段命名,则所有字段都必须命名;视图中数据类型延用基表中的数据类型,虚字段起诀于表达式;不能使用ORDER 9 i, e. A/ z5 \; m  \
            BY和UNION子句;对视图中所有的字段要有SELECT权限;事务中处理过程中使用此语句,即使事务回滚,视图也将建立,不能恢复。 </P><>            例:create view v_user as select * from user where c1 = “B1”; </P><>            DROP VIEW view-name </P><>" U/ c# ^* d3 }/ L, D1 }
            删除视图。 </P><>            view-name:视图名称。 </P><>            用户可删除自己建立的视图;视图的后代视图也被删除;事务中处理中不要使用此语句。 </P><P>            例:drop view v_user; </P><P>            CREATE INDEX  </P><P>% c  \! G; i/ o8 d3 ~* G
            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:升序或降序,缺省升序。1 g) F8 r# P# d% v: \( l, q$ @
         语句执行时,将表的状态置为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>
( D$ B' P( U& ~( e            删除索引。 </P><P>            index-name:索引名称。 </P><P>            语句使用者是索引的拥有者或拥有DBA权限,事务中处理过程中不要使用此语句,否则事务无法恢复。 </P><P>            例:drop index ix_user; </P><P>            CREATE SYNONYM synonym FOR table-name </P><P>
$ {6 P0 X; {& U4 K, B  W            创建同义名。 </P><P>            synonym:同义名 </P><P>            table-name:表名称 </P><P>            数据库的创建者可以使用同义名;没有赋予同义名权限的用户不能使用同义名;同义名不能和表名相同;事务中处理过程中不要使用此语句。 </P><P>            例:create synonym user_alias for user; </P><P>            DROP SYNONYM synonym </P><P>- A# G2 Q! m' Z" l* k
            删除同义名。 </P><P>            synonym:同义名 </P><P>            可以删除自己建立的同义名;事务中处理过程中不要使用此语句,否则无法恢复。 </P><P>            例:drop synonym user_alias; </P><P>            UPDATE STATISTICS [FOR TABLE table-name] </P><P>
5 V: ~8 A& r) b! j% Z. v            更新数据库的统计数字。 </P><P>            table-name:表名称 </P><P>            此语句仅作用于当前数据库;可提高查询效率;只有执行此语句,才改变统计数据。 </P><P>            例:update statistics for table user;
) `7 X* }* D9 A" ~& f1 A) r            【续】
" x( C2 k8 Y! U& J9 |            GRANT {DBA|RESOURCE|CONNECT} TO {PUBLIC|user-list}  / G  ^- o3 r5 O; D% e8 t; P: ^. F
            授权命令。 </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 1 e& [7 R, q4 `3 I
            OPTION]  </P><P>, B" w  S- _* U
            授表级权限。 </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>
5 e/ u/ P+ K# h            附(INFORMIX的权限) </P><P>            (1) 数据库的权限(控制对数据库的访问以及数据库中表的创建和删除)  </P><P>7 F1 F4 s* a0 B6 n0 }4 c
            DBA权限:全部权利,修改系统表,建立和删除表与索引、增加和恢复表数据,以及授予其他用户数据库权限等; </P><P>            RESOURCE权限:允许对数据库表中的数据进行存取,建立永久性表以及索引。 </P><P>            CONNECT权限:只允许对数据库表中的数据进行存取,建立和删除视图与临时表。 </P><P>            (2)表级权限(对表的建立、修改、检索和更新等权限)  </P><P>
) t6 x7 V( e: ~" b            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>
. R' A4 D- ~' I            收表级权限。 </P><P>            tab-privilege:表级权限。 </P><P>            table-name:表名称。 </P><P>            PUBLIC|user-list:全部或指定的用户。 </P><P>            [WITH GRANT OPTION]:表示被授权用户有否权限进行二次授权。 </P><P>            用户只能取消由其本人赋予其他用户的表级存取权限;不能取消自己的权限,对SELECT和UPDATE作取消时,将取消所有表中字段的SELECT + ?; i' e' J" S( i: }" |: `3 k0 i& E
            和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 - K1 J1 c' v0 D+ ]: y
            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>            例:略
" i7 `% o! Q! g- L" B" _8 I% H$ n</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>/ H1 ]) _: E* h* @4 r
            INSERT  7 R) w+ f) `; y- O, x1 ]( \
            INSERT INTO view_name|table_name [(column_list)] VALUES (value_list) </P><P>
3 s, r0 i/ _. u% d            或 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>( n. S" X4 ]6 }8 H1 d0 Y; Q
            DELETE FROM view_name|table_name WHERE search-conditions  
1 F: b( G( G( u# |- D7 U) F+ d- k            删除语句。 </P><P>            view_name|table_name:视图名或表名称 </P><P>            search-conditions;删除条件 </P><P>            例:略 </P><P>
- v3 J+ S) j4 B, J+ B" J4 I4 x            UPDATE  1 ?, Z+ K0 P" V. |
            UPDATE view_name|table_name SET column_1 = value_1ist WHERE
7 s1 q7 p8 R& F4 D            search_conditions </P><P>            或UPDATE view_name|table_name SET column_1|* = value_1ist WHERE
" y4 L0 y! m, z( s            search_conditions </P><P>            更新数据语句。 </P><P>            view_name|table_name:表名称或视图表名称 </P><P>            value_1ist:字段值 </P><P>            search_conditions:更新数据的条件 </P><P>            例:略 </P><P>
, `5 |5 _7 x) x( S+ L; `            CHECK TABLE table-name  
8 h  G& N# y) a            检查索引语句。 </P><P>            语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。 </P><P>            例:略 </P><P>
7 x6 c& R/ P9 S  N: T5 C/ t            REPAIR TABLE table-name  
# c7 ]( ?; o3 t4 U* }. T( L            修复索引。 </P><P>            语句使用者是表的拥有者或拥有DBA权限;不能对systable使用此语句。 </P><P>            例:略 </P><P>; v) L" c/ a$ b1 q
            LOAD FROM “file-name” INSERT INTO table_name [(column_name[,…])]  
0 {' Y% o5 M) q  q            将文本数据栽入表中。 </P><P>            例:load form “aa.txt” insert into user; </P><P>% ?" Z) u' X! y2 x$ H& L% w
            UNLOAD TO “pathname”  9 w9 F- r3 p4 C- \1 y+ [* K8 Q
            将表中数据卸为文本。 </P><P>            例:unload to “aa.txt” select * from user; </P><P>
2 I' [( V5 q5 I3 J            INFO  + G. t- ?4 p' B& l, c$ @
            系统信息查询。 </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 10:16 , Processed in 0.064307 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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