SQL语句基础之DML (2).ppt
《SQL语句基础之DML (2).ppt》由会员分享,可在线阅读,更多相关《SQL语句基础之DML (2).ppt(92页珍藏版)》请在三一办公上搜索。
1、第3章 SQL语句基础之DML,授课人:吴志霞电话:http:/,课程目标,熟练掌握及运用SQL语句,进行数据的查询及管理,课程内容,数据管理SQL语句数据查询SQL语句,课时安排,理论:4学时实践:4学时,授课方法,案例演示,数据管理,数据的插入数据的修改数据的删除,数据的插入,两种插入数据方式1.插入元组2.插入子查询结果,插入元组,语句格式INSERTINTO(,)VALUES(,)功能将新元组插入指定表中示例INSER INTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(200215128,陈冬,男,IS,18),注意事项,INTO子句属性列的顺
2、序可与表定义中的顺序不一致没有指定属性列指定部分属性列 VALUES子句 提供的值必须与INTO子句匹配值的个数值的类型,课堂练习,例1 插入一条课程记录(1,计算机英语)。例2 插入一条选课记(200215128,1)。,插入子查询结果,语句格式 INSERT INTO(,)子查询功能 将子查询结果插入指定表中,注意事项,INTO子句(与插入元组类似)子查询SELECT子句目标列必须与INTO子句匹配值的个数值的类型,示例,对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表 CREATE TABLE Dept_age(Sdept CHAR(20)/*系名*/Avg_age SMA
3、LLINT);/*学生平均年龄*/第二步:插入数据 INSERT INTO Dept_age(Sdept,Avg_age)SELECT Sdept,AVG(Sage)FROM Student GROUP BY Sdept;,修改数据,语句格式 UPDATE SET=,=WHERE 功能修改指定表中满足WHERE子句条件的元组,三种修改方式,1.修改某一个元组的值2.修改多个元组的值3.带子查询的修改语句,示例,例 将学生200215126的年龄改为22岁 UPDATE Student SET Sage=22 WHERE Sno=200215126 例 将所有学生的年龄增加1岁 UPDATE S
4、tudent SET Sage=Sage+1例 将计算机科学系全体学生的成绩置零。UPDATE SC SET Grade=0 WHERE IS=(SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno),删除数据,语句格式 DELETE FROM WHERE;功能删除指定表中满足WHERE子句条件的元组WHERE子句指定要删除的元组缺省表示要删除表中的全部元组,表的定义仍在字典中,三种删除方式,1.删除某一个元组的值2.删除多个元组的值3.带子查询的删除语句,示例,例 删除学号为200215128的学生记录。DELETE FROM Student
5、WHERE Sno=200215128 例 删除所有的学生选课记录。DELETE FROM SC;例 删除计算机科学系所有学生的选课记录。DELETE FROM SC WHERE CS=(SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);,数据查询,语句格式 SELECT ALL|DISTINCT,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC;,数据查询,单表查询连接查询嵌套查询集合查询Select语句的一般形式,单表查询,查询仅涉及一个表:一、选择表中的若干列二、选择表中的若干元组三、ORDER
6、 BY子句四、聚集函数五、GROUP BY子句,选择表中的若干列查询指定列,例1 查询全体学生的学号与姓名。SELECT Sno,Sname FROM Student;,选择表中的若干列查询全部列,方法一:在SELECT关键字后面列出所有列名 方法二:指定为*例 查询全体学生的详细记录。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student;=SELECT*FROM Student;,选择表中的若干列查询经过计算的值,SELECT子句的可以为:算术表达式字符串常量函数列别名 例 查全体学生的姓名及其出生年份。SELECT Sname,2009-Sage/*假
7、定当年的年份为2009年*/FROM Student;,选择表中的若干列查询经过计算的值(示例),例 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名SELECT Sname,Year of Birth:,LOWER(Sdept)FROM Student;,单表查询,查询仅涉及一个表:一、选择表中的若干列二、选择表中的若干元组三、ORDER BY子句四、聚集函数五、GROUP BY子句,选择表中的若干元组DISTINCT关键词,消除取值重复的行运定DISTINCT关键词 例 查询选修了课程的学生学号。SELECT Sno FROM SC;=SELECT ALL Sno FROM
8、 SC SELECT DISTINCT Sno FROM SC/运定DISTINCT关键词,去掉表中重复的行 如果没有指定DISTINCT关键词,则缺省为ALL,选择表中的若干元组查询满足条件的元组,选择表中的若干元组查询满足条件的元组(示例),例查询计算机科学系全体学生的名单。SELECT Sname from student where sdept=IS 例查询所有年龄在20岁以下,性别为女的学生姓名及其年龄。Select Sname,Sage from student where sage20 AND ssex=女 例查询年龄在2023岁(包括20岁和23岁)之间的学生的 姓名、系别和年
9、龄 Select sname,sdept,sage from Student where sage between 20 and 23例查询既不是信息系(IS)、外语系(EN),也不是中文(CN)系的学生的姓名和性别。Select sname,ssex from Student where sdept NOT IN(IS,EN,CN),选择表中的若干元组查询满足条件的元组(Like关键字的用法),匹配串为固定字符串 例 查询学号为200215121的学生的详细情况。SELECT*FROM Student WHERE Sno LIKE 200215121;SELECT*FROM Student
10、WHERE Sno=200215121;2)匹配串为含通配符的字符串(“%”与“_”)例 查询所有姓李学生的姓名、学号和性别。Select Sname,Sage,Ssex from student where Sname like 李%例 查询姓欧阳且全名为三个汉字的学生的姓名。Select Sname from student where Sname like 欧阳_3)使用换码字符将通配符转义为普通字符 例 查询所有以_打头第三个字为阳的学生的姓名、学号和性别。Select Sname,Sno,Ssex from student where Sname like _阳%ESCAPE Sel
11、ect Sname,Sno,Ssex from student where Sname like*_阳%ESCAPE*,课堂练习,例 查询名字中第2个字为阳字的学生的姓名和学号。例 查询所有不姓刘的学生姓名。,SELECT Sname,Sno FROM Student WHERE Sname LIKE _阳%;SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 刘%;,选择表中的若干元组查询满足条件的元组(IS NULL 或 IS NOT NULL的用法),“IS”不能用“=”代替 例 某些学生选修课程后没有参加考试,所以有选课记录,
12、但没 有考试成绩。查询缺少成绩的学生的学号和相应的课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NULL例 查所有有成绩的学生学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;,选择表中的若干元组查询满足条件的元组(多重条件查询),逻辑运算符:AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND,示例,例 查询信息系(IS)、外语系(EN)和中文系(CN)学生的姓名和性别。SELECT Sname,Ssex
13、FROM StudentWHERE Sdept IN(IS,EN,CN)可改写为:SELECT Sname,SsexFROM StudentWHERE Sdept=IS OR Sdept=EN OR Sdept=CN,单表查询,查询仅涉及一个表:一、选择表中的若干列二、选择表中的若干元组三、ORDER BY子句四、聚集函数五、GROUP BY子句,ORDER BY子句,ORDER BY子句可以按一个或多个属性列排序升序:ASC;降序:DESC;缺省值为升序当排序列含空值时ASC:排序列为空值的元组最后显示DESC:排序列为空值的元组最先显示 示例 例 查询计算机系学生的学号及其姓名,查询结果按
14、年龄降序排列。例查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。SELECT*FROM Student ORDER BY Sdept,Sage DESC,单表查询,查询仅涉及一个表:一、选择表中的若干列二、选择表中的若干元组三、ORDER BY子句四、聚集函数五、GROUP BY子句,聚集函数,聚集函数:计数COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)计算总和SUM(DISTINCT|ALL)计算平均值AVG(DISTINCT|ALL)最大最小值 MAX(DISTINCT|ALL)MIN(DISTINCT|ALL),示例:,例
15、查询学生总人数。SELECT COUNT(*)FROM Student;例 计算1号课程的学生平均成绩。SELECT AVG(Grade)FROM SC WHERE Cno=1 例 查询选修1号课程的学生最高分数。SELECT MAX(Grade)FROM SC WHER Cno=1 例查询学生07001选修课程的总分数。select sum(score)as sum from sc where sno=07001,单表查询,查询仅涉及一个表:一、选择表中的若干列二、选择表中的若干元组三、ORDER BY子句四、聚集函数五、GROUP BY子句,GROUP BY子句,GROUP BY子句分组:
16、细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果 对查询结果分组后,聚集函数将分别作用于每个组 作用对象是查询的中间结果表按指定的一列或多列值分组,值相等的为一组,示例:,例 求各个课程号及相应的选课人数。SELECT Cno,COUNT(Sno)FROM SC GROUP BY Cno例 查询选修了3门以上课程的学生学号。SELECT sno,count(cno)FROM SC GROUP BY sno HAVING COUNT(*)3HAVING短语与WHERE子句的区别:作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组HAVING短语作用于组,从中
17、选择满足条件的组。,数据查询,单表查询连接查询嵌套查询集合查询Select语句的一般形式,自身连接,自身连接:一个表与其自己进行连接需要给表起别名以示区别由于所有属性名都是同名属性,因此必须使用别名前缀例查询SQLSERVER2000,NorthWind数据库中所有雇员姓名及该雇员汇报工作的直接上级雇员姓名。Select low.firstName,low.lastName,high.firstName,high.lastName from employees low,employees high where low.reportsTO=high.employeeid Select low.f
18、irstName,low.lastName,high.firstName,high.lastName from employees low left outer join employees high on low.reportsTO=high.employeeid Select low.firstName,low.lastName,high.firstName,high.lastName from employees low right outer join employees high on low.reportsTO=high.employeeid,内连接,也称为普通连接,又称为自然连接
19、。用来输出满足连接条件的元组 例列显学生选修课程的学号,姓名,以及所选课程的编号。Select sc.sno,sname,cno from student,sc where student.sno=sc.sno,外连接,外连接与普通连接的区别普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT JOIN SC ON(Student.Sno=SC.Sno);SELECT Student.Sno,Sname,S
20、sex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno*=SC.Sno;/左连接 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student RIGHT JOIN SC ON(Student.Sno=SC.Sno);SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno=*SC.Sno;/右连接,外连接(续),左外连接列出左边关系中所有的元组 右外连接列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL语句基础之DML 2 SQL 语句 基础 DML
链接地址:https://www.31ppt.com/p-6521036.html