发表于: 2018-03-24 16:27:59
1 667
一、今天完成的事情
1.学习mysql的基本知识
2.根据师兄的日报修改了表的一些结构
3.用mysql插入一条数据
插入完成之后:
4.根据姓名查找数据
做到这一步的时候输入查询语句,结果返回为空。才发现之前插入的时候少了qq号,而姓名对应到了qq的位置。
使用update对数据内容进行修改。
再次通过姓名查找这条记录
5.分别用navicat和mysql修改报名宣言
navicat中能直接通过图形界面修改。
6.导出、导出sql文件
使用mysqldump命令可以导入sql文件,不指定路径则生成的文件会默认在当前目录下。
如果在navicat下操作,可以直接点击右键,选择转储SQL文件实现导出。
使用delete 命令删除数据行后,使用source命令或者在navicat下运行sql文件导入之前转储的sql文件。
7.给姓名建立索引。
建立索引的目的在于改善搜索操作的性能,主键数据总是排序的。对于我们这个例子,我觉得除了姓名还应该建立修真类型的索引,能够便于我们的查找。
8.插入10条数据,确定有无索引的区别。
由于数据量太小,所以有无索引感受不到明显差别。但当数据量增大到一定程度时,使用索引能明显提高查询速度。
9.深度思考
(1) 为什么DB的设计中要使用Long来替换掉Date类型?
对于这个问题,我的理解不深,因为在我看来,存储什么类型的数据就应该用什么存储类型。但是结合网上的搜索结果,以及修真院的小讲堂得到的结论时将date类型转换为long类型有利于java与数据库之间的传输以及便于计算时间差。
(2)自增ID有什么坏处?什么样的场景下不使用自增ID?
如果删除了数据库的某一行,则余下的记录的ID便不会连续。所以如果数据库的内容经常需要进行删除,最好不要使用自增id。
(3)什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果对于某些字段的查询比较频繁且数据量很大,则需建立索引。但也应该避免盲目建立索引,因为建立索引也会消耗一定的资源。
(4)唯一索引和普通索引的区别是什么,什么时候需要建唯一索引
唯一索引在表中是唯一存在的,而普通索引是可以不唯一的。如果对于需要建立索引的属性是唯一确定的,建立的索引需要设置成唯一索引,可以避免不应出现的重复。
(5)如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了
对于唯一索引,在插入数据时,需要先判断是否存在,如果存在应该拒绝插入。
(6)CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
CreateAt在创建记录时进行赋值,UpdateAt在修改记录时进行赋值。一般情况下创建记录一旦初始化便不会再改变。接口暂时不清楚。
(7)修真类型应该是直接存储Varchar,还是应该存储int?
类型既可以存储为int,如果存储为int,则事先就应该给每一个类型赋予一个int值。至于这两种存储类型的差异还需要对数据库的理解进一步深入之后才能知道。
(8)varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
varchar的长度需要更加具体需要存储的数据确定,定义合理的字段长度可以减少一部份非法数据进入。text:存储可变长度的非Unicode数据,最大长度为2^16-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。LongText是极大文本数据。
(9)为什么不可以用Select * from table?
当数据量很大时,select *效率会很低,所以最好需要哪几列的数据就选择哪几列。
10.下载安装java,配置环境变量。
电脑上之前已经有了java环境,故不赘述具体步骤。
JDK是java开发套件,除了基本的java虚拟机和基础类库之外,还包括编译器,debug工具,javadoc等工具。而JRE只有JVM和基础类库,只提供java的运行环境。
二、明天计划的事情
学习maven
三、遇到的问题
1.当在mysql命令行下输入sql命令时,特别是比较长的语句时,常常会产生错误的输入,例如输出了中文标点。而且一旦上一行发生了错误不能修改。所以最好在文本编辑器下完成了编辑之后再复制过来执行。
2.日报的编辑不支持markdown语法,格式调整还是不习惯,而且不支持代码格式,只能贴图。
评论