今天的这篇推文,是对前六天MySQL学习的一个进阶学习和小总结,前两天是端午节,大家过得如何?休息之余,不要忘记坚持学习,加油!
对于不用的岗位,我们对MySql的技术要求不同。
数据分析岗位,侧重查询和多表关联的复杂查询。对于数据分析来说,主要掌握查询,取数据,不关心性能。
数据库开发,程序员岗,注重设计系统,包括表的设计,增删改查,懂得数据库进行查询的原理,依据统计信息对查询进行性能优化,处理非常大的数据量的的查询,SQL的语言的复杂性较数据分析师的高。
DBA-数据库管理员,连接、配置服务器,保证SQL的服务性能、稳定性,修改慢查询,此外,数据库的集群管理,机房服务器连接的一致性管理也是重点。
主要使用库:Python DB-API
连接数据库
import pymysql
db = pymysql.connect(host='',port=3306)
获取游标
cs = db.cursor()
Cursor是游标,指针的意思,通过cursor读取mysql中的数据,存放在计算机内存中。然后再用python读取 curosr,Cursor可以看做一个中间载体,摆渡船的作用。
选择数据库
db.select_db('db_name')
执行SQL
sql = 'show databases'
result = cs.execute(sql)
dbs = cs.fetchall()
在前几天的课程中,我们讲过索引,这里再复习一下,如果进行工作面试,对MySql的索引考察会是一块重点。
索引有一下几大特点:
索引类型,上周的课程提到过,可以翻回去复习。
对于索引的存储结构,这里有两个重要的概念
MyISAM引擎
主键上带有索引,存放在B+Tree结构中,第三行是叶子节点,存放的是地址信息,根据地址信息指向磁盘中数据库文件中这一索引所在的行,找到行后再返回数据,磁盘进行了多次的I/O,速度较慢, 是非聚簇索引的结构。
InnoDB引擎
对比MyISAM,InnoDB 采用的是聚簇索引结构,在第三行的叶子节点上,数据就直接存放在叶子节点上,首先根据主键索引,找到索引后,可以直接读取索引行的数据,减少了磁盘的I/O,提高了查询速度。
一般来说查询性能低下的原因是访问了太多的数据:
对于刚起步学习数据分析的同学们,掌握好查询是首要任务,可以不考虑性能,平时多在网上搜索资料,最好是带有答案讲解的题目,做题练习,这里推荐:
SQL面试50题
https://www.bilibili.com/video/BV1q4411G7Lw?from=search&seid=818452521832640792。
从事大数据,ETL工程师数据开发等岗位,需要了解数据库的内部原理,对慢查询进行优化,建表时为了提高查询的性能,索引的设置非常关键。对业务进行分析时,往往需要新建表,保留原有的数据,建表需要结合实际的业务需求,有兴趣的同学可以参考以下资料加深对数据库知识的学习。