发表于: 2017-11-03 20:38:40

1 957


今天完成的事情:本来原计划今天是直接进入java部分, 但是在今天更多的了解SQL体系的东西之后,我打算缓一缓, 把数据库这块儿多了解一下再进入java, 以免贪多嚼不烂, 


分别用Navciat和Sql语句去将本条数据记录的报名宣言改成老大最帅

这是接着昨天的任务继续往下做,在我换成5.7版本的MySQL之后就没有再出现在dos下无法匹配中文字符的问题,

所以使用update tablename set 列名 = 新的内容 where 列名 = 匹配的内容;这个方法进行更新数据,在更新时候

update_at 当前行的数据是进行了实时更新, 说明current_timestamp这个default值是代表了当前时间戳.

navicat上的修改操作极其简单, 我就不做记录了.


这里又提醒了我昨天的问题, 就是怎么将时间戳用毫秒数的形式保存为bigint?

我首先还是按照基本要求将时间字段全部改为了bigint


然后就是时间具体值的获取.对更新这块儿一直无法得到自动格式化的解决方法,在询问师兄之后,得知update_at也只能通过每次实时手动更新之后,做出了以下的数据录入


MySQL关于时间值这块儿提供了2个函数,

一个是日期格式→unix时间戳        unix_timestamp(日期格式);

一个是unix时间戳→日期格式         from_timestamp(秒数);

unix时间戳 (距离1970年1月1日00:00:00的秒数)  

这里默认的日期格式为

'YYYY-MM-DD HH:MM:SS'

这里是将日期的字符串格式转换为bigint,所以只需要使用unix_timestamp()函数就可以了.

以后在每次更新的时候都将update_at的数据进行同步更新一次.


将表导出成Sql文件,并使用navciat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复。

导出MySQL语句: mysqldump -u 用户名 -p 数据库名 表名 > 导出的绝对路径\表名.sql

删除的语句类似于查询的格式:delete from 表名 where 字段=匹配值;   根据匹配字段删除某一行数据

                                             delete * from 表名; 删除整个表的数据,但是不删除表格

                                              这里我就专门查询了一下删除表和数据库的方式:

                                            drop database 库名;

                                             drop table 表名;

进行导入, source sql脚本路径.


导入成功,

到任务的这一步,其实也就表名了, 数据库也就和java一样, 需要更多的去记忆他的语法操作, 其实本身是很简单的东西.


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


通过查阅资料, 了解到了添加索引的方式.因为有了主键 primary key id的存在, 所以给name 添加普通索引


通过查询确认 name 索引添加成功,

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

有主索引以及普通索引的情况下进行数据添加:

去除name的索引进行添加:

去除主键,整个表无索引添加:


可以看到添加速度是一次比一次块的,因为本身添加任务量小, 差距并不是很大, 相信在大量数据的添加下会有显著区别.

因为每添加一个数据,在有索引的表里都会有索引重建的过程.


虽然任务本身没有关于索引作用的要求, 但我对索引产生了好气, 所以进行了查询之后, 发现可以针对所设置了索引的字段进行排序


一开始我使用 order by 排序又出现昨天的乱行的问题, 主要是因为这个学员的信息太长, 无赖, 为了美观,只有先将他干掉. 毕竟他不是来自于西天....这样完成了通过name字段的数据进行排序,然后我下意识的就认为是因为我添加了索引他才能这样做,其实不然


我在navicat中将QQ这一列的数据改为可排序的之后, 使用QQ这一列进行排序, 依然可以, 到此我就发现问题所在了.


索引的目的是让MySQL进行默认的数据排序存储, 而order操作仅仅是进行显示排序, 在数据库的排序还是根据主键 primary key来进行的,当一个表执行order by语句时只是为了显示排序(这里只是我自己的想法,并未确定,打算晚点进行数据库知识的深度学习)


----------------------------------------------------------------------------------------------------------------------------------

明日计划:在今天下午2点左右其实我就将这部分的任务做完了, 没进入到下一步也是为了对数据库体系的知识更系统更深入的了解,进行了资料的查询以及相关视频的浏览,明天将MySQL的常用语法语句以及规范都好好的记录一下,毕竟数据库是整个java比较核心的东西, 基础扎实了才能有更稳健的进步. 到后面的JDBC以及spring都是与数据库的对接,一步一步来.



----------------------------------------------------------------------------------------------------------------------------------

收获:数据库也是一门需要认真并且熟练操作的学问, 毕竟服务器上是没有navicat这种简单方便的工具, 熟悉的掌握数据库的各种语法, 以及各种语法之间的关系和变动, 是最基础最实在的东西.在做任务的过程也发现了各种各样的问题.最后是关于日报, 日报是一个好东西, 在写日报以及贴图的过程中也是在回顾自己写代码的流程以及思路, 能让自己记忆更深刻,毕竟在写日报的过程中也会发现自己的错误,比如我今天这个日报的最后部分, 其实一开始我并没有使用  select * from 表名 order by 字段;   来进行显示排序, 而是根据   select 字段 from 表名 order by 字段 ;来排序, 这样排序出来就只会有该字段的排序显示:

也是在写日报的过程中对删除以及查询的进行了对比, 也发现了自己的不足, 所查询的资料不够全面,所以需要进行更系列 的学习.


返回列表 返回列表
评论

    分享到