SQL
文章平均质量分 89
没有特殊说明默认都是mysql环境
atwdy
数据开发、数据挖掘。
展开
-
MySQL触发器
详细可以查看mysql8.0官方文档:https://dev.mysql.com/doc/refman/8.0/en/triggers.html,这里只是简单做个笔记。什么是触发器,复制网上的一段解释:CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt1.trigger_name:触发器的名称2.tirgger_time:触发时机,为BEFORE或者AFTER3.trigg原创 2022-06-15 18:55:53 · 9101 阅读 · 2 评论 -
MySQL表分区
主要介绍mysql几种表分区的基本使用,包括range分区、list分区、hash分区、key分区、子分区和columns分区。原创 2022-06-13 14:55:52 · 19724 阅读 · 3 评论 -
【HiveSQL】join关联on和where的区别及效率对比
假设数据库系统支持谓词下推的前提下,内连接:内连接的两个执行计划中,对t2表都使用了,对t1表都使用了,因此可以说,内连接中where和on在执行效率上没区别。外连接:还是拿左外连接来说,右表相关的条件会使用谓词下推,而左表是否会提前过滤数据,取决于where还是on以及筛选条件是否与左表相关,1)当为on时,左表的数据必须全量读取,此时效率的差别主要取决于左表的数据量。2)当为where时,如果筛选条件涉及到左表,则会进行数据的提前过滤,否则左表仍然全量读取。原创 2024-06-17 19:27:08 · 2273 阅读 · 0 评论 -
MySQL开窗函数
开窗函数是mysql8.0中的新特性,用于实现和group by分组函数类似的分组聚合功能。分组函数:对一个集合输出一个标量结果,改变了数据的粒度,且丢失了非分组字段及非聚合字段的信息。开窗函数:分别以每一行为当前行,与当前行相关的所有行为窗口,对同一个窗口内的数据进行聚合等类似操作,结果附加到当前行的后面,不改变原始数据粒度,不丢失原始数据信息。这部分可以直接查看文档,个人觉得这部分算是开窗函数里最重要的了,弄明白了各种情况下窗口的大小,其他的就没啥容易混淆的点了。rows和range。原创 2024-03-30 03:20:19 · 4311 阅读 · 0 评论 -
MySQL索引
测试环境:mysql8.0.18(InnoDB)原创 2024-03-04 02:58:29 · 1035 阅读 · 0 评论 -
说一说关系数据库中的范式建模
面试中可能会被问到,来回顾总结一下,参考《数据库系统第五版》(王珊/萨师煊)范式(normal form),我的理解是用来规范关系数据库中实体如何划分以及实体间如何建立联系来保持数据完整性的一种指导思想,目的就是要消除数据冗余,追求单表操作,修改某个实体只需要操作一张表,实体与实体间修改互不影响。目前存在六种范式:1NF/2NF/3NF/BCNF/4NF/5NF,它们之间属于层层递进的关系。原创 2023-02-24 15:18:01 · 478 阅读 · 0 评论 -
谓词exsits用法及与in的使用区别
大白话的说,exists的执行,是依次拿外层表的每条记录,去和exsits后的子查询表按你所定义的运算规则(如果有的话)做运算,如果存在结果,也就是有返回数据,无论这部分数据有几条,这部分数据内容是什么,exists后的子查询都会返回true,外层表参与运算的这条记录被保留,反之返回false,外层表参与运算的这条记录被舍弃。也就是强调的,而不关注。下面是从文档中截取的几句话,可以印证说明。原创 2023-02-19 00:53:15 · 909 阅读 · 0 评论 -
mysql设置主从数据同步(5.7版本)
官方文档:https://dev.mysql.com/doc/refman/5.7/en/replication.html配置参数文档:https://dev.mysql.com/doc/refman/5.7/en/replication-options.html主从同步原理:https://www.jb51.net/article/220881.htm,https://www.jb51.net/article/202663.htmcentos7+mysql5.7配置之前一般需要先手动同步一下数据,这里原创 2022-09-09 17:13:27 · 2140 阅读 · 0 评论 -
分享一些常见的SQL计算面试题
行列转换行转列列转行Top-N行列转换行转列建表,导入数据create table t1 ( `name` varchar(20), `course` varchar(20), `score` int)insert into t1 values ('张三','语文',70),('张三','数学',71),('张三','英语',72), ('李四','语文',80),('李四','数学',81),('李四','英语',82), ('王五','语文',90),(.原创 2022-03-18 00:32:40 · 2415 阅读 · 4 评论