mysql
文章平均质量分 65
wjxbj
这个作者很懒,什么都没留下…
展开
-
慎用SELECT INTO复制表
很多时候我们习惯于用SELECTINTO复制一个表或表结构,因为它方便,快捷,而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意: SELECT INTO 复制表或表结构的时候,只是得到了一个“外壳”,就像克隆人一样,只是得到了一个躯体,个人的意识、回忆都不会克隆的。像原表的主键、外键、约束、触发器、索引都不会被复制过来。这点要注意哦,在某些情况下,没有注意...2017-03-14 19:59:09 · 164 阅读 · 0 评论 -
mysql隐式转换导致查询语句不能走索引分析
如下两条SQL语句,一个不走索引,一个走索引。 在这里,为什么第一条语句未加单引号就不走索引,而第二条加单引号的就走索引呢?原因是第一条语句由于类型不匹配,MySQL会做隐式的类型转换,都将其转换为浮点数在比较;而第二条语句因为类型一致,不会转浮点数,就是字符串之间的比较,所以就能正常走索引。一.进一步了解隐式转换对于第一种情况: ...2016-11-22 22:24:18 · 522 阅读 · 0 评论 -
mybatis中操作日期实例分析
myBatis的sqlmap操作mysql数据库表,不管是查询还是更新,可以和表的字段类型无关,可以是VARCHAR或者TIMESTAMP,而sqlmap中的resultMap对应的jdbcType也可以是TIMESTAMP或者VARCHAR,甚至DTO的属性类型可以是Date类型,也可以是String类型,都不影响实际的操作逻辑。 验证代码如下:Sche...2016-11-08 22:30:14 · 537 阅读 · 0 评论 -
性能及SQL分析
测试发现我们的一个接口存在性能问题,经分析是一个SQLMAP中一个SQL有两个层面的业务逻辑,用OR连接,如下所示。select * from table_name where a='111' and b='222' and c='333' or d = '444'; 此表中约有近100W的数据量,查看建表语句发现a、b、c是主键,而d字段未建索引。于是我...2016-11-08 21:47:45 · 107 阅读 · 0 评论 -
Error Code: 1175. You are using safe update
在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常。 异常内容:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY col...原创 2016-09-04 13:57:52 · 132 阅读 · 0 评论 -
MySQL 数据库 varchar 到底可以存多少个汉字?多少个英文?
一.关于UTF-8 UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。它对英文使用8位(即一个字节) ,中文使用24位(三个字节)来编码。 UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。 UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示...原创 2016-08-16 22:50:27 · 943 阅读 · 1 评论 -
MySQL索引原理及慢查询优化
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最...原创 2016-08-08 22:33:34 · 423 阅读 · 1 评论 -
MySQL的InnoDB索引原理详解
摘要 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加...原创 2016-08-05 00:57:31 · 163 阅读 · 0 评论 -
浅谈MySQL和mariadb区别
MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun、Oracle收购)。除了作为一个Mysql的“向下替代品”,MariaDB包括的一些新特性使它优于MySQL。 这两个数据库究竟有什么本质的区别,我看mariadb文件夹BIN中还是mysql*.exe,除了MySQL会被ORACLE闭...原创 2016-08-05 00:21:05 · 1127 阅读 · 0 评论 -
MySQL数据库简介
一.MySQL数据库简介1.MySQL数据库是一款免费、高效、灵活的易用的RDBMS。The world's most popular open source database。2.全球有超过1500万台运行着MySQL的服务;全球十大Web站点中有九个使用MySQL;全球十大ISV(ISV意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业,如微软、甲骨文等)中有八...原创 2015-12-20 21:39:38 · 546 阅读 · 0 评论 -
利用MySQL去Oracle
一.Oracle vs MySQL1.性能不分高低,在于使用方式,扬长避短 Oracle强大到几乎能做所有事情 ----- 强大的计算节点 MySQL主要还是用来存储数据和简单查询 ----- 定位为存储节点 MySQL对复杂查询/数据分析支持偏弱,需要业务改造或是通过其他方式来支持2.不管Oracle/MySQL,复杂SQL总是成...原创 2015-12-20 22:40:26 · 276 阅读 · 0 评论 -
MySQL执行计划(一)
一.MySQL执行计划调用方式 EXPLAIN SELECT …… 变体:1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLA...原创 2015-12-24 22:20:44 · 134 阅读 · 0 评论 -
报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用l...
报错:1130-host ... is not allowed to connect to this MySql server解决方法:一.改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"。m...原创 2018-08-03 22:47:08 · 257 阅读 · 0 评论 -
如何在官网上下载可安装版的MySQL数据库
MySQL数据库安装软件有解压版和安装版,解压版需要配置环境参数,而安装版的可以自动配置参数。可以根据自己的需要选择是解压版,还是安装版。 点击链接地址https://dev.mysql.com/downloads/file/?id=477166,进入MySQL官方网站,单击“Downloads”下载Tab页,进入下载界面 找到Community并且单击它,出现以下的页面 ...原创 2018-07-29 22:18:21 · 1479 阅读 · 0 评论 -
关于SQL语句中SUM函数返回NULL的解决办法
在SQL语句中使用集合函数count(),返回结果肯定为非负整数,这也是用来判断数据有无的一个很有效的方法; 然后在用sum()进行集合相加的时候,如果sum()的对象没有记录,那么不会返回0,而返回null,这么做,不会影响数据库,因为数值型字段也是可以存放NULL的,因为在执行这样的SQL语句的时候,没有记录也不会报错。 但是执行完之后,要使用这个数据就有问题了。 1...原创 2018-06-18 17:51:57 · 714 阅读 · 0 评论 -
mysql添加表注释、字段注释、查看与修改注释
一.基础知识1.创建表的时候写注释create table test1(field_name int comment '字段的注释')comment='表的注释';2.修改表的注释alter table test1 comment '修改后的表的注释';3.修改字段的注释alter table test1 modify column field_name int comment '修改后的...原创 2018-06-18 14:14:03 · 3523 阅读 · 0 评论 -
SQL语句order by两个字段同时排序
order by后可加多个字段,用英文逗号隔开,如下所示:--f1用升序, f2降序,sql该这样写order by f1, f2 desc--也可以这样写,更清楚:order by f1 asc, f2 desc--如果都用降序,必须用两个descorder by f1 desc, f2 desc...2018-01-14 21:54:32 · 423 阅读 · 0 评论 -
使用MySQL WorkBench导出数据库
1.在MySQL WorkBench的中双击要连接的数据库。 2.点击左边的Data Export,在右边的数据库列表中选择要导出的数据库; 3. Export to Dump Project Folder是每张表导出一个.sql文件,Export to Self-Contained File是整个数据库导出一个.sql文件,这里选择Export to Self-Conta...2017-02-21 23:41:46 · 2708 阅读 · 0 评论 -
mysql删除及更改表的主键
在我们使用MySQL的时候,有时会遇到需要更改或者删除mysql的主键,我们可以简单的使用alter table table_name drop primary key;来完成。 下面我使用数据表table_test来作了例子。1.首先创建一个数据表table_test:create table table_test(`id` varchar(100...原创 2017-01-12 22:19:37 · 554 阅读 · 0 评论 -
MySQL执行计划(二)
二.执行计划包含的信息(接上篇)5.key 显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL TIPS:查询中若使用了覆盖索引,则该索引仅出现在key列表中 6.key_len 表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度 TIPS:key_len显示的值为索引字段的最大可能...原创 2015-12-24 22:20:58 · 218 阅读 · 0 评论 -
mysql关于or前后条件的索引问题
不是说,一条sql语句只能用一个索引么?但如下这样一条sql语句SELECT * FROM `comment` WHERE `toconuid` = '10' or `tocomuid` = '10' 其中toconuid列和tocomuid列分别为单列索引,explain后显示两个索引都用了,extra为 Using union(toconuid,toc...原创 2016-08-04 23:53:35 · 833 阅读 · 0 评论 -
mysql or条件可以使用索引而避免全表
在某些情况下,or条件可以避免全表扫描的。虽然在我在MariaDB10.0.10版本和MySQL5.7.14上都测试不成功,但还是很有必要记录下来。mysql> show variables like 'version';+---------------+---------------------+| Variable_name | Value ...原创 2016-08-04 10:00:07 · 560 阅读 · 0 评论 -
MySQL 获得当前日期时间以及时间的转换
一.获得当前日期时间1.获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:current_timestamp() current_timestamplocaltime() localtimelocaltimestamp() localtimestamp ...原创 2016-06-23 00:21:51 · 167 阅读 · 0 评论 -
MySQL创建存储过程
存储过程是数据库管理中常用的技术之一,可以很方便的做些类似数据统计、数据分析等工作,市场上的SQL SERVER、ORACLE、MySQL都支持存储过程,但不同的数据库环境语法结构有点区别,本案例给大家讲解下MySQL创建存储过程的方法。 使用常规的创建存储过程方法,发现各种报错,无法执行,在SQL SERVER下很容易成功的写法,在MySQL下居然不行,经过...原创 2016-06-22 09:24:56 · 118 阅读 · 0 评论 -
MySql中取前几行数据使用limit来完成
在mysql中是没有top关键字的,不过可以用limit来完成此功能,下面举例为大家详细介绍下它的使用方法。 order by id desc limit 10 按照id的倒序排序 取出前10条。 order by id desc limit 0,10 按照id的倒序排序 取出前10条。 order by id limit...原创 2016-06-22 09:14:57 · 311 阅读 · 0 评论 -
MySQL数据统计实例
#统计2015年5月份之前的数据量select count(1) from table_name where create_date < '2015-05-01 00:00:00';##统计2016年4月1号到2016年6月21号每天的数据量SELECT create_date,SUM(1) FROM table_name WHERE DATE_FORMAT(create...2016-06-22 09:11:41 · 169 阅读 · 0 评论 -
mysql查看和修改注释
mysql查看和修改注释,这里创建一张学生表来进行说明。一.如何创建表 创建表的时候写注释。create table test1( field_name int comment '字段的注释')comment='表的注释'; 创建学生表示例如下:二.修改表的注释和创建alter table test1 ...原创 2016-05-29 22:28:56 · 664 阅读 · 0 评论 -
MySQL性能优化
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有: a.优化查询 b.优化数据库结构 c.优化MySQL服务器 数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能...原创 2015-07-02 21:41:23 · 84 阅读 · 0 评论 -
MYSQL语句大全
--语 句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --...原创 2013-03-21 12:37:54 · 161 阅读 · 0 评论 -
MySQL数据库的基本操作命令
一、mysql服务操作 1、net start mysql41 //启动mysql服务 2、net stop mysql41 //停止mysql服务 3、mysql -h主机地址 -u用户名 -p用户密码 //进入mysql数据库 4、quit //退出mysql操作 5、mysqladmin -u用户名 -p旧密码 passw...原创 2013-03-21 12:37:40 · 101 阅读 · 0 评论 -
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD。一.TIMESTAMPDIFF语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之...原创 2016-06-23 00:22:07 · 143 阅读 · 0 评论 -
在MySql中利用insert into select准备测试数据
需求是我想重复插入大量数据,那么首先想到的,就是用insert into select语句。首先将当前表的数据备份。create table table_name_bak as select * from table_name; 然后,从备表中的数据往原表中新增,写了个存储过程如下:drop procedure if exists initTestDa...原创 2016-06-23 00:22:22 · 572 阅读 · 0 评论 -
mysql 获取全局唯一值
在涉及数据库存储数据的时候,经常会遇到唯一值问题,有的是主键带来的限制,有的则是业务上的需要。 下面介绍几种唯一值的获取或者生产方法: 先建一个测试用的表tbl_user,有三个字段:Id、Name、Age,其中Id为主键。drop table if exists `tbl_user`;create table`tbl_user` ( ...原创 2016-06-23 00:34:55 · 395 阅读 · 0 评论 -
如何查看mysql数据库的引擎
一般情况下,mysql会默认提供多种存储引擎,可以通过下面的方法查看:一.查看mysql已提供什么存储引擎mysql> show engines; 二.查看mysql当前默认的存储引擎mysql> show variables like '%storage_engine%'; 三.看某个表用了什么引擎 在显示结果里参数e...原创 2016-08-04 09:26:53 · 227 阅读 · 0 评论 -
mysql查看索引详解
mysql查看索引SQL语句:mysql> show index from tblname;mysql> show keys from tblname;1.Table表的名称。 2.Non_unique如果索引不能包括重复词,则为0。如果可以,则为1。 3.Key_name索引的名称。 4.Seq_in_index索引中的列序列号...原创 2016-08-04 09:00:28 · 201 阅读 · 0 评论 -
MySQL创建索引、重建索引、查询索引、删除索引
一.创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。以下命令语句分别展示了如何创建主键索引(PRIMARY KEY),联合索引(UNIQUE)和普通索引(INDEX)的方法。mysql>ALTER TABLE `table_name` ADD INDEX|UNIQUE|PRIM...原创 2016-08-04 08:47:34 · 291 阅读 · 0 评论 -
message from server: "Host is not allowed to connect to this MySQL server"解决办法
报错:1130-host ... is not allowed to connect to this MySQL server解决方法:一.改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称...原创 2016-07-31 08:39:45 · 1057 阅读 · 1 评论 -
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
今天在使用mysql时,又遇到了ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes问题,特记录。 该问题是由键值字段长度过长导致。mysql支持数据库表单一键值的最大长度不能超过767字节,超出这个长度即报错。一般情况下,不会有键值字段的长度会超出该长度。但是需要注...2015-08-17 00:04:13 · 295 阅读 · 0 评论 -
mysql delete limit 使用方法详解
一.mysql delete limit优点 用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。本选项用于确保一个DELETE语句不会占用过多的时间。您可以只重复DELETE语句,直到相关行的数目少于LIMIT值为止。 如果DELETE语句包括一个ORDER BY子句,则各行按照子...原创 2016-07-08 09:03:59 · 12329 阅读 · 0 评论 -
MySQL 错误1418 的原因分析及解决方法
具体错误: 使用mysql创建、调用存储过程,函数以及触发器的时候会有错误符号为1418错误。ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL,or READS SQL DATA in its declaration and binary logging is enabled(you *...原创 2016-06-24 09:10:00 · 697 阅读 · 0 评论