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 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
sql字段解析器的实现示例
Jun 23 SQL Server
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
Jun 30 SQL Server
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
Jun 30 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SQL解决未能删除约束问题drop constraint
May 30 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
Python编写电话薄实现增删改查功能
2016/05/07 Python
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
物业招聘计划书
2014/01/10 职场文书
银行优秀员工事迹
2014/02/06 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
小学毕业感言100字
2015/07/30 职场文书