发表于: 2018-03-14 17:39:22

2 762


今天完成的事情:

解决了昨天留下的10个关于数据库的问题

1:为什么DB的设计中要使用Long来替换掉Date类型?

这个问题没什么概念,所以直接百度了,没想到排在第一个的就是师兄做的总结。

简单来说就是date类型返回的是本地服务器的时间而不是你的服务器的时间,这样时区的不同就可能造成时间的错误,需要手动修改,有点麻烦。还有就是实际应用中我们大多数情况只关心时间变化了多少,那么使用long类型返回的时间戳由于是一串数字,所以进行加减更加方便,当然传输也更加方便。

对于实际应用我不了解,毕竟没有真实项目的经验,不过我想肯定也有项目的需要就是需要显示日期啊,比如说我们这个任务的入学时间,我们想看到的当然是确切的日期而不是你报名了之后到现在已经过了多久,所以我感觉这个解释有点牵强。按照我现在的理解,long类型转换成日期样式显示肯定也是要进行转换的,比如一个函数,将long类型转换成我们能看懂的日期格式。只是相较于date类型而言,long类型转换我们只需提前设置好就行,而date类型可能需要人为的去考虑时区的因素,给我们的使用带来不便,所以要用long来替换掉date类型。不知道想的对不对,网上的资料也很少,果然还是需要实际的项目来检验啊。

2:自增ID有什么坏处?什么样的场景下不使用自增ID

就我现在的使用情况来看,如果设置了自增ID,如果你当前最后一条记录的ID5,若你删除了这条ID,当你再创建一条新记录时,ID将会设置为6,也就是说这个自增的值不会随着你记录的数量改变而改变,它只会管自己多一条记录就加一,这是我现在掌握的知识所能想到的一个问题。

3:什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

如上一篇日报所说,索引就是一种数据结构,它能够提前将我们设置为索引的字段以我们检索时能查询更快的方式排列,同时存储相应字段的元组的地址。

不知道有多大的差别算是性能上有差别,就以我们之前的任务为例,10条记录也已经有0.001s的差距了,假设我们对1s的差距就已经有明显的感觉的话,那么1w条记录可能就会造成这1s的差距,当然实际情况中当然不可能简单的相乘就可以,不过估计要有明显的性能差异少说也得有几千几万条记录吧。

当我们经常会以某个字段为条件进行检索时,我们就应该对这个字段建立索引。

4:唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。

区别就是唯一索引的字段不能有重复的值,所以在一个字段中不能有重复的值时需要建立唯一索引,甚至可以说,有的时间建立唯一索引并不一定是为了提高检索速度,而是确保没有重复的值。

5:如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

由于建立了唯一索引,所以应该是会判断的。

6:CreateAtUpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

create_at:建立记录时

update_at:更新记录时

如果外部需要这些数据,应该开放

7:修真类型应该是直接存储Varchar,还是应该存储int?

如果按照报名贴来说,应该存储varchar,但如果我们人为的规定了1代表java工程师,2代表css等,那么用int来存储也可以。

8:varchar类型的长度怎么确定?有什么样的原则,和TextLongText的区别是什么?

varchar的长度根据输入的内容长度而改变,最大存储255字节,Text能存储216次方减一字节,LongText能存储232次方减一字节。

9:怎么进行分页数据的查询,如何判断是否有下一页?

    这个问题没什么概念,就百度了一下,没想到有师兄之前做的一个介绍视频https://v.qq.com/x/page/c0503j46109.html?ptag=qqbrowser

    简单的从逻辑上来说的话就是用总条数除以一页显示的数量,若有余数则下一页还有内容,具体实现等学了后面的内容希望自己能亲手实现一下。

10:为什么不可以用Select * from table?

    想象一下如果你用这条语句查询一个百万级别数量容量的数据库,那将会有多么恐怖的搜索量,而且好像也没什么意义。当然,其实如果是我们这种练习级别的数据库,其实我觉得无所谓。

  接着做了下面几个步骤

  步骤12:java之前已经下载好了,我是在官网上下的java9,环境变量已经配置好,jre中有java运行所需的环境,jdk包括jre,还有开发java程序的开发包

     

步骤13:之前对maven一直略有耳闻,但没有仔细的去了解过,所以就去百度了一下,大概了解了一下maven是个什么东西,挑重点来说maven是一个项目管理工具,项目构建、版本控制、依赖管理是它主要的功能。具体的当然还是要靠自己亲手去操作,用心去体会。还有一点想吐槽的就是在知乎中还看到有人说gradle更好用。只能感慨现在开发工具都发展的这么快,真怕刚学会一个又有一个新的冒出来了。只能说一定要持续学习,努力跟上时代步伐吧!


从官网上下载maven并配置好环境变量。

步骤14:根据网上的教程用eclipse配置好maven项目

步骤15

创建一个新的maven项目

步骤16

可以看到本地的.m2下有jar

明天计划的事情

使用JdbcTemplate和MyBatis实现与数据库的连接,学习Spring框架。

遇到的问题感觉数据库第9个问题可能理解还并没有那么透彻,不过在学了后面的知识后应该会主动去实现看看。其他诸如maven是怎么配置的自然是百度一下啦。

收获:对数据库方面的知识有了更进一步的理解,配置好了maven,为此去网上看了很多关于maven的知识,也知道了其他的管理工具比如ant,gradle等,算是开阔了一下眼界吧



返回列表 返回列表
评论

    分享到