第 10 章 关系数据库标准语言 sql

52
1 10 10 第 第第第第第第第第第 第 第第第第第第第第第 SQL SQL 10-1 SQL 第第第第 225 10-2 第第第第 226 10-3 第第第第 230 10-4 第第第第 234

Upload: xaria

Post on 23-Jan-2016

237 views

Category:

Documents


0 download

DESCRIPTION

第 10 章 关系数据库标准语言 SQL. 10-1 SQL 语言简介 225 10-2 数据定义 226 10-3 数据操作 230 10-4 数据查询 234. 10-1 SQL 语言简介. 10-1-1 SQL 语言的规则 225 10-1-2 SQL 语言的特点 225. 10-1-1 SQL 语言的规则. 支持 SQL 语言的数据库是由表组成,它用一个或多个关系模式定义。 一个 SQL 表由行集合构成,一行是由多列构成,每列对应一个数据项。 - PowerPoint PPT Presentation

TRANSCRIPT

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

1

第第 1010 章 关系数据库标准语言章 关系数据库标准语言 SQLSQL第第 1010 章 关系数据库标准语言章 关系数据库标准语言 SQLSQL

10-1 SQL 语言简介 225

10-2 数据定义 226

10-3 数据操作 230

10-4 数据查询 234

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

2

10-1 SQL10-1 SQL 语言简介语言简介10-1 SQL10-1 SQL 语言简介语言简介

10-1-1 SQL 语言的规则 225

10-1-2 SQL 语言的特点 225

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

3

10-1-1 SQL10-1-1 SQL 语言的规则语言的规则10-1-1 SQL10-1-1 SQL 语言的规则语言的规则1. 支持 SQL 语言的数据库是由表组成,它用一个或

多个关系模式定义。2. 一个 SQL 表由行集合构成,一行是由多列构成,

每列对应一个数据项。3. 表可以是一个实际存储数据在数据库中的表,也

可以是由视图构成的表的定义。4. 表和存储文件之间的关系可以是一对一也可以是

一对多的关系。5. 用户可以用 SQL 语句对视图和基本表进行查询等

操作。6. SQL 用户可以是应用程序,也可以是终端用户。

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

4

10-1-2 SQL 10-1-2 SQL 语言的特点语言的特点10-1-2 SQL 10-1-2 SQL 语言的特点语言的特点1. 简洁易学 SQL 虽然功能强大,但是只用了 9 个命令动词

完成了核心功能中的数据定义、数据操纵、数据控制,不需要掌握繁琐的语句。 SQL 语言接近英语口语,是面向用户、性能良好的语言,非常简单,容易掌握。

2. 高度集成化 SQL 语言集成了数据定义、数据操纵、数据控制等方面的功能,基本上包括了数据库活动中的各个方面,与非关系模型的数据库语言具有同样简单实用的特点,为用户提供了一个强有力工具。

3. 高度智能化 SQL 语言是一种非过程化、高度智能化的语言,只要用户描述清楚要完成什么功能, SQL 语言就可以将要求提交系统,自动完成全部工作。

4. 高度灵活化 SQL 语言是一种用法高度灵活化的语言,既能以人机交互方式来使用,也可以嵌入到程序开发语言中使用如 PowerBuilder 、 Visual FoxPro 、 Access ,使用方便、灵活。

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

5

10-2 10-2 数据定义数据定义10-2 10-2 数据定义数据定义

10-2-1 表的定义(创建表) 226

10-2-2 修改表的结构 228

10-2-3 删除表 229

10-2-4 视图的定义 230

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

6

10-2-1 10-2-1 表的定义(创建表表的定义(创建表))10-2-1 10-2-1 表的定义(创建表表的定义(创建表))命令格式 :CREATE TABLE | DBF < 表名 1> [NAME < 长表名 >] [FREE](< 字段名 1> < 字段类型 > [(< 宽度 > [, < 小数位数 >])][NULL|NOT NULL][CHECK < 有效性规则 1> [ERROR < 提示信息 1>]][DEFAULT < 默认值 1>][PRIMARY KEY|UNIQUE [< 候选关键字 1> TAG < 标识名 1>]][REFERENCES < 表名 2> [TAG < 标识名 2>]][NOCPTRANS][,< 字段名 2> < 字段类型 > [(< 宽度 > [,< 小数位数 >])]][NULL|NOT NUL

L][ CHECK < 有效性规则 2> [ERROR < 提示信息 2>]][ PRIMARY KEY | UNIQUE [< 候选关键字 2> TAG < 标识名 3>]][, FOREIGN KEY < 外部关键字 4> TAG < 标识名 4> [NODUP]REFERENCES < 表名 3> [TAG < 标识名 5>]]......)| FROM ARRAY < 数组名 >功能:创建一个只有字段没有记录的空数据表。

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

7

【例 10.1 】先创建一个数据库,其库名为“ d:\new book\ 图书管理”,再创建一个名为“图书 .DBF”的数据表,其表结构用关系模式表示为:图书 ( 图书编号 C(6), 书名 C(20), 出版单位 C(20), 单价 Y, 库存量 I ) ,并设置图书编号为主键。

CREATE DATABASE "d:\new book\ 图书管理 " CREATE TABLE "d:\new book\ 图书 " ( 图书编号 C(6); PRIMARY KEY, 书名 C(20), 出版单位 C(20), 单价 Y,库存量 I)

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

8

【例 10.2 】创建一个名为“借书 .DBF” 的数据表,其表结构用关系模式表示为:借书 ( 图书编号 C(6), 学号 C(8), 借阅日期 D, 归还日期 D,) ,并设置与上题“图书”表通过字段图书编号建立连接。

CREATE TABLE "d:\new book\借书 " ( 图书编号 C(6),学号 C(8), 借阅日期 D, 归还日期 D,; FOREIGN KEY 图书编号 TAG 图书编号 REFERENCES 图书 )

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

9

10-2-2 10-2-2 修改表的结构修改表的结构10-2-2 10-2-2 修改表的结构修改表的结构1 .命令格式1: ALTER TABLE < 表名 1>

ADD | ALTER [COLUMN] < 字段名 1> 字段类型 > [(< 宽度 > [,< 小数位数 >])]

[NULL | NOT NULL][CHECK < 有效性规则 1> [ERROR < 出错信息 1>]][DEFAULT < 默认值 1>][PRIMARY KEY | UNIQUE][REFERENCES < 表名 2> [TAG < 标识名 1>]][NOCPTRANS][NOVALIDATE]

功能:实现添加新字段 ( 用 ADD) 、修改已有字段 (ALTER) 的字段变量名、数据类型、宽度和完整性约束条件。

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

10

【例 10.3 】对创建的“图书”数据表增加一个“作者”字段,其数据类型为字符型,字段长度为 8。

ALTER TABLE "d:\new book\ 图书 " ADD 作者 C(8)

【例 10.4 】 把创建的“图书”表的“出版单位”字

段的宽度改为 30 ,并且给“库存量”字段确定有效性规则,即库存量小于0时显示“库存错误”。

ALTER TABLE "d:\new book\ 图书 " ALTER 出版单位 C(30) CHECK 库存量 >0 Error " 库存错误! "

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

11

2 .命令格式 2 : ALTER TABLE < 表名 >

ALTER [COLUMN] < 字段名 >[NULL | NOT NULL][SET DEFAULT < 默认值 >][SET CHECK < 有效性规则 > [ERROR < 出错信息>]][DROP DEFAULT][DROP CHECK][NOVALIDATE]

功能:修改指定字段的 DEFAULT 、 CHECK 规则,但不影响原有表中的数据。

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

12

【例 10.5 】为“图书”表的“书名”字段增设默认值“请输入书名:”。

ALTER TABLE “d:\new book\ 图书” ALTER 书名 ;

SET DEFAULT "请输入书名: "

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

13

3 .命令格式 3 : ALTER TABLE < 表名 1>

[DROP [COLUMN] < 字段名 1>][SET CHECK < 有效性规则 > [ERROR < 出错信息 >]][DROP CHECK][ADD PRIMARY KEY < 主关键字 > TAG < 标识名 1> [FOR < 条件 1>]][DROP PRIMARY KEY][ADD UNIQUE < 候选关键字 1> [TAG < 标识名 2> [FOR < 条件 2>]]][DROP UNIQUE TAG < 候选标识名 >][ADD FOREIGN KEY [< 外关键字 >] TAG < 标识名 3> [FOR < 条件 3>]REFERENCES < 表名 2> [TAG < 标识名 4>]][DROP FOREIGN KEY TAG < 标识名 5> [SAVE]][RENAME COLUMN < 字段名 2> TO < 字段名 3>][NOVALIDATE]

功能:是对前两个功能的补充和增强,可以修改字段名( RENAME )、删除字段名( DROP ),并且对有效性规则可以进行增加( ADD )、删除( DROP )等。

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

14

【例 10.6 】把“图书”表的“作者”字段该为“作者简介”,再删除 “作者简介”字段。把“借书”表的“图书编号”设为候选关键字。

ALTER TABLE "d:\new book\ 图书 " RENAME COLUMN 作者 TO 作者简介

ALTER TABLE “d:\new book\ 图书” DROP COLUMN 作者简介ALTER TABLE "d:\new book\ 借书 " ADD UNIQUE 图书编号 TAG 编

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

15

10-2-3 10-2-3 删除表 删除表 10-2-3 10-2-3 删除表 删除表 命令格式 :DROP TABLE < 表名 > 功能:直接从磁盘上 <或当前打开的数据库中删除指

定的表文件。【例 10.7 】删除已创建的“图书 .DBF” 数据表。

DROP TABLE "d:\new book\ 图书 "

注意:删除表最好打开相应的数据库,再执行。否则以后会出现错误提示。如果只是想删除一个表中的所有记录,则应使用 DELETE 语句,

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

16

10-2-4 10-2-4 视图的定义视图的定义10-2-4 10-2-4 视图的定义视图的定义命令格式 :CREATE VIEW <视图名 > AS SELECT <查询语句 >功能:按照 SELECT 查询语句创建一个指定视图名的本地视

图或者远程视图。说明:使用当前数据库建立的视图,称为本地视图。如果使当

前数据库之外的数据库建立的视图称为远程视图。【例 10.8 】从前面创建的“学生情况表”表中取得记录来建

立学生信息视图。

OPEN DATABASE "d:\new book\计算机系学生管理 .dbc"CREATE VIEW 学生信息 AS SELECT * FROM学生情况表

说明:“ *” 代表取所有字段。

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

17

10-3 10-3 数据操纵 数据操纵 10-3 10-3 数据操纵 数据操纵

10-3-1 插入记录 23010-3-2 更新记录 23210-3-3 删除记录 233

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

18

10-3-1 10-3-1 插入记录插入记录10-3-1 10-3-1 插入记录插入记录1 .命令格式 1:INSERT INTO 表名〉 [(< 字段名 1> [,< 字段名 2>, ...])] VALUES ( < 表达式 1> [,< 表达式 2>, ...]) 功能 : 在指定的表文件末尾追加一条记录。各字段值为 V

ALUES 中对应的各表达式值。

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

19

【例 10.9 】向“学生情况表”数据表中添加一条记录,其学号是“ 20111” ,姓名是“王英”,性别是“女”,出生日期是“ 06/18/1986” 。

INSERT INTO "d:\new book\ 学生情况表 "( 学号 , 姓名 , 性别 ,;出生日期 ) VALUES ("20111"," 王英 "," 女 ",ctod("06/18/1986"))BROWSE

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

20

2 .命令格式 2:INSERT INTO 〈表名〉 FROM ARRAY 〈数组名 |FROM

MEMVAR功能:为指定的表添加一条记录,用数组或同名的内存变

量的值赋值给记录的各字段。

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

21

【例 10.10 】先定义数组 CJ(4) ,它元素值分别为 (“20100”,“丁丁” ,80,90) ,然后再把该数组值插入到“学生成绩表”表中。

DIMENSION CJ(4)CJ(1)= "20100"CJ(2)= "丁丁 "CJ(3)=80CJ(4)=90INSERT INTO "d:\new book\学生成绩表 " FROM ARRAY CJ

BROWSE

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

22

【例 10.11 】先定义内存变量,分别为学号 =“22111” ,姓名 =“黄红”,英语 =95 ,电子线路 =85 ,然后再把内存变量值插入到“学生成绩表”中。

学号 ="22111" 姓名 ="黄红 "英语 =95电子线路 =85INSERT INTO "d:\new book\学生成绩表 " FROM MEM

VAR BROWSE

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

23

10-3-2 10-3-2 更新记录更新记录10-3-2 10-3-2 更新记录更新记录命令格式 :UPDATE [ 〈数据库 ! 〉 ] 〈表名〉SET 〈字段名 1 〉 = 〈表达式〉 [ ,〈字段名 2 〉 = 〈表达

式〉… ][WHERE 〈条件〉 ]功能 : 更新指定表文件中满足WHERE条件子句的记录数据。

其中 SET子句用于指定字段和修改的值,如果省略WHERE子句,则表示表中所有的记录。

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

24

【例 10.12 】将“学生成绩表”表中,学号是“ 22111” 的

记录,其高等数学成绩改为 70 ,大学物理改为 90 ,英语成

绩再加上 1分。

UPDATE "d:\new book\学生成绩表 " SET 高等数学 =70,;

大学物理 =90, 英语 =英语 +1 WHERE 学号 ="22111" BROWSE

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

25

10-3-3 10-3-3 删除记录删除记录10-3-3 10-3-3 删除记录删除记录命令格式 :DELETE FROM [ 数据库名 !] 〈表名〉 [WHERE

〈条件 1 〉 [AND | OR 〈条件 2 〉 ...]]功能 : 从指定的表中逻辑删除满足WHERE子句条件

的所有记录。如果要物理删除还需执行 PACK命令,逻辑删除的记录才真正地从物理上删除。可以用 RECALL 命令取消逻辑删除。如果没有WHERE 字句则删除表中的全部记录。说明 : 这里的删除是逻辑删除,即在删除的记录前加上一个逻辑标记

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

26

【例 10.13 】逻辑删除“学生成绩表”表中,学号是“ 22111” 的记录。

DELETE FROM "d:\new book\学生成绩表 " WHERE 学号 ="22111"

BROWSE

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

27

10-4 10-4 数据查询数据查询10-4 10-4 数据查询数据查询10-4-1 简单查询 23510-4-2连接查询 23610-4-3带特殊运算符的条件查询 23810-4-4排序查询 24010-4-5分组与计算查询 24110-4-6别名与多表查询 24210-4-7 嵌套查询 24210-4-8查询结果处理 243

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

28

10-4-1 10-4-1 简单查询简单查询10-4-1 10-4-1 简单查询简单查询1. 无条件查询命令格式 :SELECT [ALL|DISTINCT] < 选项 1> AS < 显示列名 1

> , ... < 选项 n> AS < 显示列名 n>FROM 表名说明 :① < 选项 n> 可以是字段名、常量、表达式、函数,如

AVG (求均值)、 SUM (求和)、 COUNT ( * )等指定查询的内容。

② 如果要查询所有字段,可以使用通配符“ *” 。

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

29

【例 10.14】查询“学生情况表”表中,所有学生的记录信息。

SELECT * FROM "d:\new book\ 学生情况表 "

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

30

2. 条件查询命令格式 :SELECT [ALL|DISTINCT] < 选项 1> AS < 显示列名 1

> , ... < 选项 n> AS < 显示列名 n>FROM < 表名 > WHERE < 条件表达式 >

说明 :条件表达式可以是简单表达式或任意复杂的复合表达式。最常用的是比较运算符,如: =、 <>、!=、==、 >、 >=、 <、 <=,逻辑运算符NOT 、 AND 、OR 。

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

31

【例 10.15 】查询“学生情况表”表中,所有女学生的学号,姓名,年龄。

SELECT 学号 ,姓名 ,year(date())-year( 出生日期 ) AS "年龄 ";

FROM "d:\new book\学生情况表 " WHERE 性别 = "女 "

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

32

10-4-2 10-4-2 连接查询连接查询10-4-2 10-4-2 连接查询连接查询1. 内部连接子句命令格式:FROM 〈表名 1 〉 INNER JOIN 〈表名 2 〉 ON 〈连接条

件〉【例 10.16 】从“学生情况表”和“学生成绩表”中查询出所

有学生的学号、姓名、性别、高等数学和英语成绩。 SELECT 学生情况表 .学号 ,学生情况表 .姓名 , 性别 , 高等数学 , 英

语 ;FROM 学生情况表 INNER JOIN 学生成绩表 ON 学生情况表 .学号

= 学生成绩表 .学号

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

33

2. 外连接( 1 )左连接子句命令格式:FROM 〈表名 1 〉 LEFT JOIN 〈表名 2 〉 ON 〈连

接条件〉说明:查询结果中返回 < 表名 1> 中所有的记录,如

果 < 表名 2> 中某条记录满足 < 连接条件 > , 则返回相应值,否则返回空值 NULL 。

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

34

【例 10.17 】用左连接的方式查询出“学生情况表”所有记录的学号、姓名、性别以及对应高等数学、大学物理和英语成绩。

SELECT 学生情况表 .学号 ,学生情况表 .姓名 , 性别 , 高等数学 ,;

大学物理 , 英语 FROM 学生情况表 LEFT JOIN 学生成绩表 ;ON 学生情况表 .学号 = 学生成绩表 .学号

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

35

( 2 )右连接子句命令格式:FROM 〈表名 1 〉 RIGHT JOIN 〈表名 2 〉

ON 〈连接条件〉说明:与左连接相反,查询结果中返回 <表名

2> 中所有的记录,如果 <表名 1> 中某条记录满足 <连接条件 >,则返回相应值,否则返回空值NULL 。

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

36

【例 10.18 】用右连接的方式做 10.17题。SELECT 学生情况表 .学号 ,学生情况表 .姓名 , 性别 ,

高等数学 , 大学物理 , 英语 FROM 学生情况表 RIGHT JOIN 学生成绩表 ON 学生情况表 .学号 = 学生成绩表 .学号

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

37

( 3 )完全连接子句命令格式:FROM 〈表名 1 〉 FULL JOIN 〈表名 2 〉 ON 〈连

接条件〉说明:完全连接是左连接和右连接的综合,先

进行右连接,然后再进行左连接。不满足连接条件则为空值NULL 。查询结果包含两个表中的所有纪录。

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

38

【例 10.19 】用完全连接的方式做 10.17题。SELECT 学生情况表 .学号 ,学生情况表 .姓名 , 性别 ,

高等数学 , 大学物理 , 英语 ; FROM 学生情况表 FULL JOIN 学生成绩表 ON 学生情况表 .学号 = 学生成绩表 .学号

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

39

10-4-3 10-4-3 带特殊运算符的条件查询带特殊运算符的条件查询10-4-3 10-4-3 带特殊运算符的条件查询带特殊运算符的条件查询1. IN 运算符查找出 IN所指定的值的记录。【例 10.20 】查询“学生情况表”中男生的所有信息。SELECT * FROM 学生情况表 WHERE 性别 IN ("男 ")

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

40

2 . Like 运算符 将 LIKE指定的字符串样式的记录查找出来。注意:通配符“%”表示 0至多个字符,“—”表示

一个字符。【例 10.21 】查询“学生情况表”中姓“王”的学生

的记录信息。SELECT * FROM 学生情况表 WHERE 姓名 LIKE

"王%"

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

41

3 . BETWEEN…AND 运算符 查询数值在指定的范围之内的记录。也叫区间运算符。【例 10.22 】从“学生成绩表”和“学生情况表”中查找出

高等数学在 70 到 85 之间的男同学的学号、姓名、性别和高等数学信息。

SELECT DISTINCT 学生成绩表 .学号 ,学生成绩表 .姓名 ,;性别 , 高等数学 FROM 学生成绩表 ,学生情况表 ;WHERE 高等数学 BETWEEN 70 AND 85 AND 性别 ="男 "

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

42

4 . IS NULL 运算符 该运算符主要是测试字段是否为空值。【例 10.23 】查询“学生情况表”中的所有字段是否

为空值。SELECT 学号 , 性别 FROM 学生情况表 WHERE 性别 IS NU

LL

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

43

10-4-4 10-4-4 排序查询排序查询10-4-4 10-4-4 排序查询排序查询子句命令格式:ORDER BY < 排序列名 1> [ASC | DESC] [,<

排序列名 2> [ASC | DESC]说明:当有多个 < 排序列名 > 时,它们之间应该用逗号隔开,先按第一个排序,对第一个排序相同的记录根据第二个列名进行排序,以此类推。

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

44

【例 10.24 】:按照高等数学降序,大学物理降序列出所有学生的成绩信息。

SELECT * FROM 学生成绩表 ORDER BY 高等数学 DESC, 大学物理 DESC

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

45

10-4-5 10-4-5 分组与计算查询分组与计算查询10-4-5 10-4-5 分组与计算查询分组与计算查询1. 分组查询子句命令格式:GROUP BY < 分组列名 1> [ , < 分组列名 2>,….]

[HAVING < 筛选条件 >] 说明:根据指定的字段进行分组查询,将具有相同数值的记录合并成一条。 HAVING设置过滤条件,且必须与 GROUP BY 一起使用,指定结果中的组必须满足的条件。 HAVING子句与WHERE子句用法相同。

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

46

【例 10.25 】先查询“学生选课表”表中所有信息,然后再按课程号分组,最后查找课程号为 102 的学生的记录,并且按成绩降序排列。

SELECT * FROM 学生选课表SELECT 课程号 , COUNT(课程号 ) FROM 学生选课

表 ; GROUP BY 课程号SELECT * FROM 学生选课表 WHERE 课程号 =102;

ORDER BY 成绩 DESC

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

47

2. 计算查询【例 10.26 】从“学生选课表”中查找选修课程 2门以及 2门以上的学生的学号,累计学分,求平均成绩。

SELECT 学号 ,SUM(学分 ) AS 累计学分 ,AVG( 成绩 ); AS 平均成绩 FROM 学生选课表 GROUP BY 学号 ; HAVING COUNT(课程号 )>=2

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

48

10-4-6 10-4-6 别名与多表查询别名与多表查询10-4-6 10-4-6 别名与多表查询别名与多表查询子句命令格式:FROM < 表名 1> < 别名 1> [ , < 表名 2> < 别名 2>,

…]说明:给表定义别名以后就不需要用 表名 . 字

段名 来引用,而只需用别名 . 字段名来引用,比较简便。

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

49

【例 10.27 】定义“学生情况表”的别名为 ST ,定义“学生成绩表”的别名为 CJ,查询出每个学生的学号,姓名,性别,英语,电子线路成绩。

SELECT ST.学号 ,ST.姓名 , 性别 ,CJ. 英语 ,CJ.电子线路 ;

FROM 学生情况表 ST, 学生成绩表 CJ; WHERE ST.学号 =CJ.学号

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

50

10-4-7 10-4-7 嵌套查询嵌套查询10-4-7 10-4-7 嵌套查询嵌套查询 嵌套查询就是在一个查询中有多个 SELECT 语句,用一个SELECT 语句查询结果作为另外一个 SELECT 语句的筛选条件。【例 10.28 】利用“学生情况表”和“学生成绩表”查询所

有高等数学 >=80 的女生的姓名,高等数学,英语,电子线路成绩。

SELECT ST.姓名 ,ST. 性别 ,CJ. 高等数学 ,CJ. 英语 ,CJ.电子线路 ;

FROM 学生情况表 ST, 学生成绩表 CJ ;WHERE ST.学号 IN (SELECT 学号 FROM 学生成绩表 ;WHERE 高等数学 >=80) AND ST.学号 =CJ.学号 AND 性别="女 "

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

51

10-4-8 10-4-8 查询结果处理查询结果处理10-4-8 10-4-8 查询结果处理查询结果处理子句命令格式:INTO < 目标 >|TO FILE < 文件名 >[ADDITIVE]|TO PRINTER

[PROMPT]|TO SCREEN【例 10.29 】先定义一个名为 CXJG(20) 的数组,把示例 10.2

7 的查询结果存入其中。DIMENSION CXJG(20) SELECT ST.姓名 ,ST. 性别 ,CJ. 高等数学 ,CJ. 英语 ,CJ.电子线路 ;

FROM 学生情况表 ST, 学生成绩表 CJ;WHERE ST.学号 IN (SELECT 学号 FROM 学生成绩表 ;WHERE 高等数学 >=80);AND ST.学号 =CJ.学号 AND 性别 ="女 " ;INTO ARRAY CXJG

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

52

【例 10.30 】把示例 10.28的查询结果存入名为 ABC.TXT 文件中。

SELECT ST.姓名 ,ST. 性别 ,CJ. 高等数学 ,CJ. 英语 ,CJ.电子线路 ;

FROM 学生情况表 ST, 学生成绩表 CJ ;WHERE ST.学号 IN (SELECT 学号 FROM 学生成绩表 ;WHERE 高等数学 >=80) AND ST.学号 =CJ.学号 AND 性别="女 ";

TO FILE ABC.TXT