数据库操作语句.ppt
《数据库操作语句.ppt》由会员分享,可在线阅读,更多相关《数据库操作语句.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库原理与应用教程第4章 数据操作4.1 数据查询功能4.2 数据更改功能4.1 数据查询功能 4.1.1 查询语句的基本结构4.1.2 简单查询4.1.3 多表连接查询4.1.4 子查询 查询语句基本格式SELECT -需要哪些列 FROM -来自于哪些表 WHERE -根据什么条件 GROUP BY HAVING ORDER BY 4.1.2 简单查询1.选择表中若干列 1.查询指定的列查询表中用户感兴趣的部分属性列。例1:查询全体学生的学号与姓名。SELECT Sno,Sname FROM Student例2.查询全体学生的姓名、学号、所在系 SELECT Sname,Sno,Sdep
2、t FROM Student 2.查询全部列 例3查询全体学生的记录SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student等价于:SELECT *FROM Student 3.查询经过计算的列例4查询全体学生的姓名及其出生年份。SELECT Sname,2010-Sage FROM Student常量列 例5查询全体学生的姓名和出生年份所在系,并在出生年份列前加入一个列,此列的每行数据均为“出生年份”常量值。SELECT Sname,出生年份:,2010-Sage FROM Student 改变列标题 语法:列名|表达式 AS 列标题或:列标题 列名|表达式
3、例:SELECT Sname 姓名,Year of Birth 出生年份,2010-Sage 年份,FROM Student 4.1.2 简单查询2.选择表中若干元组 1.消除取值相同的行 例6查询选修了课程的学生的学号 SELECT Sno FROM SC 有重复行!有重复行!要去掉要去掉结结果表中的重果表中的重复复行,可用行,可用DISTINCTDISTINCTSELECT DISTINCT Sno FROM SC 2.查询满足条件的元组 查询条件查询条件谓谓 词词比较运算符=,=,=,(或!=)NOT+比较运算符 确定范围BETWEENAND,NOT BETWEENAND确定集合IN,N
4、OT IN字符匹配LIKE,NOT LIKE 空值IS NULL,IS NOT NULL逻辑谓词)AND,OR比较大小例7查询计算机系全体学生的姓名。SELECT Sname FROM Student WHERE Sdept=计算机系例8查询年龄在20岁以下的学生的姓名及年龄。SELECT Sname,Sage FROM Student WHERE Sage 20例9查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade 60确定范围用BETWEENAND和NOT BETWEENAND是逻辑运算符,可以用来查找属性值在或不在指定范围内的
5、元组,其中BETWEEN后边指定范围的下限,AND后边指定范围的上限。BETWEENAND的格式为:列名|表达式 NOT BETWEEN 下限值 AND 上限值如果列或表达式的值在不在下限值和上限值范围内,则结果为True,表明此记录符合查询条件。示例例10查询年龄在2023岁之间的学生的姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23例11查询年龄不在2023之间的学生姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT
6、BETWEEN 20 AND 23确定集合使用IN运算符。用来查找属性值属于指定集合的元组。格式为:列名 NOT IN(常量1,常量2,常量n)当列中的值与IN中的某个常量值相等时,则结果为True,表明此记录为符合查询条件的记录;NOT IN:当列中的值与某个常量值相同时,则结果为False,表明此记录为不符合查询条件的记录 示例例12查询信息系、数学系和计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student SELECT Sname,Ssex FROM Student WHERE Sdept WHERE Sdept ININ(信息系信息系,数学系数学系,计算
7、机系计算机系)例13查询既不是信息系、数学系,也不是计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student SELECT Sname,Ssex FROM Student WHERE Sdept WHERE Sdept NOT INNOT IN(信息系信息系,数学系数学系,计算机系计算机系)字符匹配使用LIKE运算符一般形式为:列名 NOT LIKE 匹配串中可包含如下四种通配符:_:匹配任意一个字符;%:匹配0个或多个字符;:匹配 中的任意一个字符;对于连续字母的匹配,例如匹配abcd,可简写为a-d :不匹配 中的任意一个字符 示例例14查询姓张的学生的详细信
8、息。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 张张%例15查询学生表中姓张、李和刘的学生的情况。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 张李刘张李刘%例16查询名字中第2个字为小或大的学生的姓名和学号。SELECT Sname,Sno FROM Student SELECT Sname,Sno FROM Student WHERE Sname WHERE Sname LIKELIKE _
9、 _小大小大%示例(续)例17查询所有不姓“王”也不姓“张”的学生姓名SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname WHERE Sname NOT LIKENOT LIKE 王张王张%或者:或者:SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname LIKE WHERE Sname LIKE 王张王张%或者:或者:SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname
10、NOT LIKE WHERE Sname NOT LIKE 王王%AND Sname NOT LIKE AND Sname NOT LIKE 张张%示例(续)例18查询姓“王”且名字是2个字的学生姓名。SELECT Sname FROM StudentSELECT Sname FROM Student WHERE Sname LIKE WHERE Sname LIKE 王王_ _ 示例(续)例19查询姓王且名字是3个字的学生姓名SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname LIKE WHERE Sname LIK
11、E 王王_ _ 注意:尾随空格的处理。注意:尾随空格的处理。SELECT Sname FROM Student SELECT Sname FROM Student WHERE rtrim(Sname)LIKE WHERE rtrim(Sname)LIKE 王王_涉及空值的查询空值(NULL)在数据库中表示不确定的值。例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。判断某个值是否为NULL值,不能使用普通的比较运算符。判断取值为空的语句格式为:列名 IS NULL判断取值不为空的语句格式为:列名 IS NOT NULL 示例例20查询没有考试成绩的学生的
12、学号和相应的课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NULL例21查询所有有考试成绩的学生的学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL 多重条件查询在WHERE子句中可以使用逻辑运算符AND和OR来组成多条件查询。用AND连接的条件表示必须全部满足所有的条件的结果才为True;用OR连接的条件表示只要满足其中一个条件结果即为True。例21查询计算机系年龄在20岁以下的学生姓名。SELECT Sname FROM Student WHERE Sdept=计算机系 AND Sage=20或
13、:SELECT Sname,Sdept,Sage FROM Student WHERE Sdept IN(计算机系,信息系)AND Sage=20 4.1.2 简单查询#3.对查询结果进行排序 对查询结果进行排序可对查询结果进行排序。排序子句为:ORDER BY ORDER BY ASC|DESC ,ASC|DESC ,说明:按进行升序(ASC)或降序(DESC)排序。示例例22将学生按年龄的升序排序。SELECT*FROM Student ORDER BY Sage例23查询选修了c02号课程的学生的学号及其成绩,查询结果按成绩降序排列。SELECT Sno,Grade FROM SCWHE
14、RE Cno=c02 ORDER BY Grade DESC 例24查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。SELECT*FROM StudentORDER BY Sdept,Sage DESC 4.1.2 简单查询4.使用计算函数汇总数据 使用计算函数汇总数据 SQL提供的计算函数有:COUNTCOUNT(*):统计表中元组个数;COUNTCOUNT(DISTINCT DISTINCT ):统计本列列值个数;SUMSUM(DISTINCT DISTINCT ):计算列值总和;AVGAVG(DISTINCT DISTINCT ):计算列值平均值;MAXM
15、AX(DISTINCT DISTINCT ):求列值最大值;MINMIN(DISTINCT DISTINCT ):求列值最小值。上述函数中除上述函数中除COUNTCOUNT(*)外,其他函数在计算)外,其他函数在计算过程中均忽略过程中均忽略NULLNULL值。值。示例例25统计学生总人数。SELECT COUNT(*)FROM Student 例26统计选修了课程的学生的人数。SELECT COUNT(DISTINCT Sno)FROM SC例27 计算9512101号学生的考试总成绩之和。SELECT SUM(Grade)FROM SC WHERE Sno=9512101 示例(续)例28计
16、算C01号课程学生的考试平均成绩。SELECT AVG(Grade)FROM SC WHERE Cno=C01例29查询选修了C01号课程的学生的最高分和最低分。SELECT MAX(Grade),MIN(Grade)FROM SC WHERE Cno=C01注意:计算函数不能出现在WHERE子句中 4.1.2 简单查询5.对查询结果进行分组计算 对查询结果进行分组计算 作用:可以控制计算的级别:对全表还是对一组。目的:细化计算函数的作用对象。分组语句的一般形式:GROUP BY HAVING 1.使用GROUP BY例30统计每门课程的选课人数,列出课程号和人数。SELECT Cno as
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 操作 语句
限制150内