影刀高级-数据库入门
一、数据库简介
MySQL、Redis、Oracle属于DBMS,SQL是编程语言。
非关系型数据库储存文档。
二、安装MySQL
1. 下载地址
https://dev.mysql.com/downloads/windows/installer/
2. 安装
设置默认密码,环境变量,自带客户端能运行。
自带数据库存储自身配置信息,权限信息,
3.输命令
以;作为语句结尾,中间可以隔空行。
不分大小写。
4. 安装DBeaver
地址:https://dbeaver.io/download/
5.远程服务器和局域网连接
先不管了,都用宝塔。
三、SQL基本语法
1. 用到表格
https://www.xinyizhishu.top/yingdaoC/movie.csv
2. 数据表设置
3.查询
distinct对所有列生效,只有两列都一致才算重复数据。
多列排序:
从第4行开始,取5条数据:
与或非:
between包含边界值:
%通配符:
一个下划线代表一个长度:
函数:
查找有顺序,先where,再order by,最后limit。
4.增加数据
批量插入:
设置非空、默认值:
5.更新数据
批量更新:
设为空值:
6.删除数据
批量删除:
批量删除列:
清空表:
删除表:
7.创建表
创建表:必须用ctrl+enter,运行没反应。
四、影刀操作MySQL
1. 驱动下载地址:
dev.mysql.com/downloads/connector/odbc/
2. 用到表格
https://www.xinyizhishu.top/yingdaoC/excel数据.xlsx
3.表格内容
4. ODBC
好像有很多细节。
5.数据库扩展操作
为何前面5行会有空数据
五、实战
1. 网址
http://www.boxofficecn.com/boxofficecn
2. 爬取数据
3. 写入数据库
python代码段:
搞了好久,费时费力。查了很久才发现有一个票房数据有一个,号,导致转换不成数字,用各种清除空值也去不掉,数据库导入不成功,用正则替换掉才行。分段都导入了。
import pandas as pd
df =pd.DataFrame(datatable,columns=datatable.pop(0))
print(f"原始行数: {len(df)}")
#df_cleaned = df.drop_duplicates(keep='first')
df = df[~(df['序列'] == '序列')]
print(f"清洗后行数: {len(df)}")
# 2. 筛选出“序列”不等于空字符串 且 不等于 'nan' 的行
df = df[(df['序列'] != '') & (df['序列'] != 'nan')]
print(f"清洗后行数: {len(df)}")
df['票房(万元)'] = df['票房(万元)'].str.replace(r'(\d),(\d)', r'\1.\2', regex=True)
df["票房"]= df["票房(万元)"].str.extract(r"^(\d+(.\d+)?)")[0]
df=df[df["票房"].notna()]
print(f"清洗后行数: {len(df)}")
df['票房'] = pd.to_numeric(df['票房'], errors='coerce')
df['年份'] = pd.to_numeric(df['年份'], errors='coerce')
df = df.replace({'nan': None, 'NaN': None})
df = df.where(pd.notnull(df), None)
df=df[df["年份"].notna()]
df=df[df["电影"].notna()]
# 2. 文本列:把 NaN 变成空字符串,防止出现 None
text_cols = df.select_dtypes(include=['object']).columns
df[text_cols] = df[text_cols].fillna('')
df=df.drop(columns=["序列","票房(万元)"])
df = df[(df['年份'] != '') & (df['年份'] != 'nan')]
print(f"年份清洗后行数: {len(df)}")
df = df[(df['电影'] != '') & (df['电影'] != 'nan')]
print(f"电影清洗后行数: {len(df)}")
datatable=df.values.tolist()[3000:]4.查询数据
执行结果:
[[2025, '哪吒之魔童闹海', 1544600.0], [2021, '长津湖', 577136.0], [2017, '战狼2', 567869.0], [2021, '你好,李焕英', 541330.0], [2019, '哪吒之魔童降世', 500113.0], [2019, '流浪地球', 467463.0], [2023, '满江红', 454438.0], [2021, '唐人街探案3', 452234.0], [2026, '飞驰人生3', 440492.0], [2025, '疯狂动物城2', 432110.0]]






























