发表于: 2021-12-25 17:13:00
1 768
今天完成的事情:换用虚拟机+Linux继续学习。
搭建vm虚拟机安装ubuntu镜像,安装navicat,导入之前的sql文件。
遇到的问题:
1.连接mysql时报错:
原因是主使用了localhost,改为127.0.0.1连接成功。
2.导入sql文件时出现错误:
解决方案:搜索确认为myqsl版本变化导致的时间类字段默认值不能为0的问题,修改字段默认值解决,删除了not null,改为正常的默认值CURRENT_TIMESTAMP,顺便删除了已经用不上的A_CreateAt的触发器。
11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
为什么DB的设计中要使用Long来替换掉Date类型?
datetime一类的设置专门用来记录时间的类型使用起来比较简单,但是记录方式没有统一标准可能会不利于后续的利用,加减对比之类的操作可能会有困难,比如时间戳TIMESTAMP记录的是有统一标准的时间值,转化计算可能会比较方便。
自增ID有什么坏处?什么样的场景下不使用自增ID?
一开始学习字段反复导入同一信息时就发现了一些现象,自增id只能保证自身不重复,不会管信息插入多少遍删除多少遍都会一直增加下去,会产生缺号现象;换一个数据库创建表时会重新计数,两张表会有一样的编号,以后合并表时应该会冲突。分布式的记录不适合自增id,改用UUID,在同一表内与其他表中都不会发生重复。
什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引是对数据库表中一个或多个列的值进行排序排序的结构,感觉可以理解成书签和目录,意义是通过规则设定减少查找所需时间。少量数据基本没有什么区别,到了万级别才会有明显的性能差距。常用的字段应该建立索引,识别度高的、唯一字段的应该建立索引。
唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引是不允许其中任何两行具有相同索引值的索引,应该用在正常情况下不会重复的字段。
CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
CreateAt应该在导入数据并且行被创建时赋值,UpdateAt应该在对应行被修改时重新赋值。外部调用接口应该考虑安全性和便捷性,暂时认为应该关闭。
修真类型应该是直接存储Varchar,还是应该存储int?
感觉默认的Varchar已经够用了。
varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
根据不同编码以及可能会填上去的字符上限估算并尽量压低,比如姓名就没有必要设定太高的长度值。一般来说Text的上限比Varchar高,但是远低于LongText。varchar和text可以用来存储一本书的标题和简介以及目录,longtext可以把整本书装进去。
怎么进行分页数据的查询,如何判断是否有下一页?
试用了分页sql语句:select * from 表名 limit 起始记录数-1,显示的记录数;数据量小的时候很好用。
为什么不可以用Select * from table?
显示全部的命令在数据量大的时候会影响性能,应该最少做一点限制。
明天计划的事情:继续安装并完成后续任务。
评论