
Mysql
文章平均质量分 87
azhegps
技术源于不断滴追求!
展开
-
MySQL的sql_mode模式说明及设置
MySQL5.6和MySQL5.7默认的sql_mode模式参数是不一样的,5.6的mode是NO_ENGINE_SUBSTITUTION,其实表示的是一个空值,相当于没有什么模式设置,可以理解为宽松模式。5.7的mode是STRICT_TRANS_TABLES,也就是严格模式。如果设置的是宽松模式,那么我们在插入数据的时候,即便是给了一个错误的数据,也可能会被接受,并且不报错,例如:我在创建一个表时,该表中有一个字段为name,给name设置的字段类型时char(10),如果我在插入数据的时候,其中n原创 2020-05-27 23:52:27 · 590 阅读 · 0 评论 -
mysql常见问题
1、如何开启mysql的远程连接https://blog.youkuaiyun.com/pyrans/article/details/823892202、mysql5.7 mysql库下面的user表没有password字段无法修改密码https://www.cnblogs.com/sharpest/p/10868656.html3、Linux中mysql的重启https://blog.c...原创 2019-12-29 15:53:00 · 185 阅读 · 0 评论 -
Ubuntu下MySQL中文乱码的问题解决
中文无法插入MySQL数据库~!~!查看数据库编码mysql> show create database bangjob;+----------+--------------------------------------------------------------------+| Database | Create Database |+----------+--转载 2017-05-09 16:50:36 · 707 阅读 · 0 评论 -
Mysql的列索引和多列索引(联合索引)
创建一个多列索引:CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first_nam转载 2017-05-09 16:45:57 · 403 阅读 · 0 评论 -
MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
1.新建用户//登录MySQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:je转载 2017-05-09 16:43:19 · 325 阅读 · 0 评论 -
Ubuntu 彻底删除 MYSQL 然后重装 MYSQL
删除 mysqlsudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //这个很重要上面的其实有一些是多余的。清理残原创 2017-05-09 00:03:53 · 4155 阅读 · 0 评论 -
联合索引优化多条件查询
联合索引是由多个字段组成的组合索引。若经常需要使用多个字段的多条件查询(WHERE col1 = … AND col2 = … AND col3 = …),可以考虑使用联合索引。现在数据表myIndex中i_testID是主键列,其他列无任何索引:多条件查找名字为xiaoming,城市为beijing,年龄为21的人:返回了一行数据,从执行计划中看到,查询没有使用任何索引,进行...原创 2017-05-24 17:52:29 · 800 阅读 · 0 评论 -
LIMIT优化
当我们想要在数据表中查找特定的几行时,常常使用LIMIT关键字限制返回的结果数。但是LIMIT的性能又如何呢?示例数据表film来自MySQL的示例数据库sakila,其中film_id列为主键列(约束),现在我们想查找数据表中第50行以后的5条记录(不包括第50行)。直接使用LIMIT:从结果可以看到,我们返回了film_id从51开始到55结束的5条记录。值得注意的是偏转载 2017-05-24 17:52:11 · 317 阅读 · 0 评论 -
查询产生临时表的调优
我们都知道,SQL查询时若产生了临时表,一般要消耗更多的内存,降低查询的效率。因此,当查询时产生了临时表,要进行优化,使引擎在查询时不用创建临时表就能完成查询。示例使用的是MySQL示例数据库sakila。actor表中有一个主键actor_id,演员的first_name与last_name。film_actor表中外键列actor_id,与actor表进行连接,其中actor_id有很转载 2017-05-24 17:51:16 · 652 阅读 · 0 评论 -
解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常
这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。我的解决方案是这样的1.在mysql的安装目录下找到my.ini,作如下修改: [mysqld]character-set-server=utf8mb4[mysql]default-chara转载 2017-05-09 17:20:07 · 37793 阅读 · 1 评论 -
MySQL: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
今天测试遇到了这样的问题: MySQL> use test; create table test(a varchar(512) primary key, b varchar(1024));Database changedERROR 1071 (42000): Specified key was too long; max key length is 767 bytes转载 2017-05-09 17:23:51 · 316 阅读 · 0 评论 -
MySQL 分库分表方案,总结的非常好!
前言公司最近在搞服务分离,数据切分方面的东西,因为单张包裹表的数据量实在是太大,并且还在以每天60W的量增长。之前了解过数据库的分库分表,读过几篇博文,但就只知道个模糊概念, 而且现在回想起来什么都是模模糊糊的。今天看了一下午的数据库分库分表,看了很多文章,现在做个总结,“摘抄”下来。(但更期待后期的实操) 会从以下几个方面说起:第一部分:实际网站发展过程中面临的问题。第二...转载 2019-09-10 15:51:09 · 1414 阅读 · 0 评论 -
MySql数据库去除重复的数据
今天群内有群友提出了一个问题,就是MySql中删除重复数据的问题,然后回答了一下,发现正好接触到了之前可能没关注的一点儿小知识,在此做下简要记录(哦对,昨天晚上在试用腾讯云数据库的时候还遇到一个问题,就是腾讯云数据库的Mysql对大小写是敏感的)。OK,接下来我们进入正题,首先我按照群友的数据结构创建了一张表,填充了一部分数据,结构如下图所示:那么我们首先来确定我们删除数据的时候的所需条件...原创 2019-09-06 14:25:17 · 1364 阅读 · 0 评论 -
linux 下 mysql安装和配置
网上的很多资料都有相关的文章,这里只是记录下自己安装过程中遇到的问题和解决方法:linux内核版本:~$ uname -aLinux naci 3.19.0-16-generic #16-Ubuntu SMP Thu Apr 30 16:09:58 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux1.首先在liunx下安装Mysql数据库~...原创 2019-09-10 15:50:55 · 248 阅读 · 0 评论 -
Linux下配置Mysql允许远程访问详解
操作非常简单,就5步骤,如下:1.进入 mysql:/usr/local/mysql/bin/mysql -u root -p2.使用 mysql库 :use mysql;3.查看用户表 :SELECT `Host`,`User` FROM user;4.更新用户表 :UPDATE user SET `Host` = '%' WHERE `User` = 'root' LI...原创 2019-09-10 15:50:57 · 288 阅读 · 0 评论 -
windows安装MySQL5.5.28步骤
大家都知道MySQL是一款中、小型关系型数据库管理系统,很具有实用性,对于我们学习很多技术都有帮助,前几天我分别装了SQL Server 2008和Oracle 10g数据库,也用了JDBC去连接他们,都没有出现乱码。昨天看同学用java连接MySQL数据库的时候,出现了乱码,这是我不知道的,我马上上网去查JDBC连接MySQL的操作,发现在用JDBC方式连接MySQL数据库的时候要传递一个能解决...原创 2018-10-06 09:46:36 · 2495 阅读 · 0 评论 -
mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
我们在连接mysql数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8 。作用是:指定字符的编码、解码格式。 例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了配置,那么作用有如下两个方面:1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成...原创 2017-11-20 21:50:36 · 704 阅读 · 0 评论 -
mysql中时间字段设置问题
案例【一】今天写数据库脚本,创建数据库时,有一个字段是datetime类型的,想要设置默认时间为当前时间,于是有了如下代码registerDate datetime NOT NULL DEFAULT NOW() COMMENT '注册时间' 执行之后报错 Error Code: 1067. Invalid default value for 'registerDate',PS:在mys...原创 2017-06-26 14:03:41 · 19108 阅读 · 0 评论 -
Ubuntu 安装MySQL和简单操作
Ubuntu上安装MySQL非常简单,只需要打开终端,几条命令就可以完成。1. sudo apt-get install mysql-server2. sudo apt-get install mysql-client3. sudo apt-get install libmysqlclient-dev安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来...原创 2017-05-23 13:40:14 · 371 阅读 · 0 评论 -
数据库设计:范式与反范式
我们在设计数据库的过程中,往往要用到范式或反范式的设计模式。熟悉地掌握范式与反范式的要领,学会在实际开发中恰当地混合使用范式与反范式,才能设计出结构合理,执行高效的数据库。下面就以一个经典的例子进行讲述范式与反范式:职工-部门表:部门-部门领导表:结合这两张表,我们知道,职工Tom与Hill都在部门Accounting工作,他们的领导是Alex。这种设计模式,称为范式。转载 2017-05-24 17:50:05 · 345 阅读 · 0 评论 -
垂直拆分与水平拆分
垂直拆分:垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表。把TEXT,BIGINT等大字段拆分出来放在附表中。经常组合查询的列放在一张表中(联合索引)。垂直拆分的表在查询的时候用JOIN关键字连接起来即可。水平拆分:水平拆分是指数据表行的拆分,当表的行数超过200万行时,查询就会变得更慢,这转载 2017-05-24 17:49:40 · 866 阅读 · 0 评论 -
MySql优化【6】--压力测试脚本
#创建表DEPTCREATE TABLE dept( /*部门表*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,dname VARCHAR(20) NOT NULL DEFAULT "",loc VARCHAR(13) NOT NULL DEFAULT "") ENGINE=MyISAM DEFAULT CHARSE原创 2016-03-12 23:27:36 · 334 阅读 · 0 评论 -
MySql优化【3】--SQL语句优化
1、SQL优化的一般步骤1-1、通过show status命令了解各种SQL的执行频率。1-2、定位执行效率较低的SQL语句-(重点select)1-3、通过explain分析低效率的SQL语句的执行情况1-4、确定问题并采取相应的优化措施2、SQL语句优化-show参数 MySQL客户端连接成功后,通过使用show [session|global] status 命令可...原创 2016-03-12 23:24:34 · 494 阅读 · 0 评论 -
MySql优化【4】--数据库参数配置
最重要的参数就是内存,我们主要用的innodb引擎,所以下面两个参数调的很大 innodb_additional_mem_pool_size=64M innodb_buffer_pool_size=1G对于myisam,需要调整key_buffer_size 当然调整参数还是要看状态,用showstatus语句可以看到当前状态,以决定改调整哪些参数原创 2016-03-12 20:58:00 · 354 阅读 · 0 评论 -
MySql优化【5】--合理的硬件资源和操作系统
读写分离如果数据库压力很大,一台机器支撑不了,那么可以用mysql复制实现多台机器同步,将数据库的压力分散。 主库master用来写入,slave1—slave3都用来做select,每个数据库分担的压力小了很多。要实现这种方式,需要程序特别设计,写都操作master,读都操作slave,给程序开发带来了额外负担。当然目前已经有中间件原创 2016-03-12 20:51:28 · 467 阅读 · 0 评论 -
MySql优化【2】--数据库表设计
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;(只要是关系型数据库都满足1NF)第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准...原创 2016-03-12 20:29:55 · 537 阅读 · 0 评论 -
MySql优化【1】--优化综述
【关系型数据库】 对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作:① 数据库设计(表设计要符合3NF(规范的模式),但有时我们需要适当的逆范式)② sql语句优化(索引、常用小技巧)③ 数据库参数配置(考hibernate配置文件中的一些配置)④ 恰当的硬件资源和操作系统...原创 2016-03-12 20:20:13 · 364 阅读 · 0 评论 -
mysql数据库分页查询
一、MySQL 数据库分页查询MySQL数据库实现分页比较简单,提供了LIMIT函数。一般只需要直接写到sql语句后面就行了。LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:select * from table WHERE … L...原创 2016-03-20 16:37:31 · 754 阅读 · 0 评论 -
mysql常用技巧
mysql管理员的用户名和密码:root root创建一个名称为mydb1的数据库create database mydb1;show databases;创建一个使用utf-8字符集的mydb2数据库。create database mydb2 character set utf8;创建一个使用utf-8字符集,并带校对规则的mydb3数据库。creat原创 2015-12-19 16:54:41 · 304 阅读 · 0 评论 -
MySQL 设置远程访问
MySQL远程访问,也就是通过ip访问MySQL服务,MySQL对于安全的要求是非常严格的,需要授权。 1.本地访问 Sql代码 GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'admin' WITH GRANT OPTION; FLUSH PRIVILEGES; 上述命令的意思是为admin用户授权...原创 2017-01-12 10:19:39 · 275 阅读 · 0 评论 -
MySQL 数据导入导出
1.导出整个数据库 mysqldump -u -p > 导出文件 Shell代码 mysqldump -u zlex -p snowolf_db > snowolf.sql 2.导出表 mysqldump -u 用户名 -p 数据库名.表名> 导出文件 Shell代码 mysqldump -u zl转载 2017-01-12 10:20:06 · 328 阅读 · 0 评论 -
MySQL 字符集设置
通常在安装完MySQL后,我们需要对MySQL字符集进行相关设置。 我们以Linux(Ubuntu)环境描述具体操作,Unux与其基本一致,Windows路径配置上少有不同。 我们将讨论以下几个问题: 字符集问题表征修正配置,设置默认字符集编码在使用过程中强制设置字符集编码1.字符集问题表征 MySQL默认latin1(其实就是ISO-8859-1)字符集。转载 2017-01-12 10:20:42 · 303 阅读 · 0 评论 -
COUNT()的进一步认识
问题引出:要在一条SQL语句中查询film表中release_year值分别为2006,2007的记录数。返回结果集中结果分别为1000,合起来就是2000,但是数据表中最多就1000条记录,且记录的值全是2006,那2007对应的那1000条记录哪来的?再看看当COUNT()内的参数分别为FALSE与NULL时返回的结果:可以发现,当参数为NULL时,COUNT()不会进转载 2017-05-24 17:43:29 · 314 阅读 · 0 评论 -
分析比较多表查询中的IN与JOIN
IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径。那两者是怎么运行的?IN与JOIN哪个更好?下面就来分析与比较。现在有test1与test2两张表,都没有任何像主键,外键那样的约束,且只有一个字段。两张表是非相关的。现在使用IN关键字实现子查询,test2作为子查询表(外部表):查看执行计划:转载 2017-05-24 17:42:45 · 1694 阅读 · 0 评论 -
索引优化MAX()
普通的 MAX() SQL执行计划:从执行计划中可以看到:本次SQL查询检索了payment表(全表扫描,FTS),一共检索了16086行数据。意味着从磁盘中读取了16086行数据至MySQL服务端内存中进行最大值判断(有数据IO)。为payment_date建立索引以提高查询效率:再次执行相同的MAX()操作并查看执行计划:table:NULL,rows:NULL转载 2017-05-24 17:42:09 · 579 阅读 · 0 评论 -
索引
数据库索引的概念:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速定位数据库表中的特定信息。索引是一种数据结构。DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行,大大减少遍历匹配的行数,所以能明显增加查询的速度。来分析这张图片转载 2017-05-24 17:41:44 · 235 阅读 · 0 评论 -
MySQL慢查询日志与磁盘IO
分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。对于有效率问题的SQL语句(“慢查询”),MySQL通过慢查询日志进行监控。SHOW VARIABLES LIKE ‘slow_query_log’;查看慢查询日志是否开启:SHOW VARIABLES转载 2017-05-24 17:40:54 · 741 阅读 · 0 评论 -
MySQL 查询时强制区分大小写
平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写。但作为用户信息,一旦用户名重复,又会浪费很多资源。再者,李逵、李鬼的多起来,侦辨起来很困难。要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感)。如果通盘数据库所有字段都需要大小写敏感,不如在字符集设置时做好调整。不过,通常不建议这么做。 如果跟我一样,数据库已经在线上跑了,一个表转载 2017-01-12 10:22:31 · 1009 阅读 · 1 评论 -
MySQL 终止高负载SQL
数据库表体积大了,负载高了,难免一个sql出去耗时延长。半个月前,一个凌晨定时任务跑了8小时,突然手足无措。最后找DBA协助,直接干掉了这个sql进程。其实,这并不复杂。首先,找出占用CPU时间过长的SQLSql代码showprocesslist;假定最后一条sql处于Query状态,且Time时间过长,就锁定它的ID,直接干掉即可。然后,杀死进程:...转载 2017-01-12 10:22:10 · 829 阅读 · 0 评论 -
MySQL 语句级避免重复插入—— Insert Select Not Exist
想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法。 Sql代码 INSERT INTO table(column1,column2,column3 ...columnN) SELECT value1,value2,value3 ...valueN FROM dual WHERE NOT EXISTS(转载 2017-01-12 10:21:21 · 6564 阅读 · 0 评论