发表于: 2018-03-16 23:35:25

1 716


今天遇到了很多困难,基本等于一天时间没有做出任何前进。

先说一下昨天的问题

Q8:将表导出成Sql文件,并使用navciat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复

A8:昨天做到这里的时候卡住了,因为我的mysql在用sql语句读入sql文件的时候会出错,提示是expected_time表段赋值的数据类型有问题

入学时间我给的数据类型是varchar(255),然后输入了2018年3月16日类似的字符串,就会出现上述错误,然后我 把入学时间全部改成数字就没有问题,往上查到的是UTF-8编码 问题,但是我只是一列数据出现了问题,一开始我认为如果是UTF-8编码问题的话,首先我所有的汉字(名字之类的)都应该报错,但是经过我排除法实验,只有入学时间这列会在sql文件导入的时候发生错误,其次是我查了一下年月日这三个汉字UTF-8编码并没有超过mysql中的3个字符的限制,然后我把年月日直接替换成了其他汉字,发现依然报错,这次报错的方式是提示data too long。黑人问号.jpg,我赋的数据类型明明是varchar(255),一个汉字的data就太长?到这里我根本找不到问题在哪里,为什么只有一列报错,为什么输入其他汉字仍然报错?一点不符合UTF-8编码错误。万般无奈地情况下向网上的一位师兄请教,他认为是编码问题,百度,如何修改UTF-8编码,结果网上有个方法是错的(下面还一堆人点赞),改了一个配置文件,结果我连mysql都启动不了,好吧,恢复我注释过的那些语句(网上说把文件里面某些语句注释掉),mysql总算又可以启动了,但是问题还是没有解决。继续去网上找解决办法。

这样修改之后会看到用cmd显示mysql表格中文变成乱码 再将cmd和mysql编码改成gbk

然后进行了插入sql文件操作没有以前的问题了。这里我还不是很肯定到底正没正常,实验了多个汉字之后师兄让我查了一下我的表编码

终于解决了一个问题,感觉很困难。

继续做任务。

Q10:插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率

A10:这里忘记截图了,总共11条数据,感觉效率没什么变化,百度了一下,应该增大插入数据的基数,建立索引然后再执行SQL语句就能看出来效率的区别,这也是决定日后建表到底需不需要建立索引的依据。我这里没有再多插入数据,所以索引实际上是一种数据结构,如果你对该列建立了索引,实际上是将该列数据单独拿出来并且排序存储在你建立的索引中,如果你执行select的时候,mysql会自动搜索索引来提高效率(如果没有索引则是执行了全局搜索),多大的数据量会引起差别,应该是300(这里确实是自己偷懒了),什么样的情况应该建立索引,首先数据多的情况下应该建立索引其次是主键也必须有索引(昨天的主键自增长问题也在这里得到了解答),在之后就是复合表中的外键以及小字段(建立索引本来就耗费了大量的存储空间,如果索引的字段数据很多,索引也会占用很多,得不偿失)

Q11:查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方

A11:

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

date :“yyyy-mm-dd”格式表示的日期值 time ,date类型不适合数据转移和传输?(数据库中的数据应该具备的特点。。个人猜想),而long类型则是整数型,方便数据转移和传输。此处需要注意date和long类型是可以互相转化的。(昨日是有一个LONG和longtext类型的疑问,今天在看了网易java基础课程中的数据类型部分已经解决了疑问,其中long是整型数据类型,而longtext是变长字符存储。

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

自增ID会在数据特别多的时候达到一个上限值,自增ID会让数据更容易被盗取(这条是百度的),网上说自增ID不容易实现数据的转移什么的,没弄懂原理。如果表中有其他唯一的表段(比如学号,姓名不行,有可能重复),且此表段还作为其他表的外键(用学号搜索)就不应该使用自增ID。如果有大量数据插入也不应该是用自增ID(一系列数据如果被盗取则全部被盗取)。

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

A10回答过了。

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

唯一索引是索引中数据中全部不同,普通索引是允许索引中数据相同,如果不希望插入的新数据与之前数据相同(避免人为造成失误?如果人为输错导致与前面相同就会无法输入么),就应该建立唯一索引。实际上我也不太清楚唯一索引和普通索引哪一个搜索更快,感觉差不多....

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

不用判断,因为是唯一索引,如果插入数据和之前相同就会插入失败。

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

create_at是创建的时候赋值,update_at是更新的时候赋值(navicat中直接生成这两个 create_at自动赋varchar(255),update自动赋datetime,一脸懵逼...),个人觉得create_at不应该开放调用接口,update_at应该开放。

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

这题没读懂题意,去翻师兄日志去了....发现是这么个意思,如果把不同种类的修真类型修改成0/1/2/3等等数字,然后这些数字作为外键对应另一个修真类型的表,这样数据修改方便,那就是直接把修真类型存储成int类型即可。

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

varchar类型需要设计者预先知道上限值然后varchar(最大长度),如果不能确定最大长度则不应该是用carchar类型,存储长度:longtext>text>varchar。

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

。。。看了下百度里面讲的,内容我就不复制了,需要编代码实现,感觉有点超越自己进度了。

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

这个问题也没提及情形,如果没有使用navicat还是小数据那就可以执行这个命令来看一下表中的结构,那如果是大数据你想查询某个特定的东西那就后面加where。

Q12:下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中

A12:JDK就是编译环境,JRE就是运行环境,JDK已经包含JRE了,就是开发者用JDK编译然后用户只要有JRE就可以运行开发者编译的文件了吧。然后我安装的是Java9,环境变量配置忘记截图。

Q13:下载Maven3,并配置好环境变量

A13:下载的是maven3.5,配置好环境了,不过这里网上写的都不一样,导致了我后面有了挺大的错误,准备明天重新装一个。

Q14:下载Eclipse或者是IDEA,配置好Maven。IDEA不用配置Maven,Eclipse也分自带或者外部,推荐使用外部Maven

A14:先下载了Eclipse,然后又下载了IDEA,不过这下的真是慢....准备用IDEA。

Q15:创建一个新的maven项目

A15:

按照网上教程创建了一个maven项目,不过这里遇到了点问题...我把maven的settings.xml文件修改了之后,全乱套了...m2那个文件夹估计被我<localRepository>D:/server/maven/repository</localRepository>这段代码弄到D盘去了,去用户里面翻了半天没找到.m2,jar找不到了....不过我jar也没生成出来,后面还有别的错误。

Q16:在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包

A16:这里报错了,install的时候

我还以为是java版本问题,然后按照网上的方法修改了一下java版本配置

没看懂哪里不是9.0...然后我这里弄了2个小时没弄好,很难受。明天准备卸载了maven重新弄了,怕是我把那个配置文件给改坏了。。。这也就当然没看到jar包了。


收获:其实今天主要是想解决一下昨天的问题,比如类和对象,此表中实际上学生是对象,而学生的各种姓名、QQ号是其属性,这样逻辑关系就清楚了许多,然后今天由于多次对表进行了操作(都是那个BUG搞得),让我更熟悉了SQL语句(无奈),后面配置maven就不是啥收获了,根本看不懂...明天准备把这好好看看,放慢一下进度。

明天目标:估计是把maven弄懂吧。。这里有点超出我理解范围了。。。





返回列表 返回列表
评论

    分享到