赞
踩
黑马程序员MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程_哔哩哔哩_bilibili
下载地址:https://downloads.mysql.com/archives/installer
我个人更喜欢用Navicat:百度网盘 请输入提取码
这些命令行语句一样可以使用Navicat运行
- -- show databases # 查看有哪些数据库
- -- use mysql # 指定使用某个数据库
- show tables # 查看数据库内有哪些表
下载地址:https://dbeaver.io/download
演示:SQL的基本语句用法 搜索:INSERT
演示: SQL的基本语句用法 搜索:DELETE
演示: SQL的基本语句用法 搜索:UPDATE
演示: SQL的基本语句用法 搜索:SELECT
演示: SQL的基本语句用法 搜索:WHERE
准备一个数据表,随便写点数据
- -- 按照性别分组,并计算每组的平均值
- SELECT gender as 姓别,avg(age) as 平均年龄 ,SUM(age) as 年龄的和,MIN(age) as 最小年龄,MAX(age) as 最大年龄,COUNT(id) as 行数(数量) FROM student GROUP BY gender
- -- 按照年龄进行升序排序 (默认就是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
- -- 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;
pip install pymysql
- """
- 演示创建到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()
- """
- 演示创建到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()
- """
- 演示创建到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()
代码提交后到数据库中查看结果
autocommit=True # 设置自动提交
- CREATE TABLE orders(
- order_date DATE, # 存储日期字段
- order_id VARCHAR(255), # 存储订单编号
- money INT, # 销售金额
- province VARCHAR(10) # 省份
- );
将 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()
查看数据库
- 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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。