MySQL
文章平均质量分 51
我是等闲之辈
爱因斯坦曾说过:「如果你无法通过简单的方式解释清楚某件事情,则说明你对它的了解还不够多。」
展开
-
Mysql online DDL工具:gh-ost
先生成一个镜像表(影子表),在镜像表上执行DDL语句;从源表中拷贝数据到镜像表;依据 Binlog 信息完成增量数据的变更。最后用镜像表替换源表。整个 Online DDL 操作仅在最终 rename 源表与镜像表时会阻塞几秒钟的读写。原创 2022-12-27 16:10:10 · 1295 阅读 · 0 评论 -
sql:通过select进行update
我们遍历类目表或者产品表去更新我们的价格字段。比如类目表有10条数据,我们就遍历10次,然后产品表每次都匹配一下当前的类目,去更新数据。产品表的价格字段因为类目表的折扣字段而改变。需要执行SQL语句更新产品表的价格。原创 2022-12-09 17:33:23 · 1275 阅读 · 0 评论 -
MYSQL踩坑经历
设置自动记录创建和更新时间的坑在MySQL5.7版本下执行下面建表语句不会报错。MySQL5.5版本使用下面的语句会报错:create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,上面的语句在MySQL5.7执行没问题,但原创 2022-04-26 13:16:32 · 804 阅读 · 0 评论 -
MySQL主从复制实战
主从复制配置主机master配置//主机master进入MySQL设置:grant replication slave on *.* to slave_one@'%' identified by 'slave123';从机slave配置//编辑mysql配置修改server-id = 2vim /etc/my.cnfservice mysql restart //service mysql reload 并不能使设置生效//从机slave进入MySQL设置:stop sla.原创 2022-03-03 22:01:09 · 644 阅读 · 0 评论 -
MySQL之CASE WHEN
用户表如下:现在有个需求: 给2022年新注册的用户送积分,statu=0的用户新增10分,status=1的用户新增25分。先查询2022年注册的新用户:SELECT *, FROM_UNIXTIME(create_time)FROM user_tagWHERE FROM_UNIXTIME(create_time) > '2022-01-01 00:00:00'完整代码:UPDATE user_tagSET score = C原创 2022-03-03 14:16:27 · 269 阅读 · 0 评论 -
MySQL之find_in_set的使用
定义FIND_IN_SET():函数返回指定字符串在以逗号分隔的字符串列表中的位置。FIND_IN_SET() 是精确匹配。FIND_IN_SET()函数接受两个参数:第一个参数needle是要查找的字符串。第二个参数haystack是要搜索的逗号分隔的字符串列表,也就是表字段。小试牛刀select * from read_log_a where find_in_set('收敛之道', article)//可以获取到数据select * from read_log_a where.原创 2022-02-25 16:20:56 · 959 阅读 · 0 评论 -
有趣的题目:两张表合并取出前十名
昨晚在某个群上看到一个人抛出一个问题:我想出两种解法,一种是sql加代码。一种是一句sql搞定。方法一首先模拟两张表:CREATE TABLE `read_log_a` ( `id` int(11) NOT NULL AUTO_INCREMENT, `article` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '文章', `read_num` int(11) DEFAULT '0' COMMENT '阅读数'原创 2022-02-23 13:46:58 · 383 阅读 · 0 评论 -
MySQL自增ID用完了会怎么样?
这个问题要区分建表时是否有设置主键的情况。有设置主键建表时有设置主键的情况下,当ID超过该主键类型的最大限制,会报主键冲突错误。在 MySQL 中,一般会把主键设置成 int 型。而 MySQL 中 int 型占用 4 个字节,作为有符号位的话范围就是 [-231,231-1],也就是[-2147483648,2147483647];无符号位的话最大值就是 2^32-1,也就是 4294967295。没设置主键建表时没有设置主键的情况下,InnoDB 会自动帮你创建一个不可见的、长度为 6原创 2022-02-22 18:52:42 · 554 阅读 · 0 评论 -
innodb底层是如何存储数据的?
数据存储在哪里?操作系统从寄存器中读取数据是最快的,因为它离CPU最近。但是寄存器有个非常致命的问题是:它只能存储非常少量的数据,设计它的目的主要是用来暂存指令和地址,并非存储大量用户数据的。内存的大小虽然比寄存器大,但是还是不能保存过多的数据,而且服务器重启的话,数据就会丢失了。综上所述,innodb选择将数据存储在磁盘中,容量大,同时保证数据不丢失。内存与磁盘如何打交道?为了保证数据读写速度,MySQL是这样子做的:写操作时,先将数据写到内存的某个批次中,然后再将该批次的数据一次性刷.原创 2022-02-17 13:53:23 · 530 阅读 · 0 评论 -
MySQL复制表结构以及表数据
MySQL复制表结构以及数据:create table_new like table_old #完整复制原表的建表语句以建立新表insert into table_new select * from table_old #完整复制原表的数据内容到新表中实际场景:某天,某位仁兄请求我帮他修改MySQL某张表的某一行的某个值。一般我们都会马上修改: update student set age = 13 where name = “张三”但是我对这张表完全不熟悉,我只是临时帮忙更新一下数据。一旦我更原创 2022-02-16 09:35:07 · 641 阅读 · 0 评论 -
你了解数据库三大范式吗?用来解决什么问题?
数据库的三大范式偶尔会被问起,面试官想考察的是我们平时开发中建表、字段时的一些经验和见解,并不是希望听到那些理论的东西。所以可以先大概说一下三大范式的概念,然后从实际开发经验出发,结合数据表设计方面说起。第一范式:强调的是列的原子性,即每一列都是不可再分的最小数据单元。举例:一张用户表中的有个地址字段,它包括了国家省份城市,这个字段就不符合第一范式,因为它还可以继续拆分为三个字段,国家,省份,城市。第二范式:1、满足第一范式 2、表必须有一个主键 3、对于没有包含在主键中的列(非主键的其他列)必须完原创 2022-02-06 14:21:58 · 1818 阅读 · 2 评论