使用比较运算符 或逻辑运算符NOT + 比较运算符
例:查询计算机科学系全体学生的名单
SELECT Sname
FROM Student
WHERE Sdept=‘CS’;
例:查询所有年龄在20岁以下的学生姓名及其年龄
SELECT Sname,Sage
FROM Student
WHERE Sage < 20; //NOT Sage>=20
谓词:
BETWEEN … AND … NOT BETWEEN … AND …例;查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;//Sage>=20 and Sage<=23
例:查询年龄不在20~23岁之间的学生姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;//Sage<20 or Sage>23
IN <值表>, NOT IN <值表> 例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' );
例:查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN ( 'IS','MA','CS' );
[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘ <换码字符>’]匹配串为固定字符串
例:查询学号为200215121的学生的详细情况。
SELECT * SELECT *
FROM Student 等价于: FROM Student
WHERE Sno LIKE ‘200215121'; WHERE Sno = ' 200215121 ';
匹配串为含通配符的字符串
%:代表任意长度(可以是0)的字符串
_:代表任意单个字符
字符串本身就含有 % 或 _ 时,在% 或 _ 之前加上转义符“”要使用ESCAPE ‘<换码字符>’将通配符转义为普通字符。如果‘\’ 要作为一个普通字符,用连续两个‘\’ 表示一个真正的‘\’。
例:查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
SELECT *
FROM Course
WHERE Cname LIKE 'DB_%i_ _' ESCAPE ' ‘;
IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替
例:查所有有成绩的学生学号和课程号
SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;
逻辑运算符:AND和 OR来联结多个查询条件,AND的优先级高于OR,可以用括号改变优先级,可用来实现多种其他谓词。
[NOT] IN [NOT] BETWEEN … AND …改写 例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' )
可改写为:
SELECT Sname,Ssex
FROM Student
WHERE Sdept= ' IS ' OR Sdept= ' MA' OR Sdept= ' CS '
● ORDER BY子句:对查询结果排序
可以按一个或多个属性列排序:升序:ASC;降序:DESC;缺省值为升序。
当排序列含空值时:空值最大
ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示。
例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
SELECT Sno,Grade
FROM SC
WHERE Cno= ' 3 '
ORDER BY Grade DESC;
● 聚集函数:对查询结果集中的某列进行计算或统计。
计数
COUNT([DISTINCT|ALL] *)COUNT([DISTINCT|ALL] <列名>)计算总和
SUM([DISTINCT|ALL] <列名>) 计算平均值
AVG([DISTINCT|ALL] <列名>)最大最小值
MAX([DISTINCT|ALL] <列名>) MIN([DISTINCT|ALL] <列名>)例:查询学生200215012选修课程的总学分数
SELECT SUM(Ccredit)
FROM SC, Course
WHER Sno='200215012' AND SC.Cno=Course.Cno;
注:除Count(*),都要跳过空值;Where子句不能使用聚集函数。
● GROUP BY子句:对查询结果分组。
用途细化聚集函数的作用对象
未对查询结果分组,聚集函数将作用于整个查询结果
对查询结果分组后,聚集函数将分别作用于每个组
使用
GROUP BY 后:其SELECT子句的列名列表中只能出现分组属性和集函数。
如果分组后还要按照条件对这些组进行筛选,可使用
having 短语指定筛选条件
例: 查询选修了3门以上课程的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
例:查询有3门以上课程是90分以上学生的学号及(90分以上的)课程数
SELECT Sno, COUNT(*)
FROM SC
Where Grade >90
GROUP BY Sno
HAVING COUNT(*) >3;
HAVING短语与WHERE子句的区别:作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组
HAVING短语作用于组,从中选择满足条件的组。
1.加拿大第43届联邦众议院选举21日举行,将选举产生338名联邦众议员。据加拿大选举委员会公布的数据,本届大选共有2740万选民,全国设约2万个投票站。由于加拿大国土辽阔,东西跨数个时区,各地投票开始时间不尽相同,从当地时间7时到当地时间9时30分不等。但各地的投票时间段均为12个小时。
2.据克里姆林宫网站21日发布的消息,俄法总统在电话中围绕叙利亚东北部局势进行了详细讨论,双方均强调尊重叙利亚国家主权和领土完整的重要性。普京说,俄方采取了促进有关各方沟通、确保所有民族宗教团体利益的措施,以稳定该地区局势。两人还强调了10月底在日内瓦举行叙利亚宪法委员会首次会议的重要性。
3.当地时间10月21日,国务委员兼外长王毅在巴黎同法国外长勒德里昂共同主持中法高级别人文交流机制第五次会议。
4.中国和蒙古国“友谊70年”图片展21日在蒙古国首都乌兰巴托开幕。图片展用70幅图片展示和回顾了两国建交70年来重要历史事件以及多领域交流与合作。
5.以色列总理内塔尼亚胡21日晚宣布组阁失败,并将组阁权归还以总统里夫林。内塔尼亚胡在社交媒体上发布视频,承认他未能成功组建新一届政府,已将组阁权归还里夫林。他说,自受权组阁以来,他一直为建立一个广泛的联合政府而不懈努力,但是未能将蓝白党领导人甘茨带到谈判桌前。
点击加载更多评论>>