Informix SQL函数的详细用法

合集下载

informix数据库SQL学习

informix数据库SQL学习

简单的SELECT语句SELECT语句是最重要也是最复杂的SQL语句,它和insert update和delete 语句一起用于数据操作,主要用于:●从数据库中检索数据●作为INSERT语句的一部分产生新的行●作为UPDATE语句的一部分更新信息1.S ELETE语句的简要介绍●构成:SELECT 子句指定要查询的表FROM 子句指定要查询的列WHERE子句选择特定的列或创建一个新的连接条件ORDER BY子句改变数据产生的次序INTO TEMP子句把结果以表的形式存放起来,供以后使用其中SELECT、FORM子句是必选的。

●权限查询数据库必须对该数据库具有connect权限以及对表具有SELECT权限,这些权限通常作为默认值赋给用户。

与数据库的操作权限有关的grant 和revoke语句将在后面讲到。

●关系操作选择:在表中满足特定条件的行的水平子集。

这一类型的SELECT 子句返回表中的一部分行的所有列。

选择是通过SELECT语句的WHERE子句来实现的。

例:SELECT *FROM customWHERE state=”NJ”显示结果如下:customer_num 107fname Charleslname Reamcompany Athletic Suppliesaddressl 41 Jordan Avenueaddress2city Palo Altostate CAzipcode 94304phone 415-356-9876投影:在表中一些列的垂直子集,子集包含了表中这些列的所有行。

这样的SELECT 语句返回表中所有行的一些列。

投影是通过在SELECT语句中的SELECT子句的选项来实现的。

例:SELECT UNIQUE city, state,zipcodeFROM customer查询结果包含了与customer 表中的相同数目的行,但仅投影了列的一个子集显示结果如下:city state zipcodeBartlesville OK 74006Blue Island NY 60406Brighton MA 02135Cheey Hill NJ 08002Denver CO 80219Jacksonville FL 32256Los Altos CA 94022Menlo Park CA 94025Moutain View CA 94040Moutain View CA 94063Oakland CA 94609Palo Alto CA 94303Palo Alto CA 94304Phoenix AZ 85008SELECT语句在大多数情况下同时使用选择和投影,查询返回表中的一些行和一些列。

IBMInformix-按任务排序的时间系列SQL例程

IBMInformix-按任务排序的时间系列SQL例程
Minus
用一个时间系列乘以另一个时间系列
Times
将一个时间系列除以另一个时间系列
Divide
将第二个参数作为第一个参数的幂自乘
Pow
获取绝对值
Abs
对时间系列取幂
Exp
获取时间系列的自然对数
Logn
获取一个时间系列除以另一个时间系列的模数或余数
Mod
对时间系列求反
Negate
返回参数且参数绑定到一元 + 运算符
GetLastNonNull
获取下一个非空元素
GetNextNonNull
修改元素或元素集
添加或更新单个元素
PutElem
添加或更新单个元素
PutElemNoDups
添加或更新给定偏移量的单个元素
PutNthElem(仅限规则的时间系列)
添加或更新整个集
PutSet
删除给定时间点的元素
DelElem
对时间系列类型执行求和
Sum
对 SMALLFLOAT 或 DOUBLE PRECISION 值求和
TSAddPrevious
计算衰减函数
TSDecay
对指定数量的值计算运行平均值
TSRunningAvg
对指定数量的值计算两个时间系列之间的运行相关性
TsRunningCor
对指定数量的值计算运行中值
TsRunningMed
Positive
将时间系列舍入到最接近的整数
Round
获取时间系列的平方根
Sqrt
获取时间系列的余弦
Cos
获取时间系列的正弦
Sin
获取时间系列的正切
Tan
获取时间系列的反余弦

informix函数大全

informix函数大全
8、基数函数:
1)cardinality(仅适用IDS)函数对集合包含的元素数目计数。
智能大对象函数,(仅适用与IDS)
filetoblob( ),将文件复制到BLOB列中
filetoclob( ),将文件复制到CLOB列中
4)SUM(DISTINCT COLNAME) 返回指定列中唯一值的和
5)AVG(COLNAME/EXPRESSION) 返回指定列或表达式中的数值平均值
6)AVG(DISTINCT COLNAME) 返回指定列中唯一值的平均值
lpad,使用lpad函数已用重复次数达到必要次数的字符序列在左边填充或截断的字符串的副本,这取决于字符串中填充部分的指定长度。
举例:字段 col 为char(15)类型,select lpad(col,21,”_”) from tab_name则显示为在col前加上六个_。
2)MOD(COLNAME/EXPRESSION,DIVISOR) 返回除以除数后的模(余数)
3)POW(COLNAME/EXPRESSION,EXPONENT) 返回一个值的指数冥
例子:let tmp_float = pow(2,3) --8.00000000
initcap,将字符串中每个词的首写字母转换成大写
replace,将字符串中的某一组字符转换成其他字符,例replace(col,”each”,”eve”)
substr,返回字符串中的某一部分,例substr(col,1,2)
substring,返回字符串中的某一部分,例substring(col,from 1 to 4)
Nvl,来将求值为空的表达式转化为另一个想要指定的值。
另外还可以在select语句中使用存储过程,如select spl($test) from tab_name

Informix数据库dbaccess工具执行SQL语句操作说明

Informix数据库dbaccess工具执行SQL语句操作说明

【文档名称】:Informix数据库dbaccess工具执行SQL语句操作说明【背景说明】部分工程经常要对数据库进行操作,而各省客服及驻点同事对相关操作不熟悉,现整理一份实用的操作说明。

【适用范围】适用设备:Informix-9.4,Informix-11.5【文档正文】1)用informix账户登录操作系统,在开始菜单中打开“ol_实例名”。

2)直接输入dbaccess并回车。

选择Connection,然后选择Connect。

3)选择数据库实例。

一般只有一个,直接回车即可。

4)输入用户名informix,回车。

5)输入数据库密码,回车。

6)下方提示已连接。

7)直接按回车,然后选择Exit回车。

8)选择第一个Query-language回车。

9)选择Use-editor回车。

10)直接回车,默认用记事本打开编辑器。

11)将SQL语句粘贴到记事本。

12)关闭,选择保存,然后选择Run,回车,查看返回结果是否成功。

常用SQL语句:1、导出某张表。

(需注意当前用户对该目录是否有写入权限,否则会导出失败)unload to 'C:\_analarmtype' select * from _analarmtype; 导出_analarmtype表并保存到C盘根目录。

2、删除某张表。

delete from _analarmtype;3、导入某张表。

load from 'C:\ _analarmtype ' insert into _analarmtype;4、查询某张表的条目数。

select count(*) from analarmhis; 查询历史告警条目数select count(*) from ancurrentalarm; 查询当前告警条目数DBACCESS基本讲解.doc。

informix的常用SQL语句

informix的常用SQL语句

informix的常用SQL语句1、创建数据库eg1. 创建不记录日志的库testdb,参考语句如下:CREATE DATABASE testdb;eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH BUFFERED LOG;eg3. 创建无缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG;eg4. 创建ANSI的数据库(记录日志时无缓冲,SQL总在事务之中,拥有者名字被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG MODE ANSI;2、创建普通数据表普通数据表又被称为持久数据表,它在system catalog里注册。

一个普通数据表可对多个sessi on和connection。

创建时可以指定dbspace。

eg1、如下语句创建了一个集团信息表cti_vccinfo:create table cti_vccinfo(vccid CHAR(6) not null,vccname VARCHAR(255),effective INTEGER default0not null,agentmax INTEGER default0not null,ivrmax INTEGER default0not null,updatekey VARCHAR(30),primary key(vccid) constraint PK_CTI_VI);3、创建临时数据表临时数据表不在system catalog里注册。

一个临时数据表只对对应的某个session或connectio n可见,在对应的session或connection结束时被自动清除。

Informix数据库sql常用语句

Informix数据库sql常用语句

1、删除表字段alter table 表名 drop (字段名,字段名...);//逗号隔开可以同时删除多个字段2、新增表字段alter table 表名 add 字段名称字段类型 before 字段名;3、查询表主键名称select constrname from sysconstraints where constrtype='P' and tabid=(select tabid f rom systables where tabname='表名称');4、删除表主键名称alter table 表名 drop constraint 主键名;5、新增表主键名称alter table 表名称 add constraint primary key(字段1,字段2,字段3....) constraint 主键名称;6、复制内容insert into data_user (comcode, appcode, appcomname, comlevel, usercode, userna me, mobile)select distinct comcode, appcode, appcomname, comlevel, usercode, username, mo bile from temp_user where mobile is not null ;7、创建临时表select * from data_user into temp temp_1 with no log;8、sql中四舍五入保留2位有效小数cast(字段名称/10000 as decimal(14,2))数字转字符:to_char(cast(字段名称/10000 as decimal(14,2)))9、大表创建索引CREATE INDEX idx_user on user (username,usercode) online;10.修改表名称RENAME table data_user to data_user_new11.修改表字段名称RENAME COLUMN data_fwinfo.mobile TO username12、更新表字段alter table salesgrade modify newstatcode varchar(30);13、授权数据库grant select on salesgrade to ccpqry14、创建外键约束ALTER TABLE nx_carorprp2 ADD CONSTRAINT FOREIGN KEY (userunique)REFERENCES nx_staff (userunique) CONSTRAINT fk_nx_carorprp2 ON DELETE CASCA DE ;。

Informix数据库(增、删、改、查)操作

Informix数据库(增、删、改、查)操作
n owner species sex
Fluffy Harold cat
Clasws Gwen cat
Bowser Gwen dog
3 row(s) retrieved.
Sex列已经在pet表中了
接下来我们可以用update添加sex的属性值:
[test@datacenter ~]$ isql -s test<<!
现在用第三种发放“insert into表名字段values值”插入数据:
[test@datacenter ~]$ isql -s test<<!
> insert into pet (name,owner,species,sex) values ('Fluffy','Harold','cat','f')
> !
name owner species sex
Fluffy Haroldcat f
Clasws Gwen cat m
2 row(s) retrieved.
可以看见pet.txt文件中的命令已经插入到表pet中(第二行)。由于权限问题,不能进入菜单进行手动操作,故第二种方法在我的机器上不能进行。
第四种方法是把命令写进文件里,然后输入命令isql -s test<文件名,回车,现在我把命令写进pet.txt中:
[test@datacenter ~]$ isql -s test<<!
> alter table pet
> add sex char(1)
> !
Table altered.
查看一下:
[test@datacenter ~]$ isql -s test<<!

一些Informix+SQL函数的用法及日期操作

一些Informix+SQL函数的用法及日期操作

一些Informix SQL函数的用法一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)A VG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)A VG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DA TE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DA TE/DA TETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY返回当前日期的日期值7)CURRENT[first to last]返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DA TE/DA TETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERV AL(DA TE/DA TETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[first to last])返回经过调整的日期或日期时间值例子1、和UNITS合用,指定日期或时间单位(year,month,day,hour,minute,second,fraction):let tmp_date = TODAY+ 3 UNITS day例子2、let tmp_date = MDY(10,30,2002)-- 2002-10-30例子3、let tmp_date = today + interval(7) day to day--当前时间加上7天;注:该功能与1相似;例子4、EXTEND转换日期或日期时间值let tmp_inthour = EXTEND(datetime1,hour to hour)3、代数函数1)ABS(COLNAME/EXPRESSION):取绝对值2)MOD(COLNAME/EXPRESSION,DIVISOR)返回除以除数后的模(余数)3)POW(COLNAME/EXPRESSION,EXPONENT)返回一个值的指数冥例子:let tmp_float = pow(2,3)--8.000000004)ROOT(COLNAME/EXPRESSION,[index])返回指定列或表达式的根值5)SQRT(COLNAME/EXPRESSION)返回指定列或表达式的平方根值6)ROUND(COLNAME/EXPRESSION,[factor])返回指定列或表达式的圆整化值7)TRUNC(COLNAME/EXPRESSION,[factor])返回指定列或表达式的截尾值说明:上两者中FACTOR指定小数位数,若不指定,则为0;若为负数,则整化到小数点左边;注:ROUND是在指定位上进行4舍5入;TRUNC是在指定位上直接截断;let tmp_float = ROUND(4.555,2) --4.56let tmp_float = TRUNC(4.555,2) --4.554、指数与对数函数1)EXP(COLNAME/EXPRESSION)返回指定列或表达式的指数值2)LOGN(COLNAME/EXPRESSION)返回指定列或表达式的自然对数值3)LOG10(COLNAME/EXPRESSION)返回指定列或表达式的底数位10的对数值5、三角函数1)COS(RADIAN EXPRESSION)返回指定弧度表达式的余弦值2)SIN(RADIAN EXPRESSION)正弦3)TAN(RADIAN EXPRESSION)正切4)ACOS(RADIAN EXPRESSION)反余弦5)ASIN(RADIAN EXPRESSION)反正弦6)ATAN(RADIAN EXPRESSION)反正切7)ATAN2(X,Y)返回坐标(X,Y)的极坐标角度组件6、统计函数1)RANGE(COLNAME)返回指定列的最大值与最小值之差= MAX (COLNAME)-MIN(COLNAME)2)V ARIANCE(COLNAME)返回指定列的样本方差;3)STDEV(COLNAME)返回指定列的标准偏差;7、其他函数1)USER返回当前用户名2)HEX(COLNAME/EXPRESSION)返回指定列或表达式的十六进制值3)LENGTH(COLNAME/EXPRESSION)返回指定字符列或表达式的长度4)TRIM(COLNAME/EXPRESSION)删除指定列或表达式前后的字符5)COLNAME/EXPRESSION || COLNAME/EXPRESSION返回并在一起的字符;二、IDS内部函数1、DBSERVERNAME返回数据库服务器名let tmp_char=DBSERVERNAME2、SITENAME返回数据库服务器名let tmp_char=SITENAME说明:两者功能相同;3、DBINFO(‘SPECIAL_KEYWORD')返回只关键字值例子1:返回数据中每个表的DBSPACE名称select dbinfo('dbspace',partnum),tabname from systableswhere tabid>99 and tabtype='T'(OK)例子2:返回任何表中插入的最后一个SERIAL值select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1例子3:返回最后一个SELECT,INSERT,UPDATE,DELETE或EXECUTE PROCEDURE语句处理的行数;select dbinfo('sqlca.sqlerrd2') from systables where tabid=1;Date Manipulation (日期操作)One of the more difficult concepts in Informix's handling of date and time values concerns the use of the variables in arithmetic or relational expressions. You can add or subtract DA TE and DA TETIME variables from each other. You can add or subtract an INTERV AL to a DATE or DA TETIME. Table 1 shows the results of different types of operations on DA TE and DA TETIME values.Notice that it's always okay to subtract one DA TE or DATETIME value from another, as shown here:CURRENT - "07/01/1950" = INTERV AL (my age)"12/25/2000" – CURRENT = INTERV AL (how long till Xmas?)In such a case, the result is always an INTERV AL variable. It would make no sense to add two DA TE or DATETIME values together. What could such an addition represent?UNITS KeywordWhen working with INTERV AL values, sometimes it is necessary to specify the precision with which you are dealing. For example, suppose you have the following field defined:lead_time INTERV AL DAY to DAYTo add 10 days to the lead time you could use a SQL statement like this:SELECT lead_time + INTERV AL(10) DAY to DAYFROM orders;You could achieve the same results using the UNITS keyword:SELECT lead_time + 10 UNITS DAYFROM orders;Like most other programming languages, SQL often allows you to achieve the same ends with different statements. Sometimes the choice is one of personal style. Other times, one format fits in better with a structured style of code writing than another format does.FunctionsThere are several built-in functions that affect date and time calculations. They can apply to either DA TE or DATETIME values, with some exceptions.TODAYThe TODAY function returns a DA TE data value representing the current date. For example, you could execute a SQL function like this:UPDATE member SET change_date = TODAYWHER member_number = 12345;CURRENTThe CURRENT function is similar to the TODAY function, except it returns a DATETIME value. Without specific qualifiers, the default is YEAR to FRACTION(3). You can change the precision by using the same YEAR to FRACTION qualifiers as you use for DATETIMES. Thus, this would be legal:SELECT * from memberWHERE elapsed_time < CURRENT YEAR to DAYDATEThe DATE function takes as input a non-DA TE value such as CHAR, DATETIME, or INTEGER and returns the corresponding DATE value. For example, the following SQL translates a CHARACTER value to a DATE:SELECT * from memberWHERE enrollment_date > DA TE('01/01/99');DAYThis function returns an integer representing the day of the month. Here's an example:SELECT * from memberWHERE DAY(enrollment_date) > DAY(CURRENT);MONTHThis performs like the DAY function except it returns an integer between 1 and 12 representing the month:SELECT * from memberWHERE enrollment_date > MONTH('01/01/99');WEEKDAYThis returns an integer representing the day of the week, with 0 being Sunday and 6 being Saturday:SELECT * from memberWHERE WEEKDAY(enrollment_date) > WEEKDAY(CURRENT);YEARThis function is like the ones above, only it returns a four-digit integer representing the year.EXTENDThis function allows you to use different precisions in a DATETIME than you have specified in the declaration of the variable. It uses the same FIRST to LAST syntax as the DATETIME variables. This function is used to adjust the precision of a DA TETIME variable to match the precision of an INTERV AL that you are using in a calculation. If the INTERV AL value has fields that are not part of the DATETIME value that you are using in a calculation, use the EXTEND function to adjust the precision of the DA TETIME. EXTEND can either increase or decrease the precision of a DATETIME, depending upon the FIRST and LAST values.Suppose myvariable is declared as DA TETIME YEAR to DAY. If you want to add or subtract an INTERV AL defined as MINUTE, you first have to extend the DATETIME as follows:SELECT EXTEND(myvariable, YEAR to MINUTE) –INTERV AL(5) MINUTE to MINUTEFROM memberThe resulting value will be DATETIME YEAR to MINUTE;MDYThe MDY function converts three-integer values into a DATE format. The first integer is the month and must evaluate to an integer in the range 1–12. The second integer is the day and must evaluate to a number in the range from 1 to however many days are in the particular month (28–31). The third expression is the year and must be a four-digit integer. Thus, the following MDY functions would each be valid:MDY(7,1,1950)returns a DATE of "07/01/50"MDY(MONTH(TODAY), 1, YEAR(TODAY))returns a DATE equal to the first day of the current month in the current yearInformix has extensive capabilities for manipulating dates and times, which can make for long and complex SQL statements. Using the three time-related data types and the time-related functions and keywords, you can accomplish almost any type of manipulation of time data. Unfortunately, getting there may be cryptic and painful. If you regularly do extensive date and time manipulation, you should understand all of the intricacies of these data structures.Have fun!。

InformixSQL语句详解

InformixSQL语句详解

Informix SQL 语句详解(1)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/customer.log”;DA TABASE databse-name [EXCLUSIVE]选择数据库。

database_name:数据库名称。

EXCLUSIVE:独占状态。

存取当前目录和DBPATH中指定的目录下的数据库,事务中处理过程中不要使用此语句。

例:dtabase customerdb;3. CLOSE DA TABASE关闭当前数据库。

database_name:数据库名称。

此语句之后,只有下列语句合法:CREATE DATABASE;DATABASE;DROP DA TABSE;ROLLFORWARD DA TABASE;删除数据库前必须使用此语句。

例:close database;4. DROP DA TABASE database_name删除指定数据库。

database_name:数据库名称。

用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK WORK 也不可将数据库恢复。

例:drop databse customerdb;5. CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …)[IN “pathname”]创建表或临时表。

informix sql函数使用说明大全

informix sql函数使用说明大全

informix sql函数使用说明大全一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。

INFORMIX数据库操作及SQL语法

INFORMIX数据库操作及SQL语法

编号:TN-070101001TIENON数据库培训教程INFORMIX基本操作及SQL语法2007年1月,V 1.00目录1、引言 (5)1.1、读者对象 (5)1.2、内容简介 (5)1.3、课程时间 (5)1.4、课程目标 (5)2、数据库基本概念...........................................................错误!未定义书签。

2.1、从身边的例子了解数据库......................................................... 错误!未定义书签。

2.2、数据库系统概述......................................................................... 错误!未定义书签。

2.2.1、数据库的产生................................................... 错误!未定义书签。

2.2.2、数据库系统组成................................................. 错误!未定义书签。

2.2.3、与数据库相关的软件系统......................................... 错误!未定义书签。

2.2.4、数据库系统特点................................................. 错误!未定义书签。

2.2.5、数据库系统的历史............................................... 错误!未定义书签。

2.2.6、数据库系统的发展趋势........................................... 错误!未定义书签。

2.2.7、数据库的分类................................................... 错误!未定义书签。

sqllinform使用技巧

sqllinform使用技巧

sqllinform使用技巧SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准化语言。

在SQL中,INFORM(或者称为Informix)是一种常用的关系型数据库管理系统(RDBMS)。

本文将介绍一些SQL/INFORM的使用技巧,帮助读者更好地理解和运用这个强大的工具。

一、使用注释在编写SQL语句时,合理使用注释可以提高代码的可读性和可维护性。

在INFORM中,可以使用"--"来注释单行,或者使用"/* */"来注释多行。

例如:-- 这是一个单行注释/*这是一个多行注释可以有多行内容*/通过使用注释,可以向其他开发人员解释代码的用途和逻辑,方便代码的维护和修改。

二、使用别名在进行查询时,可以使用别名给表名、列名或查询结果命名,方便后续引用。

使用别名可以简化SQL语句,提高可读性。

例如:SELECT emp_id AS ID, emp_name AS Name, emp_salary AS SalaryFROM employee在这个例子中,给emp_id、emp_name和emp_salary分别起了别名ID、Name和Salary。

在查询结果中,可以直接使用别名引用这些列。

三、使用通配符通配符是用来模糊匹配数据的特殊字符。

在INFORM中,常用的通配符有"%"和"_"。

其中,"%"表示匹配任意字符(包括0个字符),"_"表示匹配一个字符。

例如:SELECT emp_nameFROM employeeWHERE emp_name LIKE 'J%'这个例子中,查询所有以字母J开头的员工姓名。

四、使用聚合函数聚合函数是用来对数据进行汇总计算的函数。

在INFORM中,常用的聚合函数有SUM、AVG、COUNT、MIN和MAX。

INFORMIX数据库操作及SQL语法

INFORMIX数据库操作及SQL语法

编号:TN-070101001TIENON数据库培训教程INFORMIX基本操作及SQL语法2007年1月,V 1.00目录1、引言 (5)1.1、读者对象 (5)1.2、内容简介 (5)1.3、课程时间 (5)1.4、课程目标 (5)2、数据库基本概念...........................................................错误!未定义书签。

2.1、从身边的例子了解数据库......................................................... 错误!未定义书签。

2.2、数据库系统概述......................................................................... 错误!未定义书签。

2.2.1、数据库的产生................................................... 错误!未定义书签。

2.2.2、数据库系统组成................................................. 错误!未定义书签。

2.2.3、与数据库相关的软件系统......................................... 错误!未定义书签。

2.2.4、数据库系统特点................................................. 错误!未定义书签。

2.2.5、数据库系统的历史............................................... 错误!未定义书签。

2.2.6、数据库系统的发展趋势........................................... 错误!未定义书签。

2.2.7、数据库的分类................................................... 错误!未定义书签。

INFORMIX SQL语法与规范

INFORMIX SQL语法与规范

一、INFORMIX SQL语法DML (Data Manipulation Language commands) 数据操纵语言DDL (Data Definition Language commands) 数据定义语言TCC (Transaction Control commands) 事务控制语言SCC (System Control commands) 系统控制语言1、AlterALTER TABLE < 表名>[ ADD < 新列名> < 数据类型> [ DEFAULT < 缺省值> ] [ 完整性约束名] [ BEFORE 列名] ][ DROP < 列名> ][ MODIFY [ < 列名> < 数据类型> [ NULL | NOT NULL ] ] ] ;ALTER TABLE < 表名>[ ADD CONSTRAINT[ UNIQUE ( 列名) ][ DISTINCT ( 列名) ][ PRIMARY KEY ( 列名) ][ FOREIGN KEY ( 列名) REFERENCES < 表名. >( 列名) ON DELETE CASCADE ][ CONSTRAINT < 约束名> ] ][ DROP CONSTRAINT < 约束名>][ MODIFY NEXT SIZE数值(单位KB) ][ LOCK MODE ( PAGE | ROW | TABLE ) ] ;2、RenameRENAME COLUMN < 表名.旧字段名> TO < 表名.新字段名> ;RENAME TABLE < 旧表名> TO < 新表名> ;RENAME DA TABASE < 旧数据库名> TO < 新数据库名> ;3、GrantGRANT [ CONNECT | RESOURCE | DBA ] TO < PUBLIC | 用户> ;GRANT < [ ALL | , SELECT | , INSERT | , UPDA TE | , DELETE ] ON < 表名> TO < PUBLIC | 用户> ; GRANT EXECUTE ON < 存储过程名称> TO < PUBLIC | 用户> ;4、RevokeREVOKE [ CONNECT | RESOURCE | DBA ] FROM < PUBLIC | 用户> ;REVOKE < [ ALL | , SELECT | , INSERT | , UPDATE | , DELETE ] ON < 表名> FROM < PUBLIC | 用户> ; REVOKE EXECUTE ON < 存储过程名称> FROM < PUBLIC | 用户> ;5、LoadLOAD FROM < 文件名> [ DELIMITER …delimiter‟ ] INSERT INTO < 表名>(字段) ;6、UnloadUNLOAD TO < 文件名> [ DELIMITER …delimiter‟ ] < 复合select 语句> ;7、Update StatisticsUPDA TE STA TISCTICS FOR PROCEDURE < 存储过程名> ;UPDA TE STA TISCTICS [ LOW | MIDIUM | HIGH ]FOR TABLE [ < 表名| synonym >[ (字段名) ] ] [ DROP DISTRIBUTIONS ] ;二、INFORMIX SPL语法1、CallCALL PROCEDURE存储过程名称(参数) [RETURNING 返回值参数] ;2、ContinueCONTINUE [FOR | FOREACH | WHILE] ;3、DefineDEFINE GLOBAL < 变量> [ < 数据类型> [ DEFAULT 缺省值] ] | [ REFERENCES [ BYTE | TEXT ] ] ; DEFINE < 变量>[ < 数据类型> | [ REFERENCES [ BYTE | TEXT ] | PROCEDURE LIKE < 表名.列名> ] ;4、ExitEXIT [FOR | FOREACH | WHILE]5、ForFOR < 变量> = < 开始> TO < 结束> [ STEP < 步长> ]END FOR ;FOR < 变量> IN < 范围表达式>END FOR ;6、Foreach7、IfIF < 条件> THEN< 语句>[ ELIF < 条件> THEN< 语句> ][ ELSE< 语句> ]END IF8、LetLET变量=数据(可以是表达式,并且可以多个一起赋值) ;9、On Exception10、Raise Exception11、ReturnRETURN [ < 表达式> WHILE RESUME ] ;12、System13、Trace14、WhileWHILE < 条件>< 语句>END WHILE ;三、标量函数1、数值标量函数ABS(n) 求n的绝对值MOD(n,m) 求n被m除的余数POW(n,m) 求n的m次方ROUND(n,m) 把n四舍五入,保留m位小数ROOT(source,index) 大于最大TRUNC(source,+,-,position) 截位2、字符型函数LENGTH(char) 求char的长度CHAR_LENGTH(char) 求char的长度LOWER(char) 把char中的字符改成小写UPPER(char) 把char中的字符改成大写LPAD(char1,n[,char2]) 从左侧用char2补齐char1至长度nRPAD(char1,n[,char2]) 从右侧用char2补齐char1至长度nTRIM(char) 去左右空格SUBSTR (str,n,m) 在str中从位置n开始截取长度为m的字符串REPLACE(source_string,old_str,new_str)3、日期型函数TODAY返回当前数据库服务器系统日期CURRENT返回当前数据库服务器系统日期和时间DAY(date or datetime) 返回1--31MONTH(date or datetime) 返回1--12WEEKDAY (date or datetime) 返回0—6YEAR(date or datetime) 返回四位年份4、空值函数NVL(<参数1>,<参数2>) 如参数1不是空值,返回其值,否则返回参数2的值6、条件标量函数ExecuteEXECUTE PROCEDURE存储过程名称(参数) [RETURNING procedure_var]CaseCASEWHEN条件THEN动作…………ELSE动作ENDCASE < 字段>WHEN值THEN值…………ELSE值ENDselect mobile_number,join_date,casewhen mobile_number>‟139********‟ and mobile_number<‟139********‟ then …斗门‟when mobile_number>‟138********‟ and mobile_number<‟139********‟ then …珠海‟……………else …珠海‟end,pinpai_code,sfzh_codefrom f01_customer ;select mobile_number,case pinpai_codewhen “0” then “全球通”when “1” then “模拟机”when “2” then “本地通”when “4” then “大众通”else “全球通”end,join_datefrom f01_customer空值转换Nvlselect mobile_number,nvl(spending_code,999) from f01_customer多重条件判断语句:Decodeselect mobile_number,decode(pinpai_code,‟0‟,‟全球通‟,‟1‟,‟模拟机‟,‟2‟,‟本地通‟,‟4‟,‟大众通‟,‟全球通‟) from f01_customer四、集合函数A VG(e) 求一组行中e值的平均值COUNT(e) 计算一组行中e值为非空值的行数COUNT(*) 计算表中的行数MAX(e) 计算一组行中e值的最大值MIN(e) 计算一组行中e值的最小值SUM(e) 计算一组行中e值的总和五、数据类型六、INFORMIX SQL使用常识1、语句书写层次分明,风格尽量保持一致2、强制使用/不使用索引强制使用索引:select * from emp where empno > 0 ;select * from emp where ename > ‘’;强制不使用索引:select * from emp where empno + 0 > 0;select * from emp where ename || ‘’= ’scott‘3、有效利用索引避免对索引列进行计算select * from emp where sal * 0.2 > 500改为select * from emp where sal > 2500避免在索引列使用NOTNOT > 改为< = NOT = 改为<> NOT>= 改为<NOT < 改为>= NOT<= 改为>避免在索引列使用NULLselect * from emp where sal IS NOT NULL改为select * from emp where sal > 04、减少访问数据库的次数select * from emp where empno = 1234;select * from emp where empno = 4321;改为select a.* , b.* from emp a, emp bwhere a.empno = 1234and b.empno = 4321;select ename from emp where empno = 1234 and sal=3000;select ename from emp where empno = 1234 and sal=5000;改为Select Decode(sal,3000,ename,null) ename1,Decode(sal,5000,ename,null) ename2From empno where empno = 1234 ;5、update语句时要注意后面的WHERE 条件,特别是在子查询之外的WHERE条件。

informix序列号创建sql脚本

informix序列号创建sql脚本

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。

1、create sequence你首先要有create sequence或者create any sequence权限,create sequence emp_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXVALUE -- 不设置最大值NOCYCLE -- 一直累加,不循环CACHE 10;一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVALCURRVAL=返回sequence的当前值NEXTVAL=增加sequence的值,然后返回sequence值比如:emp_sequence.CURRVALemp_sequence.NEXTVAL可以使用sequence的地方:- 不包含子查询、snapshot、VIEW的SELECT 语句- INSERT语句的子查询中- NSERT语句的VALUES中- UPDATE 的SET中可以看如下例子:INSERT INTO emp VALUES(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);SELECT empseq.currval FROM DUAL;但是要注意的是:- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY 值,然后返回增加后的值。

CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。

一次NEXTVAL会增加一次sequence的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。

明白?- 如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。

Informix SQL 语句详解

Informix 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 tab type = “L”;例:create databse customerdb with log in “/usr/john/log/customer.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;4. DROP DATABASE database_name 删除指定数据库。

database_name:数据库名称。

用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK WORK 也不可将数据库恢复。

例:drop databse customerdb;5. CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …) [IN “pathname”] 创建表或临时表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
overlay(string placing string from integer [for integer]) text 替换子字串 overlay('Txxxxas' placing 'hom' from 2 for 4) Thomas
position(substring in string) integer 指定的子字串的位置 position('om' in 'Thomas') 3
4)ROOT(COLNAME/EXPRESSION,[index]) 返回指定列或表达式的根值
5)SQRT(COLNAME/EXPRESSION) 返回指定列或表达式的平方根值
6)ROUND(COLNAME/EXPRESSION,[factor]) 返回指定列或表达式的圆整化值
例子2:返回任何表中插入的最后一个SERIAL值
select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1
例子3:返回最后一个SELECT,INSERT,UPDATE,DELETE或EXECUTE PROCEDURE语句处理的行数;
substring(string [from integer] [for integer]) text 抽取子字串 substring('Thomas' from 2 for 3) hom
substring(string from pattern) text 抽取匹配 POSIX 正则表达式的子字串 substring('Thomas' from '...$') mas
bit_length(string) intege;jose') 32
char_length(string) 或 character_length(string) integer 字串中的字符个数 char_length('jose') 4
convert(string using conversion_name) text 使用指定的转换名字改变编码。转换可以通过 CREATE CONVERSION 定义。当然系统里有一些预定义的转换名字。参阅 Table 9-8 获取可用的转换名。 convert('PostgreSQL' using iso_8859_1_to_utf_8) Unicode (UTF-8) 编码的'PostgreSQL'
说明:两者功能相同;
3、DBINFO(‘SPECIAL_KEYWORD') 返回只关键字值
例子1:返回数据中每个表的DBSPACE名称
select dbinfo('dbspace',partnum),tabname from systables
where tabid>99 and tabtype='T' (OK)
注:该功能与1相似;
例子4、EXTEND转换日期或日期时间值
let tmp_inthour = extend(datetime1,hour to hour)
3、代数函数
1)ABS(COLNAME/EXPRESSION): 取绝对值
4)ACOS(RADIAN EXPRESSION) 反余弦
5)ASIN(RADIAN EXPRESSION) 反正弦
6)ATAN(RADIAN EXPRESSION) 反正切
7)ATAN2(X,Y) 返回坐标(X,Y)的极坐标角度组件
5)AVG(COLNAME/EXPRESSION) 返回指定列或表达式中的数值平均值
6)AVG(DISTINCT COLNAME) 返回指定列中唯一值的平均值
7)MIN(COLNAME/EXPRESSION) 返回指定列或表达式中的数值最小值
8)MAX(COLNAME/EXPRESSION) 返回指定列或表达式中的数值最大值
5)COLNAME/EXPRESSION || COLNAME/EXPRESSION 返回并在一起的字符;
二、IDS内部函数
1、DBSERVERNAME 返回数据库服务器名 let tmp_char=DBSERVERNAME
2、SITENAME 返回数据库服务器名 let tmp_char=SITENAME
SQL 定义了一些字串函数, 它们有指定的语法,它们里面是用 某种特定的关键字,而不是逗号来分隔参数. 详情请见Table 9-6, 这些函数也用正常的函数调用说法实现了. (参阅 Table 9-7.)
Table 9-6. SQL 字串函数和操作符
函数 返回类型 描述 例子 结果
string || string text 字串连接 'Post' || 'greSQL' PostgreSQL
2)MOD(COLNAME/EXPRESSION,DIVISOR) 返回除以除数后的模(余数)
3)POW(COLNAME/EXPRESSION,EXPONENT) 返回一个值的指数冥
例子:let tmp_float = pow(2,3) --8.00000000
7、其他函数
1)USER 返回当前用户名
2)HEX(COLNAME/EXPRESSION) 返回指定列或表达式的十六进制值
3)LENGTH(COLNAME/EXPRESSION) 返回指定字符列或表达式的长度
4)TRIM(COLNAME/EXPRESSION) 删除指定列或表达式前后的字符
select dbinfo('sqlca.sqlerrd2') from systables where tabid=1;
字符串函数和操作符
本节描述了用于检查和操作字符串数值的函数和操作符. 在这个环境中的字串包括所有类型 character, character varying,和 text 的值.除非另外说明,所有下面列出的函数都可以处理这些类型, 不过要小心的是,在使用 character 类型的时候, 它的自动填充的潜在影响.通常这里描述的函数也能用于非字串 类型,我们只要先把那些数据转化为字串表现形式就可以了。 有些函数还可以处理位串类型.
一、内部函数
1、内部合计函数
1)COUNT(*) 返回行数
2)COUNT(DISTINCT COLNAME) 返回指定列中唯一值的个数
3)SUM(COLNAME/EXPRESSION) 返回指定列或表达式的数值和;
4)SUM(DISTINCT COLNAME) 返回指定列中唯一值的和
6、统计函数
1)RANGE(COLNAME) 返回指定列的最大值与最小值之差 = MAX(COLNAME)-MIN(COLNAME)
2)VARIANCE(COLNAME) 返回指定列的样本方差;
3)STDEV(COLNAME) 返回指定列的标准偏差;
let tmp_date = today + 3 UNITS day
例子2、let tmp_date = MDY(10,30,2002) -- 2002-10-30
例子3、let tmp_date = today + interval(7) day to day --当前时间加上7天;
substring(string from pattern for escape) text 抽取匹配SQL正则表达式的子字串 substring('Thomas' from '%#"o_a#"_' for '#') oma
trim([leading | trailing | both] [characters] from string) text 从字串 string 的 开头/结尾/两边/ 删除只包含 characters (缺省是一个空白)的最长的字串. trim(both 'x' from 'xTomxx') Tom
let tmp_float = trunc(4.555,2) --4.55
4、指数与对数函数
1)EXP(COLNAME/EXPRESSION) 返回指定列或表达式的指数值
2)LOGN(COLNAME/EXPRESSION) 返回指定列或表达式的自然对数值
2、日期与时间函数
1)DAY(DATE/DATETIME EXPRESSION) 返回指定表达式中的当月几号
2)MONTH(DATE/DATETIME EXPRESSION) 返回指定表达式中的月份
3)YEAR(DATE/DATETIME EXPRESSION) 返回指定表达式中的年份
4)WEEKDAY(DATE/DATETIME EXPRESSION) 返回指定表达式中的当周星期几
5)DATE(NOT DATE EXPRESSION) 返回指定表达式代表的日期值
6)TODAY 返回当前日期的日期值
7)CURRENT[first to last] 返回当前日期的日期时间值
11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值
12)EXTEND(DATE/DATETIME EXPRESSION,[first to last])返回经过调整的日期或日期时间值
例子1、和UNITS合用,指定日期或时间单位(year,month,day,hour,minute,seond,fraction):
8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数
相关文档
最新文档