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中常用日期函数的具体使用
Apr 08 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
sql查询结果列拼接成逗号分隔的字符串方法
May 25 SQL Server
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
Jun 30 SQL Server
SQLServer之常用函数总结详解
Aug 30 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server 中的事务介绍
May 20 SQL Server
SQL中的连接查询详解
Jun 21 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python3.7 sys模块的具体使用
2019/07/22 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Python中格式化字符串的四种实现
2020/05/26 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
党员剖析材料范文
2014/09/30 职场文书
小学教师党员承诺书
2015/04/27 职场文书
学校推普周活动总结
2015/05/07 职场文书
2016国培学习心得体会
2016/01/08 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL