
数据库技术
文章平均质量分 79
彧卿丶
知道的越多,不知道的就越多
展开
-
MySQL索引下推
mysql索引下推原创 2023-02-14 16:23:34 · 437 阅读 · 0 评论 -
mysql回表查询
什么是mysql回表查询原创 2022-07-13 14:18:16 · 2560 阅读 · 0 评论 -
Redis主从复制、哨兵机制
一、主从架构在Redis中,用户可以通过执行SALVEOF命令或者设置salveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(salve)二、主从复制和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量原创 2021-04-12 15:09:18 · 198 阅读 · 0 评论 -
MySQL服务重启后,MySQL 5.7 InnoDB AUTO_INCREMENT计数器被重置
几天前,系统在重启后,bug频出,发现是新增时主键冲突,很奇怪的现象,最后发现原来是mysql的“bug”,在MySQL 5.7和更早版本中,当重新启动MySQL服务时,每个表上的AUTO_INCREMENT值将重新初始化为:MAX(id)+ 1下面是个小测试:1. 先创建一个AUTO_INCREMENT_TEST表CREATE TABLE `AUTO_INCREMENT_TEST` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varc原创 2020-07-01 10:21:55 · 4331 阅读 · 0 评论 -
flyway使用简介
官网https://flywaydb.org/背景Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。流程1、 首先配置好flyway的基本信息后,运行项目,会在数据库表中默认新建一个数据表用于存储flyway的运行信息,默认的数据库名:flyway_...原创 2020-03-20 16:19:14 · 1131 阅读 · 0 评论 -
SQL语句 合并列值 将一列的多个值合并成一行
oralce写法:select WM_CONCAT(A.title) as citys from tmpcity A;select LISTAGG(XXX,XXX) WITHIN GROUP(ORDER BY XXX) from t_client where client_id = ''; sql server写法:select stuff((select ','+A.ti...原创 2018-12-11 09:08:26 · 907 阅读 · 0 评论 -
ORA-01795的原因(In值过多)及解决办法
系统报出一SQL异常,内容如下:java.sql.SQLException: ORA-01795: maximum number of expressions in a list is 1000找出抛异常时执行的SQL语句,貌不惊人啊,很平常一SQL语句,内容类似:SELECT * FROM DUAL T WHERE T.DUMMY IN ('1', '2', '3', ...),只是IN...原创 2018-11-20 11:19:22 · 3381 阅读 · 0 评论 -
常见sql语句效率优化方式
首先介绍几条优化原则:尽量避免where中包含子查询; where条件中,过滤量最大的条件放在where子句最后; 采用绑定变量有助于提高效率; 在索引列上使用计算、改变索引列的类型、在索引列上使用!=将放弃索引; 避免在索引列上使用is null和is not null; 使用索引的第一个列; 用union-all替代union; like ‘text%’使用索引...原创 2018-11-20 11:02:13 · 1920 阅读 · 0 评论 -
Oracle 执行计划(Explain Plan)
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。即就是对一个查询任务,做出一份怎样去完成任务的详细方案。如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 看懂执行计划也就成了SQL优化的先决条件。 通过执行计划定位性能问题,定位后就通过建立索引、修改sql等解决问题。一、执行计划的查看1.1 设置autotrace...转载 2018-11-20 10:46:54 · 279 阅读 · 0 评论 -
oracle数据库:start with connect by prior递归用法
在oracle数据库中,需要查询树结构类型数据的时候,使用start with connect by prior递归查询非常方便,指定一个起始节点,就可以查询到起始节点以上以及以下的所有树形层级。为了能更好的介绍如何使用,首先需要创建一个测试表,然后结合例子来说明create table t_menu( menu_id varchar2(32), parent_id va...原创 2018-11-20 09:37:27 · 454 阅读 · 0 评论 -
SQL中Truncate的用法
删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。下面介绍SQL中Truncate的用法。当你不再需要该表时, 用 drop;当你仍要保留该表,但要删...原创 2019-01-04 17:21:46 · 523 阅读 · 0 评论 -
恢复oracle中用pl/sql误删的数据或者表
今天在测试环境搞数据时,不小心删除了一个中间表,好多测试数据就这么没了? 不着急!有办法解决的: -- drop table 的解决方法1> 查看回收站中表select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin order by cre...原创 2019-01-24 14:54:14 · 1091 阅读 · 0 评论 -
Oracle Scheduler Jobs 基本使用
创建Jobs语法:通过DBMS_SCHEDULER包来创建Jobs,是使用其CREATE_JOB过程。例如:SQL> BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'INSERT_TEST_TBL', job_type => 'STO...原创 2019-01-09 09:22:53 · 1822 阅读 · 0 评论 -
Oracle存储过程Procedure简单介绍
我们都知道SQL语言是没有判断和过程控制语句的,而PL/SQL又很好的补充了SQL语言这方面的不足。而存储过程也是一种PL/SQL块,但是存储过程又跟传统的PL/SQL块不一样,存储过程是以命名的方式存储于数据库中的。它有很多优点,比如:1、存储过程是以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代...原创 2019-01-09 09:34:38 · 1196 阅读 · 0 评论 -
Oracle 查看被锁的表以及释放锁
由于团队开发,经常会遇到其他开发把表锁住的情况,可迟迟不释放。导致他自己都忘了。解决问题:-- 锁表查询SQLSELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.s...原创 2019-01-25 17:11:04 · 1257 阅读 · 0 评论 -
left join查询可能出现重复数据 (主表中一条变两条)
三表链接查询发现返回的结果成倍的返回,感到异常的郁闷,用的是left join,之前有大佬告诉我,left join的效率会比其他的连接方法效率要高些,所以也一直用这个。捡重点说,总之引发查询出重复数据就是因为,表之间关联的关系不是一对一的,可能是一对多的所以会把那张多的表数据也就查询出来,导致数据重复。解决方法:group by 字段1 即:(左表字段:右表字段=1:多时,左连接...原创 2019-02-26 13:59:07 · 5462 阅读 · 0 评论 -
Oracle DBLINK 简单使用
oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入、修改、删除等操作 首先了解下环境:在tnsnames.ora中配置两个数据库别名:orcl(用户名:wangyong 密码:1988)、orcl2(用户名:wangyong 密码:123456),在orcl中 创建database lin...原创 2019-03-26 10:42:18 · 163 阅读 · 0 评论 -
SQL中exists和in
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:select name from student where sex = 'm' and mark exists(select 1 from grade where ...)只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from gra...原创 2018-11-20 08:53:08 · 835 阅读 · 0 评论 -
Redis、Memcache和MongoDB的区别
>> MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。Memcached的局限性:只支持简单的key/value数据结构,不像Redis可...原创 2018-10-16 09:30:07 · 191 阅读 · 0 评论 -
Mysql - JOIN详解
目录1 概述2 JOIN的执行顺序3 举例4 INNER/LEFT/RIGHT/FULL JOIN的区别5 ON和WHERE的区别1 概述一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt),但是结果只返回最后一张虚拟表。从这个思路出发,我们试着理解一下JOIN查询的执行过程并解答一些常见的问题。2 JOIN的执行顺序以下是JOIN查询...原创 2018-07-17 10:41:35 · 246 阅读 · 0 评论 -
Mysql索引和性能优化
使用索引的原则如果没有唯一性要求,可以选择普通索引 如果列上有唯一性要求,可以选择唯一索引 如果是需要模糊搜索,建议选择全文索引 如果有多个条件一起查询,可以选择组合索引使用索引需要注意以下几点:按需使用索引 索引所在的列基数越大越好 , 男女这种字段建立索引的效果并不大 ,基数很小3.在组合索引上要注意最左原则我们想要知道我们的sql语句写的好不好,怎么来判断?...原创 2018-07-17 10:42:47 · 152 阅读 · 0 评论 -
Oracle视图(View)创建使用
Oracle对象教程:视图(View)创建使用,视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即可。视图具有以下优点:1. 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。2. 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。3. 限制某...原创 2018-07-13 18:45:58 · 278 阅读 · 0 评论 -
mysql 查询两表使用join on和使用子查询in的比较
有两个表promotion_full_reductionbase_user_favorite_item 现在要查询用户收藏的商品中参加促销了的商品个数,有两种写法,一种是使用in子查询:SELECT COUNT(1)FROM promotion_full_reduction frWHERE fr.item_id IN ( S...原创 2018-08-04 20:55:46 · 7365 阅读 · 0 评论 -
MySQL的远程访问权限
问题:在本机上的linux系统布个小服务,无法连接我Windows系统的mysql数据库查看百度才知道MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.所以开启远程访问权限。1.登录mysqlmysql -u root -p2.查看权限select host,user,password from user;这...原创 2018-07-31 15:30:50 · 538 阅读 · 0 评论 -
oracle中数据类型number(9,2)的意思
9表示这个数据的长度,2表示两个小数位例如:1234567.89原创 2018-08-27 09:05:16 · 2798 阅读 · 0 评论 -
oracle 日期操作 汇总
计算从今天起的第一个星期日是的日期select NEXT_DAY(SYSDATE,7) from dual;计算当前日期的年月日 select Extract(year from sysdate) from dual; --年select Extract(month from sysdate) from dual; --月select Extract(day from sy...原创 2018-10-11 17:01:14 · 279 阅读 · 0 评论 -
修改数据库列名
各个数据库不一样。 oracle: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名 sqlserver: exec sp_rename '[表名].[列名]','[表名].[新列名]' mysql: ALTER TABLE 表名 CHANGE 列名 新列名 列类型 ...原创 2018-10-11 17:24:50 · 4071 阅读 · 0 评论 -
racle 字段长度设置为varchar2(200)能存放多少个汉字吗?
首先要看数据库的字符集设置成什么了。如果是gb2312,因为gb2312存放汉字时占两上字节,所以varchar2(200)能放100个汉字,如果是utf-8,因为utf-8则占用三个字节,所以如果是utf-8则只能存200/3 约= 86 个汉字。...原创 2018-10-11 17:29:19 · 11003 阅读 · 0 评论 -
Dao向mapper传多个参数(Mybatis)
第一种方案DAO层的函数方法 :Public User selectUser(String name,String age);对应的Mapper.xml<select id="selectUser" resultMap="BaseResultMap" parameterType="java.lang.String"> select * from use...原创 2018-11-05 17:35:49 · 407 阅读 · 0 评论 -
SQL写update语句时多个字段时合在一起的写法
今天写了个update语句更新两个字段,使用了and连接。结果一直保错,一直没发现原因,果真还是sql基础语法没记住!正确的写法是两个字段之间使用,连接 :update t_city t set t.prov_name = '安徽', t.city_name = '合肥市', t.xs_mc = '庐阳区' where t.xs_code = '2300'; 当更新的...原创 2018-11-05 18:00:06 · 9090 阅读 · 0 评论 -
SQL语句:left join后面加上where条件
select a.*,b.*from table1 aleft join table2 b on b.X=a.Xwhere XXX如上SQL:一旦使用了left join,没有where条件时,左表table1会显示全部内容 而使用了where,只有满足where条件的记录才会显示(左表显示部分或者全部不显示)一旦加上where条件,则显示的结果等于inner jo...原创 2018-11-20 14:50:47 · 41217 阅读 · 2 评论 -
SQL语句中count(1),count(*)和count(field)区别
最近使用count函数比较多,当要统计的数量比较大时,发现count(*)花费的时间比较多,相对来说count(1)花费的时间比较少。查了一些文档有以下的说法:如果你的数据表没有主键,那么count(1)比count(*)快 如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快 如果你的表只有一个字段的话那count(*)就是最快的啦 count...原创 2018-11-20 15:55:21 · 971 阅读 · 2 评论 -
SQL 查数据库中时间最新的一条记录
MySQL:select top 1 * from tablename order by 时间 descOracle:select * from (select *,rownum as sn from tablename order by 时间 desc) as t where sn=1SELECT * from tablename where 时间=(select max...原创 2018-11-20 16:00:32 · 3978 阅读 · 0 评论 -
Oracle时间日期函数及sql语句
一、时间日期函数 to_date函数 to_date的格式:to_date(‘要转换的时间’,’转换成的时间格式’), 两个参数的格式必须匹配,否则会报错。 需要注意的是,在Java中的时间格式是“yyyy-MM-dd HH:mm:ss”,但是在oracle的sql中由于不区分大小写,时间格式中的“mm”将被识别为月,导致出现“ORA 01810 格式代码出现两次”的错误。所以Oracl...原创 2018-11-20 16:36:13 · 2352 阅读 · 0 评论 -
Oracle视图中的错误ORA-04063及ORA-04063
一、错误ORA-01731: circular view definition encountered这个错误发生的情况是这样的:我希望每次都拿同一个view去逐个left join一系列的view,每次join完之后把这个view更新为join后的结果,类似序列和那样的,num=num+1,我也是写的:select a.*,b.* from viewA a left join view...原创 2018-07-16 16:37:30 · 4369 阅读 · 0 评论