该系列的核心是学完即用,因此后续的所有分享都是建立在具有一定的数分基础上的。 建议:对于初学者或想转行数据分析的同学,可以先收藏,等具备一定数分基础后再跟随学习效果更佳。...尤其是正则替换和正则提取,在日常业务中使用频率极高,所以掌握一定的正则知识是必要的。限于篇赋,这两点在后续的SQL实战中再做详细介绍。...有问题,找数仓准行~ group强化 相信大家在Excel(或Tableau)中做数据透视表的时候,可以对任意维度的数据进行聚合。...因此在实际操作中,在做group 强化之前,应将明细数据中每个维度的NULL值进行替换为'未知',用于标记维度本身的取值;group 强化之后,应将每个维度的NULL值再进行替换为'全部',用以标记group...因为在业务中,有些SubQuery需要被反复使用,但使用场景也仅限于当前SQL,为此开发中间表就显得不值当。
GROUP BY: 将具有指定列中公共值的行的聚合(或分组)到一行中。GROUP BY 子句将具有公共值的行的聚合到一行中,因此行数将与唯一值的数量一样多。...GROUP BY GROUP BY 子句用于将多行聚合到一个组中,本质上将多行合并为一行。...尽管在 regions 表中包含七个地区,但此查询只产生了六行。这是因为存在一个地区“南极洲”,但在 countries 表中没有该 region_id 的国家。...GROUP BY 子句并不需要任何 JOIN 子句;您可以在一个表中创建组。例如,“有多少个国家以相同字母开头?”也可以通过一个 GROUP BY 来回答。...FETCH FETCH 子句指定从结果中返回的行数。一些数据库称之为 LIMIT 子句。与 OFFSET 子句一样,这也是一个简写,可用于回答诸如“按人口排名前三的国家/地区有哪些?”之类的业务问题。
value_list: value, [, value] ... 1.1 单行数据+全列插入 单行指定列插入: 单行全列插入: into也可以省略: 1.2 多行数据+全列插入 多行全列插入:...update 的值相等 -- 1 row affected: 表中没有冲突数据,数据被插入 -- 2 row affected: 表中有冲突数据,并且数据已经被更新 通过 MySQL 函数获取受到影响的数据行数...例子三:查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示(先按数学,数学相同按英语,英语再相同按语文) 例子四:查询同学及总分,由高到低 order by中可以使用表达式。...group by子句的使用 在select中使用group by 子句可以对指定列进行分组查询: select column1, column2, .. from table group by column...例子: 创建库的文件,在文章开头的资源中给出,下载scott_data即可: 下载后,上传到Linux平台,然后登陆数据库。
只是将取出的数据进行处理,不会改变数据库中的值。...函数根据处理的数据分为单行函数和聚合函数(组函数),组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句;单行函数对单个数值进行操作,并返回一个值...' 20 end "描述" 21 from emp e; 6 组函数 组函数把多行数据经过运算后返回单个值。...选取满足where子句中给出的条件表达式的元组 按group子句中指定列的值分组,同时提取满足Having子句中组条件表达式的那些组 按select子句中给出的列名或列表达式求值输出 Order by子句对输出的目标表进行排序...where 中作为后缀标识主表。
NULL 与不匹配 在通过过滤选择出不具有特定值的行时,你可能希望返回具有 NULL 值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。...在使用 GROUP BY 子句前,需要知道一些重要的规定。 ❑ GROUP BY子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致地进行数据分组。...❑ 如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...这是一个重要的区别,WHERE 排除的行不包括在分组中。这可能会改变计算值,从而影响 HAVING 子句中基于这些值过滤掉的分组。...你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
(16:18) 4-12 [Oracle] 子查询中的空值问题 (08:24) 第5章 案例集锦 本章通过4个案例的介绍,巩固了所学知识,并能使你认识到本课程所学内容在实际中的应用。 ...注意:在select列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中;包含在GROUP BY子句中的列不必包含在SELECT列表中。...emp; 错误:所有包含于select列表中,而未包含于组函数中的列都必须包含在GROUP BY子句中。...from emp e,emp b where e.mgr = b.empno; 问题:不适合操作大表,原因是自连接至少有两张表参与,并进行笛卡尔全集,连接之后的记录数就是单张表记录数的平方(笛卡尔积行数是两张表行数的乘积...,但相关子查询例外; 相关子查询:外表起别名传递给子查询。
by id; MySQL正则表达式虽然提供了“多行模式”,但只能用于匹配时的比较,并未提供按行统计的接口。...按固定分隔符将一行分成多行的经典方法,就是先使用笛卡尔积连接制造出行,再用两个嵌套的substring_index函数取子串。...ID分组求和,统计每数据库行中,单词 the 出现的以 \n 分割的行数: mysql> select id,sum(regexp_like(b,'\\bthe\\b(?...在以上情况中,第二个子模式 (e|eir) 依赖于第一个子模式 (t|T)。括号对于子模式不是必需的。...在一个正则表达式中不能使用 ${分组名} 进行引用。 mysql> select regexp_like('000000','(?
,show me the code**: 题设: 如果要在数据文件中查找一个可能会分散在两行中的文本短语,那么这是一个很管用的方法。...可以看到案例中有三处System Admin,两处为换行,一处有在一行中,如果仅仅使用简单的替换,如下: [root@iZuf6gxtsgxni1r88kx9rtZ linux_cmd]# sed '...Thank you for your cooperation. 3 关于多行模式的图解 眼尖的朋友能看到我在上述例子中特意加了一个g的全局替换的参数,但是结果,依然未能实现在多行模式中对相邻的两行的换行的...“,进入下一步: 取数据流中的下一条数据到模式空间,进入下一步,需要再从数据流取下一条数据附加到模式空间数据后: 发现执行多行模式命令的时候,发现没有下一行数据了,脚本执行,打印,并移出模式空间到”垃圾桶...“ 4 关于多行模式的思考 当仅仅有多行模式,并且在没有分支的情况下,如果对于连续行的相同跨行字符是无法一次性被处理掉的,除非可以通过其他类似于分支的手段进行迂回处理。
+ 全列插入 多行数据 + 指定列插入 2、更新和替换 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 更新操作语法: INSERT ......update 的值相等 -- 1 row affected: 表中没有冲突数据,数据被插入 -- 2 row affected: 表中有冲突数据,并且数据已经被更新 -- 通过 MySQL 函数获取受到影响的数据行数...查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示 查询同学及总分,由高到低 注:排序是在查询数据完毕之后,再对查询好的数据进行排序,这样的效率比较高,所以别名是能在排序的时候进行使用的...LIMIT n OFFSET s; 建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死 示例:按 id 进行分页,每页 3 条记录,分别显示...by 在select中使用group by 子句可以对指定列进行分组查询 select column1, column2, .. from table group by column; 示例:
在本指南中,给出的示例数据值都包含在撇号(')中。在SQL中,必须在撇号中包装由字符串组成的任何数据值。数字数据不需要这样做,但如果包含撇号,也不会导致任何问题。...' ); 您还可以使用单个命令填充包含多行数据的表,如下所示: INSERT INTO table ( column_A, column_B, column_C ) VALUES ( 'data_1A'...要从表中删除一行数据,请使用以下命令结构。..._2 FROM table ORDER BY column_1; 要执行相同的操作,但按降序或反向字母顺序排序结果,请使用DESC命令追加查询: SELECT column_1, column_2 FROM...2; 要执行相同的操作,但按降序或反向字母顺序对结果进行分组,请使用DESC命令追加查询: SELECT COUNT(column_1), column_2 FROM table GROUP BY column
retrieve是取回的意思,在MySQL中可以认为是读取操作,MySQL中查询数据的操作,也就是R操作最为频繁,同样也是需要重点学习的操作,在R操作里面,最典型的SQL语句就是select语句,用于查询表中的数据...同学及数学成绩,按数学成绩升序显示 如果order by子句不加asc或desc,则默认是asc升序排序 同学及 qq 号,按 qq 号排序显示 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示...查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示 6. 对未知表进行查询时,最好进行分页显示,这样可以避免表中数据过大时,导致查询全表数据致使数据库卡死。...update用于更改表中某一行或者多行的数据,值得注意的是,在使用update对表中数据进行更新的时候,如果不跟上where子句进行数据筛选的话,则update会对表中所有的行进行某一列字段值的更新,因为...显示雇员名、雇员工资以及所在部门的名字 from后面跟着两个表,则先将两个表作笛卡尔积,但笛卡尔积后的表会有很多行数据是多余的,因为雇员只可能在一个部门里面,所以emp.deptno必须和dept.deptno
,可能用户A拥有这个属性,但是用户B没有这个属性;那么我们希望存储的系统能够处理这种情况,没有的属性在底层不占用空间,这样可以节约大量的空间使用; 列动态变化:每行数据拥有的列数是不一样的。...现在人脸组 id 和人脸 id 对应关系存储在 MySQL 中,对应上面的 group 表;人脸 id 和人脸相关的特征数据存储在 OSS 里面,对应上面的 face 表。...我们如果需要根据人脸组 id 查找该组下面的所有人脸,那么需要从 MySQL 中读取很多行的数据,从中获取到人脸组和人脸对应的关系,然后到 OSS 里面根据人脸id获取所有人脸相关的特征数据,如下图的左部分所示...HBase 的 MOB 特性针对文件大小在 1k~10MB 范围的,比如图片,短视频,文档等,具有低延迟,读写强一致,检索能力强,水平易扩展等关键能力。...按流量,请求次数计费,适合访问频率低的场景 托管式,在高并发,高吞吐场景有更低的成本 扩展性 优 优 适用对象范围 通用 <10MB 根据上面的对比,使用 HBase MOB特性来存储小于10MB的对象相比直接使用对象存储有一些优势
因为一个 Locality group 的物理部署在同一组 Bigtable2 节点上,这样可以实现对同一个 Locality group 的多列进行原子操作,也能加快关联数据的查找速度。...Movedir 任务迁移数据的时候是每次锁两个相关的 Paxos group 然后执行数据迁移。这样即便事务执行时间比较长的时候,也不会因为大量锁数据而导致大量的数据分片服务暂停。...在原文里描述的是每个写事务都会写入时间戳到对应的 Paxos group 里,但是我的理解因为已经用 Paxos group 对分片进行选主了。...比 多新增了索引 接下来按下面的流程: 新增一行数据r,那么同时会新增索引 ; 删除行r,但是由于 里没有索引 ,所以也不会有删除 的通知; 等 同步到所有服务器之后...按文中描述的是部署在美国东西海岸各两个副本,中部一个副本的情况下,再加上2PC的机制,写事务单单多副本间通信的延迟就到50ms了。整体平均延迟读事务5-10ms,写事务50-150ms。
\\]', 'A')) r,count(*) from t1 group by char_length(regexp_replace(Content,'\\[.*?...\\]', 'A')) order by r; \\[ 和 \\] 用于将中括号转义为普通字符。...by commentid) t group by f order by f; 没有正则表达式的加持,实现起来比较麻烦,但整个思路还是很清晰。...总的想法是,首先对评论字符串以“]”为分隔符转多行,然后针对不同情况对每行求字符长度,之后按每条评论ID分组求和,得到符合规则的每条评论的长度,最后按评论长度分组进行二次聚合,得到每种长度的个数。...在本例中,不使用正则表达式的解决方案不但冗长,而且由于用到笛卡尔积由单行转多行,之后再聚合,性能比正则表达式差的多。实际表中有55107行记录,方案1秒出结果,方案2需要执行50多秒。
SQL 语言于1974年由 Boyce 和 Chamberlin 提出,并首次在 IBM 公司的关系数据库系统 System R 上实现。...①基础查询在SQL中,通过SELECT关键字开头的SQL语句进行数据的查询。基础语法:含义:从(FROM)表中,选择(SELECT)某些列进行展示。...student GROUP BY gender;#按性别分组,统计最大最小年龄SELEcT gender, MAX(age),MIN(age) FROM student GROUP BY gender;...【注意】在 SELECT 语句中,如果想选择非聚合列,这些列必须出现在 GROUP BY 子句中。...在 SQL 查询中,执行顺序遵循特定的步骤:FROM → WHERE → GROUP BY 和聚合函数 → SELECT → ORDER BY → LIMIT首先,从数据表中选择数据(FROM),然后通过条件筛选来过滤记录
数据模型分类(按模型应用的不同目的的划分) 概念模型(也称语义模型) 常用E-R模型 学生和课程是实体,菱形中对应的是实体之间的关系,椭圆中是对应的属性。...表记录的插入 1)利用insert命令向表student中插入一行数据 2)利用insert命令向表student中插入多行数据 利用replace命令向表course中插入多行数据...group by用于对查询结果根据grouping_columns的值进行分组。 having子句是应用于分组结果集的附加条件,与group by一起使用,用于在group by子句后选择行。...使用order by子句对结果集排序 在score表中查询期末成绩高于90分的学生学号、课程号和期末成绩,并先按课程号的升序、再按期末成绩的降序排列 使用group by子句 使用group...by子句对score表数据分组,显示每个学生的学号和其所学各课程的平均期末成绩,并将结果按平均期末成绩的升序排列 group by和having子句一起使用 查询选课在2门以上且各门课程期末成绩均高于
和concat_ws的理解 group_concat可以将多行数据整合为一行 concat可以将不同数据用第一个参数链接 可以写group_concat(concat_ws(‘:’,id,email_id...‘sqli’ group_concat()函数是用来将多行转为一行,将组中的字符串连接成为具有各种选项的单个字符串 table_name information_schema.tables 1’ and...ascii码为114时,睡眠5s,否则输出2,需要注意的是,这5s是在服务器的数据库中延迟的,实际情况可能会由于网络环境等因素延迟更长时间 benchmark函数 benchmark函数原本是用来重复执行某个语句的函数...benchmark(N,expression) N是执行的次数,expression是表达式,如果需要进行盲注,通常需要进行消耗时间和性能的计算,例如哈希计算函数MD5,将MD5函数重复执行数万次则可以达到延迟的效果...比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。
SQL简单查询中没有意义,因为在这种类型的嵌入式SQL中,SELECT始终只返回一行数据。...但是,嵌入式SQL基于游标的查询可以返回多行数据;在基于游标的查询中,DISTINCT子句只返回唯一值行。 DISTINCT和ORDER BY DISTINCT子句在ORDER BY子句之前应用。...DISTINCT和GROUP BY DISTINCT和GROUP BY这两个记录按指定字段(或多个字段)分组,并为该字段的每个唯一值返回一条记录。...子查询:在子查询中使用DISTINCT子句是合法的,但没有意义,因为子查询返回单个值。 未选择行数据:DISTINCT子句可以与不访问任何表数据的SELECT一起使用。...如果SELECT不包含FROM子句,则DISTINCT是合法的,但没有意义。 聚合函数:可以在聚合函数中使用DISTINCT子句,以仅选择要包含在聚合中的不同(唯一)字段值。
未排序数据 如果没有明确排序查询结果,可能会发现显示输出的数据顺序与原表不同,返回的数据的顺序没有特殊意义,可能是数据被添加到表中的顺序,也可能不是,只要返回相同数目的行就是正常的。...使用空格和空行 在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行,多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。...使用*通配符 一般,除非确实需要表中的每个列,否则最好别使用*通配符。不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。...检索未知列 不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列。...行数不够时 LIMIT中指定要检索的行数为检索的最大行数,如果没有足够的行(例如,给出LIMIT 10, 5,但只有13行),MySQL将只返回它能返回的那么多行。 以上 That's all.
by dt )exp on ex.dt=exp.dt 正则、json、列传多行 在开始本实例之前,先普及下正则和json的相关知识 正则表达式具备强大的字符串模糊匹配能力...r与fr、for匹配 ( ) 圆括号中内容为一个实体 f(or)+d与ford、forord等匹配 [] 匹配方括号中任意字符 f[abc]r与far、fbr等匹配f[abc]+r与faar、facr等匹配...[^] 匹配除方括号中任意字符 f[^abc]r与for等匹配 {m}{m,n}{m,} 匹配m次、至少m之多n次、至少m次 fo{2,}r与foor、fooor等匹配 \d 任何数字,同[0-9]...日常业务需求的经验沉淀告诉我们,每个需求都需要明确主要信息,附加信息以left join的形式增加到主表,构造一张大明细表(明细表中含维度和度量,维度在前,度量在后),在此基础上按所需维度向上汇总。...不仅在局部上如此要求,在整体上也是如此,因为SQL的关联是按顺序从上到下的,因此如果前置的表在进行一对多或者多对一操作后,再与下表关联就容易出现多对多的情况。
领取专属 10元无门槛券
手把手带您无忧上云