前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL查询语句大全(个人总结)

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

作者头像
全栈程序员站长
发布2022-08-12 14:25:28
1.5K0
发布2022-08-12 14:25:28
举报
文章被收录于专栏:全栈程序员必看

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

文章目录

前言

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

之前的总结

这次在之前的基础上扩展一些内容,分别在字句的后面扩展更多的表达式或者函数。

下面会用到一级中具体某个表,会有说明

Select

Select+聚合函数
总数

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

代码语言:javascript
复制
select count(*) from StudentBindPaperTypeEntity
最大值

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

代码语言:javascript
复制
select max(StudentID) from StudentBindPaperTypeEntity
最小值

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

代码语言:javascript
复制
select min(StudentID) from StudentBindPaperTypeEntity
求和

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

代码语言:javascript
复制
select SUM(IsUse) from StudentBindPaperTypeEntity
平均值

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

代码语言:javascript
复制
select avg(StudentID) from StudentBindPaperTypeEntity
Select+case…when…then语句

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

代码语言:javascript
复制
select a.StudentID,
	(case a.IsUse 
	when '0' then '未在线' 
	when '1' then '在线' else '未上传' end) as 在线情况
from StudentBindPaperTypeEntity as a

显示情况:

select+top

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

代码语言:javascript
复制
select top 1 * from StudentBindPaperTypeEntity

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

代码语言:javascript
复制
select top 50 percent * from StudentBindPaperTypeEntity 

from(表)+连接查询

连接查询

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

例子中涉及的表

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

例1.查出这两个表中共有的信息(as为表的别名,方便)

代码语言:javascript
复制
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两个表作左外连接

代码语言:javascript
复制
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两个表做右外连接

代码语言:javascript
复制
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的学生

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where StudentID>18832650890

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where StudentID!=18832650890
模糊查询

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where TimeTamp like '2020-01-08%'

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where TimeTamp not like '2020-01-08%'
范围查询

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where StudentID in('19100142001','19100142006')

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where StudentID Between 19100142001 and 19100142006
空判断

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where PaperType is null

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

代码语言:javascript
复制
select * from StudentBindPaperTypeEntity where PaperType is not null
优先级

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

group by(分组)

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

代码语言:javascript
复制
select CollegeID  from StudentBindPaperTypeEntity group by CollegeID

显示结果:

group by+聚合函数

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

代码语言:javascript
复制
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的学院

代码语言:javascript
复制
select CollegeID  from StudentBindPaperTypeEntity group by CollegeID having CollegeID>10

显示结果:

Order by(排序)

排序查询语法:

代码语言:javascript
复制
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]
  • 如果列1的值相同,则按照列2排序,以此类推
  • asc从小到大
  • desc从大到小

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

代码语言:javascript
复制
select CollegeID  from StudentBindPaperTypeEntity group by CollegeID order by CollegeID desc

例2.将上表升序(asc)

代码语言:javascript
复制
select CollegeID  from StudentBindPaperTypeEntity group by CollegeID order by CollegeID asc

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 之前的总结
  • Select
    • Select+聚合函数
      • Select+case…when…then语句
        • select+top
        • from(表)+连接查询
          • from+inner join
            • from+left join
              • from+right join
              • Where(条件语句查询)
                • 比较运算符
                  • 模糊查询
                    • 范围查询
                      • 空判断
                        • 优先级
                        • group by(分组)
                          • group by+聚合函数
                            • group by+having
                            • Order by(排序)
                            相关产品与服务
                            云服务器
                            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档