SQL查询语句大全(个人总结)

SQL查询语句大全(个人总结)全面的sql查询总结

大家好,又见面了,我是你们的朋友全栈君。

前言

在一级项目组时,监控服务器的同时,总结了一下SQL关于查询的语句,希望能给大家带来一些帮助
推荐两个博客,下面借鉴了这两个
菜鸟教程
网上大佬的

之前的总结

在这里插入图片描述
这次在之前的基础上扩展一些内容,分别在字句的后面扩展更多的表达式或者函数。
在这里插入图片描述
下面会用到一级中具体某个表,会有说明

Select

Select+聚合函数

总数

count(*)表示计算总行数,括号中写星与列名,结果相同
例1.查询登录系统学总数

select count(*) from StudentBindPaperTypeEntity
最大值

max(列)求此列的最大值
例2.求下表的最大编号

select max(StudentID) from StudentBindPaperTypeEntity
最小值

min(列)求此列的最小值
例3.求下表编号最小编号

select min(StudentID) from StudentBindPaperTypeEntity
求和

sum(列)求此列之和(注:sum运算符与数字类型连用)
例4.查询当前在线的学生(IsUse=0表示未在线,1表示在线)

select SUM(IsUse) from StudentBindPaperTypeEntity
平均值

avg(列) 表示求此列的平均值(注:avg运算符与数字类型连用)
例5:查询学生编号的平均数

select avg(StudentID) from StudentBindPaperTypeEntity

Select+case…when…then语句

case…when…then语句,相当于编程语言中if判断
例1根据IsUser字段查询学生是否在线

select a.StudentID,
	(case a.IsUse 
	when '0' then '未在线' 
	when '1' then '在线' else '未上传' end) as 在线情况
from StudentBindPaperTypeEntity as a

显示情况:
在这里插入图片描述

select+top

top:取表中前多少的数据
例1.取出表中第几行数据(如第一行)

select top 1 * from StudentBindPaperTypeEntity

例2.取出表中百分之多少数据

select top 50 percent * from StudentBindPaperTypeEntity 

from(表)+连接查询

连接查询

  • 内连接:Inner join
  • 左连接:Left join
  • 右连接:Right join

例子中涉及的表

  • StudentInfoEntity:全校学生的信息
  • ScoreEntity:学生考试的成绩(并不全包含全校学生)

from+inner join

在这里插入图片描述
例1.查出这两个表中共有的信息(as为表的别名,方便)

select score.studentID,score.score,s.CollegeID,s.major,s.majorClass
from ScoreEntity as score inner join StudentInfoEntity as s on score.studentID=s.studentID 
where score.CollegeID=02

显示结果
在这里插入图片描述

from+left join

在这里插入图片描述
左外连接:左表的值会全部显示出来,右表的值显示on条件搜索的的结果,搜索不到为NULL
例1两个表作左外连接

select score.studentID,score.score,s.CollegeID,s.major,s.majorClass
from  StudentInfoEntity as s left join ScoreEntity as score on s.studentID=score.studentID 

显示结果:(个别)
在这里插入图片描述

from+right join

在这里插入图片描述
右外连接与左外连接相反(右表的值全部显示出来)
例1两个表做右外连接

select score.studentID,score.score,s.CollegeID,s.major,s.majorClass
from  ScoreEntity as score  right join StudentInfoEntity as s on s.studentID=score.studentID 

现在两个表换了位置,结果是一样的
在这里插入图片描述

Where(条件语句查询)

在这里插入图片描述

比较运算符

例1.查询学号>18832650890的学生

select * from StudentBindPaperTypeEntity where StudentID>18832650890

例2.查询学号!=18832650890的学生(<>同效)

select * from StudentBindPaperTypeEntity where StudentID!=18832650890

模糊查询

like
%表示任意多个字符
例1.查询1月8号考试的学生

select * from StudentBindPaperTypeEntity where TimeTamp like '2020-01-08%'

例2.查询不是1月8号考试的学生

select * from StudentBindPaperTypeEntity where TimeTamp not like '2020-01-08%'

范围查询

in关键字为非连续查询
例1.查询两个不相邻的学号的学生

select * from StudentBindPaperTypeEntity where StudentID in('19100142001','19100142006')

Between…and…为连续查询(注:sql软件情况不一样,可能不包含and后的值)
例2.查询两个学号之间的学生

select * from StudentBindPaperTypeEntity where StudentID Between 19100142001 and 19100142006

空判断

is null判断为空
例1.查询没有试卷的学生

select * from StudentBindPaperTypeEntity where PaperType is null

is not null 判断非空
例2.查询有试卷的学生

select * from StudentBindPaperTypeEntity where PaperType is not null

优先级

优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用

group by(分组)

作用:将字段间一对多的关系,向一的方向靠拢分组
例1.查出参加考试有几个学院

select CollegeID  from StudentBindPaperTypeEntity group by CollegeID

显示结果:
在这里插入图片描述

group by+聚合函数

例2.查出各个学院参加考试的人数

select CollegeID, count(StudentID) from StudentBindPaperTypeEntity group by CollegeID 

显示结果:
在这里插入图片描述
其实group by + 聚合函数是从group by + group_concat()演变过来的,SqlServer不支持这个函数

group by+having

having的作用跟where子句功能一样,只不过having只用在group by
例3.查出学院ID大于10的学院

select CollegeID  from StudentBindPaperTypeEntity group by CollegeID having CollegeID>10

显示结果:
在这里插入图片描述

Order by(排序)

排序查询语法:

select * from 表名 order by1 asc|desc [,2 asc|desc,...]
  • 如果列1的值相同,则按照列2排序,以此类推
  • asc从小到大
  • desc从大到小

例1.根据学院分组ID降序(desc)

select CollegeID  from StudentBindPaperTypeEntity group by CollegeID order by CollegeID desc

在这里插入图片描述
例2.将上表升序(asc)

select CollegeID  from StudentBindPaperTypeEntity group by CollegeID order by CollegeID asc

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131539.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月29日 下午11:00
下一篇 2022年4月29日 下午11:00


相关推荐

  • 【嵌入式】基于ARM的嵌入式Linux开发总结

    【嵌入式】基于ARM的嵌入式Linux开发总结前言嵌入式知识点复习一嵌入式知识点复习二–体系结构嵌入式知识点复习三–ARM-LINUX嵌入式开发环境嵌入式知识点复习四–arm-linux文件编程嵌入式知识点复习五–arm-linux进程编程嵌入式知识点复习六–arm-linux网络编程嵌入式知识点复习七–linux字符型设备驱动初步嵌入式知识点复习一1、嵌入式系统的一般组成结构2、嵌入式硬件系统的结构(1)…

    2022年6月10日
    38
  • 无阻塞情况connect生产EINPROGRESS错[通俗易懂]

    无阻塞情况connect生产EINPROGRESS错[通俗易懂]今天的游戏开发client测试程序,非常多,因为出现client。后connect成功。代码证recv系统调用。后来发现,可能是由于socket默认模式被阻止,这将使很多client接处于链接却不能数据传输状态。后来改动socket为非堵塞模式,但在connect的时候,发现返回值为-1,刚開始以为是connect出现错误,但在server上看到了链接是ESTABLISED…

    2022年7月16日
    18
  • 使用Navicat进行ssh通道连接MySQL数据库(亲测可行)

    使用Navicat进行ssh通道连接MySQL数据库(亲测可行)

    2022年2月18日
    68
  • Android—Gradle教程(九)完结篇

    Android—Gradle教程(九)完结篇前言到目前为止,Gradle基础以及Kotlin基础讲解完毕。因此,在本篇里,将会以Gradle的构建优化以及如何从Groovy迁移到KTS进行详解!话不多说,直接开始!1、Gradle构建优化优化都是些配置,快速过一下就行了!重点在迁移KTS1.1并行编译开启默认情况下Gradle处理多模块时,往往是挨个按顺序处理。在项目根目录下面的gradle.properties中设置开启并行编译,提升编译速度:org.gradle.parallel=true1.2开启编译守护进程(默认开启)

    2022年6月28日
    29
  • [硬件驱动] CAN接口

    [硬件驱动] CAN接口CAN接口的介绍:CAN总线可分为:高速CAN,低速CAN,单线CAN。1.在速度方面高速CAN的传输速率在125K~~1Mbps。低速CAN的速率在125Kbps以下,低速CAN具更好的容错性。2.这三种总线之间的最主要区别是物理层。以传输介质和线的数量说,单线CAN只需1条导线,低速容错CAN和高速CAN通过双绞线传输。还有电平的逻辑的区别,定义逻辑为1称作隐性,逻辑为0称作…

    2022年6月18日
    59
  • pycharmlinux安装教程_深度linux系统官网

    pycharmlinux安装教程_深度linux系统官网Linux系统下PyCharm的安装1.什么是PyCharm2.什么是IDE3.PyCharm的安装4.PyCharm的使用5.pycharm的一些快捷键1.什么是PyCharmPyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外…

    2022年8月28日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号