第7章 结构化查询语言 SQL_第1页
第7章 结构化查询语言 SQL_第2页
第7章 结构化查询语言 SQL_第3页
第7章 结构化查询语言 SQL_第4页
第7章 结构化查询语言 SQL_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章结构化查询语言SQL

内容提要:7.1SQL概述

7.2SQL数据查询

7.3SQL数据定义功能7.4SQL的数据更新功能7.5用查询设计器建立查询

7.1.1SQL语言的主要功能7.1

SQL概述

1.数据定义(DataDefinition)

数据定义语言由CREATE(创建)、ALTER(修改)、DROP(删除)三个命令组成,可以完成数据库对象的创建、修改和删除。

2.数据查询(DataQuery) 数据查询只有一条命令,即SELECT,它是一个SELECT命令集合,具有丰富的选项,并且可以嵌套使用。数据查询是SQL语言中使用最频繁的功能,本章将重点介绍这条命令。3.数据操纵(DataManipulation)

数据操纵语言有INSERT(插入)、DELETE(删除)、UPDATE(更新)等命令,实现对数据的操作。

4.数据控制(DataControl)

用于控制用户对数据库的访问权限,由GRANT(授权)、REVOKE(回收)命令组成。VisualFoxPro没有权限管理,因此也就没有相关的功能。缺乏必要的保护,谁都可以浏览和修改,但另一方面,使用起来十分方便。7.1.2SQL语言的主要特点1.SQL是非过程化语言2.SQL是综合通用的语言3.SQL是简洁易用的结构化语言4.面向集合的操作方式5.两种使用方式7.2

SQL数据查询

数据定义语言由CREATE(创建)、ALTER(修改)、DROP(删除)三个命令组成,可以完成数据库对象的创建、修改和删除。数据查询是数据库最重要、使用最频繁的操作。SQL的数据查询只有一条SELECT语句,但是该语句却是用途最广泛的一条语句,具有灵活的使用方法和丰富的功能。

SELECT命令由若干个子句构成,其强大的功能正是通过丰富的子句提供的,要掌握SELECT命令,就必须了解和掌握它的各个子句的功能和用法。最基本的SELECT命令格式为:

SELECT<输出列列表> FROM<数据源列表>常用子句有: 条件子句:WHERE……

排序子句ORDERBY……

分组子句GROUPBY……

输出去向子句TO/INTO……7.2.1无条件的简单查询

一般地,将只查找一个表就可以得到答案的查询称为简单查询。按是否指定记录筛选条件,简单查询又可以分为无条件查询和条件查询两种。本节介绍无条件的简单查询。1.无投影的无条件简单查询

对于无条件的简单查询,当不进行字段投影操作时,其基本格式如下:【命令】SELECT*FROM<表>【功能】从一个基本表或视图中选取所有字段的所有记录。【说明】“*”号是通配符,代表所有的字段。2.投影查询

对指定基本表的字段进行投影操作,查询指定字段的数据。格式如下:【命令】SELECT[<别名>.]<列表达式>[,[<别名.>]<列表达式>…]; FROM<表名>【功能】实现简单投影查询。从一个基本表或视图中选取指定列的元组。【说明】[<别名>.]<列表达式>:SELECT命令查询的列数据。<表名>列出从中检索数据的表3.输出结果的排序

若要指定查询的结果中记录按照一个或多个列的值排序,应使用ORDERBY子句

【命令】SELECT<输出列列表>; FROM<表名>; ORDERBY<列名>[ASC/DESC][,<列名; >[ASC/DESC]…]] 【功能】简单投影查询。结果按ORDERBY子句指定 的列排序。

【说明】(1)<列名>[ASC/DESC],按指定列名排序,选项ASC为升序(这是默认值,可以不写),选项DESC为降序。(2)当排序依据指定多个列时,首先按第一列排序,第一列的值相同时,再按第二列的值排序,若第一、第二列的值都相同时,再按第三列排序,……,以此类推。4.筛选前若干条记录

当SELECT命令中使用了排序子句ORDERBY以后,可以用关键字TOP<表达式>[PERCENT]指定显示结果集中前若干记录。

【命令】SELECT[TOP<表达式>[PERCENT]]; <输出列列表>FROM<表名>; ORDERBY<排序子句> 【功能】指定在查询结果中,只选取前面指定个数或指定百分比的记录数。

【说明】(1)必须有ORDERBY子句。(2)不带[PERCENT]关键字,显示前<表达式>条记录,带[PERCENT]关键字,显示前<表达式>%的记录。5.设置显示列标题

查询结果列可以是字段,可以是表达式,可以指定各列的显示标题。

【命令】SELECT<列表达式>[AS<标题>]; [,<列表达式>[AS<标题>],…]; FROM<表名> 【功能】重新指定在查询结果中各列的显示标题。

【说明】AS<标题>指定结果集输出时的列标题,可以与字段名不同,当<列表达式>是一个表达式或函数时,可以用AS子句给该列起一个有意义的名字。6.取消重复记录

当查询结果中存在大量重复记录时,为了得到正确的结果,应使用DISTINCT关键字,消除重复记录。

【命令】SELECTDISTINCT<输出列列表>; FROM<表名> 【功能】去除结果列中完全相同的记录。

【例6】从教师授课表中提取开设的课程的课程号。

SELECTDISTINCT教师授课.课程号; FROM教师授课7.2.2条件查询

对条件查询,SELECT命令可以分解为三个部分:查找什么数据,从哪里查找。应满足什么条件。其基本格式如下:

【命令】SELECT<输出列列表>; FROM<表>; WHERE<条件表达式>[AND|OR; <条件表达式>……] 【功能】实现简单查询。从一个基本表或视图中选取满足条件的指定列的记录。

【说明】条件表达式的构成可以是:关系表达式、逻辑表达式;在条件表达式中,还可以使用基于集合的谓词IN、BETWEEN……AND、ANY、ALL、EXISTS、LIKE等进行复杂的条件筛选。 下面分别进行详细介绍。 1.单条件-关系表达式

条件表达式可以使用的比较运算符是:

>(大于)、>=(大于等于)、=(等于)、==(精确等于)、<>、#、!=(不等于)、<(小于)、<=(小于等于)

【例7】查询84年1月1日以后出生的学生的基本情况: SELECT学生注册.学号,学生注册.姓名,;

学生注册.性别,学生注册.出生年月; FROM学生注册; WHERE学生注册.出生年月>={^1984-01-01}2.复合条件

当筛选条件或者是对单个条件求反,或者是多个条件的组合时,应使用逻辑表达式。 可以使用的逻辑运算符是:

AND(且)OR(或)NOT、!(非)

3.判断范围:BETWEEN…AND

【格式】SELECT<输出列子句>; FROM<表>; WHERE<列>BETWEEN<范围初值>; AND<范围终值> 【功能】指定列的值落在<范围初值>与<范围终值>之间的那些记录进入结果集。 此处的BETWEEN……AND语句,等价于如下逻辑表达式: 列值>=<范围初值>AND列值<=<范围终值>4.集合判断:IN、ANY,ALL,EXISTS

其中,ANY,ALL,EXISTS用于嵌套查询中判断子查询的结果集,具体格式和用法将在嵌套查询一节讲述。 使用IN的WHERE子句的格式如下:

【格式】SELECT<输出列子句>; FROM<表>; WHERE<列>IN(<值1>,<值2>,……) 【功能】指定列的值落在指定集合(<值1>,<值2>,……)中的那些记录进入结果集。5.判断匹配:LIKE——模糊查询

LIKE关键字用于查询与指定值相匹配的字符型记录,查询中可以使用通配符进行部分匹配查询,因此,LIKE往往用于模糊查询。

【格式】SELECT<输出列列表>; FROM<表>; WHERE<字符型列>LIKE<字符串常量> 【功能】指定字符型列的值与<字符串常量>匹配的那些记录进入结果集

【说明】字符串常量中可以使用两种通配符:

%:表示任意知长度的字符串,类似于DOS命令中的“*”号;

_:表示任意一个字符,类似于DOS命令中的“?”号,但又有所不同。DOS命令中的“?”严格地只匹配一个西文字符,必须用两个问号:“??”来表示一个中文汉字,而在此处,“_”可表示任意一个西文字符,当用于表示中文汉字时,情况因具体系统而异。在有的DBMS系统中,表示一个汉字需要两个下划线,而另一些系统则只需一个下划线。

VisualFoxPro6.0中,表示一个汉字只用了一个下划线。7.2.3计算查询

SQL语言提供了若干用于统计汇总及计算的函数,这些函数用在SELECT语句中,对查询结果进行各种数值计算,增强了检索的功能。主要函数如下:SQL数值函数及其功能函数名称功能AVG按列计算字段值的平均值SUM按列计算字段值的总和COUNT按列统计记录个数MAX求一列中的最大值MIN求一列中的最小值7.2.4分组与统计查询

在SELECT命令中,GROUPBY子句可以实现分组功能,即按指定列的值进行分组,列值相等的记录为一组,同时,GROUPBY子句可以与任何数值计算函数(求和、求平均、统计等)一起使用,从而实现远比TOTALON命令强大的功能。

【格式】SELECT<输出列列表>; FROM<表>; GROUPBY<列名>[,<列名>…]; [HAVING<筛选条件>]

【功能】GROUPBY<列名>[,<列名>…]把查询结果中的记录按一个或多个列的值分组;[HAVING<筛选条件>]用于指定对各个分组再次筛选,并将满足条件的分组送入结果集。

【说明】HAVING必须与GROUPBY一起使用。1.分组统计

【例】统计各位教师的教师号及其任课的门数。

SELECT教师授课.教师号,COUNT(*)AS任课门数; FROM教师授课; GROUPBY教师授课.教师号 说明:GROUPBY子句按教师号的值分组,所有具有相同教师号的元组为一组(对应一位教师),对每一组(每位教师)使用函数COUNT(*)进行计算,此时的COUNT(*)函数分别对每一组分别进行,从而统计出各位教师任课的门数。

【例16】计算每门课程的平均分。

SELECT成绩.课程号,AVG(成绩.成绩)AS平均分; FROM成绩; GROUPBY成绩.课程号 说明:本例中,GROUPBY子句按课程号的值分组,所有具有相同课程号的元组为一组(对应每一门课),对每一组(每门课)使用函数AVG()函数进行计算,此时的AVG()函数同样只对每一组分别进行,从而计算出每门课的平均成绩。2.分组筛选

若在分组后还要按照一定的条件对分组进行筛选,只把满足条件的分组送入结果集,则需使用HAVING子句。3.WHERE子句与HAVING子句的区别

当在一个SQL查询中同时使用WHERE子句,GROUPBY子句和HAVING子句时,其顺序是WHERE,GROUPBY,HAVING。

WHERE与HAVING子句的根本区别在于作用对象不同。

WHERE作用对象:对基本表或视图中记录进行筛选;

HAVING作用对象:GROUPBY子句指定的分组,在分组中筛选。HAVING子句必须在GROUPBY子句之后。

7.2.5连接查询

当一个查询同时涉及多个表,也就是需要从多个表中查询相关数据时,需要使用连接查询,连接接查询是关系数据库中最主要的查询。 连接查询实际上是通过各个表之间共同属性列的连接,将多个相关表连接起来,从而从多个表中查询相关数据。

SQL可以通过两种方法实现表的连接查询: 方法1:使用条件子句WHERE建立连接; 方法2:使用连接关键字JOIN进行连接。1.使用WHERE建立连接

【格式】SELECT<输出列列表>; FROM[数据库!]<表1>,<表2>[……];; WHERE<连接条件>[AND<筛选条件>] 【功能】多表连接查询。

【说明】

(1)FROM子句中指明进行连接的表名,多个表之间用逗号分隔。 (2)WHERE子句指明连接的列名及其连接条件,如果还有对记录的筛选条件。则连接条件与筛选条件之间必须用AND相连。2.使用连接关键字JOIN建立连接

WHERE子句虽然能够实现连接查询,但有其局限性。为了解决这类问题,可以使用SQL的专用连接关键字JOIN来建立连接。

【格式】SELECT<输出列列表>; FROM[<数据库名!>]<表名>; INNER/LEFT/RIGHT/FULLJOIN[<数据库名!>];

<表名>; ON<连接条件>… 【功能】进行多表连接查询。

【说明】

(1)[<数据库名!>]<表名>用于指定非当前数据库的表,注意数据库名称后的“!”,它代表从属关系。 (2)JOIN连接具体分为以下几种:

INNERJOIN:内连接,只包含满足连接条件的记录,换言之,必须是两个表中都有的关键字值,其记录才会进入结果集,此为默认值;其功能类似于WHERE连接。

LEFT[OUTER]JOIN:左(外)连接,包含左表中全部和右表中与之匹配的记录,左表中不满足条件的那一部分记录对应部分为NULL。

RIGHT[OUTER]JOIN:右(外)连接,包含右表中全部和左表中与之匹配的记录,右表中不满足条件的那一部分记录对应部分为NULL。

FULL[OUTER]JOIN:全连接,两侧表中不管是否满足连接条件都全部进入结果集,此时不满足连接条件而缺乏数据的记录对应部分为NULL; 连接类型在FROM子句中指定,连接条件用ON选项指定,[OUTER]可以省略。3.特殊的连接查询——自连接

有时,一些特殊的应用需要一个表与其自已进行连接操作,这种情况称为表的自连接。此时,可以用AS子句,将同一个表指定为两个不同的别名,于是一个表在逻辑上变成了两个表,这个问题就转化成了普通的两表连接问题。表的自连接主要用于同一个表中数据的比较。

7.2.6嵌套查询 嵌套查询就是SQLSELECT语句的WHERE子句中包含SQLSELECT语句,嵌套查询时,查询结果只能来自一个表,但查询条件往往来自多个表。 此时,称外层SELECT语句为父查询,内部嵌套SELECT语句为子查询。 嵌套查询可以将一系列简单查询构成复杂查询,增强查询能力。子查询的嵌套层次最多可达到255层,以层层嵌套的方式构造查询充分体现了SQL“结构化”的特点。嵌套查询在执行时由里向外处理,即先执行子查询再执行父查询,父查询要用到子查询的结果。1.返回一个值的子查询

当子查询的返回值只有一个时,可以使用比较运算符(=,>,<,>=,<=,!=)将父查询和子查询连接起来。2.返回一组值的子查询

如果子查询的返回值不止一个,而是一个集合时,则不能直接使用比较运算符,可以在比较运算符和子查询之间插入用于集合判断的谓词IN、ANY、ALL、EXISTS。7.2.7查询结果输出

【格式】SELECT<输出列列表>; FROM<数据源列表> [INTO<新表名>|CURSOR; <临时表名>|ARRAY<数组名>]; /[TOFILE<文件名>/TOPRINTER/; TOSCREEN] 【功能】指定查询结果的去向,可以是数据表、系统临时表、数组、文本文件、打印机或屏幕。

【说明】使用INTO子句,可以将查询结果重定输出方向。输出到一个新建的数据表或一个临时表。否则,默认为窗口浏览。

INTOTABLE<表名>:表示输出到磁盘数据表文件;

INTOCURSOR<系统临时表名>:表示输出到系统临时表,临时表存储在内存中,退出VisualFoxPro系统时自动消失;当使用此项时,在最小号可用工作区中将打开临时表,同时屏幕上不会出现浏览窗口。

INTOARRAY<数组名>:输出到一个数组,该数组的维数及数组元素个数自动由SELECT命令结果集的行列数决定。

TOFILE<文件名>:将查询结果输出到文本文件;

TOPRINT:将查询结果输出打印机;

TOSCREEN:将查询结果输出VisualFoxPro主窗口。7.2.8SELECT命令的完整格式

最后,给出SELECT命令的完整格式。

SELECT语句的一般格式为:

【命令】SELECT[ALL/DISTINCT] [TOP<表达式>[PERCENT]] [<别名>.]<列表达式>[AS<栏名>][,[<别名.>]<列表达式>[AS<栏名>]…] FROM[<数据库名!>]<表名>[,[<数据库名!>]<表名>…]

[INNER/LEFT/RIGHT/FULLJOIN[<数据库名!>]<表名> [ON<连接条件>…]] [[INTO<新表名>|CURSOR<临时表名>|ARRAY<数组名>] /[TOFILE<文件名>/TOPRINTER/TOSCREEN]] [WHERE<连接条件>[AND<连接条件>…] [AND/OR<筛选条件>[AND/OR<筛选条件>…]]] [GROUPBY<列名>[,<列名>…]][HAVING<筛选条件>] [ORDERBY<列名>[ASC/DESC][,<列名> [ASC/DESC]…]];

【功能】实现数据查询。从一个或多个基本表或视图中选取满足条件的元组。

【说明】SELECT命令可以对关闭的表,也可以对打开的表进行操作,当操作的表当前未打开时,该表将会被打开,且SELECT命令执行完毕后,也不会自动关闭。 下面是SELECT命令各参数、子句的功能描述。1.SELECT参数及其选项

(1)[ALL/DISTINCT]:ALL表示从所有元组中查询,DISTINCT则表示选出的记录中要删除掉重复的记录。 (2)TOP<表达式>[PERCENT]:指定在查询结果中,只选取前面指定个数或指定百分比的记录数。TOP子句必须与排序子句ORDERBY同时使用。ORDERBY子句指定按哪个字段排序,TOP子句根据此排序选定开始的<表达式>个或<表达式>%的记录。 (3)[<别名>.]<列表达式>[AS<栏名>]:<列表达式>可以是字段名,也可以是表达式,还可以是系统函数以及用户自定义函数,这就是SELECT命令查询的列数据。AS<栏名>指定结果集输出时的列标题,可以与字段名不同,当<列表达式>是一个表达式或函数时,可以用AS子句给该列起一个有意义的名字。2.FROM参数及其选项

用于指定查询的表与连接类型。其中: (1)[<数据库名!>]<表名>:<表名>列出所有从中检索数据的表,非当前数据库表用<数据库名!><表名>指定。数据库名称后的“!”代表从属关系。 (2)INNER/LEFT/RIGHT/FULLJOIN[<数据库名!>]<表名>[ON<连接条件>…]:指定多表查询时,多个表之间的连接条件及连接关键字。 INNER/LEFT/RIGHT/FULLJOIN及ON关键字的意义及用法见连接查询一节的说明。3.查询去向子句

[INTO<新表名>|CURSOR<临时表名>|ARRAY<数组名>] /[TOFILE<文件名>/TOPRINTER/TOSCREEN]:指定查询结果的去向,可以是数据表、系统临时表、数组、文本文件、打印机或屏幕。

4.条件子句

WHERE<连接条件>[AND<连接条件>…][AND/OR<筛选条件>[AND/OR<筛选条件>…]]:其中,WHERE<筛选条件>指定在查询结果中的记录必须满足的条件。在多表查询时,WHERE<连接条件>用于指定数据表之间联结的条件。5.分组子句

GROUPBY<列名>[,<列名>…][HAVING<筛选条件>]:其中,GROUPBY<列名>[,<列名>…]把查询结果中的记录按一个或多个列的值分组;[HAVING<筛选条件>]用于指定对各个分组再次筛选,并将满足条件的分组送入结果集。HAVING必须与GROUPBY一起使用。

6.排序子句

ORDERBY<列名/数字序号>[ASC/DESC][,<列名/数字序号>[ASC/DESC]…]:用于指定查询结果中的记录排序输出,当按<列名>排序时,以一个或多个字段数据作为排序依据;当按<数字序号>排序时,以结果集中该序号指定的列位置的数据作为排序的基准,选项ASC表示升序;DESC表示降序,默认为升序。

7.3

SQL数据定义功能

SQL语言使用数据定义语言(DateDefinitionLanguage,简称DDL)实现其数据定义功能,数据定义语言由CREATE(创建)、ALTER(修改)、DROP(删除)三个命令组成,可以完成数据库对象的创建、修改和删除。每个数据库对象分别对应这三条命令。在VisualFoxPro中,数据库对象有数据库容器、数据库、表、视图、连接、索引、关系等对象,则对应每个对象有3个相应的命令。 例如,对表的操作有如下三条:

CREATETABLE:创建数据表;

ALTERTABLE:修改数据表;

DROPTABLE:删除数据表; 下面分别予以介绍。

7.3.1定义数据表 数据表是关系数据库的基本组成单位,它以文件形式物理地存储于磁盘中。 使用SQL语言的CREATETABLE命令可以创建数据表结构。【命令】 CREATETABLE<表名>[FREE] (<列名1>类型[(宽度[,小数位])

[NULL|NOTNULL][CHECK<逻辑表达式1>[ERROR<提示字符串>]][DEFAULT<值表达式1>] [PRIMARYKEY|UNIQUE] [,<列名2>……] [,FOREIGNKEY<外关键字段名>TAG<外关键字索引标识名> REFERENCES<外关键字所在表名>])

【功能】创建数据表。

【说明】

(1)<表名>是合法标识符,最多128个字符,可以带盘符、路径、文件名,不允许重名; (2)FREE选项指定新建表不加入当前数据库,若当前没有打开的数据库,该选项无效; 以下3)到7)属于列约束: (3)NULL|NOTNULL指明该字段允许或不允许为空值; (4)CHECK……ERROR用于控制域完整性,ERROR可给出错误信息; (5)DEFAULT定义默认值; (6)PRIMARYKEY定义主关键字,创建主索引; (7)UNIQUE定义候选关键字,创建候选索引; 最后是表约束: (8)FOREIGNKEY与REFERENCES子句用于建立表之间的参照关系。7.3.2修改数据表

SQL语言使用ALTERTABLE命令来修改表的结构。要求该表必须以独占方式打开。1.添加字段

【命令】ALTERTABLE<表名> [ADD<新列名>类型[(宽度[,小数位]); [NULL|NOTNULL]; [CHECK<逻辑表达式1>[ERROR<提示字符串>]]; [DEFAULT<值表达式1>]; [PRIMARYKEY|UNIQUE] 【功能】在表中新增列。

2.修改表中字段属性

【命令】ALTERTABLE<表名> [ALTER<列名>类型[(宽度[,小数位])

[NULL|NOTNULL] [SETCHECK<逻辑表达式1>[ERROR<提示字符串>]] [SETDEFAULT<值表达式1>] [DROPCHECK] [DROPDEFAULT] 【功能】修改表中列的定义。

【说明】SETCHECK、SETDEFAULT的功能参见7.3.1相关解释;DROPCHECK、DROPDEFAULT分别用于删除域完整性检查和删除默认值。

3.删除数据表

当某个数据表无用时,可将其删除。删除后,该表中的数据和在此表上所建的索引都被删除。

【命令】DROPTABLE<表名> 【功能】从磁盘上物理删除<表名>对应的数据表文件。7.4

SQL的数据更新功能

SQL语言的数据操纵也称为数据更新,通过INSERT(插入)、DELETE(删除)、UPDATE(更新)三种命令,实现对数据的操作7.4.1插入数据记录INSERT_SQL

插入数据是把新的记录插入到一个存在的表中。插入数据使用语句INSERTINTO,可插入一条记录,也可插入多条记录。

【命令】INSERTINTO<表名> [(<列名1>[,<列名2>…])] VALUES(<值1>[,<值2>…])

【功能】在指定的表中插入一条新记录,并分别用值1、值2等为列1、列2等赋值。

【说明】列名的排列顺序不一定要和表定义时的顺序一致。但当指定列名时,VALUES子句值的排列顺序必须和指定列名的排列顺序一致,个数相等,数据类型一一对应。INTO语句中没有出现的列名,新记录在这些列上将取空值。7.4.2修改数据记录UPDATE_SQL

SQL语言可以使用UPDATE语句对表中的一行或多行记录的某些列值进行修改。

【命令】UPDATE<表名> SET<列名>=<表达式>[,<列名>=<表达式>]… [WHERE<删除条件>] 【功能】对表中的一行或多行记录的某些列值进行修改。

【说明】<表名>是指要修改的表;SET子句给出要修改的列及其修改后的值;WHERE子句指定待修改的记录应当满足的条件,WHERE子句省略时,则修改表中的所有记录。

7.4.3删除数据记录DELETE_SQL 使用DELETE语句可以删除表中的一行或多行记录。

【命令】DELETEFROM<表名> [WHERE<条件>] 【功能】删除表中的一行或多行记录。

【说明】<表名>指定要删除数据的表。WHERE子句指定待删除的记录应当满足的条件,WHERE子句省略时,则删除表中的所有记录。

7.5

用查询设计器建立查询

除了使用SELECT-SQL语言进行数据查询外,VFP还提供了更直观的数据查询工具——查询设计器。查询设计器产生的查询结果除了当场可以浏览外,还可以有多种输出方式。特别适用于初学者。7.5.1查询设计器界面

可以使用菜单方式或命令方式进入查询设计器。 菜单方式:“文件”菜单→“新建”项→“新建”对话框→选择查询文件类型;

【命令】CREATEQUERY[<查询文件名>] 【功能】新建查询,并打开查询设计器。

查询设计器如下图所示。

在设计器的上部显示的是在查询中用到的数据表。在设计器的下部,有6个选项卡,可以分别对查询的字段、连接、筛选、排序依据、分组依据、杂项进行设置。打开查询设计器后,系统菜单中将添加一个“查询”菜单项,显示查询工具栏,同时“显示”菜单的选项有所改变。1.上部窗格

上部窗格显示已打开的表,如果数据表间存在关联关系,将显示关联的直线。 (1)添加表或视图 将表添加入上部窗格的方法是: .选定“查询”菜单中的“添加表”命令; .选定“查询设计器工具栏”上的“添加表”按钮; .在查询设计器界面中单击右键,在右键快捷菜单中选择“添加表”。 将出现添加表或视图对话框,即可在对话框中选定表或数据库中的视图。 (1)添加表或视图 将表添加入上部窗格的方法是: .选定“查询”菜单中的“添加表”命令; .选定“查询设计器工具栏”上的“添加表”按钮; .在查询设计器界面中单击右键,在右键快捷菜单中选择“添加表”。 将出现添加表或视图对话框,即可在对话框中选定表或数据库中的视图。 (2)表间关系 当窗格中已有表,添加新表时,如果该两表之间已存在数据库中的永久关系,此时在表之间有直线相连,表示表之间已建立好联系,可以在下面介绍的“连接”选项卡中看到表间连接的条件。 如果表之间事先没有建立连接,将会出现“连接条件”对话框,如下图所示。 可以在此指定两个表的连接类型以及等值连接的关联关键字,具体参见下面关于“连接”选项卡的介绍,也可以直接选择取消,然后,稍后在“连接”选项卡中设置。 另一种方法是,用鼠标拖动的方法直接在表间建立连接。例如:A表与B表具有相同的关联关键字ZH,要建立两者联系,只需在上部窗格中,鼠标左键拖动A表的ZH字段到B表的ZH字段,即可建立两表间以ZH为关联关键字的内连接(INNERJOIN)。从B表拖动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论