SQL语句解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 BETWEEN1AND10

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

3.AND和OR

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

SELECT*FROM表WHERE NAME LIKE'%内容%'AND ID BETWEEN1AND10

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

SELECT*FROM表WHERE NAME LIKE'%内容%'OR ID BETWEEN1AND10

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

SELECT*FROM表WHERE (NAME LIKE'%内容%'OR NAME LIKE'%123%' ) AND ID BETWEEN1AND10

解析: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.条件字段=条件

相关文档
最新文档