2021年5月23日星期日

SQL 语句解析

查询语句

1.基础查询:

SELECT * FROM 表

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

 

SELECT ID,NAME FROM 表

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

 

 

2.带条件的查询

SELECT * FROM 表 WHERE ID=1

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

 

SELECT * FROM 表 WHERE ID>1

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

 

SELECT * FROM 表 WHERE ID<1

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

 

SELECT * FROM 表 WHERE ID IN (1,2,3)

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

 

SELECT * FROM 表 WHERE ID NOT IN (1,2,3)

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

 

SELECT * FROM 表 WHERE NAME LIKE '%内容%'

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

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

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

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

 

SELECT * FROM 表 WHERE ID BETWEEN 1 AND 10

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

 

 

3.AND和OR

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

SELECT * FROM 表 WHERE NAME LIKE '%内容%' AND ID BETWEEN 1 AND 10 

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

 

SELECT * FROM 表 WHERE NAME LIKE '%内容%' OR ID BETWEEN 1 AND 10 

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

 

SELECT * FROM 表 WHERE (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 

     

课程表Course                 

       

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

 

通过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                                    

   

课程表Course

 

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

 

通过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

   

课程表Course 

   

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

 

这里之所以数据和内连接(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 * FROM 表 order by id ascSELECT * FROM 表 order by id

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

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

 

SELECT * FROM 表 order by id asc

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

 

5.1多字段字段排序

SELECT * FROM 表 order by id asc,Name descSELECT * FROM 表 order by id,Name desc

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

示例:课程表Course

select * from Course  order by StudentId desc,CourseName

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

 

 

新增

 

修改

 

删除









原文转载:http://www.shaoqun.com/a/757784.html

跨境电商:https://www.ikjzd.com/

淘粉吧官网:https://www.ikjzd.com/w/1725.html

电霸:https://www.ikjzd.com/w/2597


查询语句1.基础查询:SELECT*FROM表解析:此语句会将表中所有的字段查询出来,SQL执行的顺序:FROM表(找到表)=>SELECT*(查询所有字段*代表所有字段)SELECTID,NAMEFROM表解析:此语句会将表中所有的字段查询出来,SQL执行的顺序:FROM表(找到表)=>SELECTID,NAME(查询ID和NAME字段)2.带条件的查询SELECT*FROM表WHE
asiabill:https://www.ikjzd.com/w/1014
壹米滴答:https://www.ikjzd.com/w/2314
福茂:https://www.ikjzd.com/w/1633
2020中国跨境电商市场研究及未来展望:https://www.ikjzd.com/articles/133100
Wish新红利政策汇总_疫情期间Wish有什么优惠政策_Wish抗疫行动:https://www.ikjzd.com/articles/119507
Dubsmash:https://www.ikjzd.com/w/2114

没有评论:

发表评论