发表于: 2020-02-23 21:31:45

1 1271


今天完成的事情

今天看了看任务,发现有些部分没有完成,所以现在补一下。

1. 查看深度思考中Mysql相关的一些问题

1.1. 为什么不可以用Select * from table? 

我使用了Select * from table,这个执行会将表数据全部列出。当时执行这个语句花了0.2秒,但是罗列100条数据却花了好几秒。一般数据库是管理大量的数据,如果使用这个语句,效率会很低。

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

1.有利于计算时间差

 

2.方便java与数据库之间的传输

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

自增ID会将从删除的最大值开始算起,所以和这个排序不方便。

解决:我会将数据表从Navicat导出,然后Excel填充,再将其导入。

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

区别:

普通索引可以写入重复值。

唯一索引不能 写入重复值。数据修改时,普通索引优于唯一索引。

普通索引可以用 Change Buffer,修改数据较为方便。

 

普通索引会遍历数据库,查找将符合条件的数据。

唯一索引在找到第一个符合条件的数据将停止查找。

 InnoDB 是按页从磁盘读取的,所以查询时,两者效率相差小。

 

使用唯一索引,

输入的数据需要先判断是否重复时,推荐使用。

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

不需要判断。

因为唯一索引不能输入重复值,当发生重复时会报错。

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

应存储为varchar。

因为int只能存储整数,而修真类型填写的是字符串,varchar则 可以存储字符串。

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

1.7.1. 限制规则

参考CSDN博客:https://blog.csdn.net/flyfreelyit/article/details/79700306

a)存储限制

开头需要1~2字节表示长度(超过255时需要2字节),最大长度不超过65535.

b)编码长度限制

字符类型为gbk时,每个字符最多占用2字节最大长度不超过32766.

当字符为utf8时,每个字符最多占用3个字节,最大长度不超过21845.

c)行长度限制

mysql要求一个行的长度不超过65535。

 

 

1.7.2. 计算例子

a)若一个表只有一个varchar类型,如定义为create table t4(c varchar(N)) charset=gbk;

则此处N的最大值为(65535-1-2)/2 = 32766。

1的原因是实际行存储从第二个字节开始';

2的原因是varchar头部的2个字节表示长度;

2的原因是字符编码是gbk。

 

b)若一个表定义为create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;

则此处N的最大值为 (65535-1-2-4-30*3)/3 = 21812

1和减2与上例相同;

4的原因是int类型的c占4个字节;

30*3的原因是char(30)占用90个字节,编码是utf8。

1.8. varchartextlongtext的区别

参考博客园:https://www.cnblogs.com/billyxp/p/3548540.html

 

他们存储的长度不一样,当varchar

大于varchar(255)变为 tinytext

大于varchar(500)变为 text

大于varchar(20000)变为 mediumtext

 

存储长度

TINYTEXT: 256 bytes

TEXT: 65,535 bytes => ~64kb

MEDIUMTEXT: 16,777,215 bytes => ~16MB

LONGTEXT: 4,294,967,295 bytes => ~4GB

2. JDK和JRE的区别

JRE: Java Runtime Environment

JDK:Java Development Kit

JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的

JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

 

a)面向对象不同

JRE是面向于用户

jdk是面向于开发人员

b)范围不同

JRE包含了java虚拟机,java基础类库

JDK包含JRE,除了JRE外,还包括编译java源码的编译器javac,java程序调试和分析的工具,java程序编写所需的文档和demo例子程序

 

明天完成的事情

 

 

遇到的问题

自己是按照任务学习的,一般是需要怎么操作,解决问题就好了。所以然后通过的今天的思考,发现自己对于很多概念,,基础知识都不了解。

在网上搜索答案的时候,有些是没用的 ,有些则一部分有用,得自己去思考,拼凑。

 

收获

对于mysql的数据类型和Java有了进一步的了解。



返回列表 返回列表
评论

    分享到