1.交交运算的符号为“∩”,两个关系经过交运算后,相同部分重新组成一个新的关系。表1.5集合关系表关系运算主要有3种,即选择、连接和投影。表1.9职工号连接操作结果3.投影投影是选择两个指定关系中的属性组成一个新关系,投影运算也是单目运算,它是从列的角度进行操作的。......
2025-09-30
3.3 函数和过程
函数和过程是数据库系统的主要组成部分。在数据库系统中,函数相当于数据库中的命令,可以通过调用函数来执行数据库中的相关功能;过程相当于数据库中能实现某个功能的一段程序。
3.3.1 函数分类
在数据库系统中,常用的函数有字符处理函数、数值函数、日期时间函数、逻辑函数、数据库操作函数、系统函数和其他函数。
1.字符处理函数
常用的字符处理函数如下:
(1)返回字符串长度函数。其格式如下:Len(字符表达式)
功能:返回字符串的长度。
例如:
?Len(“student”),其结果为7。
?Len(“I am a student.”),其结果为15。
(2)取子串函数。其格式如下:
Substr((字符表达式),(数值表达式1),(数值表达式2))
功能:数值表达式1的值作为开始位置,字符表达式2的值作为长度,取子字符串。
例如:
?Substr(“student”,2,4),其结果为“tude”。
?Len(Substr(“I am a student.”,6,9)),其结果为9。
(3)从右边取子串函数。其格式如下:
Right((字符表达式),(数值表达式))
功能:返回字符串右边指定数量的字符。
例如:
?Right(“student”,3),其结果为“ent”。
?Right(“I am a student.”,10),其结果为“a student.”。
(4)从左边取子串函数。其格式如下:
Left((字符表达式),(数值表达式))
功能:返回字符串左边指定数量的字符。
例如:
?Left(“student”,4),其结果为“stud”。
?Left(“I am a student.”,4),其结果为“I am”。
(5)大写转化为小写函数。其格式如下:
Lower(字符表达式)
功能:将字符表达式中所有的大写字母转化为小写字母。
例如:
?Lower(“DATE”),其结果为“date”。
?Lower(“Date”),其结果为“date”。
(6)小写转化为大写函数。其格式如下:
Upper(字符表达式)
功能:将字符表达式中所有的小写字母转化为大写字母。
例如:
?Upper(“student”),其结果为“STUDENT”。
?Upper(“sTUdent”),其结果为“STUDENT”。
(7)字符型转化为数值型函数。其格式如下:
Val(字符表达式)
功能:把字符表达式中的字符转化为数值。
例如:
?Val(“S”),其结果为83。
?Val(“21”)+Val(“12”),其结果为33。
(8)数值型转化为字符型函数。其格式如下:
Str((数值表达式1),(数值表达式2),(数值表达式3))
功能:把数值表达式1中的数值型转化为字符型,数值表达式2的值作为返回字符串的长度,数值表达式3的值作为小数部分的位数。
例如:
?Str(256.12345,6,2),其结果为“256.12”。
?Str(256.256,6,2),其结果为“256.26”。
(9)删除字符串空格函数。其格式如下:
Alltrim (字符表达式)
功能:将字符表达式前后的空格删除。
例如:
?Alltrim(“ a student ”),其结果为“a student”。
?Alltrim(“ 数据库系统 ”),其结果为“数据库系统”。
(10)转化为ASCII码函数。其格式如下:
ASC(字符表达式)
功能:将字符表达式中的第一个字符转化为ASCII码并返回。例如:
?ASC(“Student”),其结果为83。
?ASC(“I am a student.”),其结果为73。
(11)转化为字符函数。其格式如下:
Chr(数值表达式)
功能:将数值表达式转化为字符表达式。
例如:
?Chr(83),其结果为S。
?Chr(73),其结果为I。
(12)确定字符串位置函数。其格式如下:
AT(字符表达式1,字符表达式2,数值表达式)
功能:确定字符表达式1在字符表达式2中第“数值表达式”次出现的位置。
例如:
?AT(“student”,“I am a student.”,1),其结果为8。
?AT(“系统”,“数据库系统”,1),其结果为7。
2.数值函数
常用的数值处理函数如下:
(1)取绝对值函数。其格式如下:Abs(数值表达式)
功能:对数值表达式取绝对值。
例如:
?Abs(+156),其结果为156。
?Abs(-125),其结果为125。
(2)取最大值函数。其格式如下:
Max((数值表达式1),(数值表达式2),(数值表达式3),…)
功能:在数值表达式1,数值表达式2,数值表达式3,…中取最大值。
例如:
?Max(1,2,3),其结果为3。
?Max(“A”,“B”,“C”),其结果为“C”。
(3)取最小值函数。其格式如下:
Min(数值表达式1,数值表达式2,数值表达式3,…)
功能:在数值表达式1,数值表达式2,数值表达式3,…中取最小值。
例如:
?Min(1,2,3),其结果为1。
?Min(“A”,“B”,“C”),其结果为“A”。
(4)取余函数。其格式如下:
Mod((数值表达式1),(数值表达式2))
功能:取数值表达式1除以数值表达式2的余数。
例如:
?Mod(5,4),其结果为1。
?Mod(2,2),其结果为0。
(5)求e的x次方函数。其格式如下:
Exp(数值表达式)
功能:求e的数值表达式值的次方,e的取值为2.72。
例如:
?Exp(2),其结果为7.39。
?Exp(1),其结果为2.72。
(6)求平方根函数。其格式如下:
Sqrt(数值表达式)
功能:对数值表达式求平方根。
例如:
?Sqrt(4),其结果为2.00。
?Sqrt(81),其结果为9.00。
(7)四舍五入函数。其格式如下:
Round((数值表达式1),(数值表达式2))
功能:以数值表达式2的值为小数位数对数值表达式1进行四舍五入操作。
例如:
?Round(123.2586,3),其结果为123.259。
?Round(256.32,1),其结果为256.3。
(8)取整函数。其格式如下:
Int(数值表达式)
功能:对数值表达式进行取整操作。
例如:
?Int(123.65),其结果为123。
?Int(123.657),其结果为123。
(9)随机函数。其格式如下:
Rand(数值表达式)
功能:取随机数。
例如:
?Rand(0),其结果为0.97。
3.日期时间函数
常用的日期时间函数如下:
(1)取当前时间日期函数。其格式如下:
Datetime()
功能:返回当前时间日期函数值。
例如:
?Datetime(),其结果为04/10/2005/ 15:02:15 PM。
(2)取当前时间函数。其格式如下:
Time()
功能:返回当前时间。
例如:
?Time(),其结果为15:02:15 PM。
(3)取当前日期函数。其格式如下:
Date()
功能:返回当前日期值。
例如:
?Date(),其结果为04/10/2005。
(4)取当前秒钟函数。其格式如下:
Sec()
功能:返回当前秒钟值。
(5)取当前分钟函数。其格式如下:
Minute()
功能:返回当前分钟值。
(6)取当前小时函数。其格式如下:(https://www.chuimin.cn)
Hour()
功能:返回当前小时值。
(7)取当前天数函数。其格式如下:
Day()
功能:返回当前天数值。
(8)取当前月份函数。其格式如下:
Month()
功能:返回当前月份值。
(9)取当前年份函数。其格式如下:
Year()
功能:返回当前年份值。
(10)把当前时间日期转化为字符型函数。其格式如下:
Dtoc(日期时间表达式)
功能:把当前数值型日期时间转化为字符型日期时间。
例如:
?Dtoc(2005/04/10),其结果为“04/10/2005”。
(11)把当前字符型日期转化为日期型函数。其格式如下:
Ctod(字符表达式)
功能:把当前字符型日期转化为日期型。
例如:
?Ctod(“04/10/2005”),其结果为04/10/05。
4.逻辑函数
常用的逻辑函数如下:
(1)检测数据类型函数。其格式如下:
Type(字符表达式)
功能:检测字符表达式的数据类型,不同的返回结果表示不同的数据类型。具体数据类型如表3.1所示。
表3.1 返回字母与数据类型表
例如:
?Type(“数据库”),其结果为U。
(2)检测“空”值函数。其格式如下:
Empty(工作区)
功能:检测字符表达式是否为空,如果是,则返回值为真(.T.),否则返回值为假(.F.)。
例如:
?Empty(),其结果为.T.。
(3)检测函数。其格式如下:
Between(表达式1,表达式2,表达式3)
功能:检测表达式1是否在表达式2和表达式3之间,如果在,则返回值为真(.T.),否则返回值为假(.F.)。
例如:
?Between(“系统”,“数据库系统”,“概论”),其结果为.F.。
?Between(“student”,“I am a student.”,“I am a student.”),其结果为.T.。
5.数据库操作函数
常用的数据库操作函数如下:
(1)检测文件头函数。其格式如下:
Bof(工作区)
功能:检测工作区是否为文件头,如果是,则返回值为真(.T.),否则返回值为假(.F.)。
例如:
?Bof(1),其结果为.F.。
(2)检测文件尾函数。其格式如下:
Eof(工作区)
功能:检测工作区是否为文件尾,如果是,则返回值为真(.T.),否则返回值为假(.F.)。
例如:
?Eof(2),其结果为.F.。
(3)检测当前记录号函数。其格式如下:
Recno(工作区)
功能:返回检测文件工作区当前的记录号,返回值为数字。
例如:
?Recno(3),其结果为1。
(4)检测文件记录数函数。其格式如下:
Reccount(工作区)
功能:检测文件工作区的记录数是否与表达式的值相同,如果相同,则返回值为真(.T.),否则返回值为假(.F.)。
例如:
?Reccount(3),其结果为.T.。
6.系统函数
常用的系统函数只有一种,其格式如下:
Sys(字符表达式)
功能:返回机器名和网络机器号。
例如:
?Sys(1),其结果是2453509。
7.其他函数
在Visual FoxPro中,常用的其他函数如下:
(1)显示提示信息函数。其格式如下:
Messagebox(提示信息)
功能:系统运行时,以窗口的形式显示提示信息。
注意:提示信息函数的结果为数字,有多种对话框类型,不同的类型代表不同的含义。对话框的类型及含义如表3.2所示。
(2)自定义函数:在程序设计过程中经常为实现一个特定功能而编写一个程序段,作为一个模块,以便在其他程序中使用该功能时调用该程序,这种完成特定功能的程序段称之为自定义函数。
表3.2 对话框的类型及含义
自定义函数的定义格式如下:
Function <函数名称>
Parameters <参数表>
<语句序列>
Return <表达式>
Endfunc
其中,Function表示函数定义开绐,并给函数命名,说明该函数在调用程序中;Parameters是指函数中使用的变量名表或可以接收的参数,各个参数之间用逗号隔开;<语句序列>是指实现函数功能的命令语句;Return是指函数的返回值,省略时,函数返回值为.T.,Endfunc表示函数定义结束。
例如:定义一个自定义函数。
Function abc &&命令函数名
Parameters M &&定义参数
N=1 &&语句序列
Do While M>=1
N=MN
M=M-1
Enddo
?N
Return N &&返回主程序
Endfunc
3.3.2 调用函数
在系统程序的设计过程中需要实现函数功能时,直接调用函数名即可,其调用格式如下:
函数名<参数表>
例如:调用自定义函数。
Function abc
Parameters M &&定义参数
N=1
Do While M>=1
N=MN
M=M-1
Enddo
?N
Return N
Endfunc
Set talk off
Clear
Abc &&调用函数
?Salary
Set talk on
例如:调用系统函数。
Max(m,n)&&取最大值函数
If m>n
Max=m
Else
Max=n
?Max
Set talk off
Clear
Max &&调用函数?Max
Set talk on
3.3.3 过程和过程设计
过程和函数所实现的功能相同,过程也是一个程序段,可以在任何时间相互调用。
过程设计的格式如下:
Procedure <过程名>
Parameters <形参表>
<命令序列>
Return to master to 上级过程名
Endproc
其中,Procedure表示定义过程开始,并为过程命名;Parameters是指过程中使用的变量名表;<命令序列>是指实现过程功能的命令语句;Return是指返回到执行的程序中;Endproc表示定义过程结束。
在系统程序运行时,可以通过Do来调用过程,其格式如下:
Do 过程名
例如:定义一个过程并调用。
Set talk off
Clear
M=10
Do abc with M &&调用过程
Set talk on
过程设计如下: &&设计过程
Procedure M &&定义参数
N=1
Do While M>0
N=NM
M=M-1&&M 循环一次,值减去1
Enddo
?N
Return&& 返回主程序
Endproc
相关文章
1.交交运算的符号为“∩”,两个关系经过交运算后,相同部分重新组成一个新的关系。表1.5集合关系表关系运算主要有3种,即选择、连接和投影。表1.9职工号连接操作结果3.投影投影是选择两个指定关系中的属性组成一个新关系,投影运算也是单目运算,它是从列的角度进行操作的。......
2025-09-30
第一种网状模型数据库结构被开发、研制出来,它是网状数据库模型的基础和典型代表。而在数据库中,二者是相互独立的。表1.1数据库管理系统与传统文件应用系统特性对照表......
2025-09-30
2.强大的数据功能Visual FoxPro 8.0新增数据主要体现在4个方面。“IDE”选项卡:设置Visual FoxPro 8.0系统窗口的显示形式。......
2025-09-30
由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。人们经过探索提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。工具在很大程度上依靠开发人员的经验来保证数据库模型能生成可行的设计方案和高性能的数据库。大多数的数据库设计方法都需要经历这三个步骤。根据所选择的设计方法按部就班地进行并最终获得一个实用的应用系统。......
2025-09-30
下面介绍的优化策略能提高查询的效率,但它们不一定是最优的策略,实际上“优化”一词并不是很确切,用“改进”或“改善”或许更恰当些。即使这样,使用预处理方法执行连接的时间一般仍大大减少。当查询视图时,定义视图的表达式就是公共子表达式的情况。......
2025-09-30
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2025-09-30
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2025-09-30
例如,一名学生可以用信息“”描述,这样的一行数据称为一条记录。单看这行数据我们很难知道其确切含义,但对其进行如下解释:张三是9912101班的男学生,1981年出生,计算机系应用软件专业,其内容就是有意义的。因此,数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。数据的动态特征是指对数据可以进行符合一定规则的操作。......
2025-09-30
相关推荐