企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
#### 基本语法(查询所有字段) ~~~ select * from 表名; ~~~ #### 基本语法(根据字段查询value) ~~~ select 字段1,字段2,字段3 from 表名; ~~~ #### 完整的数据查询 ~~~ select 选项 字段列表 from 数据源 where条件 group by分组 having条件 order by排序 limit限制; ~~~ ~~~ select * from 数据源; //这部分是查询主句 ~~~ ~~~ where条件 group by分组 having条件 order by排序 limit限制; //这部分是条件查询五子句 ~~~ #### select选项 : 系统该如何对待查询得到的结果. 1. all : 默认的,表示保存所有的记录. 2. distinct : 去重,去除重复的记录(所有字段都是重复的),只保留一条. #### 去重 ~~~ select distinct * from 表名; ~~~ #### 字段别名 有的时候需要从多张表获取数据,在获取数据的时候,可能存在不同表中有同名的字段,需要将同名的字段命名成不同名的:别名 alias . ~~~ select 字段名 as 别名 from 表名; ~~~ #### from : 1. from 是为前面的查询提供数据 : 数据源只要是一个符合二维表结构的数据即可. #### 多表数据 ~~~ select * from 表1,表2; ~~~ 结果:两张表的记录数相乘,字段数拼接 本质:从第一张表取出一条记录,去拼凑第二张表的所有记录,保留所有结果。得到的结果在数学上有一个专业的说法:笛卡尔积,这个结果出了给数据库造成压力,没有其他意义:应该尽量避免出现笛卡尔积. #### 动态数据 1. from 后面跟的数据不是一个实体表,而是一个从表中查询出来得到的二维结果表(子查询) 语法: ~~~ select * from (select 字段列表 from 表) as 别名; ~~~ #### where子句(判断最原始的数据) 1. 用来从数据表获取数据的时候,然后进行条件筛选. 2. 数据获取原理 : 针对表去对应的磁盘处获取所有的记录(一条条获取的),where的作用就是在拿到一条结果后就进行判断,判断是否符合条件,如果符合就保存下来,如果不符合就直接舍弃(不放到内存中,放到内存中的都是最终要展示给用户看的). 3. where本身不能进行判断, 而是通过运算符进行结果比较来判断数据. #### group by子句 语法: ~~~ group by 字段名 ~~~ 1. group by 表示分组的含义,根据指定的字段,将数据进行分组,**分组的目的是为了统计**. 2. Group by是为了分组后进行数据统计的,如果只是想看数据显示,那么group by没什么含义:group by将数据按照指定的字段分组之后,只会保留每组的第一条记录. 3. 利用一些统计函数:(聚合函数) * count():统计每组中的数量,如果统计目标是字段,那么不统计为空NULL字段,如果为*那么代表统计记录 * avg():求平均值. * sum():求和. * max():求最大值. * min():求最小值. * group_concat : 为了将分组中指定的字段进行合并(字符串拼接). #### 多分组 将数据按照某个字段进行分组之后,对已经分组的数据进行再次分组. 语法: ~~~ group by 字段1,字段2,字段3 ~~~ #### 分组排序 Mysql中,分组默认有排序的功能:按照分组字段进行排序,默认是升序. 语法: ~~~ group by 字段 [ asc | desc ] ~~~ #### having字句 Having的本质和where一样,是用来进行数据条件筛选. 1. Having是在group by子句之后:可以针对分组数据进行统计筛选,但是where不行. 2. Where不能使用聚合函数:聚合函数是用在group by分组的时候,where已经运行完毕. 3. Having在group by分组之后,可以使用聚合函数或者字段别名(where是从表中取出数据,别名是在数据进入到内存之后才有的). 4. 强调:having是在group by之后,group by是在where之后:where的时候表示将数据从磁盘拿到内存,where之后的所有操作都是内存操作. #### order by 字句 order by排序:根据校对规则对数据进行排序 语法 ~~~ order by 字段 [ asc | desc ]; //asc升序,默认的 ~~~ 1. Order by也可以像group by一样进行多字段排序:先按照第一个字段进行排序,然后再按照第二个字段进行排序。 ~~~ order by 字段1 规则,字段2 规则; ~~~ #### limit 子句 纯粹的限制获取的数量:从第一条到指定的数量. 语法 : ~~~ limit offset length //offset:偏移量(从哪开始) , length :长度(获取多少条). ~~~ 1. Limit通常在查询的时候如果限定为一条记录的时候,使用的比较多:有时候获取多条记录并不能解决业务问题,但是会增加服务器的压力. 2.