- 博客(697)
- 收藏
- 关注
原创 (100)课126: 间隙锁&临键锁,是为了锁定索引B+树里叶节点之间的间隙,不允许别的事务在这些间隙里插入新的叶节点,从而阻止幻读
(208)(209)至此, mysqL 就学完了,谢谢周老师,给出周老师的讲课地址(210)谢谢
2025-06-17 00:20:46
91
原创 (99)课125:行级锁包括行锁(Record Lock)、间隙锁(Gap Lock)、临键锁(Next-Key Lock)。InnoDB的数据是基于索引组织的,列上无索引时,行级锁升级为表锁。
(203)(204)
2025-06-16 19:47:59
94
原创 (98)课124意向锁是为了优化行锁与表锁是冲突:select .. lock in share mode【for update】;insert、update、delete语句里自动构成意向排它锁
(200)(201)
2025-06-16 16:20:06
64
原创 (97)课123:元数据锁MDL,是基于未完成的事务的,描述事务之间共享与互斥关系,确保安全地修改表结构 alter table AA drop 列名;
(199)(200)
2025-06-16 15:37:57
220
原创 (96)课121--122表级锁又包括表锁、元数据锁MDL、意向锁:先加表锁 lock tables 表名... read / write;释放表锁 unlock tables 或客户端断开了连接 。
(197)(198)
2025-06-16 14:23:22
103
原创 (95)课120:用命令行备份数据库 mysqldump【--single-transaction不加锁备份】-p3306端口号 -u账户名 -p密码 要备份的数据库名 > D:\文件名.sql
()()
2025-06-16 13:44:22
79
原创 (94)课119--120锁:加全局锁 flush tables with read lock;释放锁 unlock tables;
(193)(194)(195)
2025-06-16 11:40:52
86
原创 (93)课115--118:查看触发器SHOW TRIGGERS;删除触发器DROP TRIGGER【数据库名.】trigger_name;举例:修改表后的修改日志表同步,修改表前的校验
(190)(191)
2025-06-15 23:51:42
78
原创 (92)课114创建触发器:CREATE TRIGGER 触发器名 BEFORE/AFTER INSERT/UPDATE/DELETE ON 表名 FOR EACH ROW BEGIN 语句;end;
(189)(190)
2025-06-15 23:27:17
80
原创 (90)课112函数的定义与调用:CREATE FUNCTION 函数名([参数列表])RETURNS type【DETERMINISTIC等】BEGIN..RETURN 值;end;select函名
(187)(188)(189)
2025-06-15 22:36:30
81
原创 (88)课109 mysqL里的异常处理,即条件处理程序:DECLARE handler_action HANDLER FOR condition_value【,其他错误码】statement;
(182)(183)
2025-06-15 09:11:30
88
原创 (87)课108保存结果集:声明游标DECLARE 游标名 CURSOR FOR 查询语句;打开游标OPEN 游标名;推进游标FETCH 游标名 INTO 变量【,变量】;关闭游标CLOSE 游标名;
(180)(181)
2025-06-15 08:14:33
102
原创 (86)课105--107循环控制:WHILE 条件 DO 语句;END WHILE;或 REPEAT SQL逻辑... UNTIL 条件 END REPEAT;或LOOP、LEAVE、ITERATE
(177)(178)
2025-06-15 06:59:08
92
原创 (85)课104过程里的 case选择控制:case 值 when 值 then 语句;else 语句;end case;或case when 条件 then 语句;else 语句;end case;
(175)(176)
2025-06-15 05:11:19
103
原创 (84)课103带输入输出参数的过程定义:CREATE PROCEDURE 过程名称(【IN / OUT / INOUT 参数名 参数类型】) BEGIN SQL语句 END;INOUT 类型更方便
(174)(175)
2025-06-15 03:53:38
73
原创 (83)课102:过程里的条件判断 IF 条件1 THEN .. ELSEIF 条件2 THEN .. ELSE .. END IF;
(173)(174)
2025-06-14 15:48:59
88
原创 (82)课101:局部变量的赋值 SET 变量名 := 值;或 SELECT 字段名 INTO 局部变量名 FROM 表名;读取局部变量 select 变量名;
(172)(173)
2025-06-14 15:47:35
66
原创 (81)课101:全局变量适用于所有会话,自定义变量适于本次会话,局部变量只用于本函数过程内。声明局部变量 DECLARE 局部变量名 变量类型【DEFAULT 默认值】;
(172)(173)
2025-06-14 15:17:59
80
原创 (80)课100用户自定义变量:SET @var_name := 值【依次类推】;通过查询赋值SELECT 字段名 INTO @var_name FROM 表名;读取SELECT @var_name;
(171)(172)
2025-06-14 15:06:23
87
原创 (79)课98--99:删除过程DROP PROCEDURE【IF EXISTS】过程名;查看/设置系统变量SHOW(set)【SESSION | GLOBAL】VARIABLES(变量名 = 值);
(169)(170)
2025-06-14 12:32:00
71
原创 (78)课98:查看库里已有的函数过程 show procedure status【where db = ‘库名‘】;查看过程定义 SHOW CREATE PROCEDURE 过程名;等等相关
(168)(169)
2025-06-14 11:35:37
402
原创 (77)课96--98:过程是没有返回值的函数,重用了代码。创建过程 CREATE PROCEDURE 过程名(【参数列表】)BEGIN SQL语句 END;调用过程 CALL 过程名(【参数】);
(166)(167)
2025-06-14 08:35:40
80
原创 (76)课94--95:视图主要是用于查询而非数据更新,基于视图的更新是有限制的。聚合排序去重,union连接后得到的视图,均不能被修改。视图的好处:简单安全数据独立。
(164)(165)
2025-06-14 07:45:25
60
原创 (75)课92--93视图约束 with cascaded(local) check option:不带with则无约束。带with默认级联约束。对顶层视图的修改绕不开视图链上底层视图上的约束。
(162)(163)
2025-06-14 05:02:30
97
原创 (74)课91:修改视图定义 ALTER VIEW 视图名[(列名列表)] AS SELECT语句【WITH [ CASCADED | LOCAL ] CHECK OPTION】
(161)(162)
2025-06-14 04:14:32
60
原创 (73)课91:查看视图的结构SHOW CREATE VIEW 视图名;删除视图DROP VIEW【IF EXISTS】视图名 [,视图名];
(160)(161)
2025-06-14 03:36:20
62
原创 72课91创建与修改视图:CREATE【OR REPLACE】VIEW 视图名称[(列名列表)] AS SELECT语句【WITH [ CASCADED | LOCAL ] CHECK OPTION】
(159)(160)
2025-06-14 02:55:00
105
原创 (71)课90 update 优化:引擎 INNODB支持事务外键行级锁,但要求有合适的列索引,不用遍历整张表,才用行级锁即可。否则行级锁会升级为表锁,极大限制并发效率。行级锁时针对索引加的锁。
(158)(159)
2025-06-13 14:11:19
109
原创 (70)课89:count(列名)不会统计值为 NULL的列。查询效率:count(字段) < count(主键 id) < count(1) ≈ count(*),所以尽量使用 count(*)。
(157)(158)
2025-06-13 13:32:41
108
原创 (69)课88 limit 分页优化:大数据量时进行分页查询,越往后,分页查询效率越低。优化思路: 一般分页查询时,通过创建 覆盖索引 能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化。
(156)(157)
2025-06-13 12:48:37
101
原创 (68)课87 group by 优化:在分组操作时,也可以通过索引来提高效率。 分组操作时,索引的使用同排序操作也是满足最左前缀法则的。
(155)(156)
2025-06-13 12:00:29
76
原创 (67)课86: order by优化总结,查看控制排序缓冲区大小的变量 show variables like ‘sort_buffer_size‘。
(154)(155)
2025-06-13 11:48:23
250
原创 (66)课86 order by优化:Using index / filesort。创建逆序(联合)索引 create index 索引名 on 表名(age asc , phone desc);
(153)(154)
2025-06-13 09:45:04
98
原创 (64)课83--85主键优化:在 InnoDB引擎中,表数据是按主键顺序存放的,应按主键的顺序插入;乱序插入的页分裂与删除时的页合并会耗时。MERGE_THRESHOLD合并页的阈值(1到50默认)
(149)(150)
2025-06-13 05:52:54
61
原创 63课82:load data local infile ‘D:\x.t‘ into table 表 fields terminated by ‘,‘ lines terminated by ‘\n‘
(148)(149)
2025-06-13 05:48:17
70
原创 (62)课82:高效填表之 set global local_infile = 1; 设置全局参数 local_infile 为1,开启从本地加载文件导入数据的开关
(149)(150)
2025-06-13 05:35:01
62
原创 (61)课81--82:总结索引设计的 7 个原则。高效插入数据之以此方式登录,才可以用 load 命令读入文件来填充表:mysql –-local-infile -u root -p root
(147)(148)
2025-06-13 03:38:12
111
QT6 阅读与注释主窗体 QMainWindow,包括了对码头组件 QDockwidget的成员函数
2025-05-27
QT6 阅读与注释 QActionGroup,并给出源代码;其是容器,以容纳菜单栏与工具栏里的按钮,组成按钮组
2025-05-19
QT6 阅读与注释 QAbstractScrollArea,其是文本框 QPlainTextEdit、QTextEdit的父类
2025-05-15
QT6 阅读 QMap<key,T>以及源代码:a i 增改,value()查询,删 remove(),这些已足够
2025-05-12
QT6 阅读与注释 LCD显示类 QLCDNumber ,该类继承于容器框架 QFrame
2025-05-10
QT6 阅读与注释计时器类 QElapsedTimer ,该类没有继承于 QObject
2025-05-10
QT6 阅读与注释日期时间类型的界面输入控件 QDateTimeEdit、QTimeEdit、QDateEdit
2025-05-09
QT6 阅读与注释日期类型 QDate、时间类型 QTime、日期时间类型 QDateTime
2025-05-08
QT6 阅读与注释进度条 QProgressBar 的源码,其是界面输出类,是 QWidget 的子类
2025-05-06
QT6 阅读与注释表盘 QDial 的源码,其是基类QAbstractSlider 的子类
2025-05-05
QT6 阅读与注释滑动条 QSlider 的源码,其是基类QAbstractSlider 的子类
2025-05-05
QT6 阅读与注释滚动条 QScrollBar 的源码,其是基类QAbstractSlider 的子类
2025-05-05
QT6 阅读与注释 QString 这个类,包含了 QString 类、与 QLatin1String 类的完整源码
2025-04-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人