- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 数据查询与修改_3
第6章 数据查询与修改 6.1 数据查询 6.2 数据修改 6.1 数据查询 6.1.1 SQL查询语句的基本结构 6.1.2 简单查询 6.1.3 多表连接查询 6.1.4 合并多个结果集 6.1.5 SELECT INTO 6.1.6 使用 TOP限制结果集 6.1.7 子查询 包括子查询的语句通常采用以下格式中的一种 WHERE 列名 [NOT] IN (子查询) WHERE 表达式 比较运算符 [ANY|ALL] (子查询) WHERE [NOT] EXISTS (子查询) 嵌套查询 一.带IN的子查询 一.带IN的子查询 子查询的结果是一个集合时,使用IN操作符判断表达式是否在该集合中。 注:Select子句只能有一个目标列表达式,且外层运算符与该表达式具有相同的数据类型等。 例1 查询与“刘晨”在同一个系学习的学生 题目分解: 1. 查出刘晨所在的系 2.查询这个系的学生姓名和系名 3.是除了刘晨以外的学生 例1 查询与“刘晨”在同一个系学习的学生 题目分解: 1. 查出刘晨所在的系 2.查询这个系的学生姓名和系名 3.是除了刘晨以外的学生 例1 查询与“刘晨”在同一个系学习的学生 SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=‘刘晨’) and Sname ! = ‘刘晨’ 使用嵌套查询时 确定需要查询的表 并分解问题 查询哪些学生选了相同的课程,列出课程号和学生的学号,去掉只有一个学生的课程 查询哪些学生选了相同的课程,列出课程号和学生的学号,去掉只有一个学生的课程 例2 查询成绩不低于90的学生的学号姓名 SELECT Sno, Sname FROM Student WHERE Sno IN ( SELECT DISTINCT Sno FROM SC WHERE Grade = 90) 例3.查询选修了课程名“数据库基础”的学生的学号、姓名 分析: 1.已知课程名,可在课程表中查到课程号 2.已知课程号,可在成绩表中查到学号 3.已知学号,可在学生表中查到学生姓名 例3.查询选修了课程名“数据库基础”的学生的学号、姓名 SELECT Sno, Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM Course WHERE Cname = ‘数据库基础’) ) 例6-62 查询与法人“华顺达水泥股份有限公司”的经济性质相同的法人名称 例6-63 查询在“工商银行北京A支行”贷过款的法人名称 例6-64 查询没有贷过款的法人代码、名称和其经济性质 例6-65 查询没有在“B111B”银行贷过款的法人代码、法人名称及其经济性质 嵌套查询 二.带有比较运算符的子查询 二.带有比较运算符的子查询 带比较运算符的子查询指父查询与子查询之间用比较运算符连接, 当用户能确切知道内层查询返回的是单个值时,可用、、=、=、=、运算符 例1.查询与“刘晨”在同一个系学习的学生 当知道一个学生只在一个系学习时,即子查询只返回一个结果时,可用比较运算符 例6-66 查询与法人“华顺达水泥股份有限公司”的经济性质相同的法人名称 每个企业的经济性质是唯一的 例2. 查询‘1’课程考试成绩最高的学生的姓名 分析 3.姓名在Student表中可得,需要知道学号 2.满足条件的学号,需要从SC中查出,条件是知道成绩(而且最高成绩是唯一的) 1. 指定课程的最高成绩值,从SC中查出 例2. 查询‘1’课程考试成绩最高的学生的姓名 SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Grade = ( SELECT MAX(Grade) FROM SC WHERE Cno = ‘1’) and cno = ‘1’) 例6-67 查询在银行“B111B”贷款金额最高的法人的名称、经济性质和注册资金 例6-68查询在银行“B111B”贷款且贷款金额高于此银行的平均贷款额的法人的代码、贷款日期和贷款金额 相关子查询 相关子查询在子查询的Where子句中关联外部表 经常用EXISTS( )函数引导 EXISTS代表
文档评论(0)