mysql

SQL和NOSQL关系型数据库和非关系型数据库的区别是,关系型数据库支持ACID,扩展比较难数据结构固定,对于复杂的关联查询性能好,非关系型数据库扩展比较方便数据结构比较松散,对于查询和写入性能好。
关系型数据库有mysql,Oracle。
非关系型数据库有redis,mongoDB。
外键约束主要是用来关联表和表之间的联系。
数据库的三大范式1. 每列的不可分割原子性 2. 关键字的直接依赖关系 3. 我自己理解的话第二跟第三是一样的。
连表查询有内连接,左外连接,右外连接,全外连接。
mysql如何避免重复插入数据,设置列unique唯一约束,或者可以选择更新操作,或者选择忽略该数据。
char和varchar的区别是char是固定字符串长度,存储效率比较好,可以存储电话号码这些固定长度数据。varchar是可变长字符串,可以根据实际长度去存储,节省存储空间。
mysql的关键字in和exist,in是全表查询,判断里面是否拥有,exist是查询到之后就不再查询了。
mysql的存储引擎,默认是innoDB,还有myisam,memory。
innoDB具有ACID事物支持,行级锁,外键约束,适用于高并发的读写操作和数据的完整性。
myisam仅支持表级锁,在并发和数据完整性比较差,但读取性能好。
数据库挂掉之后使用redolog恢复数据(innoDB,myisam不支持)。
索引是给数据添加一个地址,就像字典的目录,可以提高数据的查询效率。
聚簇索引是一级索引根据关键字直接查询到所有数据。
非聚簇索引是二级索引,需要先查询到关键字,再根据关键字查询到数据,属于回表查询。
mysql中的索引是使用了b+树作为索引的数据结构。
b+树的叶子节点才存放数据,非叶子节点存放键值和索引地址,叶子节点还形成一个双向链表,所以叶子节点都在同一层,还能进行范围查询和顺序查询。
b树在叶子节点和非叶子节点都会存放数据和索引,性能不稳定,没有双向链表不能范围查询。
联合索引需要注意是否会失效,当联合(a,b,c)索引,查(b,c)会失效等。
覆盖索引就是能在索引查询中获取到你要的数据就不用回表查询了。
索引也是要分配内存的,并不是越多越好,当数据太大的时候,也会影响增删改的性能,因为增删改的时候也要动态的维护索引。
全部评论

相关推荐

原来已经一年了,因为没有加任何实验室没有学长学姐带,再一次偶然的机会下刷到我们学校的牛肉哥,和他聊天之后发现他也没加实验室能进大厂,我就燃起了希望,去年大概 4 月份找好路线 零基础 开始学 5 月背八股和开始刷算法很难受 7-8 月焦虑躯体化害怕找不到实习 9 月找到一家像样的小厂去实习了 4 个月大三上期末考试结束之后 1 月份回来边实习边准备工作压力很大 当时只有字节、百度、商汤的面试,字节三面挂了,百度 oc,商汤 二面挂(差评 无效面试),之后来深圳百度实习之后还是觉得不甘心一直没把算法和八股扔下一直在准备,百度实习的时候 mt 交给我一个特别重要的工作数据库迁移(特别感谢 mt ,这个需求学到了很多东西处理了一堆线上问题),本来看着暑期他们面试都很困难,然后听说百度要涨实习薪资(然而 5 月并没有涨),就想着留在百度吧也懒得面试了,4 月 20 多的时候字节 hr 打电话约面问我要不要尝试一下询问了 1 月份三面为啥会挂有没有学习 ai 知识(因为字节这边后端岗位偏 ai),我来到百度之后全面拥抱 AI 也认识了我的好兄弟 X 哥,他在百度 XX 部门 Agent 实习,他属于是我 Agent 的启蒙老师,来百度之后一直在了解 AI 这一块,我就接受了字节的面试,一面的时候 20 分钟实习拷打然后突然说 30 分钟代码考核我心就凉了以为是 kpi,算法题是手撕高并发安全下的令牌桶限流器,我写了整整 80 多行代码最后也写出来了,但是从来没看到过出这种题能 oc 的我也就不管了,后边面试也是很顺利但是流程有点长可能一直在横向吧总结结果是好的!!!感谢这一年努力的自己和遇到的各位互联网大佬分享的知识!!!ps 图二纯感慨 (觉得🍬请不要喷我)欢迎大家一起交流学习呀!!!!
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务