查询视图ppt课件

上传人:F****n 文档编号:88408286 上传时间:2019-04-26 格式:PPT 页数:87 大小:817.50KB
返回 下载 相关 举报
查询视图ppt课件_第1页
第1页 / 共87页
查询视图ppt课件_第2页
第2页 / 共87页
查询视图ppt课件_第3页
第3页 / 共87页
查询视图ppt课件_第4页
第4页 / 共87页
查询视图ppt课件_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《查询视图ppt课件》由会员分享,可在线阅读,更多相关《查询视图ppt课件(87页珍藏版)》请在金锄头文库上搜索。

1、第四章,关系数据库标准语言SQL,本讲内容,SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能,SQL是结构化查询语言 STRUCTURED QUERY LANGUAGE 的缩写,可以说查询是SQL的最主要的组成部分,但并不是它的全部, SQL还包含数据定义、数据操纵和数据控制功能等部分。 SQL已经成为关系数据库的标准语言 ,所以关系数据库管理系统都支持SQL ,VFP也同样支持SQL。,4.1 SQL 概述 最早的SQL是1986年10月美国ANSI 公布的。随后ISO于1987年6月也正式 采纳它为国际标准,1989年又推出了 SQL98版,1992年又推出了SQL

2、92新标准版本。 SQL语言具有以下主要特点: (1)SQL是一种结构化的语言,它 包括数据定义、数据查询、数据操纵 和数据控制等方面的功能。 (2) SQL是一种非过程化的语言, 它不需要告诉计算机怎样做,只要用,户描述清楚“做什么”就可以了。 (3)SQL语法比较简单,但语言功能 很强,它很接近英语自然语言,因此 容易学习和掌握。 (4)SQL语言可以直接用命令方式交 换使用,也可以嵌入到程序设计语言中 使用,VFP就是这种方式。 SQL的命令动词 参见表4.1,4.2 查 询 功 能 SQL的核心是查询。SQL的查询命令 也称作SELECT命令,它的基本形式由 SELECT FROM W

3、HERE查询模块组成,多个查询块可以嵌套执行,VFP的 SELECT的语法格式如下: SELECT ALL|DISTINCT TOP nexpr alias. select-itemAS column-name . FROM FORCEdatabasename! table. INNER|LEFTOUTER|RIGHTOUTER databasename!table. WHERE jionconditionAND jioncondition.,SELECT语句中主要短语的含义: SELECT-查询说明语句 FROM-说明查询的数据来自哪些表,可以是单个或多个表 WHERE-说明查询的条件 GR

4、OUP BY-该短语用于对查询结果进行分组,可以利用它进行分组汇总 HAVING短语必须跟随GROUP BY使用 ,用它来限定分组必须满足的条件 ORDER BY-短语用来对查询结果进行排序 以上短语是学习和理解SQL SELECT命令必须掌握的,还有一些短语是VFP特有的。,4.2.1 简单查询 首先从几个简单的查询例子来说明 SELECT、FROM 和 WHERE短语的使用方法。(以下例子均是基于档案表、选课表和课程表),档案表,选课表,课程表,例4.1 从档案表中查出专业名称。 SELECT 专业 FROM 档案表 结果是: 财会 可以看到查询结果中 财会 有重复值,如果要去 金融 掉重

5、复值,需要指定 金融 DISTINCT 短语: 营销 营销 SELECT DISTINCT 专业 FROM 档案表 结果是:,财会 金融 营销 例 4.2 从选课表中查出所有记录。 SELECT * FROM 选课表 结果是: 2004130101 1001 90 2004130101 1002 80 2004130101 1003 72 2004130102 1003 85 2004130102 1004 80 2004140101 1002 65 2004150101 1004 55,命令中的“*”是多字节通配符,表示所有字段,这个命令相当于: SELECT 学号,课程号,成绩 FROM

6、选课表 在数据库中 * 代表多字节通配符,?代表单字节通配符。 例4.3 检索出成绩大于80分的学号和成绩。 SELECT 学号,成绩 FROM 选课表; WHERE 成绩80 结果是: 2004130101 90 2004130102 85 这里的WHERE短语是查询条件,查询条件条件可以是任意复杂的逻辑表达式。,例4.4 检索出课程号为“1002”或“1004”,并且成绩小于75分的学号和成绩。 SELECT 学号,成绩 FROM 选课表; WHERE 成绩75 AND ; (课程号=1002 OR 课程号=1004) 结果是: 2004140101 50 2004150101 55 前面

7、的几个例子在FROM之后只指定了一个关系,如果有WHERE条件子句,系统首先根据指定的条件依次检验关系中的每个记录,如果没有指定WHERE子句,则不进行检验,然后选出满足条件的记录。,4.2.2 简单的联接查询 联接是关系的基本操作之一,联接查询 是一种基于多个关系的查询 。 例4.5 检索出成绩大于80分的学生的姓 名和专业。 SELECT 姓名,专业 FROM ; 档案表,选课表 WHERE (成绩80) ; AND (档案表.学号=选课表.学号) 结果是: 李洪昆 财会 王倩 财会 这里所要求检索的内容分别来自于选课表和档案表两个表,其 中的“档案表.学号=选课表.学号”是联接条件。 “

8、.”是关系联接符。,例 4.6 检索出成绩等于80分的学生选修的课程名和学分。 SELECT 课程名,学分 FROM ; 课程表,选课表 WHERE 成绩=80 ; AND 选课表.课程号=课程表.课程号 结果是: 计算机基础 2 会计学 4 从上面的例题可以看出,连接条件的两边带不带括号都是可行的。,4.2.3 嵌套查询 嵌套查询是基于多个关系的查询,这类查询的结果出自一个关系,但相关的条件却涉及多个关系。 例4.7检索出成绩大于80分的学生的姓名。 SELECT 姓名 FROM 档案表 WHERE ; 学号 IN (SELECT 学号 FROM ; 选课表 WHERE 成绩80) 结果是:

9、 李洪昆 王倩 可以看到,这个命令中有两个SELECT-FROM-WHERE 查询语句,即内外层查询块。这里的IN相当于集合运算符(属于)。,例 4.8 检索出成绩小于60分的学生的所有信息 SELECT * FROM 档案表 WHERE 学号 ; NOT IN (SELECT 学号 FROM 选课表 ; WHERE 成绩=60) 结果是: 2004140101 李义 男 金融 昆明 2004140102 吴文英 女 金融 2004150102 赵西 男 营销 西安 这里的 NOT IN 是不属于运算。,4.2.4 几个特殊的运算符 SQL SELECT 中的特殊运算符有 BETWEENAND

10、 和LIKE 例4.9 检索出成绩在80到100分之间的选课 信息。(BETWEENAND.例题) SELECT * FROM 选课表 WHERE 成绩 ; BETWEEN 80 AND 100 结果是: 2004130101 1001 90 2004130101 1002 80 2004130102 1003 85 2004130102 1004 80,BETWEEN AND 是 “在 和 之间”,该查询条件等价于: (成绩 = 80)AND (成绩 = 80)AND (成绩 =100),( LIKE例题) 从课程表中检索出课程名中带有“学”字的 课程号和课程名。 SELECT 课程号,课程

11、名 FROM 课程表; WHERE 课程名 LIKE “%学%” 结果是: 1001 高等数学 1004 会计学 1005 经济学 LIKE 是字符串匹配运算符,通配符“%”表示0个或多个字符,另外通配符“_”(下划线)表示一个字符。,4.2.5 排序 使用SQL SELECT 可以将查询结果排序 ,排序子句是 ORDER BY 。具体格式是: ORDER BY 字段名 ASC|DESC,字段名 ASC|DESC 其中: ASC表示升序,DESC表示降序 例 4.10 按学分升序检索出选课表中的所有信息。 SELECT * FROM 选课表 ORDER BY 成绩 结果是:,200414010

12、1 1002 50 2004150101 1004 55 2004150101 1005 70 2004130101 1004 72 2004130101 1002 80 2004130102 1004 80 2004130102 1003 85 2004130101 1001 90 其中短语“ORDER BY 成绩”是按升序排列 ,默认情况下按升序排序,ASC可加也可不 加;如果按降序排序,ORDER BY子句后面 的字段名后必须加上DESC。,例4.11先按课程号升序排列,再按学分 降序排列检索出选课表中的所有信息。 SELECT * FROM 选课表 ORDER BY ; 课程号,成绩

13、DESC 结果是: 2004130101 1001 90 2004130101 1002 80 2004130102 1004 80 2004150101 1004 55 2004150101 1005 70 这里是对两列排序的例子,对多列同样可 以进行排序操作。,4.2.6 简单的计算查询 SQL 不但有查询功能,而且还有计算方 式的查询。用于计算查询的函数有: (1)COUNT-计数 (2)SUM-求和 (3)AVG-计算平均值 (4)MAX-求最大值 (5)MIN-求最小值 例4.12 求出学生来自多少个城市。 SELECT COUNT (DISTINCT 家庭住址); FROM 档案表

14、 结果是: 3,例4.13 求出来自“北京”的学生的总成 绩。 SELECT SUM(成绩) FROM 选课表 ; WHERE 学号 IN (SELECT 学号 ; FROM 档案表 WHERE ; 家庭住址=北京) 结果是: 295 上面的“WHERE 学号 IN”中的IN不能用 “=”代替,否则,屏幕上将出现“子查询返 回多条记录”的出错提示,命令将无法运行。,例4.14 检索学时数最多的课程名和学时 。 SELECT 课程名,MAX(学时数) FROM ; 课程表 结果是: 经济学 100 课程表中有两条满足条件的记录,但只显示满足条件 的第一条。 例4.15 检索出除北京之外的其他学生

15、的平 均分。 SELECT AVG(成绩) FROM 选课表 ; WHERE 学号 NOT IN; (SELECT 学号 FROM 档案表 WHERE ; 家庭住址=北京) 结果是: 71.75,4.2.7 分组与计算查询 分组与计算查询的 GROUP BY 短语格 式如下: GROUP BY 字段名1 , 字段名2, HAVING 例4.16 求出每门课程的平均分。 SELECT 课程号,AVG(成绩) FROM ; 选课表 GROUP BY 课程号 1001 90.00 1002 65.00 1003 78.50 1004 67.50 1006 70.00,该查询首先按课程号进行分组,然后再计算每个课程的平均分。 GROUP BY子句一般放在WHERE子句后面,如果没有WHERE子句时,跟在FROM子句之后。,还可以根据多个属性进行分组。在分组查询时,可以用HAVING子句来限定分组。 例4.17 计算选修了两门课以上学生的平均分。 SELECT 学号,COUNT(*),AVG(成绩) ; FROM 选课表 GROUP BY 学号 ; HAVING COUNT(*)=2 结果是: 20041301

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号