access中括号有多个Inner Join时,要用括号括起来

软件开发的家园,编程爱好者的天地.
【软件开发网】为您服务!
ACCESS基础教程教程(十七)SQL语言妙用
时间: 09:39:00
来源:网络收集
查询SQL视图的切换
  在使用过程中,我们经常会使用到一些查询,但这些查询用各种查询向导和设计器都无法做出来,不知道你还记不记得,在查询那一课中我们讲过SQL查询,用这种查询就可以完成比较复杂的查询工作。当时你还刚刚开始使用ACCESS,用设计视图和向导就可以建立很多有用的查询,这些足够你掌握一段时间了,而且它的功能已经基本上能满足我们的需要。而SQL语言作为一种通用的数据库操作语言,并不是ACCESS用户必须要掌握的,但在实际的工作中有时必须用到这种语言才能完成一些特殊的工作。   单纯的SQL语言所包含的语句并不多,但在使用的过程中需要大量输入各种表、查询和字段的名字。这样当你建立一个涉及大量字段的查询时,就需要输入大量文字,与用查询设计视图建立查询相比,就麻烦多了。所以我在建立查询的时候也都是先在查询设计视图将基本的查询功能都实现了,最后再切换到SQL视图通过编写SQL语句完成一些特殊的查询。下面我们就介绍一些在ACCESS使用中常常会用到的一些SQL语言。
  我们说过在建立查询的时候可以切换到SQL视图去,下面来看看是怎么切换的:
  当你打开一个查询以后,单击“新建方法”列表的时候并没有一个“使用SQL视图创建查询”的选项,
  这也表明ACCESS并不提倡在工作中使用SQL语言,那我们就单击“在设计视图中创建查询”这一项,之后将会在屏幕上出现一个设计视图,
  现在我们要切换到SQL视图,只要将鼠标移动到工具栏最左面的“视图”选项按钮右边的向下按钮上,单击鼠标左键,在弹出的下拉菜单中选中“SQL 设计视图”项就可以将视图切换到SQL状态。
基本的SQL语句  
  在SQL语言中用得最多的就是SELECT语句了。我们就先讲讲SELECT语句吧。    SELECT语句构成了SQL数据库语言的核心,它的语法包括5个主要子句,分别是FORM、WHERE、GROUP BY、HAVING、ORDER BY子句。  SELECT语句的结构是这样的。 SELECT 〈字段列表〉 FROM 〈表列表〉 [ WHERE〈行选择说明〉][GROUP BY 〈分组说明〉][ HAVING 〈组选择说明〉] [ORDER BY 〈排序说明〉];
  实际上,当我们要将表1的字段1和字段3用来建立一个查询的话,只需要书写下面这样一条语句就可以了。 SELECT 表1.字段1,表1.字段3(表的名字、字段名最好和具体的例子结合起来,下同) FROM 表1;  我们可以这样理解这句话,从表1中选择出字段1和字段3,选中的每个字段都用逗号隔开,并且每个字段前面都列的有表或查询的名字,并用“.”联起来。而FROM后面则需要有包含这些字段的所有表的名称,各个名称之间要用逗号联接起来。
  现在我们可以单击“工具”菜单上的“执行”按钮,
  现在我们看到了这个查询的结果,和直接用查询视图设计的查询产生了相同的效果。其实ACCESS中所有的数据库操作都是由SQL语言构成的,微软公司只是在其上增加了更加方便的操作向导和可视化设计罢了。  当我们直接用设计视图建立一个同样的查询以后,将视图切换到SQL视图,你会惊奇的发现,在这个视图中的SQL编辑器中有同样的语句。看来是ACCESS自动生成的语句。 原来ACCESS也是先生成SQL语句,然后用这些语句再去操作数据库。   现在我们再讲讲SELECT语句中后几种子句的用途吧。你发现这些子句都被方括号适起来了,这是表明这些子句在SELECT语句中都是可选项目,其中WHERE 子句是一个行选择说明子句,用这个语句可以对我们所选的行,就是表中的记录进行限制,当WHERE 后面的行选择说明为真的时候才将这些行作为查询的行,而且在WHERE中还可以有多种约束条件,这些条件可以通过“AND”这样的逻辑运算符联接起来。SELECT 表1.字段1,表1.字段3FROM 表1 WHERE 表1.字段2 = 2;
  现在我们再单击工具栏中的“执行”按钮,这个操作就不能在查询设计视图中做出来。让我们将视图切换到设计视图,你看,这个功能在设计视图中也能实现。
软件开发网
  原来只需要将字段“单价”也作为一个字段放入查询表格中,并在准则中将这个字段的值设置为“&30”。  下面让我们来看看GROUP BY 子句,这两个词在ACCESS中你一定见过,在用设计视图建立总计查询的时候,在表格中会出现一个总计选项。这时在这个选项对应的表格内就出现GROUP BY这两个词。  现在我们就来看看这个子句有什么用处。SELECT 表1.字段2,SUM( 表1.字段3) FROM 表1 GROUP BY 字段2 ; 软件开发网
  单击工具栏上的“执行”按钮就会发现这个SQL语句将字段2中的所有记录分成了几组,并将这几组的总消耗都统计了出来,其中SUM函数是用来产生合计的函数。  现在再讲讲HAVING子句,当你在使用GROUP BY 子句对表或查询中的记录进行分组的时候,有时我们会要求对所选的记录进行限制,只允许满足条件的行进行分组和各种统计计算。于是我们写到 SELECT 表1.字段2,SUM( 表1.字段3) FROM 表1 GROUP BY 字段2 HAVING 表1.字段2= 2; 软件开发网
  单击工具栏上的“执行”按钮,我们发现这两个查询产生的结果是一样的。
  但在标准的SQL语言中,要和GROUP BY 共同使用的条件限制语句只有 HAVING 子句,所以要记住在使用GROUP BY 子句时最好不要用WHERE 子句来对条件进行限制。   在这个SELECT 语句中还有一个ORDER BY 语句,这个语句是用来将各种记录进行排序。SELECT 表1.字段2,SUM( 表1.字段3) FROM 表1 ORDER BY 表1.字段3;   现在执行这个查询,我们发现所有记录的顺序是按照字段3来进行的。
  通过这个例子你现在会使用这个子句了吧?  SQL语句的单一功能非常简单,掌握起来也很容易。但要将这些语句组合起来建立一个较大的查询,还需要在输入各种表、查询和它们中的字段名时要非常仔细。
软件开发网
使用SQL语句联接表
  在SQL中,很多威力都来自于将几个表或查询中的信息联接起来,并将结果显示为单个逻辑记录集的能力。在这种联接中包括INNER、LEFT、RIGHT这三种JOIN操作。  首先我们来讲讲INNER JOIN 的用法:INNER JOIN 语句可以用来组合两个表中的记录,只要在公共字段之中有相符的值即可,在语法上,INNER JOIN 是这样定义的。
  举个例子:我们现在要将“图书资料表”和“出版社资料表”联接起来,然后列出出版社所出的图书。让我们先看看这两个表,
  然后在SQL设计视图中输入以下内容
  现在我们执行这个SQL语句, 软件开发网
  发现现在的查询结果将所有出版社和图书都列了出来。  这个查询好像也可以用下面的语句来实现。
  将两个查询都切换到数据表视图后我们会发现两个查询的查询结果虽然一样,但在使用INNER JOIN操作的查询中可以添加新的数据。就像在表中添加数据一样。而没有使用INNER JOIN 操作的查询就不能添加新数据,相比之下使用INNER JOIN操作的查询更像将两个具有相关内容的表联接在一起新生成的表。   知道了它的用处,我们来看看LEFT JOIN 的结构: FROM [表名1] LEFT JOIN [表名2] ON [表名1.字段A] 〈关系运算符〉[表名2.字段B]  其实LEFT JOIN 的功能就是将LEFT左边的表名1中的所有记录全部保留,而将右边的表名2中的字段B与表名1.字段A相对应的记录显示出来。而RIGHT JOIN 和LEFT JOIN 相反。  所以刚才的那个例子还可以写成:
  单击工具栏上的“执行”按钮,我们看到这时显示的数据表和刚才显示的用LEFT JOIN 的数据表一样。现在看出来了吧,原来它们的功能是可以互换的。   如果想将几个表联接起来,在JOIN操作中我们可以进行嵌套操作,有三个表:表1、表2、表3,现在将三个表联接起来: FROM (表1 INNER JOIN 表2 ON 表1.序号=表2.序号)INNER JOIN 表3 ON 表1.序号=表3.序号   这样这三个表就联接起来了。
定义新的字段名
     在有的时候,将要建立的查询中的字段名意义有了新的变化,不能再使用,或者有的新字段是由表达式构成的,这样的字段都需要在查询中为它们设定新的名字。在SQL中可以用“AS”操作来实现定义新的字段名。
  例如在新建的查询中将“表1”中的“字段1”的内容对应到新字段“新字段1”中: SELECT 表1.字段1 AS 新字段1 FROM 表1; 现在再看看这个查询的数据表,可以看到在表中的字段名已经换成了“新字段1”了。
软件开发网
看完这篇文章有何感觉
& 下一篇:
赞助商链接
24小时热门信息
本栏随机推荐
网站模板归微软中国所有,本站内容来源网络收集,如有侵权,请.> 问题详情
Access中查询日期型值需要用______括起来。A.括号B.半角的井号()C.双引号D.单引号
悬赏:0&答案豆
提问人:匿名网友
发布时间:
Access中查询日期型值需要用______括起来。A.括号B.半角的井号(#)C.双引号D.单引号请帮忙给出正确答案和分析,谢谢!
网友回答(共0条)
我有更好的答案
您可能感兴趣的试题
1从一个或多个表中将组记录添加到个或多个表的尾部,应使用A.生成表查询B.删除查询C.更新查询D.追加查询2在显示具有______关系的表或查询中的数据时,子窗体特别有效。A.一对B.多对多C.一对多D.复杂
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……access题库6-考试酷(examcoo)access题库6本页面是考试酷网站的试卷存档,考试酷网站是一个免费的电子作业与在线考试系统平台,登录网站请回到& & &选择题1.使用Access按用户的应用需求设计的结构合理、使用方便、高效的数据库和配套的应用程序系统,属于一种(& & )。A.数据库B.数据库管理系统C.数据库应用系统D.数据模型2.二维表由行和列组成,每一行表示关系的一个(& & )。A.属性B.字C.集合D.元组3.关系数据库是以(& & )为基本结构而形成的数据集合。A.数据表B.关系模型C.数据模型D.关系代数4.关系数据库中的数据表(& & )。A.完全独立,相互没有关系B.相互联系,不能单独存在C.既相对独立,又相互联系D.以数据表名来表现其相互间的联系5.以下说法中,不正确的是(& & )。A.数据库中存放的数据不仅仅是数值型数据B.数据库管理系统的功能不仅仅是建立数据库C.目前在数据库产品中关系模型的数据库系统占了主导地位D.关系模型中数据的物理布局和存取路径向用户公开6.以下叙述中,正确的是(& & )。A.Access只能使用菜单或对话框创建数据库应用系统B.Access不具备程序设计能力C.Access只具备了模块化程序设计能力D.Access具有面向对象的程序设计能力,并能创建复杂的数据库应用系统7.下列不属于需求分析阶段工作的是(& & )。A.分析用户活动B.建立E-R图C.建立数据字典D.建立数据流图8.数据流图是在数据库(& & )阶段完成的。A.逻辑设计B.物理设计C.需求分析D.概念设计9.在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的(& & )阶段。A.需求分析B.概念结构设计C.逻辑设计D.物理设计10.E-R图是数据库设计的工具之一,它适用于建立数据库的(& & )。A.概念模型B.逻辑模型C.结构模型D.物理模型11.在关系数据库设计中,关系数据模型是(& & )的任务。A.需求分析阶段B.概念设计阶段C.逻辑结构设计阶段D.物理设计阶段12.数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是(& & )。A.建立数据库B.扩充功能C.加载数据D.系统调试13.数据流图(DFD)是用于描述结构化方法中(&&& )阶段的工具。A.可行性分析B.详细设计C.需求分析D.程序编码14.若两个实体之间的联系是1:m,则实现1:m联系的方法是(& & )。A.在"m"端实体转换的关系中加入"1"端实体转换关系的码B.将"m"端实体转换关系的码加入到"1"端的关系中C.在两个实体转换的关系中,分别加入另一个关系的码D.将两个实体转换成一个关系15.在概念模型中一个实体集合对应于关系模型中的一个(& & )。A.元组(记录)B.字段C.关系D.属性16.一个学生可以同时借阅多本书,一本书只能由一个学生借阅,学生和图书之间为(& & )联系。A.一对一B.一对多C.多对多D.多对一17.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,职员与部门的联系类型是(& & )。A.多对多B.一对一C.多对一D.一对多18.下列叙述中正确的是(& & )。A.数据处理是将信息转化为数据的过程B.数据库设计是指设计数据库管理系统C.如果一个关系中的属性或属性集并非该关系的主码,但它是另一个关系的主码,则称其为本关系的外码.D.关系中的每列称为元组,一个元组就是一个字段19.下列模式中,(& & )是用户模式。A.内模式B.外模式C.概念模式D.逻辑模式20.用树形结构来表示实体之间联系的模型称为(& & )。A.关系模型B.层次模型C.网状模型D.网络模型21.在下述关于数据库系统的叙述中,正确的是 (& & )。A.数据库中只存在数据项之间的联系B.数据库中的数据项之间和记录之间都存在联系C.数据库的数据项之间无联系,记录之间存在联系D.数据库中的数据项之间和记录之间都不存在联系22.在数据库中能够惟一地标识一个记录的字段或字段组合称为(& & )。A.记录B.字段C.域D.关键字23.索引属于(& & )。A.模式B.内模式C.外模式D.概念模式24.在关系数据库中,用来表示实体之间联系的是(& & )。A.树结构B.网结构C.线性表D.二维表25.将 E-R 图转换到关系模式时,实体与联系都可以表示成(& & )。A.属性B.关系C.键D.域26.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的 (& & )的过程,包括确定数据库在物理设备上的存储结构和存取方法。A.逻辑结构B.物理结构C.概念结构D.层次结构27.在关系数据库中主码标识元组的作用是通过(& & )实现。A.实体完整性原则B.参照完整性原则C.用户自定义完整性D.域完整性28.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是(A)。A.DBS包括DB和DBMSB.DBMS包括DB和DBSC.DB包括DBS和DBMSD.DBS就是DB,也就是DBMS29.在数据库的三级模式结构中,描述数据库中全局逻辑结构和特征的是(& & )。A.外模式B.内模式C.存储模式D.模式30.以下不是数据库管理系统的子语言的是(& & )。A.数据定义语言B.C语言C.数据控制语言D.数据操纵语言31.在关系运算中,投影运算的含义是(& & )。A.在基本表中选择满足条件的记录组成一个新的关系B.在基本表中选择需要的字段(属性)组成一个新的关系C.在基本表中选择满足条件的记录和属性组成一个新的关系D.上述说法均是正确的32.对R和S两个关系进行集合运算,结果包含R和S中都存在的元组,这种是集合运算是(& & )。A.交运算B.差运算C.并运算D.笛卡儿积运算33.关系数据库系统能够实现的三种基本关系运算是(& & )。A.索引,排序,查询B.建库,输入,输出C.显示,统计,复制D.选择,投影,联接34.关系R和关系S的交运算是(& & )。A.由关系R和关系S的所有元组合并,再删去重复的元组的集合B.由属于R而不属于S的所有元组组成的集合C.由既属于R又属于S的元组组成的集合D.由R和S的元组连接组成的集合35.专门的关系运算中,选择运算是(& & )。A.在基本表中选择满足条件的记录组成一个新的关系B.在基本表中选择字段组成一个新的关系C.在基本表中选择满足条件的记录和属性组成一个新的关系D.上述说法都是正确的36.设关系R和S的元组个数分别为10和30,关系T是R与S的笛卡尔积,则T的元组个数是(& & )。A.300B.40C.100D.90037.要从学生关系中查询学生的姓名和年龄所进行的查询操作属于(& & )。A.选择B.投影C.联结D.自然联结38.设有如下三个关系表R(A)、S(B,C)、T(A,B,C),下列操作正确的是(&&& )。  A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S39.设关系R(A,B,C)、S(B,E)和T分别如图所示,则有(& & )  A.T = R 连接 S (C&E)B.T = R 连接 S (R.B = S.B)C.R 连接 SD.R × S40.在关系代数中,从两个关系的笛卡尔积中,选取属性满足一定条件的元组的操作,称为(& & )。A.条件连接B.投影C.选择D.自然连接41.下列操作属于传统集合运算的是(& & )。A.加、减、乘、除B.并、差、交C.选择、投影、连接D.增加、删除、合并42.关系数据库系统能够实现的三种基本关系运算是(& & )。A.索引、排序、查询B.建库、输入、输出C.选择、投影、连接D.显示、统计、复制43.将两个关系拼接成一个新的关系,生成的新关系中包含满足条件的元组,这种操作称为(& & )。A.选择B.投影C.连接D.并44.SQL的含义是(& & )。A.结构化查询语言B.数据定义语言C.数据库查询语言D.数据库操纵与控制语言45.若要查询成绩为60-80分之间(包括60分,不包括80分)的学生的信息,成绩字段的查询准则应设置为(& & )。A.&60 or &80B.&=60 And &80C.&60 and &80D.IN(60,80)46.在SQL查询中使用WHERE子句指出的是(& & )。A.查询目标B.查询结果C.查询视图D.查询条件47.用SQL语言描述"在教师表中查找男教师的全部信息",以下描述正确的是(& & )。A.SELECT FROM 教师表 IF(性别="男")B.SELECT 性别 FROM 教师表 IF(性别="男")C.SELECT * FROM 教师表 WHERE (性别="男")D.SELECT * FROM 性别 WHERE (性别="男")48.有SQL语句:SELECT * FROM 教师 WHERE NOT(工资&3000 OR 工资&2000).与该语句等价的SQL语句是(& & )。A.SELECT * FROM 教师 WHERE 工资 BETWEEN 2000 AND 3000B.SELECT * FROM 教师 WHERE 工资&2000 AND 工资&3000C.SELECT * FROM 教师 WHERE 工资&2000 OR 工资&3000D.SELECT * FROM 教师 WHERE 工资&=2000 AND 工资&=300049.为"教师"表的职工号字段添加有效性规则:职工号的最左边三位字符是110,正确的SQL语句是(& & )。A.CHANGE TABLE 教师 ALTER 职工号 SET CHECK LEFT(职工号,3)="110"B.ALTER TABLE 教师 ALTER 职工号 SET CHECK LEFT(职工号,3)="110"C.ALTER TABLE 教师 ALTER 职工号 CHECK LEFT(职工号,3)="110"D.CHANGE TABLE 教师 ALTE R职工号 SET CHECK OCCURS(职工号,3)="110"50.有SQL语句:SELECT 学院.系名,COUNT(*)AS 教师人数 FROM教师,学院 WHERE 教师.系号=学院.系号 GROUP BY 学院.系名, 与此语句等价的SQL语句是(& & )。A.SELECT 学院.系名,COUNT(*)AS教师人数 FROM 教师 INNER JOIN 学院 教师.系号= 学院.系号 GROUP BY 学院.系名B.SELECT 学院.系名,COUNT(*) AS 教师人数 FROM 教师 INNER JOIN 学院 ON 系号 GROUP BY 学院.系名C.SELECT 学院.系名,COUNT(*) AS教师人数 FROM 教师 INNER JOIN 学院 ON 教师.系号=学院.系号 GROUP BY 学院.系名D.SELECT 学院.系名,COUNT(*)AS 教师人数 FROM 教师 INNERJOIN学院 ON 教师.系号 = 学院.系号============ 本试卷共计50题,此处为结束标志。考试酷examcoo ============本页面是考试酷网站的试卷存档,考试酷网站是一个免费的电子作业与在线考试系统平台,登录网站请回到& & &存档时间: 11:56:47试卷编号:122013录入者:张晓雷(西安交大)扩展SQL语法说明书_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
扩展SQL语法说明书
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
你可能喜欢

我要回帖

更多关于 oracle inner join 的文章

 

随机推荐