76

Click here to load reader

第 5 章 关系数据库 标准语言 SQL

  • Upload
    hoang

  • View
    112

  • Download
    3

Embed Size (px)

DESCRIPTION

第 5 章 关系数据库 标准语言 SQL. 5.1 SQL 语言简介 5.2 SQL 的数据 查询 5.3 SQL 的数据 定义 5.4 SQL 的数据 操作 5.5 视图. 导入. §5.1 SQL 语言简介. 5.1.1 SQL 语言 SQL 是结构化查询语言 Structured Query Language 的缩写,可以说查询是 SQL 语言的重要组成部分,是 SQL 的核心,但不是全部。 SQL 包含: 数据 查询 语言( DQL-Data Query Language ); - PowerPoint PPT Presentation

Citation preview

Page 1: 第  5 章  关系数据库 标准语言 SQL

第 5 章 关系数据库标准语言 SQL

5.1 SQL语言简介 5.2 SQL的数据查询5.3 SQL的数据定义5.4 SQL的数据操作5.5 视图

Page 2: 第  5 章  关系数据库 标准语言 SQL

导入

Page 3: 第  5 章  关系数据库 标准语言 SQL

§5.1 SQL 语言简介§5.1 SQL 语言简介5.1.1 SQL 语言SQL 是结构化查询语言 Structured Query Language 的缩写,可以说查询是 SQL 语言的重要组成部分,是 SQL 的核心,但不是全部。SQL 包含:数据查询语言( DQL-Data Query Language );数据定义语言( DDL-Data Definition Language );数据操纵语言( DML-Data Manipulation Language );数据控制语言( DCL-Data Control Language )等。

SQL 功能 命令动词数据查询 Select

数据定义 Create 、 Drop 、 Alter

数据操纵 Insert 、 Update 、 Delete

数据控制 Grant 、 Revoke

Page 4: 第  5 章  关系数据库 标准语言 SQL

§5.2 SQL 查 询§5.2 SQL 查 询

SELECT-SQL 命令是 SQL 语言中最重要、最核心、最常用的一条命令,通过它可以方便地实现对数据的查询工作。

SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]][Alias.]Select_Item [AS Column_Name][,[Alias.]Select_Item [AS Column_Name]…]FROM [DatabaseName!]TableName [[AS] Local_Alias][, [DatabaseName!]TableName [[AS]Local_Alias]][[INTER/LEFT[OUTER]/RIGHT[OUTER]/FULL[OUTER]] JOIN[DatabaseName!]TableName [[AS]Local_Alias][ON JoinCondition]…][WHERE JoinCondition [AND JoinCondition…][AND/OR FilterCondition [AND/OR FilterConidion…]]][ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]][GROUP BY GroupCo1umn [,GroupColumn…]][HAVING FilterCondition][TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ][INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname]

Page 5: 第  5 章  关系数据库 标准语言 SQL

功能:

从一个或多个表中查询指定条件的数据并输出。可对查询结果加以排序或分组统计,默认输出结果到浏览窗,可重定向到打印机、 ASCII 文件或屏幕,或保存结果到表、临时表或内存变量数组中。说明:SELECT 说明要查询的数据; From 说明查询的数据来源(表);Where 用于指定查询条件; ORDER BY 用于对查询结果进行排序; GROUP BY 用于分组,

§5.2 SQL 语 言 的 基 本 语 法§5.2 SQL 语 言 的 基 本 语 法SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]]

FROM [DatabaseName!]TableName [[AS] Local_Alias]

[WHERE JoinCondition [AND JoinCondition…]

[AND/OR FilterCondition [AND/OR FilterConidion…]]]

[ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]]

[GROUP BY GroupCo1umn [,GroupColumn…]]

[HAVING FilterCondition]

[TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ]

Page 6: 第  5 章  关系数据库 标准语言 SQL

单表查询是指查询结果中的所有字段和查询条件中所涉及的字段都存在于同一个表中,这类查询只需 SELECT 和 FROM 子句构成无条件查询,或由 SELECT 、 FROM 和 Where 子句构成条件查询。

1 .无条件查询SELECT <字段列表> FROM <表名>

功能:

查询指定表中所有记录的全部字段内容;

在 SELECT 后用“ *” 表示全部字段,而无需一一列出所有字段名。

§5.2.1 简 单 查 询§5.2.1 简 单 查 询

【例 5-7 】 查询显示 rsb 中所有职工的详细信息。

SELECT * FROM rsb

Page 7: 第  5 章  关系数据库 标准语言 SQL

本章查询用到的 3 个表本章查询用到的 3 个表

注意: rsb 表中并无“基本工资”字段,可到教师课件的实验资料上直接下载人事库。

Page 8: 第  5 章  关系数据库 标准语言 SQL

2 )查询指定表中所有记录的部分字段内容:用 < 列名表 > 逐一列出所需字段并以“ ,” 分隔。

【例 5-8 】 查询 rsb 表中所有职工的编号和姓名,并将查询结果直接显示在VFP 主窗口中。

SELECT 编号 , 姓名 FROM rsb TO SCREEN

【例 5-10 】 查询显示 rsb 表中所有职工的编号、姓名和年龄。

SELECT 编号 , 姓名 ,YEAR(DATE())-YEAR( 出生日期 ) AS 年龄 FROM rs

b

§5.2.1 简 单 查 询§5.2.1 简 单 查 询

1 .无条件查询SELECT <字段列表> FROM <表名>

Page 9: 第  5 章  关系数据库 标准语言 SQL

3 )查询指定表中所有记录的统计值:在 SELECT 后通过函数和表达式构造统计式,通常还使用 AS 子句为统计式取一个有含义的名称作为查询结果的列标题。

§5.2.1 简 单 的 计 算 查 询§5.2.1 简 单 的 计 算 查 询

1 .无条件查询SELECT <字段列表> FROM <表名>

①COUNT—— 计数 ② SUM —— 求和 ③ AVG —— 计算平均值 ④ MAX —— 求最大值 ⑤ MIN —— 求最小值

【例 5-9 】 查询显示 rsb 表中所有职工的最高基本工资、最低基本工资和平均基本工资,并要求在查询结果的列中使用标题名称。

SELE MAX( 基本工资 ) AS 最高基本工资 ,MIN( 基本工资 ) AS 最低基本工资 ; AVG( 基本工资 ) AS 平均基本工资 FROM rsb

Page 10: 第  5 章  关系数据库 标准语言 SQL

2 .条件查询

在 SELECT-SQL 命令中使用 WHERE 子句,可设置查询数据的筛选条件。

SELECT <字段列表> FROM <表名> WHERE < 条件 >

( 1 )简单条件查询:

在 WHERE 后使用关系表达式表达查询数据要满足的简单条件 。

§5.2.2 简 单 条 件 查 询§5.2.2 简 单 条 件 查 询

【例 5-11 】 查询 rsb 表中哪些年龄在 30岁以上(含 30岁)的职工,显示姓名(要求不重复显示)。

SELECT DISTINCT 姓名

FROM rsb WHERE YEAR(DATE())-YEAR( 出生日期 )>=30

Page 11: 第  5 章  关系数据库 标准语言 SQL

2 )复合条件查询:

在 WHERE 后使用逻辑运算符将几个简单条件组合成复合条件,即使用逻辑表达式进行查询。

§5.2.2 复 合 条 件 查 询§5.2.2 复 合 条 件 查 询

2 .条件查询

SELECT <字段列表> FROM <表名> WHERE < 条件 >

【例 5-12 】查询显示 rsb 表中所有年龄在 40岁以上(含 40岁)的女性职工编号和姓名。

SELECT 编号 , 姓名 FROM rsb

WHERE (YEAR(DATE())-YEAR( 出生日期 )>=40 ) AND 性别 =“女”

Page 12: 第  5 章  关系数据库 标准语言 SQL

3 )模糊匹配查询:

在 WHERE 子句中使用 LIKE运算符,可对字符型数据进行模糊匹配类型的查询。使用格式为:WHERE 字段名 Like " <字符串通配式> "

在字符串通配式中,通配符百分比符号“ %” 表示任意个字符,通配符下划线“ _” 表示任意的一个字符或汉字。

§5.2.2 模 糊 条 件 查 询§5.2.2 模 糊 条 件 查 询

【例 5-13 】 查询显示 rsb 中姓“张”的职工的信息。

SELECT * FROM rsb WHERE 姓名 LIKE "张% "

【例 5-15 】 查询显示 rsb 中姓“张”且只有两字的姓名的职工的信息。

SELECT * FROM rsb WHERE 姓名 LIKE "张 _ "

Page 13: 第  5 章  关系数据库 标准语言 SQL

3.对查询结果进行排序

在 SELECT-SQL 命令中使用 ORDER BY 子句,可使查询结果按照一定的顺序显示。

SELECT <字段列表> FROM <表名> [WHERE < 条件 >]

ORDER BY <排序依据> [ASC/DESC]

§5.2.2 条 件 查 询§5.2.2 条 件 查 询

【例 5-16 】 查询 rsb 表中的职工信息,显示职工编号,姓名,年龄,工作日期,并按年龄由小到大的顺序排列 ,相同者按工作日期降序显示。

Page 14: 第  5 章  关系数据库 标准语言 SQL

§5.2.2 条 件 查 询§5.2.2 条 件 查 询

SELECT 编号 , 姓名 ,YEAR(DATE())-YEAR( 出生日期 ) AS 年龄 , 工作日期 ;

FROM rsb ORDER BY 年龄,工作日期 DESC

提示:

不可以将上面的 ORDER BY 子句替换为 ORDER BY YEAR ( DATE()) -YEAR (出生日期),但可以用 ORDER BY 3替代。

Page 15: 第  5 章  关系数据库 标准语言 SQL

4.分组查询分组查询的含义是对查询结果进行分组,把具有相同字段值的记录合并为一组。在 SELECT-SQL 命令中使用 GROUP BY 子句,可实现分组查询。SELECT <字段列表> FROM <表名> [WHERE < 条件 >]

GROUP BY <分组依据> [HAVING < 条件 >]

说明:GROUP BY 子句经常与 HAVING 子句联用,后者给出对分组结果进行筛选的条件。注意 HAVING 子句与WHERE 子句的区别,对分组操作而言, WHERE 子句实际上指定了哪些记录能参加分组,而 HAVING 子句指定的是分组后哪些记录能作为查询的最终结果输出。【例 5-17 】 根据 rsb 表查询各部门的职工数。SELECT 部门代码 ,COUNT(*) FROM rsb GROUP BY 部门代码

§5.2.3 分 组 查 询§5.2.3 分 组 查 询

Page 16: 第  5 章  关系数据库 标准语言 SQL

4.分组查询【例 5-18 】 根据 rsb 表统计各部门教授(含副教授)以上的职工人数。SELECT 部门代码 , 职称 ,COUNT(*) as 人数 FROM rsb;

GROUP BY 部门代码 HAVING 职称 like "% 教授 "

§5.2.3 分 组 查 询§5.2.3 分 组 查 询

Page 17: 第  5 章  关系数据库 标准语言 SQL

本章查询用到的 3 个表本章查询用到的 3 个表

注意: rsb 表中并无“基本工资”字段,可到教师课件的实验资料上直接下载人事库。

Page 18: 第  5 章  关系数据库 标准语言 SQL

将两个或多个表的记录通过相关联的字段联接起来进行查询,这种运算称为联接运算,它是关系表运算中的一个重要操作。 VFP提供了四种联接类型:内部联接、左联接、右联接和完全联接,其中内部联接是最常用的连接方式。根据查询的需要,可以直接在命令中指定多表的联接类型。1.两表间内部联接( INNER JOIN )查询从相关联的两个表中选取满足联接条件的记录,按联接条件联接成新记录作为查询的输出,即只有满足联接条件的记录才出现在查询结果中。1 )使用 INNER JOIN 和 ON 子句实现。SELECT < 列名表 > FROM <表名 1 >INNER JOIN <表名 2 > ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

2 )在 WHERE 子句中实现。SELECT < 列名表 > FROM <表名 1 >,<表名 2 >WHERE < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

§5.2.4 联 接 查 询§5.2.4 联 接 查 询

Page 19: 第  5 章  关系数据库 标准语言 SQL

SELECT rsb. 编号 ,rsb. 姓名 ,gzb. 基本工资 , gzb.奖励FROM rsb,gzb WHERE rsb. 编号 =gzb. 编号或 SELECT rsb. 编号 ,rsb. 姓名 ,gzb. 基本工资 ,奖励 FROM rsb ;

INNER JOIN gzb ON rsb. 编号 =gzb. 编号

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

【例 5-19 】 根据表 rsb 和 gzb ,查询有职工的编号、姓名、基本工资和奖励。

Page 20: 第  5 章  关系数据库 标准语言 SQL

2.两表间左联接( LEFT JOIN )查询

除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。

从表 1 中选取所有的记录,按联接条件与表 2 中相关联的记录联接成新记录输出,若表2 中不存在相关联的记录,则查询输出中相应字段的值用 .NULL.代替。

实现方法:使用 LEFT JOIN 和 ON 子句实现。

SELECT < 列名表 > FROM <表名 1 >

LEFT JOIN <表名 2 > ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

【例 5-20 】 根据表 rsb 和 gzb ,查询所有职工的编号、姓名和基本工资,如果某个职工在 gzb 表中没有相应的记录,也要显示出该职工的信息。

SELECT rsb. 编号 ,rsb. 姓名 ,gzb. 基本工资 FROM rsb;

LEFT JOIN gzb ON rsb. 编号 =gzb. 编号

Page 21: 第  5 章  关系数据库 标准语言 SQL

3.两表间右联接( RIGHT JOIN )查询

除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中。从表 2 中选取所有的记录,按联接条件与表 1 中相关联的记录联接成新记录输出,若表 1 中不存在相关联的记录,则查询输出中相应字段的值用 .NULL.代替。实现方法:使用 RIGHT JOIN 和 ON 子句实现。SELECT < 列名表 > FROM <表名 1 >RIGHT JOIN <表名 2 > ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

【例 5-21 】 根据表 rsb 和 gzb ,查询所有职工的编号、姓名和基本工资,如果某个职工在 rsb 表中没有相应的记录,也要显示出该职工的信息。

SELECT rsb. 编号 ,rsb. 姓名 ,gzb. 基本工资 FROM rsb;

RIGHT JOIN gzb ON rsb. 编号 =gzb. 编号

Page 22: 第  5 章  关系数据库 标准语言 SQL

4.两表间完全联接( FULL JOIN )查询

除满足联接条件的记录出现在查询结果中外,两个表中不满足联接条件的记录也出现在查询结果中。

从相关联的两个表中选取所有的记录,按联接条件联接成新记录输出,若表 1 或表 2

中不存在相关联的记录,则查询输出中相应字段的值用 .NULL.代替。

实现方法:使用 FULL JOIN 和 ON 子句实现。

SELECT < 列名表 > FROM <表名 1 >

FULL JOIN <表名 2 > ON < 表名 1>.< 关联字段 >=< 表名 2>.< 关联字段 >

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

【例 5-22 】 通过表 rsb 和 gzb ,的完全联接,查询两表所涉及到的所有职工的编号、姓名和基本工资。

SELECT rsb. 编号 ,rsb. 姓名 ,gzb. 基本工资 FROM rsb;

FULL JOIN gzb ON rsb. 编号 =gzb. 编号

Page 23: 第  5 章  关系数据库 标准语言 SQL

5.多表间的联接查询

上面给出的例子都是完成两个表间的联接查询。 SELECT-SQL 命令不仅能完成两个表间的联接查询,还可以完成多个表间的联接查询。

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

【例 5-23 】 根据表 rsb 、 gzb 和 bum ,查询所有职工的编号、姓名、部门和基本工资。并按编号从小到大排序输出。

SELECT rsb. 编号 ,rsb. 姓名 ,bum. 部门名称 , gzb. 基本工资 FROM rsb;

INNER JOIN (rsb INNER JOIN bum ON rsb. 部门代码 = bum. 部门代码 );

ON rsb. 编号 =gzb. 编号 ORDER BY rsb. 编号

Page 24: 第  5 章  关系数据库 标准语言 SQL

可去掉命令中的括号,写作:SELECT rsb. 编号 ,rsb. 姓名 ,bum. 部门名称 ,gzb. 基本工资 FROM rsb;

INNER JOIN bum;

INNER JOIN gzb;

ON rsb. 部门代码 = bum. 部门代码 ;

ON rsb. 编号 =gzb. 编号 ORDER BY rsb. 编号

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

用另一实现方法,命令是:

SELECT rsb. 编号 ,rsb. 姓名 ,bum. 部门名称 ,gzb. 基本工资 ;

FROM rsb,gzb,bum;

WHERE rsb. 编号 =gzb. 编号 AND rsb. 部门代码 = bum. 部门代码 ;

ORDER BY rsb. 编号

Page 25: 第  5 章  关系数据库 标准语言 SQL

6.使用嵌套子查询实现多表查询

所谓的子查询是指嵌套在一个 SELECT-SQL 命令中的另一个 SELECT-SQL 命令。外层查询依赖于内层查询的结果,而内层查询与外层查询无关。

嵌套子查询的 SELECT-SQL 命令形式如下:

SELECT < 取自表 1 的列名表 > FROM <表名 1 >

WHERE < 表 1 的关联字段 > IN

(SELECT <表 2 的关联字段> FROM <表名 2 > [WHERE < 表 2 的查询条件>] )

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

YEAR(DATE())

函数的嵌套 : 一个函数的参数是另一个函数的值 ,即函数中又包含函数。例如:

Page 26: 第  5 章  关系数据库 标准语言 SQL

( 2 )不使用嵌套子查询SELECT DISTINCT rsb. 编号 , 姓名 FROM r

sb;

INNER JOIN gzb ON rsb. 编号 =gzb. 编号 ;

WHERE gzb. 基本工资 >=1000

§5.2.4 用 SELECT-SQL命令实现多表查询§5.2.4 用 SELECT-SQL命令实现多表查询

使用嵌套子查询

SELECT DISTINCT 编号 , 姓名 FROM rsb;

WHERE 编号 IN

(SELECT 编号 FROM gzb WHERE 基本工资 >=1000)

【例 5-24 】根据表 rsb 和 gzb ,查询基本工资在 1000元以上(含 1000元)的职工的编号和姓名(要求不重复显示)。

( 1 )最简单的查询方法:

SELECT DISTINCT rsb. 编号 , 姓名 FROM rsb,gzb;

WHERE rsb. 编号 =gzb. 编号 AND gzb. 基本工资 >=1

000

Page 27: 第  5 章  关系数据库 标准语言 SQL

SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]] Select_Item [AS Column_Name]…] FROM [DatabaseName!]TableName [[AS] Local_Alias][WHERE JoinCondition [AND JoinCondition…][AND/OR FilterCondition [AND/OR FilterConidion…]]][ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]][GROUP BY GroupCo1umn [,GroupColumn…]][HAVING FilterCondition][TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ]

ALL :表示查询结果中包括所有满足查询条件的记录,也包括重复值。默认为 ALL 。DISTINCT :表示在查询结果中内容完全相同的记录只能出现一次。[Alias.]Select_Item :指定作为查询结果的列内容,可以是字段名、常量或表达式; Alias 表示表名(或表别名),用 Alias. 标识来自不同表的同名字段。AS Column_Name :指定查询结果中列的标题名称。TOP nExpr [PERCENT] :限制查询记录的数目为前 nExpr 条或占记录总数的百分比为nExpr 。注意: Top参数必须与 Order By 子句联用。

§5.2 SQL 语 言 的 基 本 语 法§5.2 SQL 语 言 的 基 本 语 法

Page 28: 第  5 章  关系数据库 标准语言 SQL

【例 1 】从 rsb 表中查询年龄最大的 3位职工的姓名、年龄、出生日期。

Sele Top 3 姓名 , Year(Date())-Year( 出生日期 ) as 年龄 , 出生日期 ;

From rsb order by 年龄 Desc

§5.2 SQL 查 询 举 例§5.2 SQL 查 询 举 例

【例 2 】 根据 gzb按基本工资降序显示前 30% 的工资信息。

Sele Top 30 Percent *;

From gzb order by 基本工资 Desc

【例 3 】 根据表 rsb 和 gzb ,查询所有职工的编号、姓名、基本工资和奖励。

Sele rsb. 编号 , 姓名 ,gzb. 基本工资 ,奖励

From rsb,gzb Where rsb. 编号 =gzb. 编号

【例 4 】查询未婚职工的姓名和出生日期。Sele 姓名 , 出生日期 From rsb Where 婚否 =.F.

Sele 姓名 , 出生日期 From rsb Where Not 婚否

Page 29: 第  5 章  关系数据库 标准语言 SQL

SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]] Select_Item [AS Column_Name]…] FROM [DatabaseName!]TableName [[AS] Local_Alias][WHERE JoinCondition [AND JoinCondition…][AND/OR FilterCondition [AND/OR FilterConidion…]]][ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]][GROUP BY GroupCo1umn [,GroupColumn…]][HAVING FilterCondition][TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ][INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname]

HAVING 子句:与 GROUP BY 子句联用,指定对分组结果进行筛选的条件。

【例 5 】 :根据 rsb 表统计各部门教授(含副教授)以上的职工人数。

Sele 部门代码 , 职称 ,Count(*) as 人数 From rsb;

Group By 部门代码 Having 职称 like "% 教授 "

§5.2 SQL 语 言 的 基 本 语 法§5.2 SQL 语 言 的 基 本 语 法

Page 30: 第  5 章  关系数据库 标准语言 SQL

SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]] Select_Item [AS Column_Name]…] FROM [DatabaseName!]TableName [[AS] Local_Alias][WHERE JoinCondition [AND JoinCondition…][AND/OR FilterCondition [AND/OR FilterConidion…]]][ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]][GROUP BY GroupCo1umn [,GroupColumn…]][HAVING FilterCondition][TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ][INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname]TO子句:指定查询结果的输出目标。 浏览窗口:默认输出目标(注:查询结果在浏览窗内只供浏览,不能修改)。 打印机: TO PRINTER 。 ASCII 文件: TO FILE Filename 。 活动窗口: TO SCREEN 。

§5.2 SQL 语 言 的 基 本 语 法§5.2 SQL 语 言 的 基 本 语 法

【例 6 】 : 从 rsb 表中查询职称信息存储到

文本文件 tmp 中。

Sele 编号 , 姓名 , 职称 ;

From rsb To file tmp

Page 31: 第  5 章  关系数据库 标准语言 SQL

§5.2 SQL 查 询 举 例§5.2 SQL 查 询 举 例SELECT [ALL/DISTINCT][TOP nExpr [PERCENT]] Select_Item [AS Column_Name]…] FROM [DatabaseName!]TableName [[AS] Local_Alias][WHERE JoinCondition [AND JoinCondition…][AND/OR FilterCondition [AND/OR FilterConidion…]]][ORDER BY Order_Item [ASC/DESC][,Order_Item [ASC/DESC]…]][GROUP BY GroupCo1umn [,GroupColumn…]][HAVING FilterCondition][TO PRINTER/ FILE FileName[ADDITIVE]/ SCREEN ][INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname]

INTO子句:指定查询结果的保存方向。独立的表: INTO TABLE Tablename 。临时表: INTO CURSOR Cursorname 。数组: INTO ARRAY Arrayname 。

【例 8 】 : 从 rsb 表中查询职称信息存储到数组 x 中。dimension x(11,3)

Sele 编号 , 姓名 , 职称 ;

From rsb Into array x

disp memory【例 7 】 : 从 rsb 表中查询职称信息存储到表 zhicheng 中。

Sele 编号 , 姓名 , 职称 ;

From rsb Into Table zhicheng

Page 32: 第  5 章  关系数据库 标准语言 SQL

简单的查询主要是从表中筛选数据,并按一定的方式排序或分组。

除命令方式外,也可直接使用查询向导、查询设计器创建查询。

引 入 “查 询 设 计 器 ”引 入 “查 询 设 计 器 ”

【例 1 】 使用查询设计器完成之前用 SQL 命令实现的查询 :

所有 1980 年以后出生的女教师,查询结果按编号升序排列。

Sele * from 人事表 where year( 出生日期 )>=1980 And 性别="女 "

Page 33: 第  5 章  关系数据库 标准语言 SQL

查询,英文单词是“ query” ,

是指从指定的表或视图中提取满足条件的记录,

然后按照需要的输出方式如浏览器、报表、图表等定向输出查询结果。

一般设计一个查询的目的是反复使用,从而提高效率。查询是以 *.

qpr 的文件保存在磁盘上。

查询以快速、方便地使用数据库提供的一种方法。

§5.3 用“查 询 设 计 器”创 建 查 询

§5.3 用“查 询 设 计 器”创 建 查 询

Page 34: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.1 启 动 查 询 设 计 器

① 用 Create query 命令打开查询设计器;

② “ 文件”菜单 “新建”命令或单击“常用”工具栏上的“新建”按钮, 打开“新建”对话框,然后选择“查询”,并单击“新建文件”打开查询设计器;

③ 在项目管理器的“数据”选项卡下选择“查询”,再单击“新建”命令按钮打开查询设计器;

启动“查询设计器”的方法:

Page 35: 第  5 章  关系数据库 标准语言 SQL

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

确定查询基于的表或视图:

此步相当于 SQL Select 命令中的 From 子句,指定查询的数据源。

Page 36: 第  5 章  关系数据库 标准语言 SQL

在查询设计器“字段”选项卡中指定查询结果中出现的字段列表。

此步相当于 SQL Select 命令中的 Select 子句。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 37: 第  5 章  关系数据库 标准语言 SQL

此步相当于 SQL Select 命令中的 Jion-On 子句。

在查询设计器“联接”选项卡中编辑多个表之间的联接条件。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 38: 第  5 章  关系数据库 标准语言 SQL

此步相当于 SQL Select 命令中的 Where 子句。

在查询设计器 “筛选”选项卡中指定查询条件。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 39: 第  5 章  关系数据库 标准语言 SQL

此步相当于 SQL Select 命令中的 Order By 子句。

在查询设计器 “排序依据”选项卡中指定排序字段和排序方式。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 40: 第  5 章  关系数据库 标准语言 SQL

此步相当于 SQL Select 命令中的 Group By 子句。

在查询设计器 “分组依据”选项卡中定义分组字段和分组的限定条件。

分组:将记录按照分组字段分类,分组字段值相同的记录压缩为一条记录,从而实现基于一组记录的统计计算。

分组经常与 Count 、 Sum 、 Avg 、 Max 、 Min 函数配合使用。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 41: 第  5 章  关系数据库 标准语言 SQL

在查询设计器 “杂项”选项卡中指定是否重复的记录,或指定显示前几项记录。

此步相当于 SQL Select 命令中的 Distinct 子句、 Top 子句。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 42: 第  5 章  关系数据库 标准语言 SQL

在查询设计器中可以根据需要定位查询去向,即查询结果的输出目标或保存方向。

( 1 )浏览:(默认的输出去向)在【浏览】窗口中显示。( 2 )临时表:将查询结果保存在一个命名的临时只读表中。( 3 )表:将查询结果保存在一个命名的表中。( 4 )图形:将查询结果在图形中显示。( 5 )屏幕:在 VFP 主窗口或当前活动窗口中显示查询结果。( 6 )报表:将查询结果输出到一个报表文件( .frx )。( 7 )标签:将查询结果输出到一个标签文件( .lbx )。

§5.3.2 用“查 询 设 计 器 ”创 建 查 询 §5.3.2 用“查 询 设 计 器 ”创 建 查 询

Page 43: 第  5 章  关系数据库 标准语言 SQL

查询文件建立好了以后,要看到查询结果就必须执行查询。执行查询的方法有以下几种:1 )打开查询文件后,单击主窗口“常用”工具栏上的“!”运行按钮。2 )打开查询文件后,选择主窗口“查询”菜单中的“运行查询”命令。 3 )打开查询文件后,在“查询设计器”窗口中右击,在快捷菜单中选取“运行查询”。4 )在主窗口“程序”菜单中选择“运行”命令,然后在弹出来的对话框中选择要运行的查询文件。5 )在命令窗口中输入: DO 查询名 .QPR 。

§5.3.3 保 存 并 运 行 查 询§5.3.3 保 存 并 运 行 查 询

二、运行查询

Page 44: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.4 单 表 查 询 举 例【例 1 】使用查询设计器完成前面的查询——

所有 1980 年以后出生的女教师,查询结果按编号升序排列。

Page 45: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.5 两 表 分 组 查 询 举 例【例 2 】按职称分组查询各职称人数及不同职称的平均实发工资。

Page 46: 第  5 章  关系数据库 标准语言 SQL

§5.3 用“查 询 设 计 器 ”创 建 查 询

§5.3 用“查 询 设 计 器 ”创 建 查 询

要使用查询设计器创建查询,首先我们要了解创建查询的一般步骤:

1 )启动“查询设计器” ;

2 )指定被查询的数据表或视图;

3 )选择出现在查询结果中的字段;

4 )设置查询条件;

5 )设置排序或分组来组织查询;

6 )指定查询去向;

7 )运行查询;

8 )保存查询。

小结:创建查询的步骤

Page 47: 第  5 章  关系数据库 标准语言 SQL

§5.3.6 查 询 设 计 器 的 局 限性

§5.3.6 查 询 设 计 器 的 局 限性

使用“查询设计器”只能建立比较规范的简单查询,

而复杂的查询,如嵌套查询无法利用“查询设计器”完成,需使用 SQL Select命令实现 。

例如:利用“人事表”查询年龄大于女职工平均年龄的女职工的编号、姓名与年龄。

Sele 编号 , 姓名 , Year(Date())- Year( 出生日期 ) as 年龄 from 人事表 ;

Where 性别 ="女 " And (Year(Date())- Year( 出生日期 ))> ;

(Sele avg(Year(Date())- Year( 出生日期 )) as 平均年龄 From 人事表 Where 性别 ="女 ")

保存 SQL Select 查询:

先保存为文本文件,再对其重命名为 .qpr 查询文件,但打开时因“查询设计器”只能处理简单查询,只能用编辑器打开后运行。

Page 48: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.7 单 表 查 询 练 习

1. 查询 order 表中所有未付款的订单信息,保存为“未付款订单”;

Page 49: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.8 两 表 综 合 查 询练 习

2.每张订单中有订货数量,而在产品信息中有每种产品的价格,查询每张订单的价钱;

Page 50: 第  5 章  关系数据库 标准语言 SQL

§ 5.3.9 复 杂 查 询 练 习

3. 查询每种产品一共有多少个订单?订货数量是多少?订单的总金额是多少?

Page 51: 第  5 章  关系数据库 标准语言 SQL

§5. 3 SQL 的数据定义§5. 3 SQL 的数据定义5.3.1 创建表

1.基本语法命令格式:CREATE TABLE|DBF < 表文件名 > (字段名 1 字段类型 [ 字段宽度 [ ,小数位数 ] );(字段名 2 字段类型 [ 字段宽度 [ ,小数位数 ] )…… ]

其中,各字段的类型必须用字母,字段类型分为七种:字符( C )型、数值( N )型、日期( D )型、逻辑( L ) 型、备注( M )型、通用( G )型;字段宽度:字符型 C ( <254 ),数值型 N ( <20 ),逻辑型 L ( 1 ),日期型 D ( 8 ),备注型M ( 4 ),通用型 G ( 4 );数值型宽度 =符号位 +整数 +小数点 +小数;D 、 L 、 M 、 G型的宽度可缺省。 2.功能创建一个给定每个字段的名称、类型、宽度、小数位数等参数的新表( .DBF )。

Page 52: 第  5 章  关系数据库 标准语言 SQL

3.实例

§5.3.1 创建表§5.3.1 创建表

【例 5-1 】利用 CREATE TABLE 命令创建人事主表 rsb 和工资表副表 gzb 结构。创建 rsb 表结构的命令:

CREATE TABLE rsb( 编号 c(6), 姓名 c(8),性别 c(2), 出生日期 d(8), 工作日期 d(8), 部门代码 c(5), 职称 c(10),婚否 l, 简历 m,相片 g)

创建 gzb 表结构的命令:

CREATE TABLE gzb ( 编号 c(6), 基本工资 n(8,2),岗位津贴 n(7,2), 奖励 n

(7,2), 水电 n(7,2), 保险 n(7,2))

Page 53: 第  5 章  关系数据库 标准语言 SQL

【例 5-2 】建立“人事管理”数据库,并在其中建立父表人事表 rsb 和子表工资表 gzb ,编号设置为主索引,性别字段的默认值为“男”,用 Check 说明基本工资字段的有效性规则, Error 说明出错信息, rsb与 gzb之间通过编号进行关联。

§5.3.1 创建表§5.3.1 创建表

若创建数据表,则先创建数据库: crea data rsgl

Crea Tabl rsb ( 编号 c(6) primary key, 姓名 c(8),性别 c(2) default "男 ", 出生日期 d(8), 工作日期 d(8), 部门代码 c(5), 职称 c(10),婚否 l default .T. , 简历 m,相片 g)

创建 gzb 表结构的命令:

Crea Tabl gzb (;

编号 c(6) primary key ,;

基本工资 n(8,2) Check ( 基本工资 >=1000 and 基本工资 <=3000) ;

Error " 基本工资的范围在 1000——3000之间 ",;

岗位津贴 n(7,2), 奖励 n(7,2), 水电 n(7,2), 保险 n(7,2) , Foreign Key 编号 Tag 编号 References rsb)

Page 54: 第  5 章  关系数据库 标准语言 SQL

1.增加字段ALTER TABLE 表名 ADD 字段名类型(长度) 2.添加索引ALTER TABLE 表名 ADD PRIMARY KEY |UNIQ 字段名 TAG 文件名3.修改字段的类型和宽度ALTER TABLE 表名 ALTER 字段名类型(长度)4.设置字段有效性规则和默认值(必须两步完成)ALTER TABLE 表名 ALTER 字段名 SET CHECK 字段有效规则 ERR

OR“错误信息” ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值

§5.3.2 修改表结构§5.3.2 修改表结构

Page 55: 第  5 章  关系数据库 标准语言 SQL

5.给字段重命名ALTER TABLE 表名 RENAME 字段名 TO 新字段名6.删除字段ALTER TABLE 表名 DROP 字段名7.删除索引ALTER TABLE 表名 DROP UNIQUE TAG 索引名ALTER TABLE 表名 DROP PRIMARY KEY

8.删除字段有效性规则ALTER TABLE 表名 ALTER 字段名 DROP CHECK

§5.3.2 修改表结构§5.3.2 修改表结构

Page 56: 第  5 章  关系数据库 标准语言 SQL

1.基本语法

DROP TABLE 表名

2.功能

直接从磁盘上删除指定的表文件。

若要 删除数据表,最好是在当前打开的数据库中删除。

§5.3.3 删 除 表§5.3.3 删 除 表

Page 57: 第  5 章  关系数据库 标准语言 SQL

§5.4 SQL 的数据 插入操作 §5.4 SQL 的数据 插入操作

5.4.1 插入记录1.基本语法INSERT INTO < 表名 > [ ( < 字段名 1> [,< 字段名 2>,…] ) ]; VALUES ( < 表达式 1> [,< 表达式 2>,…] )2.功能向指定的表末尾追加一条新记录,新记录有关字段的值由 VALUES 子句中的表达式指定,未指定值的字段将取空值。3.实例

【例 5-4 】利用 INSERT-SQL 命令向 rsb 表追加一条新记录:编号“ 101001” ,姓名“王小明”。

INSERT INTO rsb (编号 , 姓名) VALUE (“ 101001”,“王小明”)提示:该 INSERT-SQL 命令等效于下列命令序列:

USE rsb

APPEND BLANK

REPLACE 编号 WITH "101001", 姓名 WITH "王小明 "

Page 58: 第  5 章  关系数据库 标准语言 SQL

1.基本语法UPDATE < 表名 >;SET < 字段名 1> =< 表达式 1>[,< 字段名 2> =< 表达式 2>,…][WHERE〈条件〉 ]2.功能根据 SET 子句中指定表达式的值,更新指定表中满足指定条件的记录中指定字段的值。3.实例

§5.4.2 更 新§5.4.2 更 新

【例 5- 5 】 利用 UPDATE-SQL 命令将 gzb 表中编号为“ 101001” 的基本工资提高 100元。

UPDATE gzb;

SET 基本工资 = 基本工资 +100 WHERE 编号 ="101001 "

提示:该 UPDATE-SQL 命令等效于下列命令序列:

USE gzb

REPL ALL 基本工资 with 基本工资 +100 for 编号 ="101001

Page 59: 第  5 章  关系数据库 标准语言 SQL

1.基本语法DELETE FROM < 表名 > [WHERE〈条件〉 ]

2.功能将指定表中满足指定条件的记录加上删除标记。若要真正从表中删除,还必须使用 PACK 命令。3.实例

§ 5.4.3 删 除 记 录§ 5.4.3 删 除 记 录

【例 5-6 】 利用 DELETE-SQL 命令将 rsb 表中 1949 年以前出生的职工记录删除。

DELETE FROM rsb WHERE YEAR( 出生日期 )<1949

PACK

提示:该 DELETE-SQL 命令等效于下列命令序列:

USE rsb

DELETE ALL FOR YEAR( 出生日期 )<1949

PACK

Page 60: 第  5 章  关系数据库 标准语言 SQL

§5.5 视 图 §5.5 视 图

5.5.1 视图基本概念

视图是从一个或几个基本表导出的表,它本身不独立存储在数据库中,即数据库中只存储视图的定义,不存储对应的数据,因此视图是一个虚表。

在用户观点里,视图和基本表一样,都是关系,用户可以用 SQL 语言对视图( View )和基本表( Base Table )进行查询等操作。视图的概念具有很多优点,主要有:

1 )视图对于数据库的重构造提供了一定程度的逻辑独立性。

2 )简化了用户观点。

3 )视图机制使不同的用户能以不同的方式对待同一数据。

4 )视图机制对机密数据提供了自动的安全保护功能。

Page 61: 第  5 章  关系数据库 标准语言 SQL

1.基本语法CREATE VIEW 视图名 [ (字段名 [ ,字段名 ] ) ]

AS 子查询 [WITH CHECK OPTION] ;2.功能把视图的定义存入数据字典中。定义中的 SELECT 语句并不执行,定义中的任选项WITH CHECK OPTION 表示对视图进行 UPDATE 和 INSERT 操作时要保证更新或插入的行满足视图定义中的谓词条件。3.实例

§5.5.2 视 图 的 创 建§5.5.2 视 图 的 创 建

【例 5-25 】建立部门代码为“ A02” 的职工信息视图表。

Crea View zgxxA02;

AS SELECT 编号 , 姓名 , 工作日期 ;

FROM rsb;

WHERE 部门代码 =“A02”

Page 62: 第  5 章  关系数据库 标准语言 SQL

【例 5-27 】 在视图 zgxxA02 中查询姓为“李”的编号,姓名和工作日期。

§5.5.3 视 图 的 查 询§5.5.3 视 图 的 查 询

视图定义后,用户可以如同基本表那样对视图查询。

SELECT 编号 , 姓名 , 工作日期 ;

FROM zgxxA02;

WHERE 姓名 LIKE "李%"

Page 63: 第  5 章  关系数据库 标准语言 SQL

对视图的更新最终要转换成对基本表的更新(这里的更新,指 IN

SERT,UPDATE 和 DELETE三类操作)例如:

§5.5.3 视 图 的 更 新§5.5.3 视 图 的 更 新

UPDATE zgxxA02;

SET 姓名 ="李小龙 ";

WHERE 编号 =" 000004 "

将转换成对基本表 S 的更新:

UPDATE rsb;

SET 姓名 ="李小龙 ";

WHERE 编号 =" 000004 "AND 部门代码 =“A02"

【例 5-28 】 通过视图 zgxxA02 将编号为 000004 的职工姓名改为李小龙。

Page 64: 第  5 章  关系数据库 标准语言 SQL

【例 5-29 】 通过视图 zgxxA02 ,插入李小明的信息(编号 =”000012”,

姓名 =“李小明”,工作日期 =08/08/99 )

§5.5.4 视图的更新§5.5.4 视图的更新

INSERT INTO zgxxA02;

VALUES (“ 000012”,“李小明” ,08/08/99 )

将转换成对基本表的插入:

INSERT INTO rsb ;

VALUES ( " 000012 ","李小明 ",08/08/99 )

Page 65: 第  5 章  关系数据库 标准语言 SQL

1.基本语法

DROP VIEW 视图名

2.功能

删除指定视图,从而删除在数据字典中的定义。

§5.5.2 视 图 的 删 除§5.5.2 视 图 的 删 除

【例 5-26 】 删除视图 zgxxA02 。

DROP VIEW zgxxA02

Page 66: 第  5 章  关系数据库 标准语言 SQL

§6.2 视图§6.2 视图

§ 6.2.1 创建视图

§ 6.2.2 使用视图

§ 6.2.3 查询与视图的区别

Page 67: 第  5 章  关系数据库 标准语言 SQL

§6.2 视 图§6.2 视 图

是基于数据库表的一种根据用途定制的且可更新的数据集合, 是一个虚拟表。 它具备了表和查询的特点并保存在数据库中,可像数据库表 一样接受用户的查询。 用户可以利用视图从一个或多个相关联的表中提取有用信息。 用户可以利用视图来更新表中的数据,并将更新结果永久保 存在磁盘上。

视图的概念

“ 视图”,英文单词是“ view” ,观察表中信息的一个窗口。

Page 68: 第  5 章  关系数据库 标准语言 SQL

视图是一个定制的虚拟表,是基于数据库的。因此,创建视图前必须有数据库,其数据可以来源于数据库中的一个或多个表,或者其他视图。

视图只能在数据库中定义,不能独立存在, 视图本身并不真的具有数据,视图中的数据是从数据库表中引用的,

数据关闭后视图就不再包含数据。 只在数据词典中存储视图的定义。

VFP 的视图可以分为本地视图和远程视图。本地视图的数据源是那些没有放在服务器上的当前数据库中的 VFP 表。远程视图的数据源则是来自远程数据,既可以是放在服务器上的数据库表,又可是来自远程的数据源。

§6.2 视 图§6.2 视 图

Page 69: 第  5 章  关系数据库 标准语言 SQL

创建视图 单表视图:只需要添加一个表到视图 多表视图:需要添加多个表到视图中,

且需要定义各数据表之间的联接关系 可以通过视图向导、视图设计器和命令方式来创建视图。

§ 6.2.1 创 建 视 图

举例:在“人事管理”数据库的“人事表”及“工资表”中,选取编号、姓名、应发工资与实发工资 4个字段,组成一个名为“工资”的视图。

Page 70: 第  5 章  关系数据库 标准语言 SQL

视图设计器

§6.2.1 建立视图设计器§6.2.1 建立视图设计器

“ 视图设计器”与“查询设计器”很相似。惟一的区别是增加了“更新条件”选项卡。一旦进入“视图设计器”,系统自动增加了“查询”下拉式菜单,其菜单项与“查询设计器”的下拉式菜单类似。

Page 71: 第  5 章  关系数据库 标准语言 SQL

§ 6.2.2 使 用 视 图可用视图来显示和更新数据

一、视图的打开、关闭及显示

打开视图: use 视图名

关闭视图: use

在打开视图前,应先打开包含此视图的数据库;

打开视图后,可浏览视图内容;

也可在“数据库设计器”中激活视图,通过“数据库”菜单下的 “浏览”命令来显示视图内容。

Page 72: 第  5 章  关系数据库 标准语言 SQL

(1) 视图可以提供附加的安全层 由于视图是建立在基本表之上的一种表,所以用户在视图上不能直接操作基本表,这样就很安全。例如,给每个系的专业辅导员建立该专业的花名册,则该专业辅导员就不能看到其它专业的学生信息。(2) 视图可以隐蔽数据的复杂性 数据库是由许多表组成的,操作时可以从几个表中抽取数据。(3) 视图有助于命名简洁 在建立数据库时,一些表的字段名可能很复杂,在建立视图时,可以换名以适应操作。在视图中换名并不改变其在表中的定义。

§6.2.2 视 图 的 特 点§6.2.2 视 图 的 特 点

Page 73: 第  5 章  关系数据库 标准语言 SQL

(4) 视图带来更改灵活性 利用视图,可更改组成视图的一个或多个表的内容而不用更改应用程序。 (5) 使用视图更新数据库 使用视图 不仅可以查询数据库中的数据,更重要的是可以通过视图更新数据库信息。这一点非常重要,也是视图的突出优点之一。

§6.2.2 视 图 的 特 点§6.2.2 视 图 的 特 点

Page 74: 第  5 章  关系数据库 标准语言 SQL

1. 视图与查询的比较(1) 相同点 可以从数据源中查找满足一定筛选条件的记录和选定部分字段; 自身不保存数据,它们的查询结果随数据源内容的变化而变化。(2) 不同点 视图可以更新数据源表,而查询不能; 视图可访问远程数据,而查询不能直接访问,需借助于远程视图方可; 视图只能在数据库中存在,而查询不是数据库的组成部分,它是一个独立的程序文件; 视图只能从数据库表中查找数据,而查询可以从自由表、数据库表以及多个数据库的表中查找数据。

§6.2.3 视 图 与 查 询 的 区 别§6.2.3 视 图 与 查 询 的 区 别

Page 75: 第  5 章  关系数据库 标准语言 SQL

2. 视图与表的比较

(1) 相同点 可以作为查询与其它视图的数据源; 逻辑结构相似,即内容由记录组成,记录由字段组成。

(2) 不同点 视图中不保存数据,是虚拟表。它只是引用了数据库中的表,取这些表的某些字段,按照表之间的一定关系,重新加以组合。

§6.2.3 视 图 与 表 的 区 别§6.2.3 视 图 与 表 的 区 别

Page 76: 第  5 章  关系数据库 标准语言 SQL

【例 6-3 】 在“人事管理”数据库的人事表中,选取编号、姓名、性别和部门代码 4个字段,组成一个名为“视图 1” 的视图,其中使其部门代码字段可以更新。

练 习 练 习