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——索引+基于单表的数据插入与简单查询【1】
Apr 05 SQL Server
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQLServer2019 数据库环境搭建与使用的实现
Apr 08 SQL Server
sql server 累计求和实现代码
Feb 28 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL CASE 表达式的具体使用
Mar 21 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
使用MybatisPlus打印sql语句
Apr 22 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server携程核心系统无感迁移到MySQL实战
Jun 01 SQL Server
SQL Server2019安装的详细步骤实战记录(亲测可用)
Jun 10 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
犀利的js 函数集合
2009/06/11 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
Json解析的方法小结
2016/06/22 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
在django中自定义字段Field详解
2019/12/03 Python
Pandas之缺失数据的实现
2021/01/06 Python
《王二小》教学反思
2014/02/27 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2014年加油站工作总结
2014/12/04 职场文书
党员自评材料范文
2014/12/17 职场文书
2015年资料员工作总结
2015/04/25 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书