• 沒有找到結果。

SQL 查询

在文檔中 第 4 章 创建和使用查询 (頁 28-34)

在使用数据库的过程中经常会用到一些查询,但这些查询用各种查询向导和设计器都无法 做出来,此时使用 SQL 查询可以完成比较复杂的查询工作。SQL 语言作为一种通用的数据库 操作语言并不是 Access 用户必须要掌握的,但在实际的工作中有时必须用到这种语言才能完 成一些特殊的工作。

当今所有关系型数据库管理系统都是以 SQL 为核心的。SQL 概念的建立起始于 1974 年,

随着 SQL 的发展,ISO、ANSI 等国际权威标准化组织都为其制定了标准,从而确立了 SQL 在数据库领域里的核心地位。单纯的 SQL 语言包含的语句并不多,但在使用过程中需要大量 输入各种表、查询和字段的名字。这样当建立一个涉及大量字段的查询时就需要输入大量文字,

与用查询设计视图建立查询相比就麻烦多了。所以在建立查询的时候应该先在查询设计视图中 将基本的查询功能都实现了,最后再切换到 SQL 视图通过编写 SQL 语句完成一些特殊的查询。

使用 SQL 查询创建的查询有以下 4 种:联合查询、传递查询、数据定义查询和子查询。下面 就简要介绍使用 SQL 语句创建这 4 种查询的方法。

4.9.1 SQL 查询视图的切换

在建立查询的时候可以切换到 SQL 视图中,下面看看是怎么切换的。

在“数据库”窗口的“对象”列表下选中“查询”(如图 4.57 所示),单击“新建”按钮,

会发现在弹出的“新建查询”对话框的列表中并没有“使用 SQL 视图创建查询”选项,如图 4.58 所示。

图 4.57 “数据库”窗口 图 4.58 “新建查询”对话框

这也表明 Access 并不提倡在工作中使用 SQL 语言,在“新建查询”对话框中双击“设计 视图”,并直接关闭弹出的“显示表”对话框,之后将会在屏幕上出现一个设计视图,如图 4.59 所示。

图 4.59 查询设计视图

要切换到 SQL 视图,只要将鼠标移动到工具栏最左面的“视图”选项按钮 右边的下 三角按钮上单击,在弹出的菜单中选中“SQL 视图”项就可以将视图切换到 SQL 状态,如图 4.60 所示。

图 4.60 SQL 视图

4.9.2 联合查询

联合查询可以将两个或两个以上的表或查询所对应的多个字段的记录合并为一个查询表 中的记录。执行联合查询时,将返回所包含的表或查询中对应字段的记录。创建联合查询的唯 一方法是使用 SQL 窗口。

这里将用到 SQL 中的 SELECT 语句,其主要功能是实现数据源数据的筛选、投影和连接 操作,并能够完成筛选字段的重命名、对数据源数据的组合、分类汇总、排序等具体操作,具 有非常强大的数据查询功能。

SELECT 语句的一般语法格式为:

SELECT[predicate]{*|table.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}

FROM tableexpression[,…][IN externaldatabase]

[WHERE…]

[GROUP BY…]

[HAVING…]

[ORDER BY…]

[WITH OWNERACCESS OPTION]

在 SELECT 语法格式中,大写字母为 SQL 保留字,方括号所括部分为可有可无的内容,

小写字母为语句参量。各个参量的说明如下:

predicate:取 ALL、DISTINCT、DISTINCTROW、TOP 中的一个谓词。可用谓词来 限制返回记录的数量,默认值为 ALL。

*:全部字段,从特定的表中指定全部字段。

table:取表的名称。

field1:取字段的名称,包含要获取的数据。

alias1:取字串常量,用作列标头。

tableexpression:取表的名称,包含要获取的数据。

externaldatabase:取数据库的名称,该数据库包含 tableexpression 中的表。

WHERE:只筛选满足给定条件的记录。 且相应列的数据类型也相同。此时,Access 不会关心每个列的名称。当列的名称不相同时,

查询会使用来自第一个 SELECT 语句的名称。

(2)如果不需要返回重复记录,可以输入带有 UNION 运算的 SQL SELECT 语句;如果 需要返回重复记录,可以输入带有 UNION ALL 运算的 SQL SELECT 语句。也就是将上面的 例子改为:

SELECT 教师姓名,所属院系名称

(6)单击“运行”按钮,执行该查询。

CREATE TABLE:创建表。CREATE TABLE 语句不会覆盖已经存在的同名表,如果 表已经存在,会返回一个错误消息,并取消这一任务。

下面的语句创建一个名为 Newtable 的新表,表中有两个字段 name1 和 name2。

CREATE TABLE Newtable ( name1 TEXT,name2 TEXT );

ALTER TABLE:在已有表中添加新字段、删除字段和添加约束等。

4.9.5 子查询

使用子查询可以定义字段或定义字段的条件,但子查询不能单独作为一个查询,它必须 与其他查询相结合,通常是作为另外一个查询的字段、条件使用,操作步骤如下:

(1)新建一个查询,将所需的字段添加到设计视图的设计网格中。

(2)如果要用子查询定义字段的条件,在要设置条件的“条件”单元格中输入一条 SELECT 语句,并将 SELECT 语句放置在括号中。

(3)如果要用子查询定义“字段”单元格,可以在“字段”单元格的括号内输入一条 SELECT 语句。

下面以查询比胡佳年龄小的同学记录为例介绍子查询的使用方法。

(1)在设计视图中创建如图 4.64 所示的查询。

图 4.64 查询设计视图

(2)在“出生日期”字段下的“条件”行中输入“>(SELECT 出生日期 FROM 学生档 案表 where 姓名='胡佳')”,如图 4.65 所示。

图 4.65 添加子查询后的设计视图

说明:子查询的作用是找出胡佳的出生日期,在这个出生日期之后出生的同学就是比胡 佳小的同学。(注意:时间的比较和数字的比较是不同的)

(3)保存查询的名称为“年龄比胡佳小的同学”,运行查询的结果如图 4.66 所示。

图 4.66 查询结果

WHERE 学号="0221325014" AND 课程代码="001";

(2)追加查询。 WHERE 学号='0221325014';

在文檔中 第 4 章 创建和使用查询 (頁 28-34)

相關文件