阅读更多
当前位置:首页>>Informix教程>>Informix教程
INFORMIX-4GL实用手册(二)(1)
Informix-SQLVersion6.05.UD1应用
一.有关数据库,基表,索引的创建与删除
1.语法约定:
<......>表示必选项
{......}表示必选其中项
[......]表示可选项
(......)表示语句的一部分
|表示多项选一
大写[A-Z]表示Informix的保留字
小写[a-z]表示Informix的库名,表名,字段名,变量名
2.数据库(Database):
①.创建一个DB:
CREATEDATABASE[WITHBUFFEREDLOG]
└─┴→语法关键字└→数据库名└→是否带数据库日志
创建一个DB同时也打开了这个DB
②.数据库命名规则:
㈠.数据库名不超过10个字符.
㈡.必须以字母打头,其余部分可以是字母,数字,下划线的任意组合.
㈢.在同一数DBServer(据库服务器)中数据库名应具有唯一性.
㈣.数据库名不得是Informix的保留字
3.数据库基表(Table):
①.创建一个DBTable:
DATABASE→数据库名
CREATETABLE→数据库表名
字段名称字段类型字段说明
(column0serial(1),#有序整数型,其初始值为1
column1integer,#从-2147483647到+2147483647之间的整数
column2smallint,#从-32767到+32767之间的整数
column3floatdefault0.00notnull,#双精度浮点数
column4smallfloat,#单精度浮点数
column5decimal(m,n),#具有可定义精度的数字(左边m-n位,右边n位)
column6money(m,n),#与decimal型相同(货币型)
column7date,#日期型
column8datetimeyeartosecond,#日期时间型(1999-09-0709:52:52)
column9char(n),#字符型n表示字符长度
column10varchar(n),#字符型(最后一个字段无逗号)
check(字段名in(值1,值2,值3)constraint名称,
primarykey(字段1,字段2,字段n)constraint名称##主键唯一,非空
);
数据类型 字段长度
CHAR 语句中定义的长度
VARCHAR 语句中定义的长度
SMALLINT 2个字节
INTEGER 4个字节
SMALLFLOAT 4个字节
FLOAT 8个字节
SERIAL 4个字节
DATE 4个字节
DATETIME 8个字节(YeartoSecond),其它为4
DECIMAL(m,n) 依赖精度(m/2+1四舍五入到下一整数)
MONEY(m,n) 依赖精度(m/2+1四舍五入到下一整数)
②.基表命名规则:
㈠.表名最多不超过18个字符,除此以外与数据库命名规则雷同.
㈡.必须以字母打头,其余部分可以是字母,数字,下划线的任意组合.
㈢.在同一数据库中表名应具有唯一性.
㈣.表名不得是Informix的保留字.
㈤.表中字段名不得超过18个字符,定义liketable.*必须保证前8个字符的唯一性。
㈥.表中字段名不得重复(不区分大小写)。
4.索引(Index):
①.索引分类:
㈠.单字段索引:提高查询和分类操作效率。
㈡.多字段索引:加快几个字段分类处理的速度。
索引仅是加快数据分类处理的速度。
②.索引规则:
㈠.直到表中有上百条记录时才加索引.
㈡.经常用于检索和排序操作的字段.
㈢.用于连接表和使用频率高的字段。
㈣.不要对含有大量重复值的字段加索引,索引字段中相同的值不得出现多于65536次
㈤.不得对多于8个字段的组加索引。
㈥.不得对长度超过120字节的一个字段或一组字段加索引。
㈦.索引命名规则与表名命名规则相似。
③.创建索引:
CREATE[UNIQUE|DISTINCT]INDEX→索引名
└→唯一索引ON→表名
(column1[DESC],column2,..,columnn)
└→降序索引
5.视图(View):
①.视图定义:视图是数据库上动态的窗口而不是静态的状况,并且是以数据库表的形式出现在数据库中,授权与增、删、改操作与基表的操作一致。
②.视图命名规则:
㈠.表名最多不超过18个字符,除此以外与数据库基表的命名规则雷同.
㈡.必须以字母打头,其余部分可以是字母,数字,下划线的任意组合.
㈢.在同一数据库中视图名应具有唯一性.
㈣.视图名不得是Informix的保留字.
㈤.视图中字段名不得超过18个字符,必须保证前8个字符的唯一性。
㈥.视图中字段名不得重复(不区分大小写),应具有唯一性。
③.视图任务:
㈠.在数据库上为不同的用户提供不同的数据窗口,一个单独的视图可以包含来自不同的表的字段(字段不得同名)。
㈡.限制某些敏感数据的存取,只允许用户查看聚合信息。
㈢.允许用户象修改、插入和删除数据库中如同在视图中出现那样被组织起来的数据
④.视图与基表的区别:
㈠.不能利用视图取代格式说明文件中的表。
㈡.不能在视图上建立索引。
㈢.某些条件下不能通过视图更新或删除看到的数据。
㈣.不能通过ROWID存取表。
⑤.创建与删除视图:
CREATEVIEW[(字段1,...,字段n)]
└→视图名称
ASSELECT<标准Select语句>→不得使用UNION操作符
[WITHCHECKOPTION]→输入与修改是否满足SELECT语句条件
6.删除数据库、表、索引、视图
①.删除数据库:drop
②.删除表:droptable
③.删除索引:dropindex
④.删除视图:dropview
删除数据库前必须关闭此数据库,删除数据库同时也删除了该数据库的所有表、索引、视图。
二.SQL实际应用
1.INSERT语句:(向数据库的表中插入一条行记录)
INSERTINTO(column1,comumn2,...,comumnn)
└→表名└→字段名表→缺省为所有字段
VALUES(value_list)→值列表
2.DELETE语句:(从数据库的表中删除若干条满足条件的行记录)
DELETEFROM(WHERE条件列表)→缺省为所有行记录
└→表名
3.UPDATE语句:(修改数据库表中满足条件的若干条行记录)
UPDATESTATISTICS(TBname)→为指定数据库表更统计(缺省为所有)
└→表名
UPDATESET<字段1=值1,字段n=值n>
└→表名
(WHERE条件列表)→缺省为所有行记录
UPDATESET<字段列表>=<值列表>
└→表名
(WHERE条件列表)→缺省为所有行记录
UPDATESET<字段.*>=<记录.*>
└→表名
(WHERE条件列表)→缺省为所有行记录
4.SELECT语句:(从一数据库表中选择满足条件的行记录)
SELECT→*表示所有字段
(INTO<程序变量列表>)或(INTOTEMP<临时表>)
FROM[表别名]→数据库表名
(WHERE<条件列表>)→缺省为所有行记录
ORDERBY[column1,column2,...,column8][DESC]→排序(可选)可用1-8代替字段
GROUPBY[column1,column2,...,columnn]→分组(可选)可用1-8代替字段
[HAVING<条件>]→为组提供一个或多个限制条件
INTOTEMP<临时表>(可选)
5.多表连接(Join)的SELECT语句:(从多个数据库表中选择满足条件的行记录)
SELECT<表1.字段>,<表2.字段>,<表2.字段>,<表3.字段>,...,<表n.字段>
FROM<表1>[别名1],<表2>[别名2],<表3>[别名3],...,<表n>[别名n]
WHERE<条件列表>→WHERE子句不能省略
ORDERBY[1,2,3,4,5,6,7,8][DESC]→排序,1-8表示字段在SELECT中出现的顺序。
GROUPBY[column1,column2,...,columnn]→分组(可选)
[HAVING<条件>]→为组提供一个或多个限制条件
INTOTEMP<临时表>(将查询结果放到临时表中)
当在WHERE子句中建立多表连接时,表与表之间至少有一个字段用于连接。连接的功能是建立一个临时组合的表,在对应表中符合连接条件的记录被连接形成一个记录。
6.SELECT语句中的聚合函数和日期函数:
语法功能
COUNT(*)满足条件的记录个数
COUNT(DISTINCT*)去除重复项后满足条件的记录个数
SUM(DISTINCTx)满足条件字段x的总和
AVG(DISTINCTx)满足条件字段x的平均值
MAX(x)满足条件字段x的最大值
MIN(x)满足条件字段x的最小值
DATE()为表达式返回一个DATE类型的值
DAY()返回DATE类型表达式月份的日期(多少号)
MDY()分别代表月、日、年的整数返回一个DATE类型的值
MONTH()返回DATE类型表达式的月份
WEEKDAY()返回DATE类型表达式星期的整数0-6(星期日至星期六)
YEAR()返回DATE类型表达式的年份
7.SELECT语句中的算术操作符:
符号功能
+加法
-减法
*乘法
/除法
mod取模(取余数)
**幂(乘方)
8.WHERE子句的详细说明:
①.关系操作符:
操作符功能
=或==等于
!=或<>不等于
>大于
>=大于或等于