5.1 关系运算
关系运算又可分为两类。一类是传统的关系运算,包括笛卡儿积;另一类是专门的关系运算,包括选择投影连接。(选择,针对一个关系进行的行的分解;投影,针对一个关系进行列的分解;连接,将两个关系的属性名通过笛卡儿积拼接成一个更宽的关系)
并(Union)运算:设R和S是n元关系,且两者对应属性的数据类型相同。定义R和S的并运算为
  R S = { t | t ∈ R t ∈ S }    代表或者的含义
即:或属于关系R、或属于关系S的记录的集合。
差(Difference)运算:设R和S是n元关系,且两者对应属性的数据类型相同。定义R和S的差运算为
  R S = { t | t ∈ R t S }    代表并且的含义
即:属于关系R、但不属于关系S的记录的集合。
交(Intersection)运算:设R和S是n元关系,且两者对应属性的数据类型相同。定义R和S的交运算为
  R S = { t | t ∈ R t ∈ S } = R ( R S )
即:既属于关系R、又属于关系S的记录的集合。
并、差、交运算的前提:关系R和关系S有相同的属性结构。
笛卡尔积(Cartesian Product)运算:设R是一个n元关系,S是一个m元关系,定义R和S的笛卡尔积运算为RS={(r1,r2,┈,rn,s1,s2,┈,sm)|(r1,r2,┈,rn)∈R (s1,s2,┈,sm)∈S
选择(Selection):设R是一个n元关系,F是一个形如riθc的公式,其中θ {=,≠,>,<,≤,≥},riθc表示属性值ri指定值c的比较关系(实际上隐含着一个条件,称θ为关系运算符)。定义R的选择运算为
  σF(R) = { (r1,r2,,ri,,rn) | (r1,r2,,ri,,rn) R riθc }
即:在关系R中选择某一属性值满足一定条件(与指定值的比较关系成立)的记录。
选择运算是对单个关系进行水平分解,是从的角度进行的运算。
选择运算中的条件可以是多个简单条件的逻辑组合
投影(Projection):设R是一个n元关系,定义R的投影运算为
Πi1,i2,,im(R) = { (ri1,ri2,,rim) | (r1,r2,,ri1,ri2,,rim,,rn) R }
其中i1,i2,,im表示所选取属性列的编号,且m < n。
即:从关系R中选取若干属性列组成新的关系。
投影运算是对单个关系进行垂直分解,是从的角度进行的运算。
连接(Join)运算:设R是n元关系,S是m元关系,A是R的属性,B是S的属性,A和B的值域具有相同的数据类型,θ {=,≠,>,<,≤,≥}。定义R和S的连接(Jion)运算为
  RAθB S = { rs | rR sS (r[A] θ s[B]) }
其中,r[A]表示元组r在属性A上的值,s[B]表示元组s在属性B上的值。r=(r1,r2, r[A], , r
n),s=(s1,s2,, s[B], sm),rs形如(r1,r2, r[A], , rn, s1,s2,, s[B], sm)。
并称A和B是连接属性。
性质:不一定具有相同的名称,但具有相同的数据类型、相同的业务含义和相同的取值范围
需要特别注意的是等值连接一对多表间关系有着密切的联系:一对多表间关系为等值连接运算提供了基础,通过一对多表间关系中的关联字段可以进行等值连接运算。实际上,等值连接运算中的连接属性就是一对多表间关系中的关联字段
若在等值连接的结果关系中去掉重复的属性,或者说,连接属性在结果关系中只出现一次,则此连接称为自然连接
中小结
关系运算是对关系进行的闭合运算,因此,运算对象是关系,并且运算的结果仍为关系。
并、差、交、笛卡儿积为二元关系运算,即是对两个关系进行的运算,并且并、差、交运算要求两个关系的对应属性有相同的含义和数据类型。
选择、投影为一元关系运算,即对单个关系进行的运算;选择运算是从行的角度进行的运算,投影运算是从列的角度进行的运算。
连接为二元关系运算,其中的两个关系是通过连接属性完成运算的,且连接属性必须有相同的数据类型并表示相同的含义。在关系数据库中,等值连接运算是最常见的连接运算。
在RDBMS中,数据查询功能就是通过选择、投影和等值连接运算完成的。换句话说,从数据库中的若干表提取所需要的数据,都要借助于选择、投影和等值连接运算才能实现。在Access数据库中,“查询”对象中主要体现和包含了关系的选择、投影和等值连接运算。
5.2 查询的设计与创建
在Access数据库中,大部分查询可以使用数据查询语言(Data Query Language,DQL)
中的SELECT命令来实现数据查询功能。
SELECT命令的基本语法格式为
    SELECT 字段名1[,字段名2…]
    FROM 表名
    [WHERE 条件表达式]
    [GROUP BY 字段列表]
    [ODRDE BY 字段名 ASC|DESC]
选择运算σ Sex=“女”(Student) = { t | t Student t.Sex=“女”}
SELECT命令:  SELECT StudentID, Name, Sex, Birthday, Score FROM Student WHERE Sex=“女”
投影运算ΠStudentID, Name, Sex (Student)
SELECT命令:  SELECT StudentID, Name, Sex FROM Student
查询对象有五种视图
1.设计视图:用于创建新的查询对象,或者修改已有的查询对象;
2.数据表视图:可以以二维表的形式显示查询结果;
3.SQL视图:用于查看查询对象所对应的SELECT命令,该命令属于SQL语句;
4.数据透视表视图:以表格形式对查询结果进行进一步的多维分析;
5.数据透视图视图:以图形方式显示、对比查询结果。
创建查询有两种方法:
1.在设计视图中创建查询;
2.使用向导创建查询。
在设计视图中创建查询条件的常见办法有:
1.检索字段值为指定常量。例如,如果只查询“产品名称”为“鸭肉”的产品记录,只需要在“产品名称”字段下方对应的“条件”单元格中输入“鸭肉”即可。
2.检索字段值介于指定值之间的记录,即通过使用 And 运算符或比较运算符(=、<、>、<>、<= 和 >=)来创建条件
表达式                                  含义
>234    大于234的数
<>10    不等于10的数
Between 1 And 10    1到10的数值(包括1和10)
Between #1996-1-1# And #1996-12-31#  日期由1996-1-1到1996-12-31
3.使用通配符Like运算符检索部分或完全匹配的内容。所谓通配符(Wildcard Character),就是可用于替代一个或多个字符的特殊键盘字符。常见的通配符如下表所示。
4.检索指定值范围以外的记录。例如,可以在“客户ID”字段对应的“条件”单元格中输入 Not Like “A*”,以查“客户ID”不是以字母A开头的客户记录。
5.用In运算符检索包括值列表中一个值的记录。例如,在“供应商”表中查北京、上海或沈阳等城市的供应商记录,可以在“城市”字段对应的“条件”单元格中输入下列表达式:In ("北京","上海","沈阳")。
6.构造复合的条件。当需要检索必须同时满足多个条件的数据时,可以使用And逻辑运算符将这些条件连接起来;当需要检索只需符合多个条件之一的数据时,则可以使用Or逻辑运算符将这些条件连接起来。
5.3 选择查询
在Access数据库中,根据对数据来源的操作方式以及对查询结果组织形式的不同,可以将查询分为选择查询交叉表查询操作查询参数查询trim函数的作用是删除文本的什么空格SQL查询五大类。
根据所处理数据的类型不同,可以将Access内置函数划分为算术函数文本函数日期/时间函数等。每种函数只能处理特定类型的数据。
函数类型
函数形式
用法说明
算术函数
Abs(number_exp)
返回数值表达式number_exp值的绝对值。
Int(number_exp)
返回将数值表达式number_exp值向下取整到最接近的整数,即不大于数值表达式值的最大整数。
Sqr(number_exp)
返回数值表达式number_exp值的平方根。
Sgn(number_exp)
返回数值表达式number_exp值的符号值。即当数值表达式的值大于0时,返回值为1;当数值表达式的值等于0时,返回值为0;当数值表达式的值小于0时,返回值为-1。
文本
函数
Left(text,num_chars)
返回文本串text中的第一个或前几个字符。例如,Left("database",4)的返回值为"data"。
Right(text,num_chars)
返回文本串text中最后一个或多个字符。例如,Right("数据库管理系统",2)的返回值为"系统"。注意:一个汉字相当于一个字符。
Mid(text,num_chars_1,num_chars_2)
返回文本串text中从第num_chars_1开始的连续的num_chars_2个字符。例如,Mid("Database Management System",10,10)的返回值为"Management"。注意:一个空格也算一个字符。
Trim(text)
除了中间的空格外,清除文本串两端的所有空格。例如,Trim("  RDBMS is useful!      ")的返回值为"RDBMS is useful!"。
日期/
时间
函数
Day(date)
返回日期型数据date的号数,表示给定日期date是一个月当中的哪一天。
Month(date)
返回日期型数据date的月数,表示给定日期date是一年当中的哪个月。
Year(date)
返回日期型数据date的年数,表示给定日期date是哪一年。
DatePart(interval,date)
返回日期型数据date的对应数值。参数interval是要返回的日期部分的缩写,有效的缩写示例为:"yyyy"表示四位数字格式的年份,"q"表示季度,"m"表示月份。
例如,DatePart("yyyy",#2008-8-8#)返回2008(相当于Year(#2008-8-8#)),DatePart("q",#2008-8-8#)返回3,DatePart("m",#2008-8-8#)返回8(相当于Month(#2008-8-8#))。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。