INFORMIX数据库函数
informix函数大全
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函数
Informix函数在Informix数据库中,函数是一个可重复使用的代码块,用于执行特定的操作或计算。
函数可以接收参数并返回结果。
本文将介绍Informix中常用的函数,并提供相应的示例和说明。
1. 字符串函数1.1 LOWER()LOWER()函数将指定字符串中的大写字母转换为小写字母。
示例:SELECT LOWER('Hello World') AS lower_string;输出:lower_string--------------hello world1.2 UPPER()UPPER()函数将指定字符串中的小写字母转换为大写字母。
SELECT UPPER('Hello World') AS upper_string;输出:upper_string--------------HELLO WORLD1.3 LENGTH()LENGTH()函数返回指定字符串的长度。
示例:SELECT LENGTH('Hello World') AS string_length;输出:string_length--------------112. 数值函数2.1 ABS()ABS()函数返回指定数值的绝对值。
SELECT ABS(-10) AS absolute_value;输出:absolute_value-------------102.2 ROUND()ROUND()函数将指定数值四舍五入到指定的小数位数。
示例:SELECT ROUND(3.14159, 2) AS rounded_value;输出:rounded_value--------------3.142.3 MOD()MOD()函数返回两个数值相除的余数。
示例:SELECT MOD(7, 3) AS remainder;输出:remainder---------13. 日期函数3.1 CURRENTCURRENT函数返回当前日期和时间。
Informix数据库SQL介绍
Informix数据库SQL介绍INFORMIX SQL 介绍⼀、简介:1)、INFORMIX主要产品分为三⼤部分:; 数据库服务器(数据库核⼼); 应⽤开发⼯具; ⽹络数据库互联产品2)、数据库服务器有两种,作⽤都是提供数据操作和管理:; SE:完全基UNIX操作系统,主要针对⾮多媒体的较少⽤户数的应⽤; ONLINE:针对⼤量⽤户的联机事务处理和多媒体应⽤环境3)、应⽤开发⼯具是⽤以开发应⽤程序必要的环境和⼯具,主要也有两个系列:; 4GL:INFORMIX传统的基字符界⾯的开发⼯具,该系列的主要产品有五个,他们是I-SQL、4GL RDS、4GL C COMPILER、4GL ID和ESQL/C;; NewEra:INFORMIX最新提供的具有事件驱动能⼒、⾯向对象的基各种图形界⾯的开发⼯具。
4)、INFORMIX的⽹络数据库互联产品:提供给⽤户基多种⼯业标准的应⽤程序接⼝,通过它可以和其它遵守这些⼯业标准的数据库联接。
⼆、I-SQL菜单简介:Form可以执⾏、创建、修改、编译屏幕格式或删除已存在的屏幕格式Run执⾏某⼀已经存在的屏幕格式Modify修改指定的已经存在的屏幕格式Generate 为指定的表创建⼀个缺省的屏幕格式Compile编译⼀个制定的屏幕格式New创建特定的⽤户屏幕格式Drop删除某已经存在的格式⽂件Exit退出Form菜单Report 可以执⾏、建⽴、修改、编译、或删除报表Run执⾏某⼀报表Modify修改指定的报表Generate 为某⼀个表建⽴⼀个缺省的报表New建⽴⼀个⽤户指定的报表Compile编译指定的报表Drop删除⼀个指定的已经存在的报表Exit退出Report菜单Query-Language详见实⽤程序说明:dbaccessUser-menu 可以执⾏、建⽴或修改⽤户建⽴的菜单Run执⾏当前数据库的⽤户菜单Modify允许⽤户建⽴或修改⽤户菜单Exit退出User-menu菜单Database详见实⽤程序说明:dbaccessTable详见实⽤程序说明:dbaccessExit退出实⽤程序isqlrf(或isql)三、常⽤操作:; 创建数据库ISQL==》DATABASE==》CREATE==》输⼊新建数据库名称; 创建表ISQL==》TABLE==》CREATE==》输⼊欲建的表名==》ADD==》输⼊欲建的字段名及类型等==》EXIT==》BUILD-NEW-TABLE; ⽣成缺省表格式ISQL==》FORM==》GENERATE=》选择数据库==》输⼊表格式名称==》选择表==》TABLE-SELECTION-COMPLETE-----》编译成功==》RUN四、使⽤RDSQL(交互式查询语⾔)编写SQL语句⽅法:ISQL==》Query Langavage==》NEW==》RUN; 建⽴数据库CREATE DATABASE数据库名; 建表(格式及可选数据类型)基本格式:CREATE TABLE表名(字段名类型,字段名类型,---字段名类型);详细定义:CREATE TABLE表名(COL1INTEGER NOT NULL,COL2CHAR(2)CHECK ( COL2IN (“??”,“??”),COL3DATE DEFAULT TODAY,COL4SMALLINT UNIQUE,---字段名类型)FRAGMENT BY ROUND ROBIN (BY EXPRESSION)IN DB1,DB2EXTENT SIZE 1000 NEXT SIZE 600WITH NO LOG (LOG;BUFFERED LOG;LOG MODE ANSILOCK MODE ROW(PAGE);例1:CREATE TABLE ORDERS(ORDER_NUM INTEGERUNIQUE CONSTRAINT ORDER_NUM_UQ,ORDER_DATE DATENOT NULL CONSTRAINT ORDER_DA TE_NNDEFAULT TODAY ;例2:CREATE TABLE CUSTOMER (CUSTOMER_NUM SERIAL,FNAME CHAR(20),PRIMARY KEY (CUSTOMER_NUM)CONSTRAINT PK_CNUM);CREATE TABLE ORDERS (ORDER_NUM SERIAL,CUSTOMER_NUM INTEGER,FOREIGN KEY (CUSTOMER_NUM)REFERENCES CUSTOMERCONSTRAINT FK_CNUM);数据类型:字符型(CHAR(20)),V ARCHAR(MINSIZE, MAXSIZE)数值型(六种,DECIMAL(16,2),SMALLINT,INTEGER,SMALLFLOAT,FLOAT,SERIAL ) ⽇期型( DATE,默认格式为:MM/DD/YYYY )**要修改DATE类型的缺省格式, 只要在⽤户主⽬录的.profile⽂件中做如下说明: DBDATE=Y4MD/EXPORT DBDA TE**货币型(MONEY (8,2))其它(如:INTERV AL,DA TETIME等); 建⽴索引(必须建⽴命名索引)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)DISABLED;SET INDEXES索引名ENABLEDDROP INDEX索引名; 数据库权限CONNECT:访问数据库RESOURCE:允许⽤户建⽴或清除数据库中的表和索引DBA:数据库管理员,所有权限,⼀般建表者即为DBAGRANT权限TO〈PUBLIC | ⽤户名〉REVOKE权限FROM〈PUBLIC | ⽤户名〉; 检索数据库DA TABASE数据库名SELECT * FROM表名SELECT字段名,字段名FROM表名SELECT字段名,字段名+-*/新字段名FROM表名SEKECT A VG(字段) ,MIN(),MAX(),SUM(),COUNT()FROM表名WHERE⼦句 =〈〉!=< <=>>=MATCHES* 0多个? 单个[ ] 单个字符或⼀个范围\ 转义下⼀个字符LIKE %:0--多个 _ 单个\ 转义下⼀个特殊字符ORDER BY(DESC)时间函数: DAY MDY MONTH WEEKDAY YEAR DATE CURRENT其它函数:LENGTH USER CURRENT TODAY从多个表中查找, SELECT嵌套字段名不同可直接写出,若不同表中有相同字段名,则前缀表名SELECT表⼀.字段名FROM表⼀, 表⼆向表中插⼊数据INSERT INTO表名 [ 列1, 列2。
一些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!。
(最新)informix SQL汇总(包括效率分析)(精品文档)
informix SQL汇总每个数据库管理系统(DBMS)都有其自己的数据处理语言(DML),但所有DML都基于一种语言SQL语言——结构化查询语言(SQL),其发音为“sequel”或“S-Q-L”。
目前SQL的前身是E.F.Codd博士70年代发明的。
第一个实现是在76年,称为sequel。
而SQL首先被采用是在IBM的System R项目中。
86年10月由ANSI确定为正式的关系查询语言标准。
ISO在对其修改后在90年制定为国际工业标准。
无论进行何种数据库学习,SQL语言都是必学内容。
在我国数据库语言SQL标准(GB12991)中规定了两个数据库语言的语法与语义:模式定义语言(SQL-DDL),描述SQL数据库的结构与完整性的约束;数据操纵语言(SQL-DML),描述操作数据库的执行语句在本文章中涉及以上两个中的主要部分,(为叙述方便,以下对其统称为SQL),由于SQL 在嵌入C时表现略有不同,所以下面均以非嵌入时的SQL进行。
另外本文章也不是SQL的入门教材,阅读者应学习并实际用SQL操作过某种数据库。
如果你系统学习过数据库理论,又能熟练操作INFORMIX关系数据库,甚至从事过有关数据库程序的设计,还那么作者在此恭喜你了。
如果你尚未系统学习过数据库理论,并对INFORMIX数据库了解甚少,建议你先阅读有关的文档。
informix SQL汇总【主要SQL语句详解】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”;DATABASE databse-name [EXCLUSIVE]选择数据库。
c语言和INFORMIX数据库
Linux系统下C语言编程—怎么向INFORMIX数据库插入数据就是先定义一个结构,给结构赋值,然后把结构里的数据放到informix数据库里面是在UNIX系统下面完成的,知道的朋友能不能给我讲讲。
主要是结构里面的东西怎么往表里面写。
在UNIX下面,用ESQL编程,和C也差不多,就是往里插入SQL语句也可以像C一样的定义变量。
用ESQL/C编程概述使用informix-esql/c语句的C程序通常包括下列元素,本章将逐一讲述:head files头文件include files包含文件host variables宿主变量indicator variables指示变量SQL语句在程序中也可以包含动态定义的语句,将在第九章讲述。
本章提供了下列主题的详细说明:1在esql/c程序中使用头文件2对esql/c提供预处理3在C程序中嵌入SQL语句4识别C变量5处理与编译C程序********************在C程序中嵌入SQL语句SQL语句用$符号或EXEC SQL关键字嵌入到C程序中,使用关键字与ANSI标准一致。
esql/c中的大小写敏感性informix-esql/c预处理器对变量名的大小写不敏感。
由PREPARE语句产生的语句id号和由DECLARE语句产生的游标名默认是不敏感的。
如果希望预处理器对游标名和语句id大小写敏感,可以在esql的命令行中加入-cs参数。
*插入注释你可以用双减号作为注释符号在任何的INFORMIX-ESQL/C行中加入注释。
注释持续到一行的结束。
同时也可以在INFORMIX-ESQL/C行中使用标准的C注释。
如:----------------------------------------------------$database stores5; -- stores5 database is open now!printf("\nDatabase opened\n"); /* This isn’t an ESQL/C line*//* so it needs a regular C notation for a comment*/$begin work; /*You can also use a C comment here*/---------------------------------------------------头文件随informix-esql/c提供有几个头文件,均位于$INFORMIXDIR的/incl子目录下,说明如下:sqlca.h包含有存储了错误状态代码的结构。
informix和mysql中的replace函数
informix和mysql中的replace函数摘要:1.引言rmix中的replace函数a.函数定义b.函数用途c.示例3.MySQL中的replace函数a.函数定义b.函数用途c.示例4.总结正文:在数据库领域,Informix和MySQL是两种非常流行的关系型数据库管理系统。
在这两种数据库中,replace函数都是一个常用的字符串处理函数,用于在字符串中查找指定的子串,并将其替换为给定的替换字符串。
下面分别介绍Informix和MySQL中的replace函数。
1.引言Informix和MySQL都是功能强大的数据库管理系统,提供了丰富的数据操作功能。
在实际应用中,我们经常会遇到需要对字符串进行处理的需求。
replace函数就是用来实现这一需求的。
本文将对Informix和MySQL中的replace函数进行详细介绍。
rmix中的replace函数Informix中的replace函数用于在字符串中查找指定的子串,并将其替换为给定的替换字符串。
函数定义如下:```REPLACE(str, from_str, to_str)```参数说明:- str:原始字符串。
- from_str:需要被替换的子串。
- to_str:用于替换的替换字符串。
函数用途:将原始字符串中的所有from_str子串替换为to_str子串。
示例:假设有一个名为employees的表,其中有一个名为job_title的字段,我们想要将所有包含“工程师”的职位名称替换为“开发工程师”。
可以使用如下SQL语句实现:```sqlSELECT replace(job_title, "工程师", "开发工程师") as new_job_title FROM employees;```3.MySQL中的replace函数MySQL中的replace函数与Informix中的replace函数功能相似,也是用于在字符串中查找指定的子串,并将其替换为给定的替换字符串。
在Informix+Dynamic+Server+中创建并使用函数索引
在Informix Dynamic Server 中创建并使用函数索引随着数据量以惊人速度不断增长,数据库管理系统将继续关注性能问题。
本文主要介绍一种名为函数索引(functional index)的性能调优技术。
根据数据库使用情况的统计信息创建并使用函数索引,可以显著提升SELECT 查询的性能。
通过本文了解如何在IBM ® Informix ® Dynamic Server 中创建和使用函数索引并最大限度提升查询性能。
简介在选择数据库管理系统(DBMS)时,性能是一个关键的考虑因素。
在执行SELECT、INSERT、UPDA TE 和DELETE 操作时,很多因素都会对性能产生影响。
这些因素包括:持久性数据存储的速度和大小数据存储结构数据访问方法随着数据集不断变大,查询性能愈发变得重要。
通常,使用索引可以改善查询性能。
索引将数据库中的行位置与一组有序数据子集和/或数据派生物关联在一起。
索引可以减少DBMS 在执行查询时检查的行(或元组)数量,从而获得性能增益。
有时,仅通过搜索索引即可完成查询,而不需要从表中取回任何元组(tuple)。
例如,如果您在列c1 中建有索引,并且发出查询select c1 from t1 where c1 < 10 ,那么索引中包含了可以满足查询的所有信息。
有趣的是,ANSI SQL 标准并没有说明如何创建、实现或维护索引。
因此,数据库供应商可以按照自己的方式自由地实现索引。
本文讨论了Informix Dynamic Server 的函数索引特性。
要理解本文涉及的概念,您需要熟悉基本的数据库术语和概念,例如模式、表、行、列、索引和可扩展性。
还需了解Informix Dynamic Server (IDS) 的基本配置以及如何启动和停止服务器、如何使用ONCONFIG 文件进行配置。
此外,还需熟悉基本的SQL 命令以及如何使用dbaccess 对服务器执行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语言实现复杂应用方面的不足。
嵌入SQL的高级语言称为主语言或宿主语言。
在混合编程中,SQL语句负责操作数据库,高级语言语句负责控制程序流程。
预编译方法:由DBMS的预处理程序对源程序扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译器能识别它,最后由主语言编译器将整个源程序编译成目标码。
☆嵌入式SQL的一般形式所有的嵌入式SQL语句都必须加前缀EXEC SQL在C语言中:EXEC SQL <SQL语句>例如:EXEC SQL DROP TABLE Student;☆嵌入式SQL与主语言的通信向主语言传递SQL语句执行状态信息,使语言能够据此信息控制程序流程,用SQL通信区(S QLCA【SQL Communication Area】)实现。
主语言向SQL语句提供参数,主要用主变量(Host Variable)实现;将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。
☆SQL通信区SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE。
每次执行完SQL语句后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理,如果SQLCODE等于预定的常量SUCCESS,则表示SQL语句成功,否则在SQL CODE中存放错误代码。
SQLCA(SQL Communication Access) 系由系统提供之系统记录架构,作为back end与 f ront end 之间沟通之用,当发生 I/O 状态时,系统会记录该状态于SQLCA 中,front end 即可依据其其内容得知 I/O 运作是否成功,再决定往后执行的步骤。
SQLCA 为系统定义之 GLO BAL变量,以下为其架构并介绍其内容与用途:DEFINE SQLCA RECORDSQLCODE INTEGER,SQLERRM CHAR(71),SQLERRP CHAR(8),SQLERRD ARRAY[6] OF INTEGER,SQLAWARN CHAR(8)END RECORD.SQLCODE :表示 I/O 的结果0 表示 I/O 成功100 表示 NOTFOUND< 0 表示 I/O 失败.SQLERRM :保留未用.SQLERRP :保留未用.SQLERRD :为一个含有6个INTEGER数组SQLERRD[1]:保留未用SQLERRD[2]:新增时 SERIAL 字段所传回之值SQLERRD[3]:处理资料的笔数SQLERRD[4]:查询时预估的 CPU COSTSQLERRD[5]:SQL指令之错误位移SQLERRD[6]:最后一个 ROWID 值.SQLAWARN :为一个含有8个字符的字符串,以记录I/O时产生的警告讯息。
informix 分割函数
informix 分割函数
Informix是一种关系型数据库管理系统(RDBMS),它具有
分布式数据分区功能。
Informix中的分割函数允许将表中的数
据按照特定的规则进行分割存储。
这样可以提高查询性能和管理数据的灵活性。
在Informix中,分割函数是一个用户定义的函数,它定义了
数据如何按照特定的条件进行分割。
分割函数可以根据表中一个或多个列的值来进行分割,也可以使用复杂的条件表达式来进行分割。
分割函数的语法如下:
```
CREATE FUNCTION partition_func (col_name datatype)
RETURNS INT
RETURN partition_value;
```
其中,`partition_func`是函数的名称,`col_name`是要分割的列名,`datatype`是列的数据类型。
`partition_value`是一个整数值,用于指定分割的规则。
通过使用分割函数,可以创建基于时间、地理位置、数据范围等条件的分区存储方案。
这样可以将数据分散存储在不同的磁盘上,提高查询性能和并行处理能力。
使用分割函数进行数据分区的一个示例是按照日期分区存储销售记录。
可以定义一个名为`partition_func`的分割函数,根据
日期值的年份进行分割。
然后,可以使用分割函数创建分区表,并将表按照特定的规则进行分割存储。
这样可以方便地按照日期范围进行查询和管理数据。
总之,Informix的分割函数提供了一种灵活的数据分区方案,
可以根据特定的规则将数据分割存储,提高查询性能和管理数据的灵活性。
INFORMIX -4GL 教程 的 入门 教材 数据库1-6
!當使用者要宣告通用變數時,必須使用 GLOBALS 敘述<語法格式>GLOBALSDEFINE_STATEMENT...END FLOBALS1.globals 必須定義在程式的最前面。
2.若使用 LIKE 關健字時,則在 globals 之前必須有 database 的敘述。
6-5 變數傳遞的範圍┌──────────────────────────┐│ globals ││ define variable a │| ┌────────────────┐ |│ | main │ |│ | define variable b │ |│ └────────────────┘ || ┌────────────────┐ |│ | function │ |│ | define variable c │ |│ └────────────────┘ |│ │└──────────────────────────┘┌────────────────────────┐│ 敘述 變數 型態 範圍 │├────────────────────────┤│ globals a 通用性 main |│ function |件!├────────────────────────┤m软├────────────────────────┤│ function c 區域性 function │└────────────────────────┘§例:A.4GL┌──────────────────────────┐│ ││ globals ││ define var_a char(1) │| end globals |│ ││ main |│ let var_a = 'A' |│ call test_global() |│ call test_global() |│ end main ││ │└──────────────────────────┘B.4GL┌──────────────────────────┐│ ││ globals "A.4GL" ││ define var_b char(1) ││ │| function test_global() |│ define var_c char(1) ││ display "=========" |件!m软m P文档及软件!│ display "var_b = ", b |│ display "var_c = ", c |│ let var_b = 'B' |│ let var_c = 'C' |│ end function ││ │└──────────────────────────┘結果:=========var_a = Avar_b = ?var_c = ?=========var_a = Avar_b = Bvar_c = ?6-6 參數的傳遞function 中的參數必須在 function 中事先用 define 定義。
INFORMIX数据库操作及SQL语法
编号:TN-070101001TIENON数据库培训教程INFORMIX基本操作及SQL语法2007年1月,V 1.00目录1、引言 (4)1.1、读者对象 (4)1.2、内容简介 (4)1.3、课程时间 (4)1.4、课程目标 (4)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数据库中的TO_DATE函数
Informix数据库中的TO_DATE函数
TO_DATE函数将字符串转换成DATETIME值。
这个函数根据format_string参数指定的格式,把char_expression参数评估为⽇期,并返回等价的⽇期值。
如果char_expression为 NULL,那么将返回 NULL 值。
TO_DATE函数的任何参数必须是内置数据类型。
如果省略format_string参数,那么TO_DATE函数会对 DATETIME 值应⽤缺省 DATETIME 格式。
缺省 DATETIME 格式由 GL_DATETIME 环境变量指定.
格式:to_date('20031231030112','%Y%m%d%H%M%S')
例⼦:SELECT * from table WHERE t01 =to_date('20091201','%Y%m%d')
TO_CHAR函数的SELECT语句来执⾏此转换:
SELECT TO_CHAR(begin_date, '%A %B %d, %Y %R') FROM tab1;
在这个例⼦⾥⾯format_string参数中的符号具有下列含义。
符号
含义
%A
语⾔环境中定义的完整weekday名
%B
语⾔环境中定义的完整⽉份名
%d
⽤⼗进制数表⽰的每个⽉的⽇期
%Y
⽤4位⼗进制数表⽰的年份
%R
24⼩时表⽰法的时间。
Informix常用函数
3)LOG10(COLNAME/EXPRESSION) 返回指定列或表达式的底数位10的对数值
5、三角函数
1)COS(RADIAN EXPRESSION) 返回指定弧度表达式的余弦值
例子1:返回数据中每个表的DBSPACE名称
select dbinfo('dbspace',partnum),tabname from systables
where tabid>99 and tabtype='T' (OK)
例子2:返回任何表中插入的最后一个SERIAL值
2)MOD(COLNAME/EXPRESSION,DIVISOR) 返回除以除数后的模(余数)
3)POW(COLNAME/EXPRESSION,EXPONENT) 返回一个值的指数冥
例子:let tmp_float = pow(2,3) --8.00000000
8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数
9)MDY(MONTH,DAY,YEAR) 返回标识指定年、月、日的日期值
10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值
2)MONTH(DATE/DATETIME EXPRESSION) 返回指定表达式中的月份
3)YEAR(DATE/DATETIME EXPRESSION) 返回指定表达式中的年份
4)WEEKDAY(DATE/DATETIME EXPRESSION) 返回指定表达式中的当周星期几
INFORMIX函数大全
目录INFORMIX数据类型 (2)表达式用途 (3)表达式 (4)校正表达式 (4)条件表达式 (4)一般性CASE表达式 (4)线形CASE表达式 (5)常量表达式 (5)引号字符串表达式 (6)函数清单 (6)ABS函数 (9)DBINFO函数 (10)CARDINALITY函数 (14)长度函数 (14)DA TE函数 (15)DAY函数 (15)三角函数 (16)ACOS函数 (16)ASIN函数 (16)ATAN函数 (16)ATAN2函数 (16)COUNT函数 (17)COUNT(*)函数 (17)COUNT DISTINCT和COUNT UNIQUE函数 (17)A VG函数 (18)USER函数 (18)DBSERVERNAME 和SITENAME函数 (18)TODAY函数 (18)CURRENT函数 (18)DA TETIME (19)COLUMN (19)Concatonation 运算符 (19)DECODE函数 (19)EXP函数 (20)EXTEND函数 (20)FILETOBLOB函数和FILETOCLOB函数 (21)HEX函数 (22)IFX_ALLOW_NEWLINE函数 (22)IPX_REPLACE_MODULE函数 (22)INITCAP函数 (23)LOCOPY函数 (23)LOGN函数 (24)LOGN10函数 (24)LOTOFILE函数 (25)LOWER函数 (26)LPAD(源字符串,长度,嵌入字符串) (26)RPAD(源字符串,长度,嵌入字符串) (26)MAX(数字列|数字表达式) (26)MIN(数字列|数字表达式) (26)MDY(expr1,expr2,expr3) (26)MOD(被除数,除数) (26)MONTH(date/dtime_expr) (26)NVL(表达式1,表达式2) (27)OCTET_LENGTH(变量名|列命) (27)POW(底数,指数) (27)RANGE(数字列|数字表达式) (27)REPLACE(源字符串,匹配字符串,新字符串) (27)ROOT(被开方数,指数) (27)ROUND(数字表达式,圆整系数) (27)SIN(弧度) (27)SITENAME (27)STDEV(数字列) (27)SUBSTR(源字符串,开始位置,长度) (27)SUM(数字列|数字表达式) (28)TAN(弧度) (28)TO_CHAR(DA TE|DA TETIME,格式字符串) (28)TO_DATE(字符表达式,格式字符串) (28)TODAY (28)TRIM([LEADING|TRAILING|BOTH] trim_expr FROM source_expr) (28)TRUNC(表达式,截去系数) (29)UPPER(源字符串) (29)V ARIANCE(数字列) (29)WEEKDAY(date|dtime_expr) (29)YEAR(date|dtime_expr) (29)INFORMIX数据类型表达式用途表达式校正表达式CAST(表达式::target_data_type AS target_data_type)可以用CAST AS关键字或双冒号校正操作符(::)将一种数据类型的表达式校正为另一种数据类型的表达式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、内部函数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值转化为字符值。
To_date函数将字符值转化为datetime类型的值。
例to_date(“1978-10-07 10:00”,”%Y-%m-%d %H:%M) 例子1、和UNITS合用,指定日期或时间单位(year,month,day,hour,minute,seond,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)VARIANCE(COLNAME)返回指定列的样本方差;3)STDEV(COLNAME)返回指定列的标准偏差;7、其他函数1)USER 返回当前用户名2)HEX(COLNAME/EXPRESSION)返回指定列或表达式的十六进制值3)LENGTH(COLNAME/EXPRESSION)返回指定字符列或表达式的长度4)TRIM(COLNAME/EXPRESSION)删除指定列或表达式前后的字符5)COLNAME/EXPRESSION || COLNAME/EXPRESSION 返回并在一起的字符;8、基数函数:1)cardinality(仅适用IDS)函数对集合包含的元素数目计数。
智能大对象函数,(仅适用与IDS)filetoblob( ),将文件复制到BLOB列中filetoclob( ),将文件复制到CLOB列中locopy( ),将BLOB或CLOB类型的数据复制到另一个BLOB或CLOB列中lotofile( ),将BLOB或CLOB复制到文件中9、字符串处理函数:lower,将字符串中每个大写字母转换为小写字母upper,将字符串中每个小写字母转换为大写字母initcap,将字符串中每个词的首写字母转换成大写replace,将字符串中的某一组字符转换成其他字符,例replace(col,”each”,”eve”)substr,返回字符串中的某一部分,例substr(col,1,2) substring,返回字符串中的某一部分,例substring(col,from 1 to 4)lpad,使用lpad函数已用重复次数达到必要次数的字符序列在左边填充或截断的字符串的副本,这取决于字符串中填充部分的指定长度。
举例:字段col 为char(15)类型,select lpad(col,21,”_”) from tab_name则显示为在col前加上六个_。
Rpad,使用rpad函数已用重复次数达到必要次数的字符序列在右边填充或截断的字符串的副本,这取决于字符串中填充部分的指定长度。
举例:字段col为char(15)类型,select rpad(col,21,”_”) from tab_name则显示为在col后边加上六个_。
10、其他函数:hex,返回表达式的十六进制数round,返回表达式的四舍五入值trunc,返回表达式的截断值length,计算表达式的长度user,返回执行查询的用户的用户名(登陆帐户名)today,返回当前系统日期dbservername,返回数据库服务器的名称,同sitename dbinfo,返回数据库的相关信息decode,函数来将一个具有一个值的表达式转换为另一个值decode(test,a,a_value,b,b_value,c,c_value……),decode 函数不支持TEXT和BYTE类型。
Nvl,来将求值为空的表达式转化为另一个想要指定的值。
另外还可以在select语句中使用存储过程,如select spl($test) from tab_name二、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;三、其它本函數庫共有38 個函數目前支持的Informix 版本為ODS 7.x、SE 7.x 與Universal Server (IUS) 9.x 三種。
在ODS 7.x 的版本中,完全支持所有的資料類型,而在IUS 9.x 中,不支持SLOB 與CLOB 二種類型。
要在Web Server 上安裝Informix Client 端,在編譯PHP 之前(configure 之前),要先設好IFX_LIBDIR、IFX_LIBS 及IFX_INCDIR 三種環境變量,若是9.x 版尚要配置HAVE_IFX_IUS 環境變量。
同時在配置時要加入--with_informix=yes 的選項。
ifx_connect: 打開Informix 服務器連接。
ifx_pconnect: 打開Informix 服務器持續連接。
ifx_close: 關閉Informix 服務器連接。
ifx_query: 送出一個query 字符串。
ifx_prepare: 准備query 字符串。
ifx_do: 執行已准備query 字符串。