
mysql
hammring
Stay Hungery,Stay Foolish
展开
-
DataX踩坑总结
DataX,数据同步,odps,mysql原创 2021-12-30 19:48:38 · 7446 阅读 · 2 评论 -
mysql order by limit 1 和max的比较
在一个数据的需求中,去用order by+limit和 max两种方式求数据的最大值时,发现在同一过滤条件下order by limit执行速度要比max快。然后从一下两个角度对问题进行来思考。1.查看执行计划,在mysql中发现两者之间的时间是一致的2.order by和where的执行顺序是否是先做的order by,而后一条sql语句需要先过滤导致执行速度很慢。tips:该问题暂时未解决。...原创 2021-10-14 08:38:50 · 5634 阅读 · 0 评论 -
面试:b树和b+树问题的总结
1.B树和B+树的区别B树每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为nullB+树只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。2.为什么数据会存在B+树的叶子节点降低数的高度,减少层级,减少回表次数,有利于范围查询以及数据的查询加载效率,3.说说InnoDB是什么样的data存的是数据本身,索引也是数据,数据和索引存在一个xxx,idb文件中,所以也叫聚集索引。4.B+树中单链表和数组的区别使用单链表的优点原创 2021-04-23 09:55:13 · 913 阅读 · 0 评论 -
mod函数
mod(n,m)该函数返回n除以m的余数需求:分别找出所有影片id 为奇数 ,偶数的影片,表名为cinemaid movie raing 1 war 8.9 2 science 9.0 3 irish 7.3 4 house card 8.0 输出结果为id movie raing 1 war 8.9 3 irish 7.3 ...原创 2021-03-30 00:00:50 · 1195 阅读 · 0 评论 -
ORA-04091: table is mutating, trigger/function may not see it --hammring
create or replace trigger tr_test after insert on test for each row begin update test set column2=123 where column1=:new.column1 end tr_test; create or replace trigger tr_test after insert on test for each row de...原创 2020-09-24 17:14:51 · 877 阅读 · 0 评论 -
对触发器的理解
触发器是指当表发生改变的时候触发的动作,当你插入一条记录到表中的时候,此时表已经发生了改变,现在想要在每次插入数据之前检测所有的入参是否都是小写,此时可以用触发器来检测。发生改变通常是指update、insert、alter等操作(增删改),其动作可以发生在增删改之前或之后,触发时间就是我们要写的存储过程。触发器的基本语法:创建触发器:create trigger 触发器名称 触发动作 on 表名for each row [触发事件];删除触发器:droptrigger 触发器名称 ;...原创 2020-09-08 11:42:11 · 718 阅读 · 0 评论 -
Explain详解
explain select *from 表名 where 列名=valueexplain的信息会出现如下10列,下面是各列的具体说明:id:选择标识符select_type:表示查询的类型table:输出结果集的表名type:表示表的连接类型possible_keys:表示查询时,可能使用的索引key:表示实际使用的索引key_len:索引字段的长度ref:列与索引的比较rows:扫描出的行数extra:执行情况的描述和说明一、select_type:...原创 2020-08-18 15:08:44 · 202 阅读 · 0 评论 -
浅谈对事务(transaction)的理解
原子性隔离性一致性持久性我们把需要保证原子性(Automicity)、隔离性(Isolation)、一致性(Consistency)和持久性(Durability) ACID的一个或多个数据库操作称之为一个事务。事务大致划分成几个状态:1.活动的事务对应的数据库操作正在执行过程中时,我们就说该事务是处在活动状态的。2.部分提交的3.失败的4.中止的5.提交的...原创 2020-05-25 00:13:56 · 399 阅读 · 0 评论 -
事务之保存点(savepoint)
如果开启一个事务,已经写了很多语句,突然发现执行完上一语句时发现语句写错了。你只好使用rollback语句让数据库恢复到事务开启之前的状态。以前写完的语句也需要重新执行。所以mysql数据库的作者提出了保存点(savepoint)的概念。开启事务后在执行语句后面打几个点,我们调用rollback语句就会回滚到指定的点。而不是回到事务执行之前的样子。定义保存点的语法如下:SAVEPOINT 保存点的名称;当我们想回滚到某个保存点时,可以使用下边的语句。(WORK和SAVEPOINT可有可无)原创 2020-06-25 16:04:05 · 7141 阅读 · 0 评论 -
unionall的用法(当某条记录为空时,union all是否可以合并此条记录)
我们经常说union和union all的区别在于:1.union 合并相同的列时,union会去重只实现其中的一条;2.union all 合并的是所有的列。但是如果在按照某一条件进行查询时,如果表中数据没有符合该条件的记录。(即按此条件查询,表中查找到的的记录每列都为空)此时union all并不能合并这种空的记录。比如新建一个表名为t_student的表。记录学生的姓名,性别,年龄和成绩等基础信息。在t_student表中查询名为李明,小河,张三的姓名和成绩。select原创 2020-05-11 16:46:15 · 13257 阅读 · 0 评论 -
mysql备份表的两种方法(数据迁移)
mysql备份的两种方法(传输方式:单表传输),在数据量小的情况下一般采用insert的方法向备份表中插入数据。当源表的数据量过大时使用表空间的方式进行数据的迁移。第一种方法:(针对表中数据量小的情况)(1)使用源表的表结构建新的备份表;(源表为t1,备份表为t1_copy)create table t1_copy like t1;(2)插入数据到备份表中。insert i...原创 2020-04-21 13:03:59 · 3516 阅读 · 0 评论 -
sql中正则表达式的用法
1.不包含某个字符的字符串 查找列中不包含张三,李四,王五的字段select good_name from a where good_name regexp '^(?!.*[张三|李四|王五]).*$'原创 2020-02-20 09:57:46 · 462 阅读 · 0 评论 -
floor()函数的使用
sql语句中的floor()函数的使用方法:---cnt在0-20,20-40,40-60之间的分布情况select floor(cnt/20) as cnt,count(*) from xl_lx_sum group byfloor(cnt/20);运行情况:cnt count_ 0 2000 1 32 2 100 3 2...原创 2019-10-24 09:36:57 · 3689 阅读 · 0 评论 -
count(*)和count(1),count(列名)的区别
count(1) 包含字段为Null的情况count(*) 不包含字段为null的情况。原创 2019-09-24 16:17:19 · 145 阅读 · 0 评论 -
定长记录与不定长记录
文件是操作系统的一种基本的数据结构。在逻辑上可看作是记录的序列,物理上这些记录被映射到磁盘块中。一般数据模型中的记录在文件中有两种不同的组织格式:定长记录和不定长记录。把数据库映射到文件的一种方法是使用多个文件,每个关系表被映射到一个文件中存储,这样每个文件中就只存储一个固定长度的记录,这就是定长记录格式的文件。另一种方法是自己构造文件,使之能够容纳多种长度的记录,这样整个数据库就可以被映射到...原创 2019-09-08 11:01:49 · 7223 阅读 · 0 评论 -
mysql在给某个表导入数据时出现“the table is full”的解决方法
在mysq配置文件conf/my.ini下修改文件内容:[mysqld]tmp_table_size=4Gmax_heap_table_size = 4Ginnodb_log_file_size = 1024Minnodb_log_buffer_size = 256Msecure-file-priv="c:/mysql/data" sql-mode="NO_AUTO_...原创 2019-06-11 15:38:03 · 2805 阅读 · 0 评论