发表于: 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:07
,datetime
支持的范围更宽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。
评论