发表于: 2017-04-26 16:59:31

1 1701


1、今天完成的事情:

①创建业务表(学生、修真类型)

②插入最近的一条数据:

INSERT INTO studentinfo (stuName, qq, courseTypeId, enrollTime, school, onlineID, will, create_at, update_at, onlineClassID, dailyLink, referer, auditor, fromWhere)
VALUES (
'李博文','187003594',1,unix_timestamp('2017-3-20'),'吉林化工学院','JS-513',
    '如果我不能在IT特训营拼尽全力,为自己以后的修行路上打好基础,让别人踩一辈子!',unix_timestamp(now()),unix_timestamp(now()),
    'JS-26班','http://www.jnshu.com/daily/16899?uid=9391','高高','邓杰仁','从“知乎”了解到的修真院'
);

所有时间字段所采用的LONG类型在MySQL中是BIGINT类型,插入数据时将时间类型通过unix_timesamp函数转为时间戳就行了。

③查询、修改

SELECT * FROM studentinfo WHERE stuName='张博文'
UPDATE studentinfo SET will='言老大最帅' WHERE ID=1

④表导出、恢复

导出表,--no-create-info 参数的意思是:使mysqldump命令不创建CREATE TABLE语句,这个选项在只需要数据而不需要DDL(数据库定义语句)时很方便。

⑤建索引

CREATE INDEX stuName_indx ON studentinfo(stuName(3));

插入:

0.002s 没索引

0.004s 有索引

查询:

SELECT * FROM studentinfo;

0.001s 没有索引

0.000s 有索引

⑥下载JDK7 配置JAVA环境变量。下载Maven3,并配置好环境变量。安装IDEA,建了maven项目。

⑦MySQL相关问题深度思考

为何要用LONG类型替换DATE类型?

  • 占用存储空间不同。timestamp储存占用4个字节,datetime储存占用8个字节

  • 可表示的时间范围不同。timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

  • 索引速度不同。timestamp更轻量,索引相对datetime更快。

自增ID有何坏处?

自增ID的话使每一条记录都缺少了唯一标识。


什么场景下不适用自增ID?

频繁增删数据的情况下,ID可能已经自增到一万了,而数据记录只有10条。


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

普通索引的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE)或排序条件(ORDERBY)中的数据列创建索引。


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

普通索引允许被索引的数据列包含重复值,比如人名。

若某个数据字段只能包含彼此不同的值,比如身份证号,那么在为这个数据字段创建索引时九应当用关键字UNIQUE将其定义为一个唯一索引。

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

需要。否则会报出 Duplicate entry。


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

参考师兄的:createAt创建的时候赋值,update在更新数据的时候赋值。


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

由于我是将‘修真类型’作为单独一张表存储的,学生信息表中的修真类型相当于是修真类型表的外键。

如果用varchar的话,会造成数据冗余吧。而且如果某一课程的名字有改动,那就很不方便。

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

参考师兄的:

   经常变化的字段用varchar
    确定固定长度的用char
    尽量用varchar
    超过255字符的只能用varchar或者text
    能用varchar的地方不用text

text不能有默认值,存储或检索过程中,不存在大小写转换。
经常变化的字段用varchar,能用varchar的地方不用text(效率上: char>varchar>text)
longtext也是变长字符存储,只保存字符数据



2、遇到的问题:

①命令行导出表时,若指定C盘为导出路径,回车后提示“客户端没有所需的特权”。

原因:可能是因为win10家庭版没有对系统盘的读写权限。换到D盘就好了。


Incorrect string value: '\xE6\x9D\x8E\xE5\x8D\x9A...' for column 'stuName'

原因:stuName字段没有设置字符集为utf8


③当studentinfo表中已经添加了十多条数据了,但此时导出的sql文件仍然只有最初插入的那条?

原因:其实是因为所有的数据都集中写在第24行这一行中了,超出了屏幕显示范围。导致看上去像只有第一条数据。

3、明天计划的事情

任务一的16~29。

下一篇上一篇



返回列表 返回列表
评论

    分享到