
数据库
文章平均质量分 90
bwylco_
故事还长,请别失望
展开
-
mybatis中#和$比较、sql注入
案例:delete from tab_user where uid = #{uid,jdbcType=INTEGER}sql解析分析:上述案例中使用的是#{},sql在解析的时候会加上 " " ,当成字符串来解析 : uid= " uid ";如果用${},传入数据直接显示在生成的sql中,如上述案例,用uid = ${uid,jdbcType=INTEGER},那么sql在解析的时候值为uid = uid,执行时会报错;具体区别: #{}:使用预编译的方式将参数设置到sql语句当中原创 2020-07-31 21:30:33 · 334 阅读 · 0 评论 -
详解数据库三大范式、BCNF范式
文章目录 什么是”范式(NF)”1. 第一范式(1NF)2. 第二范式(2NF)2.1 函数依赖2.1.1完全函数依赖2.1.2 部分函数依赖 2.2 码2.3 非主属性 3. 第三范式(3NF)4. 小结4.1 三大范式总结 4.2 完全&部分函数依赖 4.3 表设计规范(范式的选择) 什么是”范式(NF)” 按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的.转载 2020-11-21 16:34:05 · 10777 阅读 · 0 评论 -
数据库聚簇索引和非聚簇索引
聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置 在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。 InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查原创 2020-09-11 15:06:08 · 191 阅读 · 0 评论 -
缓存和数据库双写一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是...转载 2020-07-14 01:36:26 · 192 阅读 · 0 评论 -
事务隔离级别的思考
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,但是事转载 2020-07-07 00:31:27 · 89 阅读 · 0 评论