
mysql
文章平均质量分 62
luffy5459
程序猿一枚,喜欢瞎捣鼓。
展开
-
mysql使用join做update操纵与使用join做查询时出现重复记录的问题
在实际处理数据过程中,有一些数据可能会从别的地方导入过来,两个表有关联,但是一个表中的某一列缺失,如果要补全,可以利用另一个表来做填充。这里就是今天的第一个问题,使用update的时候,join另一个表。 如下所示,xx_a中的数据是完整的,xx_b中的name是缺失的,假定xx_b中的user_id正好与xx_a中的id对应,这个时候,我们可以直接update修改xx_b,让xx_b.name = xx_a.name,但是需要给出关联条件与连接语句。 这里update语...原创 2022-05-12 22:26:45 · 2260 阅读 · 0 评论 -
navicat导入外部数据到mysql中文乱码以及日期格式问题
最近在使用navicat导入外部数据到mysql中总结了以下几个问题: 1、中文乱码,这个是因为数据在csv或者excel中格式是ANSI格式。 解决办法:需要修改为utf8格式,修改办法是使用记事本打开csv文件,然后另存为一个新文件,在编码格式的地方选择UTF-8。...原创 2022-04-16 10:43:55 · 9314 阅读 · 3 评论 -
mysql创建hash索引
mysql支持的存储引擎与索引结构对照表如下:数据库类型 索引结构 innodb myiasm memory|heap原创 2021-11-05 17:34:06 · 3857 阅读 · 0 评论 -
索引失效问题整理
在面试的时候,数据库方面的问题对于开发人员来说,是绕不过的一个点,而数据库方面,很少直接面试SQL怎么写,而是问效率相关的问题,索引是提高查询效率的一种手段,但是往往,我们容易忽略的一个问题就是索引失效。 我以前面试,人家问我索引失效,我没反应过来,心想我创建了索引,查询就完事了,怎么会失效呢?后来才知道,索引创建成功,如果查询的时候,选择的字段或者查询的条件设置不合理,虽然能够出结果,但是索引是失效的,这就是索引失效的情形。 下面来总结一下,索引失效的情况,有点小复杂。 ...原创 2022-02-23 13:48:16 · 887 阅读 · 0 评论 -
Java操作mysql插入记录带时间戳时差问题
如题所示,我们在做mybatis相关项目的时候,会用到mysql,如今更多的是直接使用springboot+mybatis组合。这样,在配置数据源的时候,会有这样的配置:server: port: 8080spring: application: name: mec_huali datasource: url: jdbc:mysql://192.168.226.100:3306/test?useUnicode=true&characterEncoding=...原创 2021-09-26 09:49:03 · 435 阅读 · 0 评论 -
sqlmap工具与sql注入漏洞测试
sql注入是我们在开发与面试中经常听到的一个词语,它利用sql语句本身执行的特点,加入一些特定的语句拼接,骗过sql编译,最后执行,结果就出现意想不到的情况。 我在之前的工作中并不了解sqlmap,直到有一次,安全团队给我们发了很多安全漏洞的邮件,这些都是需要修复的,并报告给他们,然后他们复测,没有问题,这些安全问题才能被清理。 在我看的安全漏洞信息描述的截图里面,我看到一个关于sqlmap的执行命令,当时怀着好奇的心理去了解了一下这个东西,发现其实就是用来做sql注入检测的。...原创 2021-05-10 14:20:51 · 3315 阅读 · 1 评论 -
docker-compose构建mysql服务
docker安装mysql服务显得很快捷,我们如果使用了docker-compose那就更快了,我们只需要按照我们的要求,设置相应的端口映射,如果有需求,也可以设置数据映射。 配置如下: docker-compose.ymlversion: "2"services: mysql: restart: always image: mysql:5.7.16 container_name: mysql-server volumes: ...原创 2020-10-31 11:23:21 · 2520 阅读 · 0 评论 -
[Warning] root@localhost is created with an empty password ! Please consider switching off the解决办法
如题所示,当我们在ubuntu1804中,通过默认的源安装数据库mysql之后,直接就可以通过mysql -uroot就可以登录了,因为他默认生成的密码是空的。 如下所示,ubuntu1804系统自带的默认mysql源就是5.7.30版本: 如果要安装5.7版本的mysql,无需考虑其他,直接apt install mysql-server就完了: 安装过程,会将所需的依赖全部安装上,包括libaio1,无需再手动安装。安装完成即启动成功,生成...原创 2020-07-17 18:26:02 · 18151 阅读 · 0 评论 -
ubuntu20.04安装mysql5.7版本
默认情况下,ubuntu20.04版本自带的mysql是8.0,如果我们需要安装5.7版本,我们需要通过如下的方式来安装。 1、直接下载二进制压缩包进行安装,解压并设置相关的参数就可以运行。 2、下载5.7的源,然后通过apt install mysql-server=5.7.31-1ubuntu18.04的方式进行安装。 3、下载5.7的deb文件,然后通过dpkg -i的方式安装。 这里,主要讲讲后面两种方式的安装,如何通过增加源apt install或者d...原创 2020-07-17 16:47:03 · 37588 阅读 · 8 评论 -
Mycat数据库中间件初体验
Mycat是阿里开源的数据库中间件,用java语言编写,目前是1.x版本,2.0版本正在研发中。 Mycat支持的数据库很多,目前常用的基本都包含了,mysql,postgresql,sqlserver,oracle,db2等等。Mycat的作用和其他中间件一样,最简单的功能来说,就是支持分库功能,这个在海量数据的应用中非常方便,无需我们认为编码来进行分库分表,直接通过连接Myc...原创 2020-04-08 15:58:41 · 318 阅读 · 0 评论 -
mysql中日期时间戳timestamp使用小结
timestamp时间戳类型在mysql数据库中比较常见,但是我们很容易忽视它的一些特征,这个我在面试中吃过亏,这里对他的一些用法和特点补充一下。也给让自己加深印象。一般来说,我们使用日期类型,一般采用date,或者datetime,也有time类型。 下面大致说明一下timestamp与datetime的区别: 1、他们都可以表示日期时间,默认格式都是"YYYY-M...原创 2020-03-07 23:01:36 · 3633 阅读 · 0 评论 -
springboot与flyway集成做数据迁移
flyway是一种用来做数据迁移的框架,如果你的项目不是jpa+hibenate,比如使用的mybatis,那么你需要在实体创建之前,在数据库中生成表结构,然后逆向工程,生成实体,或者自己编码写实体类,部署的时候,需要将测试环境的表结构和部分数据导出为sql文件,部署到生产环境中,全程操作数据库都是人为操作。后续实体发生改变,字段增减,还需要单独运行一个增量的脚本,或者全量更新,这还需要人...原创 2019-11-11 23:38:37 · 1216 阅读 · 0 评论 -
MySQL数据库演示内连接左外连接右外连接的区别
sql中join的出现解决了from tableA a ,tableB b where a.id = b.id连接查询做笛卡尔积的问题,而join连接查询除了条件使用关键字on取代了where之外,他本身的连接又分为内连接,左外连接和右外连接三种,分别用inner join,left outer join,right outer join表示,因为不存在外连接、左内连接和右内连接的叫法,所以这三种...原创 2019-06-29 22:12:52 · 2388 阅读 · 0 评论 -
mysql修改记录时update 字段=字段+字符串
在有些场景下,我们需要对我们的varchar类型的字段做修改,而修改的结果为两个字段的拼接或者一个字段+字符串的拼接。如下所示,我们希望将xx_role表中的name修改为name+id。在mysql下,我们直接通过“+”来操作,会提示错误。操作符“+”是用来对数字进行加操作的,这里需要使用关键字concat,表示拼接。同样的,我们也可以利用字段+字符串来拼接。...原创 2019-04-25 18:29:46 · 3357 阅读 · 0 评论 -
MySQL批量插入优化
前面介绍了MySQL批量插入可以通过存储过程的方式来实现,这里介绍批量插入100W记录,并做一个优化。建表语句:create_table.sqldrop table if exists xx_user;create table xx_user(id int primary key auto_increment,name varchar(20),age int);直接插入:pr...原创 2019-04-28 10:22:14 · 2409 阅读 · 1 评论 -
MySQL存储过程入门
存储过程是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可以通过指定存储过程的名字并给定参数来调用执行。存储过程思想很简单,就是数据库SQL语言层面的代码封装与重用。存储过程在MySQL5.0版本开始支持。 存储过程可以完成一些普通SQL语句无法完成的任务:比如需要批量插入10W条记录。 假...原创 2019-04-26 18:28:14 · 708 阅读 · 0 评论 -
mysql5.7.x:this is incompatible with DISTINCT
DISTINCT关键字经常在MySQL中使用,在mysql5.7以前的版本中一般没有什么问题,但是在5.7以后的版本中会遇到这样的错误 Caused by: java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list, references column ‘game.giftbag0_.create_原创 2017-01-06 10:48:32 · 16174 阅读 · 2 评论 -
redhat7通过yum安装mysql5.7.17
rhel/centos系列linux操作系统自身没有mysql的源,需要自行下载安装。本文介绍如何安装5.7.x操作系统。原创 2017-01-20 11:43:08 · 4284 阅读 · 0 评论 -
mysql主从复制环境搭建
所需服务器:两台 centos7 linux虚拟机 服务器分配:server 192.168.56.201 client 192.168.56.202 说明:使用server做主库服务器client做从库服务器第一步:准备两台linux虚拟机;其中一台服务器: 另一台服务器: 在这里可以对两个数据库均授权一个用户拥有所有权限: mysql>grant all pr原创 2017-01-20 14:39:58 · 573 阅读 · 0 评论 -
mysqld: File './mysql-bin.index' not found (Errcode: 13 - Permission denied)
我们通过yum方式安装mysql,会生成mysql:mysql用户组和用户,启动mysql默认是使用mysql用户。如果我们开启了慢log日志,而且我们使用service mysqld start启动mysql,会报如题所示的错误,根据提示我们知道在my.cnf默认配置指定的/var/lib/mysql这个目录下,存放着数据文件,/var/lib/mysql权限虽然是归mysql:mysql用户组原创 2017-05-01 21:36:06 · 25808 阅读 · 2 评论 -
win7+MySQL5.7.18zip版本安装
mysql5.7.18zip版本在windows的安装,就是解压,初始化,然后做一些密码修改的设置即可使用,如果需要远程连接,需要更改用户表的host值为'%',并关闭安装MySQL主机的防火墙。1、到mysql官网下载mysql5.7.18-win64.zip(当前最新版本),并解压。解压之后的目录如下:在mysql解压目录新建一个my.ini的配置文件并做如下配置2、在...原创 2017-06-20 13:26:28 · 2159 阅读 · 0 评论 -
win7查看端口占用的进程
之前遇到一个问题,系统上mysql启动了,无法通过navicat客户端来连接,这就很郁闷了,最后定位到问题,是我机器上还开启了一个开发php的应用程序phpwamp,它自带了一个mysql,这样相当于启动了两个mysql进程,只需要将phpwamp中的mysql停掉,直接启动系统安装的mysql即可。这是后来解决问题的办法。其实最初可以通过查看端口占用的进程来定位问题。下面以mysql为例,如何在...原创 2017-08-18 16:19:50 · 4670 阅读 · 0 评论 -
Your password does not satisfy the current policy requirements解决办法
mysql5.7以后安全策略提升,修改简单密码出现不符合安全策略,可以修改安全策略来解决简单密码设置问题。原创 2017-10-26 12:58:48 · 20884 阅读 · 4 评论 -
TiDB在Centos7上通过源码编译安装
这里难以编译安装的是tikv,tidb的三大部分tidb,pd,tikv中tidb,pd均是采用go语言编写,安装go语言包即可编译,唯独tikv是采用rust语言写的,他的编译是最复杂的。而且编译环境非常严格。需要的工具也最多:gcc-c++,cmake3,rust(cargo)。以下介绍具体的编译过程。 以下原文是github上给出的编译tikv所需的系统环境。 Rust Nightly is...原创 2018-03-30 23:51:06 · 3916 阅读 · 1 评论 -
mysql密码中有特殊字符&在命令行下登录
在服务器上,通常为了快速登录数据库,我们会使用mysql -hhost -uusername -ppassword db的方式登录数据库,如果密码中没有特殊字符&,会直接进入数据库sql命令行下,如果有特殊字符&,那么就会出现如下提示:-bash: syntax error near unexpected token `&'一般情况,我们可以通过命令mysql -hhost...原创 2018-05-10 12:51:32 · 27006 阅读 · 1 评论 -
用一条SQL语句查询出每门课都大于80分的学生姓名
两道sql题:1、用一条SQL语句查询出每门课都大于80分的学生姓名。2、删除除了自动编号不同,其他都相同的学生冗余信息。第一题数据如下:分析:每门课都大于80分,就是说学生最低分数要大于80分,我们直观看只有"王五"这个学生每门课分数都在80分以上。解决思路:这里需要用到聚合函数min(score),查询出最低分数大于80分的学生即可。使用了聚合函数,条件就需要使用having语句。第一步,查询...原创 2018-05-11 13:57:05 · 113398 阅读 · 14 评论 -
ERROR 1093 (HY000): You can't specify target table 'student2' for update in FROM clause问题解决
在做mysql嵌套子查询删除时,出现如题错误。mysql语句如下:delete from student2 where id not in (select id from student2 group by no,name,coursename,courseno,score);流程梳理一下:表结构:mysql> desc student2;+------------+-----------...原创 2018-05-11 14:15:53 · 6821 阅读 · 0 评论 -
mysql删除无主键表中重复记录(只保留一条记录)
考虑多条语句变通的办法mysql> select * from x_user;+------+---------+-------------+| id | name | mobile |+------+---------+-------------+| 1 | yangfei | 15011186301 || 1 | yangfei | 1501118630原创 2016-08-22 15:50:02 · 3909 阅读 · 0 评论