实用sql查询语句详解2:高级查询

上篇文章《实用sql查询语句详解1:给列取别名、查询部分行、多列排序》介绍了简单查询语句,这节课给大家讲解基本条件查询、集合函数、分组查询、子查询、并集和交集

基本条件查询

比较运算符:>,>=,<,<=,=,!=

between a and b,in(a,b,c),not exists,is null,like ‘%_’,or,and, any,all等

between…and 和not between and

把某一字段中内容在特定范围内的记录查询出来。

例如查询成绩在60到80分的学生信息:

SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80

in(a,b,c)

把某一字段中内容与所列出的查询内容列表匹配的记录查询出来

SELECT SName AS 学员姓名,SAddress As 地址 FROM Students WHERE SAddress IN ('北京','广州','上海')

模糊查询 like

通配符有%、_、[ ]、[^]

%:后面可以跟零个或多个字符

_:匹配任意单个字符

[ ]:查询一定范围内的单个字符,包括两端数据

[^]:表示不在一定范围内的单个字符,包括两端数据

例:查询姓熊的员工并且名字只有两个字的员工信息

实用sql查询语句详解2:高级查询

例:查询年龄在23-27周岁的员工信息

实用sql查询语句详解2:高级查询

集合函数 -sum,count,max,min,avg

SELECT AVG(SCore) AS 平均成绩, MAX (Score) AS 最高分,MIN (Score) AS 最低分 From Score WHERE Score >=60

分组查询—GROUP BY

group by 字段名 having 组过滤条件

SELECT CourseID, AVG(Score) AS 课程平均成绩
FROM Score
GROUP BY CourseID

分组查询多列分组

SELECT StudentID AS 学员编号,CourseID AS 内部测试, AVG(Score) AS 内部测试平均成绩
FROM Score
GROUP BY StudentID,CourseID

分组查询—HAVING

SELECT StudentID AS 学员编号,CourseID AS 内部测试, AVG(Score) AS 内部测试平均成绩
FROM Score
GROUP BY StudentID,CourseID
HAVING COUNT(Score)>1

分组查询对比

  1. WHERE子句从数据源中去掉不符合其搜索条件的数据
  2. GROUP BY子句搜集数据行到各个组中,统计函数为各个组计算统计值
  3. HAVING子句去掉不符合其组搜索条件的各组数据行
SELECT       部门编号, COUNT(*)
FROM          员工信息表
WHERE       工资 >= 2000
GROUP BY 部门编号
HAVING       COUNT(*) > 1

逻辑运算符(NOT、AND、OR)

NOT:取反;
AND:逻辑与;
OR:逻辑或;

例:利用AND查询Employee表中的年龄小于30岁的所有女员工 的信息;

实用sql查询语句详解2:高级查询

例;利用NOT查询年龄不小于30岁的所有女员工的信息

实用sql查询语句详解2:高级查询

例:利用组合查询年龄不大于40的男员工信息或年龄大于30的女员工信息;

实用sql查询语句详解2:高级查询

子查询

SELECT * FROM BOOKS B WHERE B.PRICE IN (SELECT MAX(PRICE) FROM  BOOKS);

并集(Union)和交集(Intersect)

(SELECT * FROM BOOKS B, BORROW C
WHERE B.BNO=C.BNO AND B.BNAME = '计算方法'
INTERSECT
SELECT * FROM BOOKS B, BORROW C
WHERE B.BNO=C.BNO AND B.BNAME != '计算方法习题集')
ORDER BY C.CNO DESC;

本文来自投稿,不代表125jz立场,如若转载,请注明出处:http://www.125jz.com/1090.html

(0)
江山如画的头像江山如画管理团队
上一篇 2018年2月5日 上午9:36
下一篇 2018年2月5日 下午3:17

99%的人还看了以下文章

  • 详解如何在myeclipse中运行JSP,Run As none applicable(图)

    在MyEclipse中打开JAVA Project时想运行单个JAVA文件,如Hello.java文件,可以在Hello.java右键Run As 后面出现java Application,点击即可运行。 在myEclipse中打开web project,想运行单个JSP文件或项目,在jsp文件上右键Run As 没有”run on server…

    2020年2月23日
    12.5K0
  • python 循环语句的应用:水仙花数判断及爱因斯坦阶梯编程

    一、水仙花数判断程序 1.任务内容: 水仙花数是一个三位整数,如153是一个水仙花数,是因为该数的百位的立方、十位的立方、个位的立方和等于该数本身,如下所示: 2.程序编写要求: 使用for语句完成; 统计水仙花数个数的值保存到变量中,要求自动进行统计 •输出结果如下所示: 153 是水仙数370 是水仙数371 是水仙数407 是水仙数三位数中有4个水仙数…

    2022年5月11日
    2.9K1
  • 最全的数据结构排序算法实现及比较

    冒泡排序 类似暴力破解,1 – n 个,每个都比较一次。完成排序 public void sort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) { for (int j = i + 1; j < len – 1; j++) { if (arr[i] …

    2020年10月13日
    2.4K0
  • python 初学者练手上机实操五-循环语句练习

    一、题目:定义一个名称为numList的列表[1,5,9,8,12,43],使用for循环 遍历该列表,输出包含的元素 1、新建一个“for.py”文件。 2、编写程序。 3、调试程序。 4、排除错误。 二、、题目:定义一个名称为numTuple的元级(1,5,9,8,12,43),使用for循环 遍历该元组,输出包含的元素 三、分别使用for循环和whil…

    2023年5月26日
    2.9K1
  • js中var a=b=1和var a=1,b=1的区别

    js中一次性定义多个变量的时候,可以用:var a=1,b=1这种中间用逗号隔开的方式,但有些时候为了省事,直接定义var a=b=1。 那这两种写法方式最后效果是一样的吗?有没有什么区别呢?请大家看下面的范例: 1、用var a=b=1的方式 由上图可以明显看出来,变量b的作用域已经是全局的了,因为在函数外可以调用到(可以正常的输出变量)。 2、用var …

    2022年3月19日
    2.3K0
  • 第一课:maven是什么,为什么使用Maven?

    maven是一款服务于java平台的自动化构建工具。

    2023年1月27日
    8930

发表回复

登录后才能评论