2019.1.15更新
没有按照既定计划执行,借口当然是一大堆,耐心得读完了这本书,受益匪浅,解决了我日报和周报中的很多问题,虽然离目标还有很大的距离,但是这本书让我看到了希望,科技改变世界,这一行行的代码竟真的可以节约我那么多的时间。
从这次学习中,也发现了自己学习和工作中的大问题,一个是执行力,一个是学习能力,还有一个就是总结输出的能力,这三方面以后我要尤其注意。
记得在哪里看过一句话,一件事情如果找不到放弃的理由,坚持下去完成往往比半途而废要好!
困难的路越走越简单!!!
时间:2018.12.10-2019.1.18(40天),计划时间2.5h*40=100h
内容:MySQL,能够使用MySQL完成工作中的日报、周报、月报
方法:听课或看书+实操
每日反馈
week1:MySQL基础教程-读完并且动手操作一遍
week2:网易云课堂课程完成+实操
week3:尝试完成日报中的工作
week4:总结梳理前三周遇到的问题,制定/调整巩固计划。
2018.12.13 更新
最近这三天没有完成既定的学习计划,可以有很多借口来解释,但是在今天翻书的时候我才意识到,是我并没有真正愿意为之付出努力的决心,说到底,还是懒惯了,太散漫,说了不做,一定要利用剩下3天的时间完成计划!
2018.12.16 更新
没有完成计划
目前读书只完成了4章,没有动手写代码,不过这次读SQL的书,让我收获很大,好像一下子读懂了它到底是用来做什么的了,之前读《SQL必知必会》和SQL的官方文档,读完了也没有感觉,不知道这次是因为做日报做熟了,还是这本书写的太好了。
前四章讲的都是些基础知识,思维导图在读完后会补上,先记下一些对我来说shining的点。
- C1主要讲了数据库的原理和SQL的基础知识(创建、删除、更新表),在讲DBMS的种类时,它根据数据的保存格式的不同介绍了5种数据库类型:HDB(Hierarchical Database) 、RDB(Relational Database)、 OODB(Object Oriented Database) 、XMLDB、 KVS(Key-Value Store),MySQL是就是属于能够查询RDB的语言。
书中对RDBMS的系统结构的描述很到位,截个图放在这里。
SQL语句主要包括关键字、表名、列名等,根据RDBMS赋予的指令的种类不同,SQL语句可以分为三类:
DDL: Data Definition Language,主要包括创建(create)、删除(drop)、修改(alter)等指令,此类语句针对数据库和表均可用;
DML:Data Manipulation Language,主要包括查询(select)、插入(insert)、变更(update)、删除(delete)表中的数据等指令,此类语句针对数据库中的表可用,这类语句也是最常用的;
DCL: Data Control Language,主要包括确认(commit)/取消(rollback)变更操作、赋予(grant)/取消(revoke)操作权限等指令,此类语句针对数据库可用。
SQL语句的规则
- 以;结尾;
- SQL不区分关键字的大小写,但是最好按照关键字大写、表名的首个关键字大写的规则来书写SQL语句;
- 单词之间需要使用半角空格或换行符来进行分割(全角:1个字符占用2个标准字符位置;半角,1个字符占用1个标准字符位置)。
- 创建数据库或表时,只能使用半角英文字母、数字、下划线作为名称,且必须以半角英文字母开头;
- 创建表时,所有的列必须指定数据类型,主要有存储数据类型的interger、存储定长字符串的char、存储可变长字符串的varchar、存储日期的date;
- 表中可以对列追加设置约束如主键(primary key)和不能为空(Not null).
表的删除(drop)和更新(alter:改变表的定义,如增加列)比较简单,不再赘述。
- C2主要讲了select语句基础、算术运算符、比较运算符、逻辑运算符。
可以使用select语句直接查询常数,但是我还没有实际操作过。
可以使用distinct删除重复记录,但只能用在第一个列名之前。
where语句、注释的使用方法、算术/比较/逻辑运算符之前比较熟悉,Null会在最后做个专题总结,在此不列。
- C3讲的是聚合查询、表的分组、条件查询及查询结果的排序
聚合查询在我看来就是简单的计算,常用的聚合函数为count/sum/avg/max/min,也就是描述统计中常用的几个量;
表的分组其实就是通过group by语句进行分类,要注意的点就是只能在select子句之中,不能使用这个子句中聚合键之外的列名(这个还没有完全弄懂)和列的别名。
还有一点要注意的是where语句中不能使用聚合函数,就是不能出现where count(name)=2(这种情况只能使用select或者having)。
having子句要在group by子句之后,having这时候是一个条件,这个结果首先要符合having的条件才能去分组,我理解其应该是在group by子句之前执行,可是书上说的是在group by子句之后才执行,这个也需要再琢磨。
order by比较简单,它可以使用列编号(不推荐),也可以包含没有出现在select语句中的列和聚合函数。
- C4主要讲的数据的更新,主要就是insert/delete/update语句的使用。
insert语句列和值要一一对应,原则上执行一次insert语句只会插入一行数据,实际操作中可以省略列清单,插入多行。在value中可以指定default关键字设置默认值。
delete语句只删除数据,但会保留表。
update语句可以更改表中的数据,可以通过where子句指定条件,可以使用null更新列,同时更新多列时,可以在update语句中的set子句中,使用逗号分隔多个列。
C4中还介绍了事务(transaction),我之前没有看懂过这部分,这次看起来倒是挺有意思,能够把一个命令集放在一起,想来对我的日报帮助很大。
尽管还没有读完,真正觉得这是一本对MySQL入门的好书,我是一个总被人说成干什么都没有悟性的人,读起来却丝毫没有难度,也感慨日本人做事的态度,一丝不苟真是浸润到了每一个细节。
计划利用明天的时间把剩下的读完。