![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 73
MakeGreatEffort
这个作者很懒,什么都没留下…
展开
-
mysql 特殊字符需要转义
addslashes(string)这些预定义字符是:单引号 (')双引号 (")反斜杠 (\)NULL原创 2022-02-23 10:24:24 · 810 阅读 · 0 评论 -
MYSQL中NULL空值与空字符串区别详解及代码
NULL是指没有值而''则表示值是存在的,只不过是长度为零下面我们实际建立一个表来进行测试和区分。sqlCREATE TABLE `tb_test` ( `name` varchar(255) DEFAULT NULL, `value` varchar(255) DEFAULT NULL, `test` char(0) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;插入表中几条数据:sqlinsert into转载 2022-02-07 15:39:51 · 758 阅读 · 0 评论 -
MySQL中删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT *FROM peopleWHERE peopleId IN ( SELECT peopleId FROM people GROUP BY peopleId...转载 2021-11-06 09:20:52 · 1890 阅读 · 0 评论 -
mysql 慢sql优化
MySQL优化常见Extra分析——慢查询优化数据准备:create table user ( id int primary key, name varchar(20), sex varchar(5), index(name))engine=innodb;数据说明:用户表:id主键索引,name普通索引(非唯一),sex无索引;四行记录:其中name普通索引存在重复记录lisi;一、【Using where】实验语句:explain转载 2021-10-11 17:13:56 · 277 阅读 · 0 评论 -
mysql 查询数据字段末尾存在空格,用“=“也会命中
一、现象CREATE TABLE `user_info` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键自增ID', `user_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '名字', PRIMARY KEY (`id`), KEY `idx_user_name` (`user_name`)) ENGINE=InnoDB DEFAULT CHARSET=ut...原创 2021-09-14 10:57:33 · 1563 阅读 · 0 评论 -
left join on and 与 left join on where的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。假设有两张表:表1 tab1:id size1 10...原创 2021-08-24 09:12:32 · 148 阅读 · 0 评论 -
MySql并列排名
业务背景数据排名是很常用的功能,简单的排名功能可以根据order by来实现,但是如果数据一样,排名应该并列的时候,order by虽然是排序的,但是名次却不是并列的。 我们先通过order by演示一下。 建表CREATE TABLE `user_score` ( `user_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `score` TINYINT(3) UNSIGNED NOT NULL COMMENT '得分',...原创 2021-03-04 14:02:21 · 498 阅读 · 2 评论 -
Mysql:如果数据存在则更新,不存在则插入
DUPLICATE、REPLACE INTO、REPLACE三种方式如何更新数据?ON DUPLICATE KEY UPDATEmysql语法支持如果数据存在则更新,不存在则插入,首先判断数据存在还是不存在的那个字段要设置成unique索引。1语法:INSERT INTO 表名(唯一索引列, 列2, 列3) VALUE(值1, 值2, 值3) ON DUPLICATE KEY UPDATE 列=值, 列=值例如表tb_addrbook如下。mysql> show cre.原创 2021-02-19 16:03:00 · 2688 阅读 · 0 评论 -
MySQL的LIKE模糊查询优化
%xxx%这种方式对于数据量少的时候,我们倒可以随意用,但是数据量大的时候,我们就体验到了查询性能的问题,像老化的车子艰难趴着坡一样,并且这种方式并未使用到索引,而是全表扫描mysql高效模糊查询 代替like而对于xxx% 或者%xxx方式,explain一下可以发现查询使用到了索引,性能提升了不少,当然这种方式不适用与所有的查询场景。可以采取以下的函数进行查询。LOCATE('substr',str,pos)方法POSITION('substr' IN field)方法INSTR.原创 2020-06-05 09:49:58 · 1050 阅读 · 0 评论 -
Mysql decode()函数的实现
Oracle数据库自带了decode()函数,函数的使用方法如下:SELECTemp.ename,emp.job,emp.sal,decode(job, 'manager', sal * 1.2, 'ANALYST', sal * 1.1, 'salesman', sal * 1.05, Sal)FROM emp;类似于java中学过的case语句,根据不同的条件进...原创 2020-02-10 20:10:20 · 1560 阅读 · 0 评论 -
存储过程查询遍历行数据并判断计算处理
存储过程查询遍历行数据并判断计算处理,业务处理可忽略,主要运用declare cursor……open all_data……loop fetch all_data into row_data……创建定义游标以及循环逐行取数等方式。CREATE OR REPLACE PROCEDURE P_GET_TASKNUM(V_GROUPID in VARCHAR2, ...转载 2020-01-02 10:19:12 · 391 阅读 · 0 评论 -
MySQL 两条记录合并查询成一条显示
数据库数据如下张三,属于A部门也属于B部门,在表里存的是两条记录,但是在页面上我想要根据人来显示,在一条记录里显示张三属于A部门和B部门,张三只显一条记录,不显示两条。SELECT t.id, t.CODE, t.NAME, MAX(CASE t.type WHEN 'A' THEN t.dept_name ELSE null END) dept1,...转载 2019-12-30 21:11:41 · 1952 阅读 · 0 评论 -
MySQL数据库将多条记录的单个字段合并成一条记录
念念不忘,必有回响原SQLSELECT acc.id,acc.acc_username,acc.acc_showname,T_PM_ROLE.role_name FROM T_ACCOUNT acc,T_ACCOUNT_R_ROLE accRole ,T_PM_ROLE WHERE acc.is_active =1 AND (accRole.is_active =1 AND acc...转载 2019-12-30 21:02:45 · 194 阅读 · 0 评论 -
关于Navicat Premium查看表字段注释
SHOW FULL COLUMNS FROM 表名该sql语句,查询即可成功。原创 2019-12-16 09:06:52 · 3628 阅读 · 0 评论 -
MySQL 的 GROUP_CONCAT 函数详解
GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL。语法如下:GROUP_CONCAT 语法规则它在递归查询中用的比较多,但要使用好它并不容易。所以让我们一起来看看吧:假设有这样一张领接表模型的树型表 t_region,它的基本结构如下:字段 类型 大小 说明 ...转载 2019-09-22 21:58:03 · 924 阅读 · 0 评论 -
什么时候用索引
1.原则上来说:一个表需要跟别人做连接的字段都要加索引,比如表A 的A1,A2,A3需要跟其他表发生连接,那么3个字段都要加索引2.经常用来查询的字段,模糊查询的字段不用, 其他精确查询且字段重复率低的最好需要.比如 varchar字段3.如果一个表经常用这个字段进行条件查询,这个字段是不是要加索引,要看这个字段的值是什么场景的,如果是枚举的,值是固定的几个,就没多大意义,如果是各式各样的...转载 2019-09-17 23:50:00 · 3364 阅读 · 0 评论 -
com.alibaba.druid.pool.DruidDataSource : create connection error 原
运行项目时碰到有个错误:2018-11-04 16:06:35.841 ERROR 8660 --- [reate-352468633] com.alibaba.druid.pool.DruidDataSource : create connection error, url:jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&c...原创 2019-08-01 20:02:17 · 13290 阅读 · 0 评论 -
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb
异常错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver ...原创 2019-08-01 17:54:25 · 512 阅读 · 0 评论 -
Java实现调用MySQL存储过程详解
前言存储过程(Stored Procedure)是存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse首先查看MySQL中的数据库的存储过程,接着编写代码调用? 1 2 3 4 5 6...转载 2019-06-17 14:23:02 · 11904 阅读 · 0 评论 -
mysql查看表空间占用情况
${database} 为数据库的名称/*1.查看索引(1)单位是GB*/ SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024*1024), 6), ' GB') AS 'Total Index Size' FROM information_schema.TABLES WHERE table_schema LIKE '${database}'...转载 2018-12-05 15:26:48 · 3815 阅读 · 0 评论 -
查看表空间和表的使用率
1. 查看表空间使用率--查询表空间的总容量select tablespace_name,sum(bytes) /1024/1024 as MB from dba_data_files group by tablespace_name; --查询表空间使用率select total.tablespace_name, round(total.MB, 2) ...转载 2018-12-05 15:34:15 · 8451 阅读 · 0 评论 -
Mysql数据库及表空间占用信息统计
1、mysql中查看各表的大小这里用到一个表, information_schema.tables;对应主要字段含义如下:ABLE_SCHEMA : 数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索引大小按记录数据统计:select table_schema,table_...转载 2018-12-05 15:42:35 · 4484 阅读 · 0 评论 -
Java ResultSet接口 详细说明
Java ResultSet接口 详细说明记录集接口(ResultSet)接口 在JDBC API 2.0中,ResultSet接口有了很大的变化,增加了很多行操作、行定位的新方法,功能也强大了许多,最主要的变化有以下几个方面: 1、新定义了若干个常数 这些常数用于指定ResultSet的类型,游标移动的方向等性质,如下所示: public static final int F...转载 2018-12-18 00:28:39 · 6265 阅读 · 0 评论 -
MySQL 用 truncate 命令快速清空一个数据库中的所有表
MySQL 用 truncate 命令快速清空一个数据库中的所有表。1. 先执行select语句生成所有truncate语句语句格式:select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('数据库1','...转载 2019-01-04 10:02:37 · 2739 阅读 · 0 评论 -
mysql时间与字符串相互转换
时间、字符串、时间戳之间的互相转换很常用,但是几乎每次使用时候都喜欢去搜索一下用法;本文整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转date、字符串转时间戳、时间戳转date,时间戳转字符串)用法,方便日后学习和查阅;涉及的函数date_format(date, format) 函数,MySQL日期格式化函数date_format()unix_timest...转载 2019-01-17 11:22:21 · 273 阅读 · 0 评论 -
MySQL 自启动时报错can't create PID file: No such file or directory
系统版本:Red Hat Enterprise Linux Server release 7.0 MySQL版本:5.7.16-1.el6.x86_64 安装MySQL后,设置好了开机自启动。 但是重启服务器后,MySQL并没有启动,查看日志如下:2018-04-13T06:27:24.608793Z 0 [ERROR] /usr/sbin/mysqld: Can’t create/wr...转载 2019-01-14 10:50:14 · 872 阅读 · 0 评论 -
MySQL慢查询日志总结
慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般...转载 2019-01-14 10:52:30 · 150 阅读 · 0 评论 -
mysql数据库插入数据显示Extracted SQL state class '22' from value '22001'解决办法
Extracted SQL state class ‘22’ from value ‘22001’问题描述最近在完成一个项目时,需要实现在网页从excel导入数据,然后保存到数据库中.在测试阶段时发现运行没有任何问题,但是实际部署过程中发现,用户上传excel导入数据失败,日志如下:Extracted SQL state class '22' from value '22001'1解决...转载 2019-01-15 16:53:30 · 2632 阅读 · 0 评论 -
mysql event 每隔20秒插入一条数据
//查询是否开启事件show VARIABLES LIKE 'event_scheduler'//打开事件SET GLOBAL event_scheduler=1//查询eventshow EVENTS//删除eventdrop event myeventCREATE EVENT myevent ON SCHEDULE EVER...原创 2019-03-14 12:34:51 · 1033 阅读 · 0 评论 -
linux MySQL5.7 rpm安装
删除旧包:# rpm -qa | grep -i mysql# rpm -ev mysql-libs-* --nodeps安装rpm包:# rpm -ivh mysql-community-common-5.7.17-1.el7.x86_64.rpm# rpm -ivh mysql-community-libs-5.7.17-1.el7.x86_64.rpm# rpm -iv...转载 2019-03-20 19:44:27 · 4201 阅读 · 0 评论 -
linux下mysql开启远程访问权限及防火墙开放3306端口
开启mysql的远程访问权限默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。主流的有两种方法,改表法和授权法。相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这里只贴出改表法1、登陆mysqlmysql -u root -p2、修改mysql库的user表,将host项,从loc...转载 2019-03-20 20:44:41 · 236 阅读 · 0 评论 -
Navicat连接MySQL,出现2059 - authentication plugin 'caching_sha2_password'的解决方案
昨天当我把MySQL的安装程序下载并安装好,然后又下载了另外一个工具来使用它,该工具的名称是Navicat Premium,当我通过该工具连接MySQL Workbench的时候,无法连接,提示“2059 - authentication plugin 'caching_sha2_password'”,今天搞了一段时间终于搞定了,具体的解决办法已经写下来了。进入MySQL控制台,执行如下命令:...转载 2019-04-11 15:22:58 · 3481 阅读 · 1 评论 -
mysql之explain关键字
1、 用mysql存储过程增加100万条测试数据存储过程代码:#创建存储过程,数据库名test,表名studentcreate procedure myinst(n int)begindeclare i int default 0;set autocommit = 0;repeatset i = i +1;insert into student(id,name) values...转载 2019-04-09 17:30:56 · 202 阅读 · 0 评论 -
简单讲一下数据库的存储过程的使用场景?
使用场景:1.通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户机和服务器之间的操作很多时,将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会大大减少,降低了网络负载。优点:1、存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,因此使用存储过程可...转载 2019-05-30 16:24:06 · 661 阅读 · 0 评论 -
数据库采用B+树而不是B-树 b树的原因
总结: 1. 不包含Data ,每页的包含的内容会比较多,出度比较高. 深度低,有效保证性能 2. 叶子节点包含所有内容,便于全局遍历.【数据结构之二叉树】(二)B+树比B树更适合做文件索引的原因https://blog.csdn.net/cangchen/article/details/44818485 原因:相对于B树,(1)B+树空间利用率更高,可减少I/O次数, ...转载 2018-04-29 23:12:35 · 1179 阅读 · 0 评论