发表于: 2018-03-26 22:05:50

1 488


今天完成的事情: 

        9.  给姓名建索引,思考一下还应该给哪些数据建索引

        索引,用来快速地寻找那些具有特定值的记录。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置(原理类似书本目录)。

       10.插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率.

        索引分类A:

       按类型分:PRIMARY 主键。 就是 唯一 且 不能为空。
       Normal索引,普通的UNIQUE 唯一索引。 不允许有重复。
       FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。
       B:按字段数量分:索引分单列索引和组合索引。
       单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
       组合索引,即一个索包含多个列。创建索引
       索引缺点

      虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。

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

          理解:数据库内部对于时间的计算就是用时间戳的方式进行的,所以用BIGINT来存储时间戳不仅运行速度查找速度上更快,而且可以避免以DATA方式存储造成的时区影响,在输出时可以利用转换函数,就可以避免看起来不够直观的问题了
2.自增ID有什么坏处?什么样的场景下不使用自增ID?
          理解:今天自己做表格时,由于数据录入错误,所以多次删除了数据,导致后面录入的数据Id不是连续的,它将删除数据的id永久跳过了,所以如果数据在录入过程中需要经常增删的话,那么自增ID不仅会导致ID的不连续而且在后期按照ID查找时会容易造成数据为空的情况。
3.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
           理解:数据库的索引是为某一列或几列数据添加的标记,可以利用这个标记快速定位到需要查询的数据中(相当于定位法术);当数据库的数据量上千,超过mysql的内存,使得其无法将所有记录储存在内存中随时调用时,建索引才会产生性能差别,可以理解为当我身上口袋装不下时,买个包才会比用手捧着作用明显;当某字段经常作为关键字被查询时,即SELECT WHERE 语句中,WHERE后面的变量经常定义的字段需要建立索引,可以提高查询效率,如果不用此关键字进行定位,也就无需建立索引了,因为建立索引不仅需要消耗内存,花费时间,而且修改数据速度也会变慢。
4.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
          理解:唯一索引意味着不同行内的索引值不能重复必须唯一,简单索引则允许不同行存在重复索引,当我们建索引行的内容不存在重复可能时(比如QQ号,手机号)建唯一索引可以增加效率,而且建立了唯一索引之后,再插入新数据时系统会自动检测新数据是否重复,如果重复,则会拒绝插入此数据。
5.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
          理解:由于唯一索引的机制就是数据唯一性,所以为了避免数据重复,在插入前,系统会先判断是否存在,如果存在就拒绝插入,不存在就可以顺利插入。
6.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
          理解:create_at一般在创建数据时赋值,update_at则是在修改数据时赋值,即前一个一般只有一个值且不会变,后一个则可能多次变化;关于外部调用接口还没接触,做完任务一再来回答
7.修真类型应该是直接存储Varchar,还是应该存储int?
           理解:Int类型只能存储整数,而修真类型一般会以单词或是中文来表示,所以用VARCHAR比较好
8.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?

         理解:建立表格时,数据类型中便需要确定好VARCHAR类型的最大长度,由于其长度可随输入内容而变化,所以在系统中其存储空间是不固定的,(而CHAR类型由于长度固定的,如果输入的数据不到最大长度,则会以空格填满)但超过最大长度则会报错,一般长度低于255会用一个字节储存长度,大于255会用两个字节储存长度;TEXT和LONGTEXT的区别是可存储字符长度上,TEXT最大存储65535长度,而LONGTEXT则可以存储2^32-1长度的字节

11、12、13、已经完成

14、

这里很详细介绍了安装IDEA。

15创建一个新的maven项目


明天计划的事情:

         继续任务
遇到的问题:

        编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。

         在这里卡住了完全不懂JDBC什么东西Mybatis又是什么鬼,然后跑去查资料看视频。

       DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
       DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的   数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。

       MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

   jdbc:在我的理解下是MySQL的接口,相当于显卡驱动,比如显卡gtx850有个图形驱动程序,jdbc就相当于这个。

在IDEA里好像可以直接设置JDBC。

收获:

      数据库基础知识初步了解了,然后了解对数据访问接口。




返回列表 返回列表
评论

    分享到