SQL Server 数据库实验课第五周——常用查询条件


Posted in SQL Server onApril 05, 2021

表中插入数据
SQL Server 数据库实验课第五周——常用查询条件
SQL Server 数据库实验课第五周——常用查询条件
SQL Server 数据库实验课第五周——常用查询条件

接上一篇博文SQL Server 数据库实验课3——INDEX、INSERT、SELECT语句

一、SELECT查询

1.选择表中的若干列

(1)查询经过计算的值

SELECT子句<目标表达式>不仅可以是表中的属性列也可以是表达式
例3.19查询全体学生的姓名及其出生年份

SELECT Sname,2014-Sage
FROM Student;

SQL Server 数据库实验课第五周——常用查询条件
<目标表达式>不仅可以是算术表达式还可以是字符串常量、函数等。

(2)改变查询结果列标题

例3.20查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名

SELECT Sname,'Year of Birth: ',2014-Sage,LOWER(Sdept)
FROM Student;

SQL Server 数据库实验课第五周——常用查询条件

用户可以通过指定别名来改变查询结果的列标题。

SELECT Sname NAME,'Year of Birth: ' BIRTH,2014-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT
FROM Student;

SQL Server 数据库实验课第五周——常用查询条件

2.选择表中若干元组

(1)查询满足条件的元组

常用查询条件
SQL Server 数据库实验课第五周——常用查询条件

①比较大小
例3.22查询计算机科学系全体学生名单

SELECT Sname
FROM Student
WHERE Sdept='CS';

SQL Server 数据库实验课第五周——常用查询条件
此类语句过程:全表扫描->取出Sdept='CS’的元组,输出Sname列的值
例3.23 查询所有年龄在20岁以下的学生姓名及其年龄:

SELECT Sname, Sage 
FROM   Student    
WHERE  Sage < 20;

例3.24 查询考试成绩有不及格的学生的学号:

SELECT Sno
FROM  SC
WHERE Grade > 60;

SQL Server 数据库实验课第五周——常用查询条件
加入DISTINCT去掉重复值

SELECT DISTINCT Sno
FROM  SC
WHERE Grade > 60;

SQL Server 数据库实验课第五周——常用查询条件
②确定范围
谓词**BETWEEN … AND …和NOT BETWEEN … AND …**可用来确定查找属性范围。BETWEEN后是范围下限,AND后是范围上限(包括边界
例3.25 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄

SELECT Sname,Sdept,Sage 
FROM Student
WHERE Sage BETWEEN 20 AND 23;

SQL Server 数据库实验课第五周——常用查询条件
例3.26 查询年龄不在20~23岁之间的学生姓名、系别和年龄:

SELECT Sname, Sdept, Sage
FROM   Student
WHERE  Sage NOT BETWEEN 20 AND 23;

SQL Server 数据库实验课第五周——常用查询条件
③确定集合
谓词IN可以用来查找属于指定集合的元组
例3.27查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');
SELECT * FROM Student//和全表对比

SQL Server 数据库实验课第五周——常用查询条件

例3.28查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别

SELECT Sname, Ssex
FROM Student
WHERE Sdept NOT IN ('IS','MA','CS')

SQL Server 数据库实验课第五周——常用查询条件
④字符匹配

[NOT] LIKE ‘< 匹配串>’ [ESCAPE ‘ <换 换
码字符 码字符>’]

< 匹配串>可以是一个完整的字符串 可以是一个完整的字符串 ,也可以含有通配符 也可以含有通配符%和 和 _
(1)%代表 任意长度 (长度可以为 长度可以为0)的字符串
例如 例如a%b 表示以a开头 开头 ,以b结尾的任意长度的字符串 结尾的任意长度的字符串
(2)_代表任意单个字符 。
例如 例如a_b 表示以a开头 开头 ,以b 结尾的长度为3的任意字符串
匹配串为固定字符串
例3.29 查询学号为201215121的学生的详细情况 的学生的详细情况 。

SELECT *
FROM Student
WHERE Sno LIKE '201215121';

等价于:

SELECT *
FROM Student
WHERE Sno = '201215121';

SQL Server 数据库实验课第五周——常用查询条件

匹配串为含通配符的字符串
例3.30 查询所有姓刘学生的姓名、学号和性别。

SELECT Sname,Sno,Ssex
FROM Student WHERE Sname LIKE '刘%'

SQL Server 数据库实验课第五周——常用查询条件
Student 表中插入SQL Server 数据库实验课第五周——常用查询条件

例3.31查询姓" 欧阳"且全名为三个汉字的学生的姓名。 且全名为三个汉字的学生的姓名。

SELECT Sname
FROM Student
WHERE Sname LIKE ' 欧阳_ ';

SQL Server 数据库实验课第五周——常用查询条件
数据库字符集为ASCII 时,一个汉字需要两个_
数据库字符集为 数据库字符集为 GBK 时,一个汉字需要一个_
例3.32查询名字中第2 个字为" 阳"字的学生的姓名和学号。 字的学生的姓名和学号。

SELECT Sname ,Sno
FROM Student
WHERE Sname LIKE '_ 阳%';

SQL Server 数据库实验课第五周——常用查询条件
例3.33查询所有不姓刘的学生姓名、学号和性别。 查询所有不姓刘的学生姓名、学号和性别。

SELECT Sname, Sno, Ssex
FROM Student
WHERE Sname NOT LIKE ' 刘%';

SQL Server 数据库实验课第五周——常用查询条件
使用换码字符将通配符转义为普通字符
插入课程DB_Design
SQL Server 数据库实验课第五周——常用查询条件
例3.34查询DB_Design课程的课程号和学分。 课程的课程号和学分。

SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design'ESCAPE'\';
SELECT * FROM Course

SQL Server 数据库实验课第五周——常用查询条件

例3.35查询以"DB_" 开头,且倒数第3 个字符为 i的课程的 的课程的
详细情况。

SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i_ _' ESCAPE '\ ' ;//和全表对比

ESCAPE ’ \’ 表示“ 表示“ \” 为换码字符
⑥多重条件查询
逻辑运算符:AND和 和 OR来连接多个查询条件,AND 的优先级高于OR
可以用括号改变优先级
例3.38查询计算机系年龄在20岁以下的学生姓名。 岁以下的学生姓名。

SELECT Sname
FROM Student
WHERE Sdept= 'CS' AND Sage<20;

SQL Server 数据库实验课第五周——常用查询条件
例题3.27中IN谓词实际上是多个OR运算符的缩写,因此该例中的查询可改写为:

SELECT Sname, Ssex
FROM Student
WHERE Sdept= ' CS' OR Sdept= ' MA' OR Sdept= 'IS

ORDER BY子句

用户可以用ORDER子句对查询结果按一个或多个属性列排序
升序(默认):ASC
降序:DESC
对于空值 , 排序时显示的次序由 具体系统实现来决定。
如按照升序排列,含空值的元组最后显示;按降序排,空值元组最先显示。
例3.40查询全体学生情况,查询结果按所在系的系号升序 查询全体学生情况,查询结果按所在系的系号升序
排列,同一系中的学生按年龄降序排列。

SELECT *
FROM Student
ORDER BY Sdept, Sage DESC;

SQL Server 数据库实验课第五周——常用查询条件

4.聚集函数:

(1)统计元组个数 COUNT(*)
(2) 统计一列中值的个数 COUNT([DISTINCT|ALL] < 列名>)
(3) 计算一列值的总和 SUM([DISTINCT|ALL] < 列名>)
(4) 计算一列值的平均值 AVG([DISTINCT|ALL] < 列名>)
(5) 求一列中的最大值MAX([DISTINCT|ALL] < 列名>)
(6) 求一列中的最小值MIN([DISTINCT|ALL] < 列名>)
例3.41查询学生总人数 查询学生总人数 。

SELECT COUNT(*)
FROM Student;

例3.42 查询选修了课程的学生人数 查询选修了课程的学生人数 。

SELECT COUNT(DISTINCT Sno)
FROM SC;

例3.43计算1号课程的学生平均成绩 号课程的学生平均成绩 。

SELECT COUNT(Grade)
FROM SC
WHERE Cno=1;
SELECT * FROM SC//和全表做对比

SQL Server 数据库实验课第五周——常用查询条件

例3.44查询选修1号课程的学生最高分数 号课程的学生最高分数 。

SELECT MAX(Grade)
FROM SC
WHERE Cno='1';

例3.45查询学生201215012选修课程的总学分数。 选修课程的总学分数。

SELECT SUM(Ccredit)
FROM SC,Course
WHERE Sno='201215012' AND SC.Cno=Course.Cno;

5.GROUP BY子句分组: 子句分组:

GROUP BY子句将查询结果按一列或多列的值分组
细化聚集函数的作用对象,如果未对查询结果分组,聚集函数将 作用于整个查询结果。对查询结果分组后,聚集函数将分别作用于每个组
例3.46求各个课程号及相应的选课人数 求各个课程号及相应的选课人数

SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;

SQL Server 数据库实验课第五周——常用查询条件
例3.47查询选修了3门以上课程的学生学号 门以上课程的学生学号 。

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
SQL Server 相关文章推荐
Sql-Server数据库单表查询 4.3实验课
Apr 05 SQL Server
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
Jun 30 SQL Server
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
Sep 04 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL中的连接查询详解
Jun 21 SQL Server
SqlServer常用函数及时间处理小结
May 08 SQL Server
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021-4-3课程——SQL Server查询【2】
2021-4-5课程——SQL Server查询【3】
SQL Server数据定义——模式与基本表操作
SQL Server基本使用和简单的CRUD操作
Sql-Server数据库单表查询 4.3实验课
【HBU】数据库第四周 单表查询
You might like
PHP中date()日期函数有关参数整理
2011/07/19 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
基于jQuery的倒计时插件代码
2011/05/07 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
jQuery实现手势解锁密码特效
2017/08/14 jQuery
微信小程序实现购物车功能
2020/11/18 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python 文件处理注意事项总结
2017/04/10 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python: glob匹配文件的操作
2020/12/11 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
函数指针的定义是什么
2016/08/14 面试题
Python实现简单的猜单词
2021/06/15 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang