基于Python的数据库MySQL使用(阶段五)

一,数据库介绍

1.1什么是数据库

  • 数据库就是数据存储的库,作用就是组织并存储数据。通过库->表->数据,三个层级去管理数据。

1.2数据库和SQL关系

  • 数据库是用来存储数据的,在这个过程中,会涉及到,数据的增删改查等操作,而SQL语言就是对数据库,数据进行操作管理的工具。
  • 使用数据库软件去获得库->表->数据,三个层级,这种数据组织,存储的能力并借助SQL语言,完成对数据的增删改查等操作。

1.3数据库软件

  • 软件就是提供库->表->数据,这种数组组织形式的工具软件,也称之为数据库管理系统。
  • 常见的软件:Oracle,Mysql,Sql Server。

二,MySQL安装

  • 下载地址:MySql官网
    在这里插入图片描述
  • 一般选用离线安装包。

在这里插入图片描述

  • 运行安装包:List item
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三,MySQl软件入门使用

3.1命令提示符中使用MySQL

  • 打开命令提示符工具,输入:mysql -uroot -p,回车输入密码,进入命令行环境。
  • 常用SQL命令:
show databases 查看有哪些数据库
use 数据库名   使用某数据库
show tables    查看数据库有哪些表
exit           退出MySQL的命令环境

(1)进入mysql:
在这里插入图片描述
(2)查看自带的库
在这里插入图片描述

3.2使用图形化工具操作MySQL

  1. 使用命令提示符进行MySQL操作,不方便,可以使用mysql的图形化工具,如:DBeaver
  2. 下载地址:DBeaver官网在这里插入图片描述在这里插入图片描述
  3. 装好后打开
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

四,SQL基础与DDL

4.1SQL语言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 创建数据库:
create database test chartset utf8;
show databases;

在这里插入图片描述

  • 删除数据库

4.2SQL语言的分类

在这里插入图片描述
在这里插入图片描述

4.3DDL基础语法

在这里插入图片描述
引用黑马程序员课程课件
在这里插入图片描述

  • 查看表之前要先选中库:use 库名
--  DDL库管理操作
 use world;
 show tables;

在这里插入图片描述

  • 运行SQL程序是,需要运行那一句直接选中然后再点击运行
  • 创建表,表show出来:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • F5刷新:
    在这里插入图片描述
    在这里插入图片描述
  • 删除表
    在这里插入图片描述

五,SQL-DML

  • DML是数据操作语言,用来对数据库中的表数据进行操作。

5.1表的插入数据INSERT

  • 格式:
    在这里插入图片描述
    在这里插入图片描述
--  DDL库管理操作
create database Student;
use student;#使用student数据库
create table student(
 	id int,
 	name varchar(20),
 	age int
 );

insert into student(id) values (1001),(1002),(1003);
show tables ;

在这里插入图片描述

  • 当对表中所有列进行数据插入时,可以省略列名,直接给出values
insert into student values(1004,'周杰伦',25),(1005,'王力宏',28)

在这里插入图片描述
在这里插入图片描述

5.2表数据删除DELETE

在这里插入图片描述

delete from student where name ='王力宏';
delete from student where age =25;
delete from student ;#删除表中所有数据

5.3表的数据更新UPDATA

在这里插入图片描述

六,SQL-DQL

6.1基础查询

在这里插入图片描述
在这里插入图片描述

6.2分组聚合

  • 使用Group by 参考值进行分组
  • Group by 后面出现了哪个列,哪个列才能出现在前面SELECT的非聚合中。
  • select IDname,age from student group by name,age;
    ID没有在group by后面出现,所以前面不能这样写。
    在这里插入图片描述在这里插入图片描述

6.3排序分页

在这里插入图片描述
在这里插入图片描述

  • 由于数据太多可以控制显示的数据量,或分页。
  • limit n,m;表示从第n+1条语句开始,取m条数据。
    在这里插入图片描述
    总结:
    在这里插入图片描述

七,python&MySQL

7.1第三方库安装

  1. 第三方库pymysql安装
    在这里插入图片描述
    在这里插入图片描述

7.2 在pycharm中用python语言链接数据库

from pymysql import Connection
#获取数据库连接对象
conn=Connection(
    host='localhost',#主机名(ip地址)
    port=3306,#端口号
    user='root',
    password='123456'

)
#打印mysql数据库软件信息
print(conn.get_server_info())
#关闭数据库的连接
conn.close()

在这里插入图片描述

7.3非查询语句,创建库,表等

  1. 创建表 test_pymysql
# # 执行非查询性质SQL
cursor = conn.cursor()      # 获取到游标对象
# # 选择数据库
conn.select_db("student")
# # 执行sql
cursor.execute("create table test_pymysql(id int);")#最后的分号可以不写

在这里插入图片描述

7.4查询语句

在这里插入图片描述

cursor.execute("select * from test_pymysql")
result:tuple=cursor.fetchall()#注解返回的元组类型
print(result)

返回值是元组嵌套:
在这里插入图片描述

for re in result:
    print(re)

在这里插入图片描述

7.5python执行SQL语句插入数据到MySQL

  1. 手动提交修改的数据
    在这里插入图片描述
#插入数据到新表
#cursor.execute("create table test_pymysql2(id int,name varchar(255),age int);")#创建新表
cursor.execute("insert into test_pymysql2 values(1001,'周杰伦',25)")
#通过commit确认
conn.commit()
conn.close()

在这里插入图片描述
2. 自动提交
在这里插入图片描述
3. 总体代码:

#导包
from pymysql import Connection
#获取数据库连接对象
conn=Connection(
    host='localhost',#主机名(ip地址)
    port=3306,#端口号
    user='root',
    password='123456',
    autocommit=True#自动提交

)
#打印mysql数据库软件信息
# print(conn.get_server_info())


# # 执行非查询性质SQL
cursor = conn.cursor()      # 获取到游标对象
# # 选择数据库
conn.select_db("student")
# # 执行sql
#cursor.execute("create table test_pymysql(id int);")#最后的分号可以不写
# cursor.execute("select * from test_pymysql")
# result:tuple=cursor.fetchall()
# for re in result:
#     print(re)
# # 关闭链接

#插入数据到新表
#cursor.execute("create table test_pymysql2(id int,name varchar(255),age int);")#创建新表
cursor.execute("insert into test_pymysql2 values(1002,'林俊杰',28)")
#通过commit确认
# conn.commit()
conn.close()

八,综合案例

  1. 案例需求:
    在这里插入图片描述
    数据格式:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 数据库创建py_sql数据库用来存数据
create database py_sql charset utf8;#创建库

use py_sql;#使用库

#创建表
create table orders(
order_data date,
order_id varchar(255),
money int,
order_province varchar(10));

在这里插入图片描述

  • 实现步骤:

在这里插入图片描述

  • pycharm中操作
  • 读取文件并编辑数据到同一个list中的操作步骤与面向对象章节中操作一样,创建三个文件在这里插入图片描述
  • data_file.py
"""数据封装类"""
class Record:#用来记录数据的基本信息,封装数据到此类中

    def __init__(self,date,order_id,money,province):
        self.date = date  # 日期
        self.order_id = order_id  # 订单号
        self.money = money  # 销售额
        self. province = province  # 省份
    def __str__(self):#防止文件类中返回值类型是Record对象地址
        return f"{self.date},{self.order_id},{self.money},{self.province}"
  • file_define.py
#和文件相关的类
#定义一个抽象类,确定需要哪些功能
import json
from data_define import Record

class FileReader:#抽象类
    """读取文件数据并将读取的数据转换成Record对象 ,将他们封装在list内返回即可"""
    def file_reader(self)->list[Record]:
        pass

#处理文本数据
class TextFileReader(FileReader):
    def __init__(self,path):#定义变量记录文件路径
        self.path=path

    #复写父类方法
    def file_reader(self) ->list[Record]:
        f=open(self.path,"r",encoding="utf-8")

        record_list:list[Record]=[]
        for line in f.readlines():
            line=line.strip()#读到的line中自带换行符,要去掉
            datalist=line.split(",")#以逗号分割
            record=Record(datalist[0],datalist[1],int(datalist[2]),datalist[3])
            record_list.append(record)
        f.close()
        return record_list

#Json文件处理
class JsonFileReader(TextFileReader):
    def __init__(self, path):  # 定义变量记录文件路径
        self.path = path
    # 复写父类方法

    def file_reader(self) -> list[Record]:
        f = open(self.path, "r", encoding="utf-8")
        record_list: list[Record] = []
        for line in f.readlines():

          data_dict=json.loads(line)#将JSON数据装换为字典

          record=Record(data_dict["date"],data_dict["order_id"],int(data_dict["money"]),data_dict["province"])
          record_list.append(record)
        f.close()
        return record_list

if __name__ == '__main__':
    # text=TextFileReader("F:\Python学习资料\第13章资料/2011年1月销售数据.txt")
    json_file=JsonFileReader("F:\Python学习资料\第13章资料/2011年2月销售数据JSON.txt")

    # list1= text.file_reader()
    list2=json_file.file_reader()
    for l in list2:
        print(l)
  • main.py
#计算每日的销售额(以面向对象的思想)

#2封装数据对象,设计数据封装类data_define


from file_define import TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
#控制一些可选选项显示
from pyecharts.options import *
#主题类型包
from pyecharts.globals import ThemeType

#1读取数据,设计FileReader类
#创建两个类对象
text_file=TextFileReader("F:\Python学习资料\第13章资料/2011年1月销售数据.txt")
json_file=JsonFileReader("F:\Python学习资料\第13章资料/2011年2月销售数据JSON.txt")

#读取一二月数据
Jan_data:list[Record]=text_file.file_reader()
Feb_data:list[Record]=json_file.file_reader()

#此时两个月份数据格式一样,可以合并为一个list存放
all_data:list[Record]=Jan_data+Feb_data

#print(all_data)

  • 在main.py文件内添加数据库操作
#print(all_data)
#获取数据库连接对象
conn=Connection(
    host='localhost',#主机名(ip地址)
    port=3306,#端口号
    user='root',
    password='123456',
    autocommit=True#自动提交

)
# # 执行非查询性质SQL
cursor = conn.cursor()      # 获取到游标对象
# # 选择数据库
conn.select_db("py_sql")
#组织SQL语句
for record in all_data:
    sql=f"insert into orders(order_date,order_id,money,province) values ('{record.date}','{record.order_id}',{record.money},'{record.province}')"
    print(sql)
    # 执行SQL语句
    cursor.execute(sql)
#关闭数据库链接
conn.close()

在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒今天想展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值