昨日内容回顾
-
数据查询关键字
- where 后跟多种条件,支持逻辑运算符,支持模糊查找(使用like关键字)
- group by 按照指定字段对数据进行分组,可以使用聚合函数筛选数据
- having 对分组后的数据进行再次筛选
- distinct 筛选出指定字段中不重复的数据值
- order by 按照指定字段对数据进行排序,支持多条件筛选
- limit 展示指定数量的数据条目
- regexp 根据正则表达式筛选数据
-
多表查询思路
多表查询时,如果直接对多表的数据展示会得到表的笛卡尔积,手动指定对应关系可得到指定结果。
今日内容概要
- 多表查询的关键字
- SQL语句关键字补充
- 可视化软件Navicat
- 多表查询实操方式
- python操作MySQL
- pymysql常见方法
今日内容详细
多表查询的关键字
多表查询时需要实用join on关键字,常见的有:
select * from 表1 inner join 表2 on 表1.字段1=表2.字段2; # 拼接表1与表2,字段1与字段2对应
select * from 表1 left join 表2 on 表1.字段1=表2.字段2;
select * from 表1 right join 表2 on 表1.字段1=表2.字段2;
使用inner join会自动匹配两表共有的数据,舍弃其他数据,left/right join会以表1为基准匹配所有数据,表2中没有可对应的数据时,使用null填充。
SQL语句关键字补充
concat 连接多个字段,类似于字符拼接的join。
concat_ws 以同一字符连接多个字段。
add 添加新字段,after在已有字段后添加,first添加在表最开始。
change 替换字段,需要指定新字段的信息。
modify 改变现有字段的类型。
可视化软件Navicat
使用可视化软件进行MySQL数据库的操作,可以省去编写SQL代码的步骤,通过简单的鼠标操作实现编辑。
多表查询实操方式
需要使用多表查询时,使用以下方式查询:
- 明确多表之间的相互联系,然后筛选出需要操作的表;
- 根据查找的目标整理查询思路,分步操作。
python操作MySQL
python操作MySQL需要使用pymysql模块。
基本操作流程为:连接MySQL服务端→生成游标对象→发送SQL指令→接收处理结果
# 1.连接MySQL服务端
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
db='db4_03',
charset='utf8mb4'
)
# 2.产生游标对象
# cursor = conn.cursor() # 括号内不填写额外参数 数据是元组 指定性不强 [(),()]
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # [{},{}]
# 3.编写SQL语句
# sql = 'select * from teacher;'
sql = 'select * from score;'
# 4.发送SQL语句
affect_rows = cursor.execute(sql) # execute也有返回值 接收的是SQL语句影响的行数
print(affect_rows)
# 5.获取SQL语句执行之后的结果
res = cursor.fetchall()
print(res)
pymysql常见方法
1.获取数据
fetchall() 获取所有的结果
fetchone() 获取结果集的第一个数据
fetchmany() 获取指定数量的结果集
注意三者都有类似于文件光标移动的特性
cursor.scroll(1,'relative') # 基于当前位置往后移动
cursor.scroll(0,'absolute') # 基于数据的开头往后移动
2.增删改查
autocommit = True # 针对增 删 改 自动确认(直接配置)
conn. commit() # 针对 增 删 改 需要二次确认(代码确认)