收藏 分享(赏)

第4章_子查询、多表连接和系统函数.ppt

上传人:gnk289057 文档编号:9992595 上传时间:2019-09-25 格式:PPT 页数:22 大小:958.50KB
下载 相关 举报
第4章_子查询、多表连接和系统函数.ppt_第1页
第1页 / 共22页
第4章_子查询、多表连接和系统函数.ppt_第2页
第2页 / 共22页
第4章_子查询、多表连接和系统函数.ppt_第3页
第3页 / 共22页
第4章_子查询、多表连接和系统函数.ppt_第4页
第4页 / 共22页
第4章_子查询、多表连接和系统函数.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、第四章,子查询、多表连接和系统函数,回顾,学生信息表添加一条记录:张小光, 男, 学号为s90311, 21岁, 来自泉州 将张小光的地址改为平和 删除张小光的信息,学生信息表,课程目标,子查询 多表联接 系统函数 综合案例,子查询,什么是子查询 子查询是一个嵌套在 select、insert、update、delete 语句或其它查询中的select 查询 为什么要使用子查询 查询网页设计机试考了90分的学生学号select stuNo from 成绩表where courseName=网页设计 and labExam=90 查询网页设计机试考了最高分的学生学号? 查询来自泉州的学生的考试成

2、绩?,子查询,查询网页设计机试考了最高分的学生学号select stuNo from 成绩表where courseName=网页设计 and labExam=(select max(labExam) from 成绩表where courseName=网页设计),子查询,查询来自泉州的学生的考试成绩 方法一 select * from 成绩表 where stuNo in (select stuNo from 学生信息表where stuAddress=泉州 ) 方法二 select * from Score where exists( select * from Student where

3、stuAddress=泉州and Score.stuNo = Student.stuNo ),联接,为什么要使用联接? 查询学生的C语言成绩,要求显示姓名,学号,笔试成绩,机试成绩? 什么是联接? 联接表示 SQL Server 应如何使用一个表中的数据来选择另一个表中的行。 通过联接,可以根据各个表之间的逻辑关系从两个或多个表中检索数据,联接,联接的类型 内联接 inner join 外联接left join 或 left outer join right join 或 right outer join full join 或 full outer join 交叉联接 cross join,

4、联接,查询学生的C语言成绩,要求显示姓名,学号,笔试成绩,机试成绩 select stuName,学生信息表.stuNo,writtenExam,labExam from 学生信息表 inner join 成绩表 on 学生信息表.stuNo=成绩表.stuNo where courseName=C语言 查询学生的C语言成绩,要求显示姓名,学号,笔试成绩,机试成绩(缺考的学生也要显示)select stuName,学生信息表.stuNo,writtenExam,labExam from 学生信息表 left join 成绩表on 学生信息表.stuNo=成绩表.stuNowhere cours

5、eName=C语言,SQL Server中的函数,字符串函数 日期函数 数学函数 系统函数,字符串函数,日期函数,数学函数,系统函数,案例分析1要求,某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:卡里面的“O和0”(哦和零)“i和1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“哦”都改成“零”,把所有的“i”都改成“1”;请编写SQL语句实现以上要求; 数据库表名:Card;密码字段名:PassWord;,案例分析1分析,这是更新语句,需要使用UPDATE语句; 因为牵涉到字符串的替换,需要使用到SQL Server中的函数Replace;,案例分

6、析1T-SQL,两行SQL语句,Update Card Set PassWord = Replace(PassWord ,O,0) Update Card Set PassWord = Replace(PassWord ,i,1),一行SQL语句,Update Card Set PassWord = Replace(Replace(PassWord ,O,0),i,1),案例分析2要求,在数据库表中有以下字符数据,如:13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2现在希望通过SQL语句进行排序,并且首先要按照前半部分

7、的数字进行排序,然后再按照后半部分的数字进行排需,输出要排成这样:13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2数据库表名:SellRecord;字段名:ListNumber;,案例分析2分析,这是查询语句,需要使用SELECT语句 需要使用到ORDER BY进行排序,并且在ORDER BY的排序列中,也需要重新计算出排序的数字来 前半部分的数字,可以从先找到“-”符号的位置,然后,取其左半部分,最后再使用Convert函数将其转换为数字:Convert(int, Left(ListNumber, CharIndex

8、(-, ListNumber)-1) 后半部分的数字,可以先找到“-”符号的位置,然后把从第一个位置到该位置的全部字符替换为空格,最后再使用Convert函数将其转换为数字:Convert(int, Stuff(ListNumber,1, Charindex(-, ListNumber), ),案例分析2T-SQL,SELECT ListNumber FROM SellRecord ORDER BY Convert(int, Left(ListNumber, CharIndex(-, ListNumber)-1), Convert(int, Stuff(ListNumber,1, Charindex(-, ListNumber), ),本章总结,什么是子查询? 联接分为哪些类型?,作业,联接分为哪些类型? 写出常用的字符串函数? 请举例说明类型转换函数的使用。 写出以下T-SQL语句(数据库为:书店管理) 查询机械出版社出版的书的书名和价格(用子查询) 查询书的信息,包括书名,价格,出版社名称,作者,库存量(用联接查询),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报