你好,我是小牛。
成年人的世界不讲虚的,要聊就聊金钱和妹纸,是有些俗了哈哈哈......鉴于我也才脱单不久,妹纸帮你们搞不定了,所以就只能聊聊如何赚钱,如何提高收入了。
IT圈做技术,除了上班,业余时间搞副业也可以提高部分收入。不过这个说实话,我目前做公众号也还没赚到什么钱,算是刚起步。所以还没资格跟大家讲这个。
所以就聊聊主业,基本上就一条路了,就是想办法跳槽加薪。前几篇文章也陆续提到一些收入相关的,基本上靠在一家公司涨薪是很难了,最快的途径就是跳槽。
而跳槽究竟能涨多少薪水呢?很多hr在发jd的时候都会给一个薪水区间,然后说视能力而定,而能力又是一个很虚的东西,所以说白了能涨多少薪水就看你面试表现怎么样?
所以,不管聊什么,只要你能在短短的一两个小时内,能忽悠住面试官,让他觉得你很牛,很有实力。那么,你就很大概率可以通过面试,并且要到一个不错的薪水。
所以,我准备出一个文章系列就是【面试必备篇】系列,专门讲每一块技能,包括linux,数据库,接口测试,自动化,性能等面试会考的知识点,而且尽可能的给出答案,供大家面试前参考。
当然了,除此之外,公众号还整理了很多视频资源,电子书资源给到大家,也包括我B站会录制一些讲解视频。
所以希望大家可以充分利用好这些资源,靠自学也可以转行成为一名软件测试工程师,乃至自学成为中高级测试工程师,甚至架构师,当然,我本人目前也是在学习进阶中。
废话就不多说了,今天就先开始聊聊数据库。
如果你是转行的对数据库目前了解不多,可以推荐你先看下我之前写的一篇入门文章
软件测试如何自学数据库?
数据库在面试中属于必考内容,基本上考的最多的就是手写sql,会给你出一个场景题,比如分数啊,班级课程啊之类的,一般是多表查询语句居多。当然这是对一些中小公司来说。
对一些大厂来说,除了最基本的手写sql语句之外,还会要求你对数据库有深刻认识,主要就包括一些概念理论。
关于如何手写sql,我公众号提供的视频资源,也包括大家在B站上随手一搜,到处都是。
所以本文暂时不写怎么写sql,当然后面,我有可能会找几道经典的多表查询面试题案例和大家分析。
本文主要科普一些作为一枚测试,应该知道的一些数据库理论知识,知道这些面试不仅很加分,而且可以加深你对数据库的理解,而不仅仅停留在只会手写几个sql上面。
当然对于数据库理论知识的学习,肯定不需要像开发那么深入,但是一些基本的需要知道并掌握,简单来说,看我接下来的文章搞明白完全够用了
一.数据库分类
数据库主要分两种,一种是关系型数据库,比如大家熟悉的oracle,mysql等,另一种是非关系性数据库主流的有mongodb和redis等。
目前企业中使用最多的就是oracle和mysql数据库,推荐大家先学这两个。
非关系性数据库大家需要重点知道的就是redis,又叫缓存数据库,这个也是日常工作使用非常多的。
一般大型网站,它的数据并不是存在关系性数据库里的,而是存在缓存里的,缓存是存在内存里的,这样它的访问速度就会特别快。
存在数据库的,是存在硬盘上的,从硬盘上读数据肯定没有从内存读数据快。所以,缓存应用一般是为了提高访问速度。
简单来说,就是比如一个查询,第一次查询完之后可以将返回结果存到缓存中去,同样的查询条件再次查询时就可以直接从缓存中读取。redis就是这样一种缓存数据库。
二.主键,外键
数据库中的主键是在一张表中可以唯一标识一条记录的字段。且在一个表中只能有一个主键而且不能够重复,也不能为空值。
举几个例子:
1.学生表(学号,姓名,班级)
因为每个学生学号唯一,所以学号就是一个主键。
2.课程表(课程id,课程名)
由于课程id是唯一的,所以它就是一个主键。
3.成绩表(学号,程程id,成绩)
在成绩表中任何一个字段都无法标识一条记录,需要学号和课程id组合起来才可以标识,因此它俩组合起来是一个外键。
再来说说外键,外键主要用于建立和另一张表的关联,是确定另一张表记录的字段。外键是另一张表的主键。可以有多个且重复,也可以是空值。
在上面的例子中,学号不是成绩表中的主键但它是学生表中的主键,因此我们就可以称成绩表中的学号是学生表的外键。
三.索引
简单来说,索引就是关系性数据库中,和表相关的一种数据库结构,它就好比是一本书的目录,当你想查找某个内容时,就可以根据目录快速定位到。
对于现在企业的大型数据库来说,基本都有索引,它可以加快对应表的sql执行速度,从而大大提升数据库性能.
从性能测试的角度来说,它可以减少数据库瓶颈,从而提升系统的并发能力,也就是提升TPS。
四.事务
事务是并发控制的基本单位,所谓的事务,就是一系列操作,这些操作要么都执行成功,要么都执行失败。
以最经典的A账户向B账户转账200元举例:
总共需要两步:A账户减少200元,B账户增加200元。
假想一下假如A账户减少200元后,系统发生故障,B账户却没有增加钱怎么办呢?
这就引入了事务这个概念,这两个操作合起来就是一个事务,是一个整体,要么都执行成功,要么都执行失败,这样就避免出现这种情况。
五.存储过程
简单来说,就是一个大型项目,会多次涉及和数据库的连接,这时会一次次使用sql语句来连接数据库。
如果这个时候使用存储过程只需要连接一次就可以了,从而省去大量的sql语句。
对于很简单的sql,存储过程没什么优势,但是对于复杂系统,复杂逻辑时,存储过程可以大大提升运行速度。
除此之外,存储过程还具备减少网络传输,可维护性高,提升安全性,高扩展性等优点。
以上就是一些数据库常用到的概念,可能开发每天都需要打交道,但是对于测试来说也最好掌握,至少知道什么意思,面试会很加分,而不是仅仅会写一些sql。