这个警告在常规场景中没什么影响,但如果是用excel跑SQL,它会因为该警告阻止你的后续操作~事实上excel执行sql限制多多,需要更多的奇技淫巧,之前我就写过一篇。...言归正传,要解决这个警告,一种当然是在语句中用到聚合函数的地方统统加上isnull,但如果语句很长,地方很多就蛋疼了,于是我推荐另一个更优雅的做法: 只需语句顶部加一句: SET ANSI_WARNINGS
‘毛%’ 模糊查询占位符 _ 表示单个任意字符占位符 % 表示多个任意字符 is [not] null 查询某一列[不]为NULL 的值,注:NULL值不能用 = 判断 逻辑运算符 说明 and 或...注意 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数 将一列数据作为一个整体,进行纵向的计算。...聚合函数的计算,排除null值。...,某一列的值不能为null 创建表时添加非空约束 create table 表名( 变量1 int, 变量2 varchar(32) not null -- 给变量2添加非空约束 ); 创建表后添加非空约束...持久性:当事务提交或回滚后,数据库会持久化的保存数据。 隔离性:多个事务之间。相互独立。 一致性:事务操作前后,数据总量不变。 隔离级别 多个事务之间是隔离的,相互独立的。
Projection 里面会裁掉用不上的列,DataSource 里面也会裁剪掉不需要使用的列。 Aggregation 算子会涉及哪些列?group by 用到的列,以及聚合函数里面引用到的列。...首先,如果 Projection 算子要投影的列,跟它的孩子结点的输出列,是一模一样的,那么投影步骤就是一个无用操作,可以消除。...做谓词下推时,如果我们知道接下来的的谓词条件一定会把包含 NULL 的行全部都过滤掉,那么做外连接就没意义了,可以直接改写成内连接。 什么情况会过滤掉 NULL 呢?...比如,某个谓词的表达式用 NULL 计算后会得到 false;或者谓词里面用 OR 条件连接,其中一个会过滤 NULL;又或者用 AND 条件连接,其中每个都是过滤 NULL 的。...对于 Projection,它的孩子中的唯一索引列信息,跟它的投影表达式的列取交集。比如 a b c 列都是唯一索引,投影其中的 b 列,输入的 b 列仍然具有值唯一的属性。
当数据较好的范式化时,就只要很少或这没有重复数据,所以只需要修改更少的数据 范式化的表通常更小,可以更好的放在内存里,所以执行操作会更快 很少有多余的数据意味着检索列表数据时更少需要DISTINCT或者...实际环境中不可能完全范式化或反范式化 四、缓存表和汇总表 缓存表 | 表示存储那些可以比较简单地从schema其它表获取(但获取速度比较慢)数据的表 汇总表 | 保存使用 GROUP BY 语句聚合数据的表...可能不需要重建表的一些操作 移除(非增加)一个列的AUTO_INCREMENT属性 增加、移除或更改ENUM和SET常量。...该操作会通过排序来构建所有索引,包括唯一索引 总结 避免过度设计 避免NULL值 使用小而简单的适合的数据类型 尽量使用相同的数据类型存储相似或相关的值,尤其是在关联条件中使用的列 注意可变长字符串,其在临表和排序时可能导致最大长度分配内存...尽量使用整型定义标识列 避免使用MYSQL已经遗弃的特性 小心使用ENUM和SET 范式是好的,但反范式有时也是必须的,并且能带来好处 10.ALTER TABLE是痛苦的操作,因为大部分情况下会锁表并重建整张表
默认计算结果均为 null 将null替换为一个值-- IFNULL(可能为NULL的值,如果为NULL要替换的值)SELECT name,math,english,math + IFNULL(english...ASC:升序# DESC:降序5.聚合函数-- 聚合函数:将一列数据作为整体进行计算(计算时默认排除 NULL 值)# count:统计个数# 一般选择非空的列:主键# count(*) 统计所有列...有一列不为null 就统计在内# max:计算最大值# min:计算最小值# sum:计算和# avg:计算平均值SELECT COUNT(math) FROM student;SELECT COUNT...,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性值)为该表的码主属性:码属性组中的所有属性非主属性:除过码属性组的属性第三范式:在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF...:是不可分割的最小操作单位,要么同时成功,要么同时失败持久性:当事务提交或回滚后,数据库会持久化的保存数据隔离性:多个事务之间 相互影响一致性:事务操作前后 数据总量不变事务隔离的级别概念∶多个事务之间隔离的
2.当两个Project运算符之间有LocalLimit/Sample/Repartition运算符,且上层的Project由相同数量的列组成,且列数相等或具有别名时。...当计算整个搜索条件时,只有当Literal(null, BooleanType)在语义上等同于FalseLiteral时,替换才有效。...这可以通过以下方式实现:1.在其计算结果始终为true的情况下,省略Filter。2.当筛选器的计算结果总是为false时,替换成一个伪空关系。3.消除子节点输出给定约束始终为true的条件。...冗余别名是不会更改列的名称或元数据,也不会消除重复数据的别名。...冗余聚合是一种聚合,其唯一目标是保持不同的值,而其父聚合将忽略重复的值。
聚合函数: SQL提供了下列聚合函数: COUNT(*) 计算元组的个数 COUNT() 对一列中的值计算个数 SUM() 求某一列值的总和(此列的值必须是数值型) AVG()...求某一列的平均值(此列的值必须是数值型) MAX() 求某一列的最大值 MIN() 求某一列的最小值 SELECT语句的完整结构: SELECT的列名或列表达序列> ...空值的比较操作: SQL允许列值为空,空值用NULL表示,NULL不占用空间。 空值的存在增加了算术操作和比较操作的复杂性。...SQL中规定,涉及+,-,*,/的算术表达式中有一个值是空值时,表达式的值也是空值。涉及空值的比较操作的结果认为是”false“。...在聚合函数中遇到空值时,除了COUNT(*)外,都跳过空值去处理非空值。 集合成员资格的比较: 判断元组是否在查询的结果(即集合)中的操作,叫做”集合成员资格的比较“。
底层语法优化 1 count优化 2消除子查询重复字段 3 谓词下推 4 聚合计算外推 5 聚合函数消除 6 删除重复的 order by key 7 删除重复的 limit by key 8 删除重复的...官方已经指出Nullable类型几乎总是会拖累性能,因为存储Nullable列时需要创建一个 额外的文件来存储 NULL 的标记,并且 Nullable 列无法被索引。...4 写入和删除优化 (1)尽量不要执行单条或小批量删除和插入操作,这样会产生小分区文件,给后台 Merge 任务带来巨大压力 (2)不要一次写入太多分区,或数据写入太快,数据写入太快会导致 Merge...聚合函数内的计算,会外推,例如: EXPLAIN SYNTAXSELECT sum(UserID * 2)FROM visits_v1//返回优化后的语句 SELECT sum(UserID) * 2...FROM visits_v1 5 聚合函数消除 如果对聚合键,也就是 group by key 使用 min、max、any 聚合函数,则将函数消除 EXPLAIN SYNTAXSELECT sum
列1 = 值1, 列2 = 值2, ... where 条件4、查 查询表中的全部数据 select * from 表名 五、查...as a,age from student;2、消除重复行 在select后面列前面使用distinct可以消除重复的行 eg:select distinct gender from student3...逻辑运算符and比or优先级高,同时出现并希望先选or,需要结合括号来使用4、聚合 为了快速得到统计数,提供了5个聚合函数 a、count(*) 表示计算总行数,括号中可以写 * 或列名...b、max(列) 表示求此列的最大值 c、min(列) 表示求此列的最小值 d、sum(列) 表示求此列的和 e、avg(列) 表示求此列的平均值5、分组...分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中 可以对分组后的数据进行统计,做聚合运算 select 列1, 列2, 聚合... from 表名 group by 列1
在日常的开发中,遇到需要处理 Null 值的场景还是蛮常见的。比如,查询某个字段包含 Null 值的记录、在展示的时候将 Null 值转为其它值、聚合包含 Null 值的列等。...今天就和大家聊聊在 MySQL 中处理 Null 值时需要注意的点,本文包含以下内容: 查找 Null 值 将 Null 值转为实际值 在排序中对 Null 值的处理 计算非 Null 值的数量 聚合...3 处理排序中的 Null 值 如果是使用默认的升序对包含有 Null 值的列做排序,有 Null 值的记录会排在前面,而使用了降序排序,包含了 Null 值的记录才会排在后面。...count(*) ---------- 14 5 聚合 Null 列 聚合函数 sum()、avg()、min() 等会忽略 Null 值,在使用 avg() 时要警惕 Null 值...通常的做法是先将列中的 Null 值转为 0,再做聚合操作。
计算列 * 一般可以使用四则运算计算一些列的值。...聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1....一般选择非空的列:主键 2. count(*) 2. max:计算最大值 3. min:计算最小值 4. sum:计算和 5. avg:计算平均值 * 注意:聚合函数的计算,排除null值...第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 数据库的备份和还原 1....事务的四大特征: 1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。 2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。 3. 隔离性:多个事务之间。相互独立。
,之间使用逗号分隔 消除重复行 在select后面列前使用distinct可以消除重复的行 ?...优先级 小括号,not,比较运算符,逻辑运算符 and比or先运算,如果同时出现并希望先算or,需要结合()使用 ---- 2.2聚合 为了快速得到统计数据,提供了5个聚合函数 count(*)表示计算总行数...外键的级联操作 在删除students表的数据时,如果这个id值在scores中已经存在,则会抛异常 推荐使用逻辑删除,还可以解决这个问题 可以创建表时指定级联操作,也可以在创建表后再修改外键的级联操作...级联操作的类型包括: restrict(限制):默认值,抛异常 cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除 set null:将外键设置为空 no action:什么都不做...匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充 表A right join 表B:表A与表B匹配的行会出现在结果中,外加表B中独有的数据,未对应的数据使用null填充 在查询或条件中推荐使用
的大小 (7)聚合查询:行操作 聚合查询就是“行与行”之间的运算,这里的运算限制,只能通过:“聚合函数”来进行操作,可以理解成SQL提供的一些“库函数”。...在这里,1 只是一个占位符,因为 COUNT() 只会计算记录的数量,而不关心具体的列。你也可以用其他列名来代替 1,效果是一样的。常见的做法是 COUNT(*) 或 COUNT(某列)。...(*)替换成具体的列(列名),如果该列中含有null,不计入count (*)查询,就算表里全为null的行,也会记录起来 ②:sum “1”:select sum(chinese) from exam_result...; chinese那一列全部相加,sum()函数中null会忽略掉,但在SQL中null与其他数字进行运算时,结果一般都是null。...order by limit 1; ④:avg() 和 gruop by 误区:没有“使用聚合的列”也可以和聚合函数完的列成为同一行数据 例如,按照职业计算其平均薪资 select role,avg(salary
(当服务器在内存中内部操作 JSON 值时,JSON 值可能大于 max_allowed_packet 值;此限制适用于服务器对 JSON 值的存储。)...当前面列表中的最后两个条件中的一个(或两个)不满足,但其它条件满足时,可能会发生这种情况。另可参阅 binlog_row_value_options 的说明。...路径由路径的范围和一个或多个路径分支组成。对于 MySQL JSON 函数中使用的路径,作用域始终是要搜索或以其它方式操作的文档,由前导 $ 字符表示。路径分支由句点字符(.)分隔。...参见“第10.3.11节 生成列索引的优化使用”。 8. JSON 值的聚合 其它数据类型一样,对于 JSON 值的聚合,SQL NULL 值被忽略。...非 NULL 值将转换为数字类型并进行聚合,但 MIN()、MAX() 和 GROUP_CONCAT() 除外。
课程使用的版本时MySQL8.0/5.6版本。...修改数据 update update 表名 set 字段名 = 值, 字段名= 值 ... update category2 set cname = '家电'; # 不加条件, 整列值都修改成相同的...3)主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。 4) 主键应当由计算机自动生成。...() 计数 NULL值会过滤 sum() 求和 avg() 求平均 min() 最小值 max() 最大值 # 聚合查询 # 查询所有商品的条目数 select count(*) from product...显示在某一区间的值(含头含尾) [] IN(set) 显示在in列表中的值,例:in(100,200) 模糊查询 LIKE ‘张%’LIKE ‘%涛%’ 模糊查询,Like语句中,%代表零个或多个任意字符
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。...另外聚合函数会忽略空值 五个聚合函数: count: 统计指定列记录数,记录为NULL的不统计 sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0 max: 计算指定列的最大值 min:...计算指定列的最小值 avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0 聚合函数的使用:写在 SQL语句SELECT后 字段名的地方 SELECT 字段名......分组的目的就是为了统计,一般分组会跟聚合函数一起使用。分组后聚合函数的作用?不是操作所有数据,而是操作一组数据。...在符合第一范式(1NF)表中每个列的值只能是表的一个属性或一个属性的一部分。简而言之,第一范式每一列不可再拆分,称为原子性。
---- not null 不能为空 , 在操作数据库时如果输入该字段的数据为 NULL ,就会报错 default 设置默认值 primary key 主键不能为空...,通常情况下都是配合着分组进行数据的统计和计算 Group BY 分组 group by 语句根据一个或多个列对结果集进行分组 一般情况下,是用与数据的统计或计算,配合聚合函数使用...-- count(*) 是按照 users 表中所有的列进行数据的统计,只要其中一列上有数据,就可以计算 -- count(id) 是按照指定的 id 字段进行统计,也可以使用别的字段进行统计...-----+----------+ | 男 | 4 | | 女 | 5 | +------+----------+Having 子句 having 时在分组聚合计算后...g roup by分组时,一般除了聚合函数,其它在 select后面出现的字段列 都需要 出现在grouop by 后 面 -- 要统计班级人数 select classid
任务需要处理大量相同键的数据,这种情况有以下4种表现形式: 数据含有大量无意义的数据,例如空值(NULL)、空字符串等 含有倾斜数据在进行聚合计算时无法聚合中间结果,大量数据都需要 经过Shuffle阶段的处理...2、业务无关的数据引发的数据倾斜 实际业务中有些大量的NULL值或者一些无意义的数据参与到计算作业 中,这些数据可能来自业务未上报或因数据规范将某类数据进行归一化变成空值或空字符串等形式...这是很笨拙的方法,如果分组聚合的列远不止3个列,那么需要拆解的 SQL语句会更多。...该参数表示针对grouping sets/rollups/cubes这类多维聚合的 操作,如果最后拆解的键组合(上面例子的组合是4)大于该值,会启用新的任务去处理大于该值之外的组合。...如果在处理数据时,某个分组聚合的列 有较大的倾斜,可以适当调小该值 。
排序方式: ASC:升序,默认的。 DESC:降序。 注意:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数:将一列数据作为一个整体,进行纵向的计算。...count:计算个数 一般选择非空的列:主键 count( ) max:计算最大值 min:计算最小值 sum:计算和 avg:计算平均值 注意:聚合函数的计算,排除null值。...解决方案: 选择不包含非空的列进行计算 IFNULL函数 分组查询 语法:group by 分组字段; 分组之后查询的字段:分组字段、聚合函数 where 和 having 的区别?...主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 非空约束:not null,某一列的值不能为null 1....持久性:当事务提交或回滚后,数据库会持久化的保存数据。 隔离性:多个事务之间。相互独立。 一致性:事务操作前后,数据总量不变 事务的隔离级别(了解) 概念:多个事务之间隔离的,相互独立的。
-- 问题出在 sql 计算的顺序上,sql会优先处理and条件,所以上面的sql语句就变成了 -- 查询变成了为年龄22的不管性别,或者年龄为 25的女生 -- 如何改造sql符合我们的查询条件呢?...-- count(*) 是按照 users表中所有的列进行数据的统计,只要其中一列上有数据,就可以计算 -- count(id) 是按照指定的 id 字段进行统计,也可以使用别的字段进行统计, -- 但是注意...---+------+ 9 rows in set (0.00 sec) -- 如果按照sex这一列进行统计,结果就是8个而不是9个,因为sex这一列中有NULL值存在 mysql> select count...Group BY 分组 group by 语句根据一个或多个列对结果集进行分组 一般情况下,是用与数据的统计或计算,配合聚合函数使用 -- 统计 users 表中 男女生人数 -- 很明显按照上面的需要...group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by 后面 Having 子句 having时在分组聚合计算后,对结果再一次进行过滤,类似于where
领取专属 10元无门槛券
手把手带您无忧上云