
数据库相关
陈勇(IT)
我是一名技术人,不忘初心,方得始终!
-
原创 MySQL:timestamp使用CURRENT_TIMESTAMP报错问题
项目出现如下错误:Error updating database. Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'createTime' cannot be null数据模型如下: /* 创建时间不可为空*/ createTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , /2021-02-25 14:06:12224
0
-
原创 MySQL:实现数据排序的功能
(1)mysql单个字段降序排序:select * from table order by id desc;(2)mysql单个字段升序排序:select * from table order by id asc;(3)mysql多个字段排序:select * from table order by id desc,name desc;表示先按照id降序排序,再按照name降序排序。order by id desc,name desc; 表示先按照id降序排序,再按照name升序排序2020-12-08 11:22:27244
0
-
原创 MySQL:常用的MySQL优化工具
影响数据库性能的常见因素如下:(1)磁盘IO;(2)网卡流量;(3)服务器硬件;(4)SQL查询速度。下面介绍几个mysql 优化的工具,可以使用它们对MySQL进行检查,生成awr报告,从整体上把握数据库的性能情况。一、MySQLTunerMySQLTuner是MySQL一个常用的数据库性能诊断工具,主要检查参数设置的合理性,包括日志文件、存储引擎、安全建议及性能分析。针对潜在的问题,给出改进的建议,帮助进行MySQL优化。MySQLTuner支持MySQL / MariaDB / Perc2020-05-21 10:37:071239
0
-
原创 Druid:简述对数据库连接池Druid的认识和使用
一、Druid介绍Druid是一个数据库连接池,可以说是目前最好的!因其优秀的功能、性能和扩展性方面,深受开发人员的青睐。阿里巴巴已经部署了超过600个使用Druid的应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!Druid的主要功能如下:一个高效、功能强大、可扩展性好的数据库连接池。可以监控数据库访问性能。进行数据库密码加密 ...2019-12-04 10:08:56346
0
-
原创 PageHelper:简述对物理分页插件PageHelper的认识
PageHelper是一款好用的,开源的,免费的Mybatis第三方物理分页插件。本文简单介绍PageHelper的基本使用和配置参数的含义,重点分析PageHelper作为Mybatis分页插件的实现原理。一、PageHelper的maven依赖及插件配置PageHelper除了本身的jar包外,它还依赖了一个叫jsqlparser的jar包,使用时,我们不需要单独指定jsqlparser的...2019-12-03 11:03:101018
1
-
原创 数据库:简述分页查询的优化方案
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多优化的方案。下面简单说一些方法。一、一般分页查询一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下:select * from table limit number1,number2select * from...2019-12-02 21:26:09178
0
-
原创 Redis教程:Redis缓存和MySQL实现一致性
在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。一般都是按照下图的流程来进行业务操作。按照这个流程,读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。不管是先写MySQL数据库,再删除R...2019-11-23 17:24:52214
0
-
原创 Redis教程:提高Redis效率的小技巧
一、keys很多Redis的使用者因为使用keys这个命令,导致出现性能毛刺。这个命令的时间复杂度是O(N),而且Redis又是单线程执行,在执行keys时即使是时间复杂度只有O(1)例如SET或者GET这种简单命令也会堵塞,从而导致这个时间点性能抖动,甚至可能出现timeout。所以强烈建议生产环境屏蔽keys命令,屏蔽方法如下:二、scanscan命令是keys命令的替代者。如果把key...2019-11-23 15:55:27376
0
-
原创 数据库:简述对分布式数据库的认识
所谓的分布式数据库技术,就是结合了数据库技术与分布式技术的一种结合。具体指的是把那些在地理意义上分散开的各个数据库节点,但在计算机系统逻辑上又是属于同一个系统的数据结合起来的一种数据库技术。既有着数据库间的协调性也有着数据的分布性。这个系统并不注重系统的集中控制,而是注重每个数据库节点的自治性,此外,为了让程序员能够在编写程序时可以减轻工作量以及系统出错的可能性,一般都是完全不考虑数据的分布情况...2019-11-11 20:21:26443
0
-
原创 数据库:关系型数据库和非关系型数据库的区别
1. 存储方式传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便。而非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。2. 存储结构关系型数据库按照结构化的方法存储数据, 每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和...2019-11-11 20:17:35823
0
-
原创 数据库:简述对非关系型数据库(NoSQL)的认识
一、非关系型数据库的概念随着近些年技术方向的不断拓展,大量的NoSql数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。NoSQL数据库指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。所谓CAP理论,简单来说就是一个分布式系统不可能满足可...2019-11-11 20:08:24686
0
-
原创 数据库:简述对数据库的认识
《数据库:简述对关系型数据库的认识》《数据库:简述对非关系型数据库的认识》《数据库:关系型数据库和非关系型数据库的区别》《数据库:简述对分布式数据库的认识》一、数据库的定义数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所。用户可以对文件中的数据进行新增、查询、更新、删除等...2019-11-11 20:25:312248
0
-
原创 Redis:Redis的概念及各项功能
Redis:简述Redis 的概念及各项功能一、Redis简介官方简介:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。它还内建了复制...2019-09-21 17:21:56185
0
-
原创 Redis:简述Redis的数据淘汰机制
Redis:简述Redis的数据淘汰机制Redis在每个服务客户端执行一个命令的时候,都会先检测使用的内存是否超额。在Redis中,我们可以设置Redis的最大使用内存大小(server.maxmemory)。当Redis内存数据集大小上升到一定程度的时候,就会施行数据淘汰机制。Redis提供了一下6种数据淘汰机制:volatile-lru :从已设置过期时间的数据集(server.db...2019-02-27 14:19:38663
0
-
原创 SQL语句:where条件后写上1=1是为了什么
SQL语句:where条件后写上1=1是为了什么String sql="select * from table_name where 1=1";if( conditon 1) { sql=sql+" and var2=value2";}if(conditon 2) { sql=sql+" and var3=value3";}上述代码是为了实现动态的SQL查询语句,...2019-06-24 17:11:463998
0
-
原创 MySQL:如何对查询的结果集添加自增序号
MySQL:如何对查询的结果集添加自增序号 在MySQL中,当我们所要查询的结果集没有ID字段时,为方便前台展示等业务需求,需要添加一个自增的序号字段(ID)。语法如下:SELECT (@i:=@i+1) 别名1,表字段信息 FROM 表名, (SELECT @i:=0) AS 别名2 &nbs...2019-04-26 10:19:465689
0
-
原创 SQL语句:简述对SQL注入的认识
SQL语句:简述对SQL注入攻击的认识一、SQL 注入攻击介绍 官方的说法为:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。即把恶意的 Sql 语句插入到输入参数中,然后通过在后台 Sql 服务器上解析-执行进行的攻击,它目前黑客对数据库进行攻击的最常...2019-04-10 17:12:36371
0
-
原创 SQL语句:简述SQL中的部分函数
SQL语句:简述SQL中的部分函数1.AVG:AVG 函数用于返回数列的平均值。语法:Select avg(字段名) from 表名。例子:Select avg(count) AS count_avg from access_log。2.Count:Count 函数用于返回配置指定条件的函数语法:1)返回指定列的值得数目:Select count(字段名) from 表名。2)返回...2019-03-04 16:22:38194
0
-
原创 SQL语句:简述DML、DDL、DQL、DCL的区别
数据库:简述DML、DDL、DCL的区别一、DML DML(data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。SELECT 列名称 FROM 表名称UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值INSERT INTO tab...2018-11-30 13:42:12610
0
-
原创 SQL语句:update语句的一个“经典坑”
SQL语句:update语句的一个小坑数据库中的表内容如下:语句1 :update apps set owner_code='43212' and owner_name='李四' where owner_code='13245' and owner_name='张三'; 问 :语句是否有语法问题?执行结果是什么?答 :语句无语法问题,执行后数据库结果如下:语句2 :updat...2018-11-29 14:23:551985
0
-
原创 SQLServer:SQL语句中like语法后加N的含义
SQLServer:SQL语句中like语法后加N的含义LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。适用语法如下:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern常用的情况如下:1. SELECT * FROM Persons WHERE City LIKE 'M%'2. SEL...2019-05-29 16:01:261188
0
-
原创 简单谈谈MySQL、SqlServer、Oracle的优缺点
简单谈谈MySQL、SqlServer、Oracle的优缺点一、MySQL优点:支持多种操作系统;体积小、速度快、总体拥有成本低,开源;是开源数据库,提供的接口支持多种语言连接操作 ;MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySQL能很容易充分利用CPU;MySQL有一个非常灵活而且安全...2019-06-27 17:48:382922
0
-
原创 MyBatis:MyBatis操作MySQL存储过程
MyBatis:MyBatis操作MySQL存储过程一 . 数据库中创建存储过程,并查看创建结果1.创建存储过程DROP procedure IF EXISTS net_procedure_request;DELIMITER $$CREATE procedure net_procedure_request(in select_type varchar(99),in select_cli...2019-01-09 17:38:54809
0
-
原创 MySQL:int、bigint、smallint 和 tinyint的区别
MySQL:int、bigint、smallint 和 tinyint的区别int、bigint、smallint 和 tinyint都是整数数据的精确数据类型。1.bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。2.int从 -2^31 (-2,14...2018-11-06 13:18:19132
0
-
原创 数据库性能调优技巧(一)
数据库性能调优技巧(一)比较运算符能用 “=”就不用“<>”。“=”增加了索引的使用几率。明知只有一条查询结果,那请使用 “LIMIT 1”。“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。为列选择合适的数据类型。能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,毕竟磁盘和内存消耗越小越好嘛。将大的DELETE,U...2019-05-29 09:34:352834
0
-
原创 SQLServer:SQL语句中加中括号[ ]的含义
SQLServer:SQL语句中加中括号[ ]的含义在操作SQLServer数据库的时候,经常能看到用中括号([])括住的字段,这些字段可能是表名或者字段名等等。那么为什么要加中括号呢?解释如下:为了防止某些关键字在使用中引起歧义,如果加上中括号,则代表这是一个字段名,而不是关键字。例如:表中有一个字段叫select,而select是SQL中的一个关键字,如果直接写作《 select se...2019-05-27 17:47:535567
0
-
原创 MySQL:简述MySQL中创建索引的原则(场景)
MySQL:简述MySQL中创建索引的原则(场景) 在MySQL数据库中使用索引的原则(场景)有以下几点:1. 对于查询频率高的字段创建索引;2. 对排序、分组、联合查询频率高的字段创建索引;3. 如果需要将多个列设置为索引时,可以采用多列索引 &...2019-05-09 15:13:40611
0
-
原创 MySQL:简述MySQL外键约束
MySQL:简述MySQL的外键约束MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。1、外键约束的含义:2019-01-11 11:39:48843
0
-
原创 MySQL:MySQL数据库如何导入大型sql文件
在my.ini(windows)或者my.cnf(linux)中设置或修改参数 允许最大的sql的大小:max_allowed_packet=4096M 执 行 等 待 时 间: wait_timeout=2880000 交 互 等 待 时 间:interactive_timeout = 2880000 ...2018-01-08 19:56:39458
0
-
原创 MySQL:简述MySQL中的视图(View)
MySQL:简述MySQL中的视图(View)1、什么是视图?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;视图是一个虚拟表,其内容由查询语句定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图中行和列的数据来自定义视图的查询语句所引用的表,并且在引用视图时动态生成。并不在数据库中以存2018-12-19 15:07:39563
0
-
原创 MySQL:replace into用法总结
MySQL:replace into用法总结replace跟insert的功能类似,区别在于:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.replace 在将数据插入表中之前先判断是否存在此条数据,如果存在先删除此条数据,不存在直接插入数据。(注意:判断的条件是主键或者唯一索引,插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数2018-11-06 16:58:56742
0
-
原创 MySQL:索引
MySQL:索引MySQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录 开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无 需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比...2018-11-06 12:57:19124
0
-
原创 MySQL:主键与唯一索引
所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。主键可以保证记录的唯一和主键域非空,数...2018-11-06 11:30:501938
0
-
原创 MyBatis:插入数据后如何获取自增长主键值
MyBatis:插入数据后如何获取自增长主键值Mapper映射文件的示例如下:<mapper namespace="userMapper"> <!--方式1 --> <insert id="addUser" parameterType="userScope" useGeneratedKeys="true" keyProperty="2018-11-01 15:28:361135
0
-
原创 MySQL:设置数据库远程可访问
MySQL:设置数据库远程可访问mysql默认root用户没有密码,输入mysql –u root 进入mysql一、初始化root密码进入mysql数据库mysql>update user set password=PASSWORD(‘123456’) where User='root';二、允许mysql远程访问,可以使用以下三种方式:1、改表mysql -u root ...2018-11-01 13:51:05499
0
-
原创 MYSQL:如何清空表中的数据
方法1:delete from 表名;方法2:truncate table 表名;比 较:不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。 delete的效果有点像将mysql表中...2018-09-17 15:34:5061661
2
-
原创 MySQL:如何对数据库中数据保留小数
MySQL:数据库中数据如何保留小数1、round(x,d) :用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0;这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;SELECT ROUND(100.3465,2),ROUND(100,2),ROUND(0.6,2),ROUND(114.6,-1);结果分别...2019-01-02 16:53:525177
0
-
原创 MySQL:简述MySQL取整函数
MySQL:简述MySQL取整函数MySQL取整函数1.ceil()/ceiling() 向上取整ex: ceil(1.2) = 22.floor() 向下取整ex: floor(1.2) = 13.round() 四舍五入2019-01-02 17:06:03310
0
-
原创 MySQL:日期,字符串,时间戳之间的互相转换
MySQL:日期,字符串,时间戳之间的互相转换2019-01-02 17:43:40255
0
-
原创 MySQL:简述对索引、锁、事务的认识
MySQL:简述对索引、锁、事务的认识一、索引索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。索引的优点:1. 天生排序。2. 快速查找。索引的缺点:1. 占用空间。2. 降低更新表的速度。注意:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。索引从实现上说,分成 2 种:聚集索引和辅助索引(也叫二级索引或者非聚集索引)。从功能上说,分为 6 种:普通...2019-03-22 16:56:42138
0