SQL 语句解析「建议收藏」

SQL 语句解析「建议收藏」查询语句 1.基础查询: SELECT * FROM 表 解析:此语句会将表中所有的字段查询出来,SQL执行的顺序:FROM 表 (找到表)=>SELECT * (查询所有字段*代表所有字段)

SQL 语句解析

查询语句

1.基础查询:

SELECT * FROM

解析:此语句会将所有的字段查询出来,SQL执行的顺序:FROM(找到)=>SELECT *  (查询所有字段*代表所有字段)

 

SELECT ID,NAME FROM

解析:此语句会将中所有的字段查询出来,SQL执行的顺序:FROM  (找到)=>SELECT  ID,NAME (查询 ID和NAME字段)

 

 

2.带条件的查询

SELECT * FROMWHERE ID=1

 解析:此语句找到ID字段等于1的数据 

 

SELECT * FROMWHERE ID>1

解析:此语句找到表中ID字段大于1的数据

 

SELECT * FROMWHERE ID<1

解析:此语句找到表中ID字段小于1的数据

 

SELECT * FROMWHERE ID IN (1,2,3)

解析:此语句找到表中ID字段等于1或者2或者3的数据

 

SELECT * FROMWHERE ID NOT IN (1,2,3)

解析:此语句找到表中ID字段等于1或者2或者3的数据 

 

SELECT * FROMWHERE NAME LIKE  "%内容%"

解析:此语句找到表中NAME字段出现内容数据,这个%代表任意内容,放在前面代表前面可以出现或者不出现任意内容,比如:

  NAME LIKE  “%内容%”,NAME中的数据是“这个内容是123”   他找到了内容就匹配了,

  如果是NAME LIKE  “内容%”   那就只能找内容开头的比如:NAME中的数据是“内容是123”,他就匹配了,

  如果是NAME LIKE  “%内容”   那就只能找内容结尾的比如:NAME中的数据是“这个内容”,他就匹配了

 

SELECT * FROMWHERE ID  BETWEEN 1 AND 10

解析:此语句找到表中ID字段1–10的内容,BETWEEN 是范围 1到10范围的数据  一般用于数据取范围

 

 

3.AND和OR

在我们查询的过程中有时候不仅仅只有一个调整  那么上述的条件都可以通过AND或者OR组合起来,如:

SELECT * FROMWHERE NAME LIKE  "%内容%"  AND  ID  BETWEEN 1 AND 10 

解析:AND 是的意思  代表此查询既要满足NAME LIKE  “%内容%”  又要满足ID  BETWEEN 1 AND 10  

 

SELECT * FROMWHERE NAME LIKE  "%内容%" OR ID  BETWEEN 1 AND 10 

解析:OR是的意思  代表此查询只要满足NAME LIKE  “%内容%”  或者ID  BETWEEN 1 AND 10 其中一个就行

 

SELECT * FROMWHERE (NAME LIKE  "%内容%"  OR NAME LIKE  "%123%" ) AND  ID  BETWEEN 1 AND 10 

解析:AND 和OR也可以搭配使用,此语句代表除了满足了ID  BETWEEN 1 AND 10 还要满足 NAME LIKE  “%内容%” 和 NAME LIKE  “%123%” 其中一个

 

4.多表联查

多表联查分为三类:内连接(inner join )、左连接(left join)、右连接(right  join )

4.1内连接(inner join 、join )

SELECT  * FROM  表A  as a inner join 表B  as b  ON a.连接字段=b.连接字段

解析:inner join 和ON 是内连接的关键词,内连接是取得表A和表B能通过连接字段关联起来的数据。

连接字段可以有多个,用and或者or 关联 如:ON a.连接字段1=b.连接字段1 and a.连接字段2=b.连接字段2 or a.连接字段3=b.连接字段3

PS: as 是给表A,表B取个别名的方便ON关键词后面指定那张表的连接字段,也可以不用as,直接表A.连接字段,如:

SELECT * FROM 表A  inner join 表B  ON 表A.连接字段=表B.连接字段

示例:学生表student 

SQL 语句解析「建议收藏」     

课程表Course                 

  SQL 语句解析「建议收藏」     

select* from Student s inner join Course c ON  s.Id=c.StudentId

 SQL 语句解析「建议收藏」

通过student表的id和Course表的StudentId 取到了能关联的张三李四王五的记录、赵六关联不上所以没有记录

 

4.2左连接(left join)

SELECT  * FROM  表A  as a left join 表B as b ON a.连接字段=b.连接字段

解析:left join和ON 是左连接的关键词,左连接是以左边表A为主表,表B为子表,先查询出表A中的数据,然后关联表B如果关联上了就将数据查询出来,如果表B中没有关联上数据则对应字段为null。

示例:学生表student                                    

   SQL 语句解析「建议收藏」

课程表Course

 SQL 语句解析「建议收藏」

select* from Student s left join Course c ON  s.Id=c.StudentId

 SQL 语句解析「建议收藏」

通过student表的id和Course表的StudentId 取到了能关联的张三李四王五的记录、赵六关联不上所以Course表对应的记录为null

 

4.3右连接(right join)

SELECT  * FROM  表A  as a right join 表B as b ON a.连接字段=b.连接字段

解析:right join和ON 是右连接的关键词,右连接是以右边表B为主表,表A为子表,先查询出表B中的数据,然后关联表A如果关联上了就将数据查询出来,如果表A中没有关联上数据则对应字段为null。

示例:学生表student

   SQL 语句解析「建议收藏」

课程表Course 

   SQL 语句解析「建议收藏」

select* from Student s right join Course c ON  s.Id=c.StudentId

 SQL 语句解析「建议收藏」

这里之所以数据和内连接(inner join )数据一致,是因为右边表B所有的数据都能关联到左边,如果将student表放置在右边(Course c right join Student s)则和左连接一致

 

4.4三个表以上连接查询

SELECT  * FROM  表A  as a right join 表B as b ON a.连接字段=b.连接字段  INNER JOIN 表C as c ON c.连接字段=a.连接字段

4.5连接查询如果待条件语句:

SELECT  * FROM  表A  as a right join 表B as b ON a.连接字段=b.连接字段 WHERE a.条件字段=条件



5.排序(order by)

5.1单字段排序

SELECT * FROMorder by id asc
SELECT * FROMorder by id

解析:上述2个语法效果一致,order by 和asc 是排序的关键字,代表着以ID字段正序(数字从小到大,a-z)排序

PS:第二条是简写语法,默认排序是正序所以可以不写asc

 

SELECT * FROMorder by id asc

解析:order by 和desc 是排序的关键字,代表着以ID字段倒序(数字从大到小,z-a)排序

 

5.1多字段字段排序

SELECT * FROMorder by id asc,Name desc
SELECT * FROMorder by id,Name desc

解析:上述2个语法效果一致,首先我们以ID 进行正序排列,如果出现ID 相同的情况如:三个ID 为1,那么这三条数据将以Name 倒叙排列:

示例:课程表Course

SQL 语句解析「建议收藏」

select * from Course  order by StudentId desc,CourseName

SQL 语句解析「建议收藏」

先以studentId 字段倒叙排列,如果studentId相同,则以CourseName字段正序排列

 

6.分组(group by)

group_by的意思是根据by对数据按照对应字段进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

select 查询字段 from 表名  group   by 分组字段

解析:简单点来说就是以 “分组字段” 为依据进行聚合操作,比如:很多门课和很多个学生,你如果想取得每个学生上了多少门客,那么我就以每个学生分组 ,来求课程数

示例:课程表Course

SQL 语句解析「建议收藏」

select StudentId,Count(*)CourseNumber from  Course  GROUP BY StudentId

 

 

 SQL 语句解析「建议收藏」

解析:首先我以学生ID 进行的分组,那么所有学生ID相同的数据都是一个组,然后我在组内进行取行数【count(*)】,然后的给个别名CourseNumber 

这里要注意使用使用了group by 就不能用*,只能使用group by的字段,因为select的语句执行的先后顺序是先group by 再select ,这个时候其实数据已经分组了,所以你的“查询字段”里面只能出现【分组字段】和【分组聚合函数】

 

select 字段 from 表名 where  过滤条件 group  by 字段 having 过滤条件

解析:having是分组之后再进行条件筛选的关键词,和where不同的是 where条件在分组之前执行和having条件在分组之后执行

 

7.常用聚合函数介绍

7.1求和 sum()

select sum(求和字段) from 表名 where 条件
select 分组字段,sum(求和字段) from 表名 where 条件 group by 分组字段

7.2平均值 avg()

select avg(求平均值字段) from 表名 where 条件
select 分组字段,avg(求平均值字段) from 表名 where 条件 group by 分组字段

7.3个数统计 count()

select count( ) from 表名 --包括空值
select count(*) from 表名 --不包括空值
select 分组字段,count(*) from 表名 where 条件 group by 分组字段

7.4最大值 max()

select max(取最大值字段) from 表名
select 分组字段,max(取最大值字段) from 表名 where 条件 group by 分组字段

7.5最小值min()

select min(取最小值字段) from 表名
select 分组字段,min(取最小值字段) from 表名 where 条件 group by 分组字段

8.查询去重

 

9.高级开窗函数row_number() over()和row_number() over(partition by)

 

10.临时表

 

新增

 

修改

 

删除

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

(0)
上一篇 2023-04-15 20:30
下一篇 2023-04-16

相关推荐

  • @InsertProvider 或者 @SelectProvider 同 text.xml 配置文件使用优劣[通俗易懂]

    @InsertProvider 或者 @SelectProvider 同 text.xml 配置文件使用优劣[通俗易懂]1.有时候我们根据参数输入条件决定插入什么数据, 用text.xml 当减少实体类的某些属性,你需要到text.xml 一个一个的删掉多余的属性,但是通过InsertProvider 写的因为和类直…

    2023-03-10
    148
  • Postgresql 空间扩展需要Postgis插件

    Postgresql 空间扩展需要Postgis插件下载Postgis http://postgis.net/ Windows: http://download.osgeo.org/postgis/windows/ Linux/Redhat/Cent…

    2023-01-27
    168
  • 以Python计算数组长度为中心

    以Python计算数组长度为中心Python中的数组是一种内置的数据结构,它用于将多个值存储在一个可变的容器中。

    2024-06-26
    49
  • Python import路径简介

    Python import路径简介Python是一种高级动态语言,有着广泛的应用。如果你是一个Python编程爱好者或者正准备学习这门语言,那么本文将会介绍Python import路径的相关知识。在Python中,import语句非常重要。它让你从一个文件中引入到另一个文件,或者从一个模块中引入到另一个模块。但是,当你使用import语句时,如果路径不正确,那么程序就会出错。本文将会介绍如何正确地使用Python的import路径。

    2024-05-30
    104
  • 库索引缺失情况查询[通俗易懂]

    库索引缺失情况查询[通俗易懂]索引的正常使用对于软件的性能至关重要。 可以通过DMV,DMF检查缺失索引情况。 –获取缺失索引语句。 SELECT top 100 mid.index_handle, equality_colum

    2022-12-23
    149
  • Python中break语句的使用

    Python中break语句的使用在编写代码时,我们经常需要在程序执行期间中断循环或跳出循环。Python提供了一个关键字“break”,用来提前停止循环。在本文中,我们将讨论如何使用break语句来简化程序并提高效率。

    2024-05-17
    89
  • Python字典相加操作详解

    Python字典相加操作详解在Python语言中,对于字典相加的操作是一个十分常见的操作。简单来说,对字典进行相加操作,就是将两个字典的键值对进行合并,然后返回一个新的合并后的字典。

    2024-08-13
    34
  • 数据大屏设计工具_led大屏搭建教程

    数据大屏设计工具_led大屏搭建教程基于可视化搭建的方式来实现通用数据大屏搭建的解决方案,通过对平台能力的开发来讲解可视化搭建的核心功能实现,帮助有需要的同学了解可视化搭建的整体架构设计流程。

    2023-06-11
    145

发表回复

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