数据库
文章平均质量分 55
Amazing_deron
绝知此事要躬行。
展开
-
MySQL主从复制
MySQL主从复制原创 2022-09-05 16:54:06 · 1291 阅读 · 0 评论 -
MySQL神器之一索引
1.1 索引的基础知识MySQL的基础存储结构——页。索引(index)是帮助MySQL高效获取数据的数据结构。索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。(索引类似于字典中的目录,其实简单来说,索引就是一个排好序的数据结构)各个数据页可以组成一个双向链表而每个数据页中的记录又可以组成一个单向链表每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定原创 2022-03-24 20:43:53 · 3721 阅读 · 0 评论 -
MySql中IGNORE、ON DUPLICATE KEY UPDATE、DELAYED
mysql插入语句中,如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。示例:insert ignore into tb(...) value(...)这样不用校验是否存在了,有则忽略,无则添加。如果不指定ignore时,有唯一冲突时会报错。mysql插入语句中如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义..原创 2020-05-27 18:10:21 · 512 阅读 · 0 评论 -
MySQL神器之一锁
不少人在开发的时候,应该很少会注意到数据库锁的问题,也很少给程序加锁(除了库存这些对数量准确性要求极高的情况下)。然而,即使我们不懂这些锁知识,我们的程序还是跑得好好的,因为这些锁数据库隐式帮我们添加了。不同的数据库存储引擎支持的锁粒度是不一样的:InnoDB行锁和表锁都支持;(默认的情况下选择行锁)MyISAM只支持表锁InnoDB只有通过索引条件检索数据才使用行...原创 2019-11-28 17:49:09 · 313 阅读 · 0 评论 -
MySQL的隔离级别
数据库操作中可能会存在的问题脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发...原创 2019-11-22 21:59:28 · 303 阅读 · 0 评论 -
查询某个月份截止到现在的所有天数
--截止日前某个月份的所有日期(查2019-04月份)--某个月份的所有日期BEGIN declare @now as varchar(12) declare @nowdate as date set @nowdate = GETDATE() IF @nowdate>='2019-04-30' set @now='2019-04-30'...原创 2019-04-17 17:09:48 · 1461 阅读 · 0 评论 -
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
一般来说有两个主要的原因:1.写错了数据库的连接端口号(亲试)2.应用使用连接池空闲超过8小时后继续使用解决:MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。修改MySQL的参数,w...原创 2019-06-18 17:21:59 · 2709 阅读 · 0 评论 -
MySQL分析语句
1.show processlist;MySQL在使用过程中遇到访问速度慢,或者无法响应这类的问题,解决方式基本都有定式,一般第一反应都会是登录到MySQL, 执行showprocesslist看看当前连接状态。这个命令是跟navicat的工具栏的服务器监控的监控页面一样。字段解析:id:一个标识,你要kill一个语句的时候很有用。user:显示当前用户,如果不是ro...原创 2019-09-09 17:03:10 · 424 阅读 · 0 评论 -
redis命令
1.首先需要安装好redis2.连接到本地的redis数据库# redis-cli3.连接到其他服务器的redis# redis-cli -h192.168.1.1004.选择要操作的数据库redis上默认有16个库,0-15为序号选择第六个,# select 5返回ok表示成功切换数据库5.列出所有的key# keys *6.退出Ctrl + C...原创 2019-09-16 16:04:07 · 218 阅读 · 0 评论 -
SQL判断是否存在
新建的时候,一般需要判断是否存在,否则会报错,整理判断各种是否存在:数据库是否存在ifexists(select*frommaster..sysdatabaseswherename=N'库名')print'exists'elseprint'notexists'-----------------判断要创建的表名是否存在ifexists(select*f...原创 2019-04-09 17:38:31 · 5788 阅读 · 0 评论 -
存储过程实例
数据库环境:sqlserver概述:查找某个月份的每天的所有数据,然后存到临时表里面,再把临时表里面的结果集返回。-- 判断要创建的存储过程名是否存在if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[sp_dormLevelMonth]') and OBJECTPROPERTY(id, N'IsPr...原创 2019-04-09 16:00:16 · 362 阅读 · 0 评论 -
sqlserver查询某个起止日期所包含的所有日期
--某个月份的所有日期SELECT CONVERT(char(10),DateAdd(day,number,'2019-03-01'),120) allDayFROM master..spt_valuesWHERE type = 'p'AND number <= DateDiff(day,'2019-03-01','2019-03-31')结果如下:...原创 2019-04-08 18:01:12 · 2360 阅读 · 0 评论 -
原生SQL操作整理
1.根据不同判断条件显示select case sex when 'M' then '男'when 'F' then '女' else '未知' end as sexStr--select case when sex = 'M' then '男' when sex = 'F' then '女' else '未知' endas sexStr--跟上面一样效果,一个是case函数,一个是...原创 2018-11-21 14:58:11 · 253 阅读 · 0 评论 -
SQLServer备份
数据库备份是开发中很重要的一环,对于重要的数据,需要进行定时备份,对于临时进行的高危更新操作,需要备份表,防止类似于delete from table 忘记加where条件指定范围而把整张表删除的情况。在软件开发中,定时备份是一个好习惯,不用依赖于日志还原,依赖日志还原的方法比较复杂,花费的时间比较多。1.sql复制表备份这种备份用临时表的方法进行备份,快捷方便,不过需要手动维护。...原创 2019-01-11 15:13:30 · 1340 阅读 · 0 评论 -
sql中判断不相等的两种用法
在sql中<>和!=都可以表示相等,需要注意的是,只有<>是标准的sql语法,可以移植,其他的都是oracle平台的特性,移植性较差,所以开发中,尽量使用<>表示不等于。但是要进行null的等于判断时,须使用is null 或is not null,其它操作符与null操作都是false。...原创 2019-01-17 10:51:31 · 8245 阅读 · 0 评论 -
SQL中GO的用法
GO相当于一个文件的分隔标志如下面的语句:declare @a intset @a=1select @a可以正常输出如果加上GO换成下面这样:declare @a intgoset @a=1select @a会提示报错:我们都知道如果一个变量@a是声明在a.sql文件中的,那么在b.sql中是不能为@a赋值的,因为这根本就是两个脚本文件。而GO语句正是...原创 2019-01-17 15:50:46 · 8208 阅读 · 0 评论 -
SQL注入
sql注入是一种很常见的攻击方式,因为sql语句的特性,如果程序员在编写逻辑时没有考虑到数据库安全,在输入参数的过程中就有可能被注入有害的sql语句,从而达到攻击数据库的目的。SQL注入攻击的总体思路:1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不同的服务器和数据库特点进行SQL注入攻击 SQL攻击的两个实例:1.页面输入查询条件进行查询如果...原创 2019-01-19 00:46:20 · 183 阅读 · 0 评论 -
SQLServer中的事务加锁策略
一个事务的例子:tim要给bill转账100块钱:1.检查tim的账户余额是否大于100块;2.tim的账户减少100块;3.bill的账户增加100块;这三个操作就是一个事务,必须打包执行,要么全部成功,要么全部不执行,其中任何一个操作的失败都会导致所有三个操作“不执行”——回滚。事务的ACID特性原子性:一个事务必须保证其中的操作要么全部执行,要么全部回滚,不可...原创 2019-01-09 11:31:23 · 2435 阅读 · 0 评论 -
主流数据库的默认隔离级别
mysql,oracle,sql server中的默认事务隔离级别查看,更改未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据)已提交读(数据库引擎的默认级别)可重复读可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高;MySQLmysql默认的事务处理级别是'REPEATABLE-READ',也就是可重复读1.查看当前会话...原创 2019-01-09 18:30:58 · 7242 阅读 · 0 评论 -
SQL连接
1.内联接inner join,典型的联接运算,使用像 = 或 <> 之类的比较运算符2.外联接外联接可以是左外联接、右外联接或完全外部联接。 (1).左外联接(简称左联接),LEFT JOIN或LEFT OUTER JOIN (两种写法表达的意思一样)左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在...原创 2019-01-22 15:23:13 · 176 阅读 · 0 评论 -
sql游标使用的一个例子
这个是原生Sql使用游标对每次新加进来的一个区间判断是否与数据库中原有数据是否有重复的判断,最终输出1为无交集,输出0为有交集(不是指打印)。作为游标使用的一个例子。--声明一个变量declare @waterMin as numeric;declare @waterMax as numeric;--声明查询语句DECLARE @sql AS varchar(4000); SET ...原创 2018-11-15 15:31:33 · 359 阅读 · 0 评论