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
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
SQLServer之常用函数总结详解
Aug 30 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
SQL SERVER存储过程用法详解
Feb 24 SQL Server
SQL CASE 表达式的具体使用
Mar 21 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 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实现批量生成App各种尺寸Logo
2015/03/19 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
深入讲解Java编程中类的生命周期
2016/02/05 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
初一体育教学反思
2014/01/29 职场文书
大学新生军训方案
2014/05/03 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
vue中div禁止点击事件的实现
2022/04/02 Vue.js
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android