
mysql
文章平均质量分 62
wangjun5159
2011年-至今一直从事java web开发,全栈开发,包括但不限于java技术栈、vue技术栈、微信小程序,uniapp,抓包wireshark/fiddler、nginx/keepalived,了解原生安卓,知道electron,关注flutter,欢迎技术咨询
展开
-
事务隔离属性、spring传播属性、 @Transactional注解
##############事务隔离属性+传播属性################mysql默认的隔离级别是read_commitedread_uncommitread_commitedrepeatable_readSERIALIZABLE脏读:事务1修改了行1,但是还没commit,事务2读取了未commit的行1,事务1回滚了行1;不可重复读:事务1读了行1,事务2修改了行1并commit,事务1再次读了行1,发现行1变了。幻读:事务1读了满足where条件的所有行,事务2插入了满足wh原创 2021-03-30 21:41:54 · 295 阅读 · 0 评论 -
mysql cpu100% 排查
查看mysql线程首先查看mysql线程,有两种方法,第一使用show full processlist,第二查看information_schema.processlist,这两种查询结果是一样的,查表更方便一些,因为可以过滤字段。show full processlist;查看所有mysql线程(connection),如果不加full,则查看前100条。或者select * from information_schema.processlist where info!='';找到info原创 2021-03-14 19:33:34 · 4511 阅读 · 0 评论 -
mysql collation 校对规则 utf8_general_ci 与 utf8_unicode_ci的区别
mysql utf8_general_ci utf8_unicode_ci 区别原创 2016-02-16 15:11:03 · 3491 阅读 · 0 评论 -
mysql char、varchar
mysql char varchar原创 2016-05-09 13:20:51 · 1246 阅读 · 1 评论 -
mysql 查看优化器重写后的sql
sql优化器会重写sql sql在执行时,并不一定就会按照我们写的顺序执行,mysql优化器会重写sql,如何才能看到sql优化器重写后的sql呢?这就要用到explain extended和show warnings了。explain extended sql语句,然后show warnings查看。explain extended会输出sql的执行计划,查询记录的方式(原创 2016-04-23 19:39:20 · 7595 阅读 · 1 评论 -
mysql 全文本索引
简介全文索引主要用于关键词查询,就像“百度查询java”一样,java就是这个关键词,全文索引可以用在char、varchar、text字段上。 innodb 从5.6.4开始支持全文索引,之前版本都不支持。 myisam一直支持全文索引。用法创建create fulltext index on table_name(column_name1,[column_name2,column_name3原创 2016-05-05 15:43:05 · 1121 阅读 · 0 评论 -
mysql group_concat
group_concat,返回group中非null值连接起来的字符串。默认分割符是逗号,使用separator指定分隔符。用distinct过滤重复值。用order by排序,默认是升序,asc明确升序;desc降序 GROUP_CONCAT(expr) This function returns a string result with the concatenated non原创 2016-05-16 18:36:53 · 649 阅读 · 0 评论 -
mysql set name、set character set区别
名字作用有效范围set namescharacter_set_client当前connectioncharacter_set_connectioncharacter_set_resultset character setcharacter_set_client当前connectioncharacter_set_re原创 2016-04-19 20:31:06 · 1761 阅读 · 0 评论 -
mysql 登录、退出
mysql安装后,可以使用命令行登录windows命令行格式下,命令: mysql -u username -p -h ip -P port使用help可获取命令帮助,help sqlcommand,如退出mysql链接exit或者quit原创 2016-05-04 08:11:30 · 11057 阅读 · 0 评论 -
mysql 插入多行数据、插入检索数据
mysql 插入多行数据、插入检索数据原创 2016-05-24 10:33:39 · 5421 阅读 · 0 评论 -
sql join、group by原理
今天遇到一问题,再次加深了,join结果就是笛卡尔积,这个原理的认识。join 原理sql以下边的sql为例,假设有a、b两张表select * from user a,age_info ba表的第一条记录首先拿a表的第一条记录,去匹配b表的第一条记录,由于没有过滤条件,匹配,所以加入结果集第一条记录就是 然后,再匹配b表的第二条记录,没有过滤条件,所以匹配,匹配,所以加入结果集 第二条记录就原创 2016-09-12 11:01:41 · 4606 阅读 · 0 评论 -
mysql :=和=的区别
:=和=的区别=只有在set和update时才是:=和赋值的作用,其它都是等于的作用。正因为此所以,用变量实现行号时,必须用:=:=不只在set和update时时赋值的作用,在select也是赋值的作用。如果明白了=和:=的区别,那么也就理解了下边的现象。@num=@num+1,此时=是等于的作用,@num不等于@num+1,所以始终返回0,如果改为@num=@num,始终返回1了。mysql原创 2016-05-11 21:42:14 · 18891 阅读 · 1 评论 -
设置mysql workbench的sql_mode,ONLY_FULL_GROUP_BY不起作用
问题在mysql中,非严格的mysql默认情况下是可以正常执行的,有用户表user,如下 虽然age不是group by字段,但是仍然可以在select中查询 但是我们知道这是非常不规范的方式,在某些情况下会产生业务上的错误;并且这样的sql在oracle中会报错,但是mysql默认是允许的。为了防止这种错误,我想到是否可以通过mysql客户端mysql workbench进行sql校验?mys原创 2017-01-17 17:32:31 · 9220 阅读 · 0 评论 -
mysql 乱码 解决
问题保存数据到数据库,一看全是问号,看了看工程的log还有控制台,都是正常的,第一反应是jdbc url没有设置useUnicode=true&characterEncoding=UTF-8,check后发现jdbc url设置了,所以推断数据库字符集出问题了。 通过show variables like '%character%' 和 show variables like '%col原创 2017-06-17 22:13:20 · 531 阅读 · 0 评论 -
阿里云windows server 2008 r2安装mysql失败
缘起用了阿里云的服务器,选的操作系统是windows server 2008 r2,毕竟对windows还是很熟。在安装mysql时,遇到了各种问题。过程如下是各种心酸, 最开始安装的是mysql最新版本mysql-5.7.18.msi,安装后,点击mysql.exe或者mysqld.exe都是闪退。怀疑是版本太新,操作系统太老而不兼容导致,所以降到5.6.msi,安装还是同样问题,最后降到5.原创 2017-06-14 23:10:14 · 9485 阅读 · 0 评论 -
mysql show processlist,kill pid,查看连接数 查看被锁的表
show processlist找出执行时间最长的进程show [full] processlist; 展示属于当前用户的线程,如果当前用户有 process privilege,那么会展示所有线程。 如果不加full,只显示前100条;show processlist展示的线程不包含background thread,所以线程数就等于connections除了上述方式,我们还可以通过show原创 2017-09-29 15:42:27 · 6901 阅读 · 0 评论 -
mysql 类型转换
mysql在比较时,首先会进行类型转型,由于是自动的,所以很难被发现,比如select 1='1sdjfksdjfksdf';select 1+'2';mysql在操作数时默认会发生类型转换,字符串与数字操作时,字符串会转为数字。 比如select 1='1aaaa'; //结果,1select 11='11bbb'; //结果,1那么这一条数据会被查询出来,因为11michael会自动转换为1原创 2018-02-08 15:17:47 · 944 阅读 · 0 评论 -
mysql 导入、导出
导入未登录mysql,shell下shell > mysql db_name<text_file如果文件中有use db_name,那么可以直接shell > mysql <text_file完整的命令shell> mysql -u用户名 -p密码 -hhost <text_file已登录m原创 2019-05-06 08:28:34 · 230 阅读 · 0 评论 -
mysql 数据库建模工具 mysqlworkbench
mysql 数据库建模工具原创 2016-05-11 21:29:37 · 12829 阅读 · 0 评论 -
mysql 游标
游标 游标就是结果集,可以把游标当作集合的指针或者java中的引用。一旦打开游标就是执行了查询,打开游标必须要关闭,否则会占用内存资源。游标必须在存储过程中创建和使用。用fetch...into...来遍历游标。使用repeat .....until 条件 end repeat做循环;创建declare xx cursor for select * from user;原创 2016-05-03 11:44:43 · 817 阅读 · 0 评论 -
mysql Got error 28 from storage engine
在执行命令,alter table时,出现如下图错误百度后,原因是,mysql的临时目录空间不足,查询临时目录的命令如下:show variables like '%tmp%';发现tmpdir的目录是 根目录下的/tmp首先查看/tmp目录下各个文件所占用大小,ls -alth /tmp/tmp目录下所有文件总的大小,d原创 2015-09-18 16:38:14 · 2163 阅读 · 0 评论 -
mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
full index scan:全索引扫描,查询时,遍历索引树来获取数据行。如果数据不是密集的会产生随机IO在执行计划中是Type列,indexfull table scan:通过读物理表获取数据,顺序读磁盘上的文件。这种情况会顺序读磁盘上的文件。在执行计划中是Type列,allcovering index:覆盖索引,如果where条件的列和返回的数据在一个索引中,原创 2016-01-15 15:53:23 · 11119 阅读 · 6 评论 -
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT)
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT)原创 2016-02-16 16:14:40 · 2560 阅读 · 0 评论 -
mysql error code 1153:Got a packet bigger than ‘max_allowed_packet’
情景再现:同时提交了3张图片,加起来有3M左右,照片是存在blob字段中,然后就出现上述异常。分析:通过异常信息得知,是数据包超过了max_allowed_packet限制,通过max_allowed_packet可以解决此问题。看一下参数大小,select @@max_allowed_packet;但问题远没那么简单,你想想返回的数据大于16M,为什么没报原创 2016-02-22 14:41:37 · 997 阅读 · 0 评论 -
查看mysql改写后的sql
explain extended select * from ....show warnings;可以看到改写后的sql,列上都添加了数据库名和表名原创 2016-02-22 15:09:25 · 1252 阅读 · 0 评论 -
mysql 为什么不能在同一个表上查询和更新?
mysql 为什么不能再同一个表上查询和更新?案例情况1:update table set x = (select y from table where id =1)error 1093: you cant specify target table test for update in from clause情况2:通常采用的解决方案update table原创 2016-02-23 11:02:35 · 4142 阅读 · 3 评论 -
mysql datetime与timestamp区别
datetime:1、与时区无关,存入的是什么值就是什么值,不会根据当前时区进行转换2、从mysql 5.6.4中,可以存储小数片段,最多到小数点后6位,显示时格式为 yyyy-MM-dd HH:mm:ss[.222222] mysql5.5中,没有小数片段。所以,我再从5.6版本迁移到5.5版本时,因为生成的sql中datetime(6),所以无法导入数据库。3、存储原创 2015-08-26 21:49:38 · 28272 阅读 · 0 评论 -
mysql 慢查询日志
1、查看环境变量,慢查询是否打开、慢查询的时间、慢查询日志保存位置mysql> show variables like '%query%';2、windows系统中,在mysql_home/my.ini中修改慢查询时间,重启mysql重启mysql方法:cmd---->services.msc---->mysql停止---->mysql启动3、使用mys原创 2016-04-08 21:28:55 · 642 阅读 · 0 评论 -
查询mysql版本
select version();原创 2016-04-11 08:56:58 · 1816 阅读 · 1 评论 -
mysql bigint 取值范围
(N-1) (N-1) -2 ~ 2 -1bigint是8个字节,64位,所以N等于64bigint最多20个字符,也可能是19个字符,这是因为正数时是19个数字,负数时有负号,所以一共是20个数字。同理,可以推断出,mediumint,int,tinyint的取值范围原创 2016-04-11 10:16:22 · 28311 阅读 · 0 评论 -
mysql 修改表、列的字符集和校对规则
修改某表及所有列的字符集和校对规则To change the table default character set and all character columns (CHAR, VARCHAR, TEXT) to a new character set, use a statement like this:ALTER TABLE tbl_nameCONVERT TO CHA原创 2016-02-16 16:23:05 · 6020 阅读 · 0 评论 -
mysql查询隔离级别、自动提交
mysql默认隔离级别是可重复读,解决了不可重复读的问题。查询当前会话隔离级别select @@tx_isolation;查询系统隔离级别select @@global.tx_isolation原创 2016-04-11 08:59:50 · 884 阅读 · 0 评论 -
mysql 严格group by
情景再现今天写sql时,遇到一个有趣的现象,如下图group by时,只指定了name字段,而没有age字段,这在oracle中肯定是错误的,但是mysql却可以正常运行。group by的原理不过,通过这个测试,我们也能大体知道group by的原理,用name字段分组,筛选数据,遇到第一条name=ade,分组中没有,添加ade,筛选第二条,name原创 2016-04-27 17:28:29 · 2131 阅读 · 0 评论 -
mysql 插入sql中包含关键字
mysql 插入sql中包含关键字 使用 `引起来比如,order是mysql关键字,加`即可insert table_name(id,`order`) values(?,?)原创 2016-05-24 10:36:33 · 6703 阅读 · 0 评论 -
mysql 变量
mysql 变量 存储过程 游标变量mysql中变量以@打头,格式@[variable_name],mysql中的变量不需要要声明,可以直接使用,比如select 1 into @v1;赋值两种方式,第一种set @xx=xx;第二种select xx from xx into @v1;或者select xx into @v1原创 2016-04-29 19:14:08 · 3155 阅读 · 0 评论 -
mysql collation 校对规则 查看字符集和校对规则 命令
简介每个字符集对应若干校对规则(collation),如果不指定,会有默认校对规则;服务器有字符集、数据库有字符集、表有字符集、列有字符集,如果不指定,会继承父字符集和校对规则。最终起作用的是列的字符集和校对规则。在比较时,比如 table1.col1=table2.col2,等号,就会使用校对规则进行比较,如果校对规则不兼容,就会出现,类似Error Code: 1267. Il原创 2016-02-16 10:30:57 · 5085 阅读 · 0 评论 -
mysql 存储过程
简介存储过程相当于Java/C中的方法,有参数,有返回值,不过它的参数分为输入参数、输出参数、输入输出参数,返回值属于参数的一种。创建创建 create procedure procedure_name(in in_v int, out out_v int, inout inout_v int)begin declare v1 int; /*声明局原创 2016-04-29 23:02:27 · 451 阅读 · 0 评论 -
mysql int(x) 显示宽度
解释: mysql中的 int(x),x表示此列的显示宽度,x位;显示宽度经常会与zerofill一起使用,插入值不足x位,则左侧补零,超过x位,则正常显示。注意,显示宽度不会影响值得存储,仅仅影响外观。int等存储值的范围始终如下表:Storage Requirements for Numeric TypesData Type原创 2015-09-10 10:47:45 · 1431 阅读 · 0 评论