从零开始的Python-SQL入门指南:学习数据分析的基础技能

数据来源

 01 SQL前言

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第1张图片

无处不在的SQL 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第2张图片

后续学习的铺垫 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第3张图片

学到什么程度

黑马程序员MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程_哔哩哔哩_bilibili

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第4张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第5张图片

02 数据库介绍

无处不在的数据库

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第6张图片

数据库如何存储数据

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第7张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第8张图片

数据库管理系统(数据库软件)

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第9张图片

数据库和SQL的关系

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第10张图片

总结 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第11张图片

03 MySQL安装

下载地址:https://downloads.mysql.com/archives/installer

我个人更喜欢用Navicat:百度网盘 请输入提取码

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第12张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第13张图片

配置环境变量 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第14张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第15张图片

04 MySQL的入门使用(我这里使用Navicat进行演示)

在命令提示符内使用MySQL

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第16张图片

这些命令行语句一样可以使用Navicat运行 

-- show databases  # 查看有哪些数据库
-- use mysql       # 指定使用某个数据库
show tables        # 查看数据库内有哪些表

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第17张图片

使用图形化工具操作MySQL (如果安装了Navicat就不用管这个)

下载地址:https://dbeaver.io/download

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第18张图片

DBeaver安装

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第19张图片

DBeaver连接MySQL 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第20张图片从零开始的Python-SQL入门指南:学习数据分析的基础技能_第21张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第22张图片

05 SQL基础与DDL

SQL的概述

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第23张图片

SQL语言的分类

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第24张图片

SQL的语法特征

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第25张图片

DDL - 库管理

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第26张图片

DDL - 表管理 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第27张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第28张图片

06 SQL - DML

DML

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第29张图片

数据插入 INSERT

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第30张图片

演示:SQL的基本语句用法 搜索:INSERT

数据删除 DELETE

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第31张图片SQL的基本语句用法

演示: SQL的基本语句用法  搜索:DELETE 

数据更新 UPDATE

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第32张图片

演示: SQL的基本语句用法  搜索:UPDATE

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第33张图片

07 SQL - DQL

1)基础数据查询

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第34张图片

演示: SQL的基本语句用法  搜索:SELECT

基础数据查询 - 过滤 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第35张图片

 演示: SQL的基本语句用法  搜索:WHERE

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第36张图片

2)分组聚合

分组聚合

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第37张图片

演示

准备一个数据表,随便写点数据

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第38张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第39张图片

-- 按照性别分组,并计算每组的平均值 
SELECT gender as 姓别,avg(age) as 平均年龄 ,SUM(age) as 年龄的和,MIN(age) as 最小年龄,MAX(age) as 最大年龄,COUNT(id) as 行数(数量) FROM student GROUP BY gender  

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第40张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第41张图片

3)排序分页

结果排序

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第42张图片

演示

-- 按照年龄进行升序排序 (默认就是ASC升序排序)
-- SELECT * FROM student ORDER BY age ASC
-- 加限制条件,只排序年龄大于18的
-- SELECT * FROM student WHERE age > 18 ORDER BY age ASC
--  DESC 降序排序    ASC 升序排序
SELECT * FROM student WHERE age > 18 ORDER BY age DESC

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第43张图片

结果分页限制

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第44张图片

演示

-- limit ?,?'  // ? 开始查询的索引 , ? 要查多少条数据
-- SELECT * FROM student WHERE age > 18 ORDER BY age LIMIT 3   # 年龄大于18的前3条数据
-- SELECT * FROM student ORDER BY age  LIMIT 0,3  # 从第一条数据开始查3条数据
-- 查询年龄大于18 、按照年龄进行分组、按照年龄进行升序排序、只取前3条数据 
SELECT * FROM student WHERE age > 18 GROUP BY age ORDER BY age  LIMIT 3;  

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第45张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第46张图片

08 Python 操作 MySQL

基础使用

pymysql

pip install pymysql

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第47张图片

创建到MySQL的数据库链接

 演示

"""
演示创建到MySQL的数据库链接
"""
from pymysql import  Connect
# 获取到MySQL数据库的链接对象
conn =Connect(
    host="localhost",    # 主机名或ip地址
    port=3306,           # 端口,默认3306
    user='root',         # 账户名
    password='207080'     # 密码(这是我的账户名与密码要根据自己的实际情况改成自己的)
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())
# 关闭到数据库的链接
conn.close()

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第48张图片

执行SQL语句(查询、创建表)

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第49张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第50张图片

 演示

"""
演示创建到MySQL的数据库链接并执行SQL语句
"""
from pymysql import  Connect

# 获取到MySQL数据库的链接对象
conn =Connect(
    host="localhost",    # 主机名或ip地址
    port=3306,           # 端口,默认3306
    user='root',         # 账户名
    password='207080'     # 密码(这是我的账户名与密码要根据自己的实际情况改成自己的)
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())

# 获取游标对象
curses = conn.cursor()

# 先选择数据库
conn.select_db("my_db_01")

# 使用游标对象,执行SQL语句
curses.execute("SELECT gender as 姓别,avg(age) as 平均年龄 FROM student GROUP BY gender") # 按照性别分组,并计算每组的平均值

# 获取查询结结果,:tuple  类型注解标记这个results变量是个元组(不是强制性的,只看给我们开发者自己看的)
results:tuple = curses.fetchall()
print(results)  # 元组内嵌套了元组,里面嵌套的每一个元组都是一行数据
for r in results:
    print(f"性别:{r[0]},平均年龄:{r[1]}")

# 关闭到数据库的链接
conn.close()

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第51张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第52张图片

数据插入

commit提交

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第53张图片

演示 

"""
演示创建到MySQL的数据库链接并执行SQL语句
"""
from pymysql import  Connect

# 获取到MySQL数据库的链接对象
conn =Connect(
    host="localhost",    # 主机名或ip地址
    port=3306,           # 端口,默认3306
    user='root',         # 账户名
    password='207080'     # 密码(这是我的账户名与密码要根据自己的实际情况改成自己的)
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())

# 获取游标对象
curses = conn.cursor()

# 先选择数据库
conn.select_db("my_db_01")

# 使用游标对象,执行SQL语句
curses.execute("INSERT INTO student VALUES(6,'李银河','22','男')") # 插入数据

conn.commit()  # 提交更改

# 关闭到数据库的链接
conn.close()

代码提交后到数据库中查看结果 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第54张图片

自动commit

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第55张图片

    autocommit=True      # 设置自动提交

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第56张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第57张图片

总结

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第58张图片

09 综合案例

案例需求

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第59张图片

数据内容

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第60张图片

DDL定义 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第61张图片

 实现步骤

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第62张图片

演示

1)创建一个数据库-  py_sql

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第63张图片

2)创建数据表-orders

CREATE TABLE orders(
 order_date DATE,      # 存储日期字段
 order_id VARCHAR(255), # 存储订单编号
 money INT,            # 销售金额 
 province VARCHAR(10)   # 省份
);

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第64张图片

3)基于面向对象的章节的案例代码(搜索:综合案例)基础上开始写SQL

将 main.py  替换成下面代码运行就能把数据存储到数据库了

from file_define import  FileReader,TextFileReader,JsonFileReader   # 从file_define文件中把刚才写好的类全部导入进来
from data_define import Record      # 在data_define文件中把数据定义的类Record也导入进来
from pymysql import Connect

# 普通的文本文件
text_file_reader = TextFileReader("F:/案例数据/数据分析案例/2011年1月销售数据.txt")  # 调用类创建类对象并把文件路径传给类的构造方法
# JSON文件
json_file_reader = JsonFileReader("F:/案例数据/数据分析案例/2011年2月销售数据JSON.txt")

# 有文件路径了,调用TextFileReader类的写(实现抽象方法)父类的方法read_data,返回格式处理后的数据
jan_data:list([Record]) = text_file_reader.read_data()    # 一月的数据
feb_data:list([Record]) = json_file_reader.read_data()    # 二月的数据
# 将2个月份的数据合并为1个list列表存储
all_data = jan_data + feb_data
# print(all_data)

# 获取到MySQL数据库的链接对象
conn =Connect(
    host="localhost",    # 主机名或ip地址
    port=3306,           # 端口,默认3306
    user='root',         # 账户名
    password='207080',   # 密码(这是我的账户名与密码要根据自己的实际情况改成自己的)
    autocommit=True      # 设置自动提交
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())

# 获取游标对象
curses = conn.cursor()

# 先选择数据库
conn.select_db("py_sql")

for record in all_data:  # 遍历all_data列表拿到每一个元素,然后添加到数据库
    my_date = record.date          # 日期
    my_order_id = record.order_id  # 订单id
    my_money = record.money        # 金额
    my_province = record.province  # 订单省份
    sql = f"INSERT INTO orders \
    VALUES('{my_date}','{my_order_id}','{my_money}','{my_province}')"
    # 使用游标对象,执行SQL语句
    # print(f"{my_date},{my_order_id},{my_money},{my_province}")
    curses.execute(sql) # 插入数据

# 关闭到数据库的链接
conn.close()

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第65张图片

查看数据库

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第66张图片

练习 

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第67张图片

演示 - 在原来的main.py 文件的基础上改一下

from file_define import  FileReader,TextFileReader,JsonFileReader   # 从file_define文件中把刚才写好的类全部导入进来
from data_define import Record      # 在data_define文件中把数据定义的类Record也导入进来
from pymysql import Connect

# 普通的文本文件
text_file_reader = TextFileReader("F:/案例数据/数据分析案例/2011年1月销售数据.txt")  # 调用类创建类对象并把文件路径传给类的构造方法
# JSON文件
json_file_reader = JsonFileReader("F:/案例数据/数据分析案例/2011年2月销售数据JSON.txt")

# 有文件路径了,调用TextFileReader类的写(实现抽象方法)父类的方法read_data,返回格式处理后的数据
jan_data:list([Record]) = text_file_reader.read_data()    # 一月的数据
feb_data:list([Record]) = json_file_reader.read_data()    # 二月的数据
# 将2个月份的数据合并为1个list列表存储
all_data = jan_data + feb_data
# print(all_data)

# 获取到MySQL数据库的链接对象
conn =Connect(
    host="localhost",    # 主机名或ip地址
    port=3306,           # 端口,默认3306
    user='root',         # 账户名
    password='207080',   # 密码(这是我的账户名与密码要根据自己的实际情况改成自己的)
    autocommit=True      # 设置自动提交
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())

# 获取游标对象
curses = conn.cursor()

# 先选择数据库
conn.select_db("py_sql")

# 插入数据到数据库
for record in all_data:  # 遍历all_data列表拿到每一个元素,然后添加到数据库
    my_date = record.date          # 日期
    my_order_id = record.order_id  # 订单id
    my_money = record.money        # 金额
    my_province = record.province  # 订单省份
    sql = f"INSERT INTO orders \
    VALUES('{my_date}','{my_order_id}','{my_money}','{my_province}')"
    # 使用游标对象,执行SQL语句
    # print(f"{my_date},{my_order_id},{my_money},{my_province}")
    # curses.execute(sql) # 插入数据

# 从数据库读取数据,报存在本地文件
f = open("F:/销售数据.txt", "a", encoding="UTF-8")  # 定义文件的操作对象,a 如果文件存在就追加元素,不存在就创建

# 定义查询sql
sql = "SELECT * FROM orders"

# 使用游标对象,执行SQL语句
curses.execute(sql)

# 获取查询结结果,:tuple  类型注解标记这个results变量是个元组(不是强制性的,只看给我们开发者自己看的)
results:tuple = curses.fetchall()

# 遍历results元组把数据保存到本地文件
for i in results:
    # 案例要求的数据格式是字典,这里把数据格式转换成字典:{'date:2011-02-28, order_id:7726afdc-c05e-4f4d-8f4d-376dc6d24522, money: 1920, province: 河南省'}
    dict_item = {f"date:{i[0]}, order_id:{i[1]}, money: {i[2]}, province: {i[3]}"}
    f.write(f'{dict_item}\n')  # write() 文件写入,这个写入方法要求的数据格式是字符串, \n 让文件内容换行

f.close()  # 关闭文件
# 关闭到数据库的链接
conn.close()

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第68张图片

从零开始的Python-SQL入门指南:学习数据分析的基础技能_第69张图片

你可能感兴趣的:(Python,sql,数据库,mysql)