sql
yxh13521338301
只分享干货的码农
展开
-
mysql事务隔离级别以及MVCC的底层原理
源于蚂蚁课堂的学习,点击这里查看(老余很给力)有猿友私信聊天说搞不明白事务隔离级别到底是什么意思,但面试又不可避免,只能死记硬背。但资深的面试官不讲武德,直接询问事务隔离级别底层原理,怎么办?来骗?来忽悠经验丰富的面试官?这好吗?这不好。我劝这些猿友,耗子尾汁,脚踏实地研究技术,不要搞窝里斗。本文帝都的雁为大家详细介绍一下mysql底层保证数据安全的原理。一、锁的分类万变不离其宗,锁是一个抽象的概念,按照不同的角度有不同的划分。1、以性能划分乐观锁:当线程获取不到...原创 2020-11-28 14:38:28 · 702 阅读 · 1 评论 -
mysql定位和优化慢查询的方案
源于蚂蚁课堂的学习,点击这里查看(老余很给力)是否遇到过这样的场景:因为一条sql查询耗时太长,降低用户体验;或者面对sql结合业务,不知道怎么写才能更高效地输出结果?今天帝都的雁为大家分享一下如何在千万级的数据量下输出高效的sql语句。(PS:需要有mysql执行流程原理的理论基础,可参考我的另一篇博文《mysql查询和修改的底层原理》)一、数据结构Mysql之所以可以快速地吞吐,很大程度上依赖于其底层的数据结构--B+树。首先我们先了解一下几种索引可选择的数据结构。...原创 2020-11-19 15:15:43 · 933 阅读 · 0 评论 -
mysql查询和修改的底层原理
源于蚂蚁课堂的学习,点击这里查看(老余很给力)Mysql作为主流数据库,有着强大的数据存储交互功能,成为当下程序猿必备的技能点。很多小伙伴可能对其了解仅限于sql的运用,但对其内部底层如何将数据存储和取出任然一知半解。本文,帝都的雁分享一下自己了解的mysql的底层原理。(PS:属于进阶知识,要对mysql的索引底层数据结构、存储引擎有一定概念)一、通讯方式Mysql采用半双工通讯。通讯方式分为单工、半双工和全双工。单工:请求方和接收方传输方向是单向的,比如遥控器。...原创 2020-11-12 10:22:52 · 2639 阅读 · 1 评论 -
mysql存储过程空值赋值变量的问题
发现一个问题:mysql的存储过程,在赋值变量时,如果所赋值为空,则赋值失败,变量维持现状。比如:my_loop : LOOP IF(逻辑判断) TEHN leave my_loop; END IF; select id into my_id from user limit 1;END LOOP;假设第一次循环,查询my_id为1,则id被赋值为...原创 2019-09-03 16:06:29 · 2485 阅读 · 5 评论 -
mysql子程序的高级特性(一)
1.DETERMINISTIC特性(确定性)DELIMITER $$CREATE PROCEDURE test_prod()NOT DETERMINISTICBEGINUPDATE test_score SET SCORE = 6 WHERE ID < 5 LIMIT 1;END;$$DELIMITER ;NOT DETERMINISTIC 表示子程序包含了...原创 2019-09-03 13:16:40 · 541 阅读 · 0 评论 -
mysql触发器
示例1需求:往test_score插入数据的时候,把插入的id,name,status记录下来DELIMITER $$-- 触发器名称CREATE TRIGGER copy_score-- 触发在操作数据之前还是之后 after/beforeAFTER -- 触发动作 :insert/update/deleteINSERT -- 被触发的表ON test_score...原创 2019-09-03 10:46:47 · 108 阅读 · 0 评论 -
mysql函数之自定义函数应用综合示例(二)
1.示例1需求:输入ID,获得score、name、id组合的UUID值DELIMITER $$CREATE FUNCTION getuuid(my_id INT) RETURNS VARCHAR(300) READS SQL DATABEGIN DECLARE my_uuid VARCHAR(300) DEFAULT ''; SELECT CONCAT(id,'_',N...原创 2019-08-26 10:53:45 · 155 阅读 · 0 评论 -
mysql函数之自定义简单的函数(一)
1.一个简单的函数需求:编写函数,传入ID, 返回nameDELIMITER $$-- 定义函数名称和参数列表CREATE FUNCTION getname(my_id INT)-- 定义函数返回值类型 RETURNS VARCHAR(255) -- 定义函数字符集 CHARSET utf8-- 定义函数访问数据的方式 READS SQL DATABEGIN D...原创 2019-08-26 10:25:56 · 379 阅读 · 0 评论 -
mysql存储过程之游标使用(六)
1.什么是游标需求:修改id为偶数的记录分数DELIMITER &&CREATE PROCEDURE test_cur_1()BEGIN -- 定义开关 DECLARE stopflag INT DEFAULT 0; -- 定义数据存放的变量 DECLARE my_id VARCHAR(255) DEFAULT ''; -- 定义游标变量 DECLAR...原创 2019-08-22 17:51:47 · 158 阅读 · 0 评论 -
mysql存储过程之变量及其特点和应用(二)
案例1(变量及其特点和应用)通过存储过程获取id为2的表数据DELIMITER $$CREATE PROCEDURE test1()BEGIN-- 声明变量,一个declare只能声明一个遍历DECLARE NAME VARCHAR(32) DEFAULT '';-- 1、可以直接赋值-- set name = 'hahaha'; -- 2、可以通过查询将结果集赋值...原创 2019-08-13 10:07:33 · 236 阅读 · 0 评论 -
mysql存储过程之循环语句(五)
1.while循环语句需求:想数据库表插入20条数据DELIMITER $$CREATE PROCEDURE test_while()BEGIN -- 定义循环对象 DECLARE i INT DEFAULT 0; -- 判断是否执行下一次循环 WHILE(i<20) DO BEGIN -- 执行循环操作 SET i =...原创 2019-08-16 17:59:25 · 2686 阅读 · 0 评论 -
mysql存储过程之条件语句(四)
1.存储过程的条件语句需求:编写存储过程,传入ID如果是偶数,返回其url,否则返回IDDELIMITER $$CREATE PROCEDURE test3(IN BOOK_ID BIGINT(11))BEGIN -- 定义url DECLARE URL VARCHAR(255) DEFAULT ''; -- 判断语句 IF(BOOK_ID %2 ...原创 2019-08-16 17:33:41 · 592 阅读 · 0 评论 -
mysql存储过程之存储过程的参数(三)
1.存储过程的传入参数IN需求:传入数据的id返回对应的图片urlDELIMITER $$-- 入参CREATE PROCEDURE test(IN book_id BIGINT(11))BEGIN DECLARE url VARCHAR(255) DEFAULT ''; SELECT IMG_URL INTO url FROM book_mark WHERE id = ...原创 2019-08-16 11:27:38 · 492 阅读 · 0 评论 -
mysql存储过程之一个简单的存储过程(一)
1.语法结构-- 声明分隔符delimiter $$-- 创建存储过程create procedure 存储过程名称(参数列表)-- 开始执行存储过程begin-- 存储过程的逻辑select * from user;-- 结束存储过程end;--分隔符$$-- 重置分隔符delimiter ;案例如下:delimiter $$create...原创 2019-08-09 15:20:35 · 194 阅读 · 0 评论 -
MySQL报错:Data too long for column
异常信息如下:nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'xxx' at row此原因是字段的最大容量小于实际数据的容量导致,但我字段选取的是text,本以为可不限长度,谁知都是假象。原来text类型也是有长度的。TINYTEXT...原创 2019-03-29 10:02:01 · 9355 阅读 · 1 评论 -
mysql索引
命名规则:表名_字段名1、需要加索引的字段,要在where条件中2、数据量少的字段不需要加索引3、如果where条件中是OR关系,加索引不起作用4、符合最左原则创建索引索引类型在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的...转载 2018-09-13 16:31:28 · 152 阅读 · 0 评论 -
mysql入门学习
一、数据库概述1、数据库: 存储数据的仓库层次式数据库, 网络式数据库, 关系型数据库2、MySql数据库的安装与配置安装的路径不要有中文和空格端口不要去改, 保持默认即可3、登陆或退出MySql客户端命令登录:mysql -u root -p 123 -h localhost;-u:后面的root是用户名,这里使用的是超级管理员root;-p:后面的123是密...原创 2018-06-10 14:01:32 · 266 阅读 · 0 评论