![](https://img-blog.csdnimg.cn/abd5e9110f7447499f33acf6a375346f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数 据 库
主讲开源关系型数据库Mysql,以及Oracle数据库
-乾坤-
一名普通的研发工程师
展开
-
MySQL——索引及其原理
一、如果没有索引 那么查找一个元素需要去磁盘中逐个寻找,每一次寻找都涉及到一次i/o操作,效率极其低下。 二、选择哪种数据结构作为索引 二叉树:由于数据库中数据的特殊性,主键一般都是自增序列,这样形成的二叉树都是及其不平衡的,依然需要多次i/o 红黑树:红黑树虽然是平衡的,但是每个节点只有两个叶子节点,这样存储的数据量上去后,仍然需要进行多次i/o b树 :b树可以有多个节点,每个节点存储数据,基本满足要求,但是不够完美。 b+树:在b树的基础上,只在叶子节点存储数据,保证根节点可以存储更多的索引,最大程度原创 2021-10-08 17:22:38 · 79 阅读 · 1 评论 -
MySQL———外键
众所周知:主键和适当的索引对于数据库表来说是必不可少的,但是外键却要尽量避免使用。 矛盾焦点:数据库设计是否需要外键。 这里有两个问题: 一个是如何保证数据库数据的完整性和一致性; 二是外键对性能的影响。 正方观点: 1,由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。 eg:数据库和应用是一对多的关系,A应用会维护他那部分数据的完整性,系统一变大时,增加了B应用,A和B两个应用原创 2020-09-07 10:44:34 · 87 阅读 · 0 评论 -
MySQL——时间类型DATETIME和TIMESTAMP的选择
1、Year 见名之意,year用于存储年,存储时只需要一个字节,插入数据时可以使用各种格式指定YEAR值(非常节约内存,所以当你只需要年的时候,用此字段合适)。 2、Time time用于存储时间信息,存储时需要三个字节。 虽然,小时的范围是0~~23,但是为了表示某种特殊需要的时间间隔,将Time类型的范围扩大了。而且还支持了负值。 (推荐甚至强制要求必须)字符串格式:‘HH:MM:SS’。 例如,输入‘123456’,Time类型会转换成12:34:56; 3、Date date用于存储日期,没有时间原创 2020-09-01 14:45:46 · 1691 阅读 · 1 评论 -
MySql修改数据库编码字符集-----不同编码的含义
文章目录程序员阿宾的故事:一、查看各个变量的命令二、各个变量的含义三、离职交接四、我脑子里剩下的四、面试 程序员阿宾的故事: 唉,今天使用 show variables like'character%'命令查看了下数据库编码,发现好多有关的编码,一时间不知道要修改哪一个,于是乎一天啥也没干,刨根问底,弄清了各个属性的编码的含义,第二天就被老板开了。 一、查看各个变量的命令 MySQL命令行输入show variables like'character%得到如下结果: 二、各个变量的含义 characte原创 2020-08-07 20:42:57 · 751 阅读 · 0 评论 -
MySQL——utf8与utf8mb4
一、开门见山上结论: MySQL数据库的 “utf8”并不是真正概念里的 UTF-8。 MySQL数据库的 “utf8mb4”才是我们使用的正宗UTF-8 二、使用utf8会出现的问题及其原因: 如果你要存互联网emoji表情,例如昵称,聊天,就需要utf8mb4,而不是utf8。 MySQL中的“utf8”编码只支持最大3字节每字符。真正的大家正在使用的UTF-8编码是应该能支持4字节每个字符。 MySQL的开发者没有修复这个bug,如果修复这个bug会导致之前用utf8建的数据库不可用,所以他们在2原创 2020-07-22 14:26:40 · 171 阅读 · 0 评论 -
MySQL缓存、MyBatis缓存
一、MySQL 1、何时缓存: 缓存的 key:SQL (所以sql语句要完全相同才能使用上缓存) 缓存的 value:结果集 where条件中如包含了某些函数永远不会被缓存, 比如current_date, now等 太大的结果集不会被缓存 2、何时缓存失效: 表数据有任何修改,则有关于该表的数据全部失效 二、MyBatis ...原创 2019-10-14 16:46:30 · 943 阅读 · 0 评论 -
事务、事务特性、事务隔离级别 、锁机制逐层分析
事务隔离级别 及其 简单原理 首先,事务隔离级别是指多个事务之间读取的交互 1、允许读未提交的: 解决了更新丢失:b写数据,a不允许同时写数据 (共享读锁,排他写锁实现该隔离级别) 两个并发事务,a可以读取b未提交的事务 允许其他任何事物,无限制 出现脏读问题 2、允许读已提交的: 解决脏读问题 :a不可以读取其他事务未提交的数据,读的是前一版本数据(判断当前事务是读还是写:读,允许其他事务...原创 2019-10-14 13:56:18 · 172 阅读 · 0 评论 -
数据库的设计原则
1.在互联网行业尽可能减少表的关联查询,尽可能的使用单表查询,可以用冗余处理原创 2018-06-27 10:15:34 · 155 阅读 · 0 评论 -
关于数据库之间的关系到底用不用外键
使用外键约束的好处? 数据的一致性和完整性在数据库中有较好的体现。 例如 : People(基本信息表) peopleId peopleName peopleSex PeopleSalary(工资表) ID peopleId peopleSalary 两个表之间通过peopleId进行主外键约束关联,没有PeopleId就不会有工资信息 若是两个表没有外键关联就可能出...原创 2018-04-08 12:07:04 · 1538 阅读 · 0 评论 -
循序渐进学会使用sql max/min 函数
在SQL数据库中,最大/最小值函数—MAX()/MIN()是经常要用到的,下面就将为您分别介绍MAX()函数和MIN()函数的使用,供您参考,希望对您学习SQL数据库能有些帮助。 当需要了解一列中的最大值时,可以使用MAX()函数;同样,当需要了解一列中的最小值时,可以使用MIN()函数。语法如下。 SELECT MAX (column_name) / MIN (column原创 2018-02-03 21:36:33 · 31814 阅读 · 4 评论 -
sql中in和exists的区别
in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists, 子查询表小的用in; 例如:表A(小表),表B(大表) select * from A where cc in(原创 2018-02-03 16:25:15 · 569 阅读 · 0 评论 -
联合主键有什么用?
联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补 充订单,使用相同的订单号,那么这时单独使用订单号就不可以了,因为会有重复。那么你可以再使用个订单序列号bill_seq来 作为区别。把bill_no和bi原创 2018-01-07 19:34:47 · 2184 阅读 · 0 评论 -
Redis学习笔记
一、定义: 开源、可基于内存也可持久化的日志型、key-value数据库,提供了多种语言的API。(被人们称为数据结构服务器,它的值可以是字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。) 二、特性: 原子性:要么成功执行,要么失败完全不执行 性能极其高:读的速度是110000次/s,写的速度是81000次/s原创 2018-01-02 18:01:16 · 133 阅读 · 0 评论 -
MongoDB数据库
1.MongoDB基于分布式文件存储: 分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。可以保证服务器的性能,提高安全性。 2.MongoDB是非关系型数据库(nosql)中最像关系型数据库的: nosql:非关系数据,数据的存储不需要固定的模式,无需多余操作就可以横原创 2017-11-30 17:14:22 · 417 阅读 · 0 评论