iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL 语句解析
  • 674
分享到

SQL 语句解析

SQL语句解析 2019-10-13 20:10:36 674人浏览 猪猪侠
摘要

查询语句 1.基础查询: SELECT * FROM 表 解析:此语句会将表中所有的字段查询出来,sql执行的顺序:FROM 表 (找到表)=>SELECT *  (查询所有字段*代表所有字段)   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 

     

课程表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 * 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

select * from Course  order by StudentId desc,CourseName

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

 

6.分组(group by)

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

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

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

示例:课程表Course

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

 

 

 

解析:首先我以学生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.临时表

 

新增

 

修改

 

删除

您可能感兴趣的文档:

--结束END--

本文标题: SQL 语句解析

本文链接: https://www.lsjlt.com/news/8452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL 语句解析
    查询语句 1.基础查询: SELECT * FROM 表 解析:此语句会将表中所有的字段查询出来,SQL执行的顺序:FROM 表 (找到表)=>SELECT *  (查询所有字段*代表所有字段)   SELECT ...
    99+
    2019-10-13
    SQL 语句解析
  • Mybatis中的动态SQL语句解析
    这篇文章主要介绍了Mybatis中的动态SQL语句解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下   Mybatis中配置SQL有两种方式,一种是利用...
    99+
    2022-10-18
  • sql语句练习50题(含解析)
    文章目录 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数(偏难)2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数3、查询平均成绩大于等于60分的每个同学的学生编号和学生姓名和平均成绩4、查询平均成绩小于...
    99+
    2023-08-18
    sql 数据库 mysql
  • 库表分析-sql语句
    SET FOREIGN_KEY_CHECKS=0; -- ------------------------------ Table structure for car-- ---------------------------- DROP...
    99+
    2016-06-09
    库表分析-sql语句 数据库入门 数据库基础教程 数据库 mysql
  • SQL语句解读服务的示例分析
    SQL语句解读服务的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天主要分享一个有趣的SQL语句解读服务,支持高亮显...
    99+
    2022-10-19
  • SQL查询语句的执行顺序解析
    SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句。 从这个顺序中我们可以发现,所有的查询语句都是从 FROM 开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。...
    99+
    2021-04-08
    SQL查询语句的执行顺序解析
  • ORACLE SQL语句优化技术要点解析
    操作符优化: IN 操作符   用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。   但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与...
    99+
    2022-10-18
  • Oracle SQL 语句高版本分析
    OracleSQL 语句高版本分析1.     何为高版本每次执行一条SQL语句时,如果其对应的当前已经存在于library cache里的一个父游标下的各...
    99+
    2022-10-18
  • sql语句
    一.客户端命令介绍mysql1、用于数据库的连接管理1) 连接(略)2) 管理:#MySQL接口自带的命令 h 或 help 或?      查看帮...
    99+
    2019-12-02
    sql语句
  • sql语句
    mySQL mySQL 数据库操作 创建数据库 修改数据库 查看数据库的字符集和校验规则 删除数据库 查看所有数据库 查看正在使用的数据库 切换数据库 数据库表操作 创建数据表 数据类型 单表约束分类 查看所有表 查看表...
    99+
    2019-04-13
    sql语句 数据库入门 数据库基础教程 数据库 mysql
  • SQL语句解析执行的过程及原理
    目录一、sqlSession简单介绍二、获得sqlSession对象源码分析三、SQL执行流程,以查询为例一、sqlSession简单介绍 拿到SqlSessionFactory对象...
    99+
    2022-11-13
  • SQL语句大全(详解)
    SQL 前言1 DDL1.1 显示所包含的数据库1.2 创建数据库1.3 删除数据库1.4 使用数据库1.4.1 创建表1.4.2 查看表的结构1.4.3 查看当前数据库下的所有表1.4.4 ...
    99+
    2023-10-26
    sql 数据库 mysql
  • SQL语句之DWL、DCL语句
    SQL语句之DWL、DCL语句===============================================================================概述: ...
    99+
    2022-10-18
  • mybatis定义sql语句标签之delete标签解析
    目录mybatis之delete标签属性说明简单示例<delete>标签与delete语句delete语句批量删除mybatis之delete标签 delete...
    99+
    2022-11-13
  • 一条SQL更新语句的执行过程解析
    目录一、执行过程二、日志模块1、物理日志redo logredo log的使用场景redolog配置2、逻辑日志binlog两阶段提交binlog使用场景前言: 上一篇文章讲解了SQ...
    99+
    2022-11-13
  • SQL Server基础语句讲解
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select into b from a where 1<>1(仅用于SQlServer)...
    99+
    2022-10-18
  • oracle SQL语句
    1.表空间 创建 create tablespace abc datafile ‘/u01/app/oracle/oradata/TestDB11/catalog.dbf’ 自定义数据文件位置及名...
    99+
    2022-10-18
  • sql的基础语句-sql的查询语句select
     SQL查询语句介绍--select语句1.简单的select查询语句1.1 查行SQL> select * from emp;1.2 查列SQL> select ...
    99+
    2022-10-18
  • 对SQL语句进行分析和优化
    安装和查看ORACLE执行计划ORACLE在执行SQL语句时使用的步骤的集合叫做执行计划前起条件:    在目录:$ORACLE_HOME/RDBMS/ADMIN目录下的执行u...
    99+
    2022-10-18
  • MySQL 语句分析及sql进程查看
    在 my.cnf 文件中配置好:slow_query_log=1slow_query_log_file=mysql.slowlong_query_time=10即可记录超过默认的 10s 执行时间的 SQL...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作