2019.06.23数据分析基础班学习笔记
关注数据蛙已经大半年时间,进群也已经大半年,现在处于脱产状态.
年初的时候有购买了一本 <MySQL必知必会> ,
所以大概4月份的时候,读完全书"增删改查"所有内容,并完成SQLZOO网站上所有题目的练习,
如果全书精读的同学,个人觉得独立完成SQLZOO当中所有题目是没有太大难度的,
后面也有每天在群里与大家一起探讨一些网站上的习题或者大家做题过程中遇到的难题以及面试中遇到的题目,保持一定的热度
本来考虑是在保持MYSQL习题的练习热度同时开始进行PYTHON的入门学习,
但是因家庭因素从5月初开始就断了学习状态,一直到6月中旬,
我是6.21晚上联系的@凡人求索,6.22晚与之聊了一两个小时,把现状和规划大概交流了一下,
可以说知识这种东西如果没有一直保持一定的热度并且在实践中不断的探索和学习,真的是很容易遗忘.
因为严格上讲我是今天6.23才开始跟进大家学习的,所以在这里也没有与大家同步的学习经验供交流,
但有幸的是本人已经读完全书,还有几百题的做题经验(说实话,遗忘得差不多了),所以在这里分享下一些之前总结的经验.
1.安装和使用MYSQL方面的问题
群里的同学有视频指导和助教指导,可能在这方面遇到的问题不会很严峻,
但是对于自学或者自己摸索的同学来说,这第一步可以说卡死了很多人,
我对这个的理解肯定没有老师和助教还有一些科班出身的同学来的深,所以其中提到的概念性错误还望指出,
我们常说"数据库,数据库",转行的同学肯定对这个概念很模糊,就我本人而言一开始就是这样的,
我们最初浅显的认知是把MYSQL这几个字就是当数据库处理,一开始的认知错误导致后面很多问题的产生,
所以先区分好他们之前的概念,是比较关键的一步.
图1.01 图1.02 图1.03 图1.04我电脑上装的是MYSQL80的版本,我就以这个为例,来说一下,
图1.01是MYSQL80版本自带的可视化客户端叫workbench,图1.02也是MYSQL80自带的命令行实用程序,图1.03是利用windows系统自带的cmd来进入MYSQL控制台(需要从环境变量中添加path,具体方法在这里),图1.04是群里有提供的软件navicat,因为我电脑没有安装,这里就在网上搜了一张图,也是跟MYSQL软件自带的workbench一样是可视化客户端,个人推荐英文不好的同学入手可以用这个客户端.
说到这里,其实最重要的就是其中反复出现的三个字"客户端",我们一开始接触和使用的其实都是客户端,严格上讲并不是数据库,以我个人理解,这其实就是一个提交SQL命令的窗口(不管是可视化程序还是命令行程序),至于命令提交到数据库服务端怎么运行的,个人认为不需要我们初学者去了解,真正存储数据和运行命令的是MYSQL server,这个是服务端.造成认知上的错误最大的问题在于,我们客户端,服务端,数据库全在本地电脑上,所有刚开始理解上的偏差可能会引起一系列的认知错误,所以我在这里以我浅薄的认知科普一下,如有错误,请大佬加以指正.
2.使用数据库语言的思维方式
有了上面这些对数据库,客户端,服务端的理解之后,我们再来谈谈使用数据库语言的一些简单的思维方式.
MYSQL 在"增删改查"部分语言被戏称"小学英文水平",用到的无非就create,delete,drop,select,from,where,join 等等很少数且简单的英文单词,重要的还是使用者头脑里边的思维方式,虽然能达到同样的目的,但是你要写几十行代码,人家大佬只用了短短几行,你的代码执行要10s,大佬只要1s,语言相同,为何差距如此大,就是思维方式决定的.
以本人这点浅薄的知识储备肯定无法在这个层面与大家分享太多经验,按我这段时间的学习经历让我对"语言"2个字有更好的理解.
以前完全没接触过计算机语言,认为学语言就是敲敲敲,不断的敲代码,查bug,改需求等等等等.
但是通过MYSQ 语言的学习,我越发觉得将这些呈现在显示屏上面冷冰冰的字母叫做"语言",真的是再合适不过了.
因为敲击代码的目的,是我们与机器之间的交流!
举个简单的例子:
我刚安装完MYSQL软件就迫不及待的按着书本的指示,要去show tables,然后......
mysql> show tables;
ERROR 1046 (3D000): No database selected
我得到了第一个error,我看不懂啊,第一天装软件,啥也没学,就只会跟着书走,
使劲的百度一番,CSDN上看到有位大佬说,表在库中,你都没进数据库呢,它怎么给你展示表单,
我才意识到看不懂机器的反馈是多么的崩溃,
搜索引擎继续搜索,才知道了要先建数据库,然后use database_name
mysql> create database kkkkk;
Query OK, 1 row affected (0.01 sec)
mysql> use kkkkk;
Database changed
然后各种看书,查资料如何建表
mysql> create table orders
-> (id int not null auto_increment,
-> name varchar(50) not null,
-> age int not null,
-> primary key (id)
->);
Query OK, 0 rows affected (0.08 sec)
mysql> show tables;
+----------------------+
| Tables_in_kkkkk |
+----------------------+
| orders |
+----------------------+
1 row in set (0.00 sec)
拥有了我第一个数据库和第一张数据表
这些最开始遇到的各种问题现在看来那时候真的很蠢o(゚Д゚)っ,
我相信很多初学者肯定跟我一样也是这样一步一步摸索过来的.
大家注意到上面的
ERROR 1046 (3D000): No database selected
Query OK, 1 row affected (0.01 sec)
Database changed
1 row in set (0.00 sec)
等等这些语句,
其实就是"机器"对我们每一次敲入的代码执行结果的反馈(不管正确与否,都有反馈),
越后面,学得越多,肯定就会越发现"语言"逻辑上的重要性,
就好比刚开始出的糗,都没进数据库就要查数据表,闹笑话,但我想这也许也是每个初学者毕竟的过程吧.
逐步地理解与机器"沟通"的重要性,才会有意识的培养自己的思维方式,
比如
图2.01-执行顺序 图2.03-反馈和报错select prod_name,count(*)
from products
where prod_price>3
group by prod_name
order by count(*)
limit 3;
我们不仅要学习语句的书写格式顺序,还要理解"机器"对语句的执行顺序(还有报错内容),不断地去优化自己的语句,
不仅能让语句的可读性更好,执行效率也会更高.
3.保持一定强度的练习
看视频,看文章,看书,总觉得内容并不难,毕竟"小学英文水平"语言,但是如果开始做题就会发现,为什么这么难?
因为难的不是数据库语言本身,而是第2点提到的思维方式.
那么保持一定强度的练习,可以将模糊一团的思维慢慢的理清楚,
在这里我首推SQLZOO
图3.01-sqlzoo 图3.02-sqlzoo如果这些题目都能不查答案,不问别人,自己顺利的做出来,那么MYSQL"增删改查"的基础应该打得差不多了,
下一步可以做网上的mysql经典50题和mysql经典45题,或者牛客网:https://www.nowcoder.com的在线题.
以上是6.22新进群的同学(群名:厦门-AlexWhite)对最开始接触MYSQL数据库时的一些总结,今天开始我也要努力跟上大家的节奏.