20200611题目

MYSQL

  1. 现有学生表如下:



    需求:
    用一条SQL 语句删除除了自动编号不同, 其他都相同的学生冗余信息

解题思路:参照Leetcode_SQL-简单-196-删除重复的电子邮箱
建表:

create table tb_student_score(自动编号 int,学号 int,姓名 varchar(20),课程编号 int,课程名称 varchar(20),分数 int);
insert into tb_student_score values(1,2005001,'张三',0001,'数学',69);
insert into tb_student_score values(2,2005002,'李四',0001,'数学',89);
insert into tb_student_score values(3,2005001,'张三',0001,'数学',69);

选择出重复的内容,且编号要保留较大的。

select a.*
from tb_student_score a, tb_student_score b
where a.学号=b.学号 and a.姓名=b.姓名 and a.课程编号=b.课程编号 and a.课程名称=b.课程名称 and a.分数=b.分数 and a.自动编号>b.自动编号;

将上面代码的select改为delete,对选中的重复内容进行删除
如果报错Error Code 1175,参考下面的文章
参考文章

delete a.*
from tb_student_score a, tb_student_score b
where a.学号=b.学号 and a.姓名=b.姓名 and a.课程编号=b.课程编号 and a.课程名称=b.课程名称 and a.分数=b.分数 and a.自动编号>b.自动编号;

查询结果

select * from tb_student_score;

2.现有一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛;



需求:
用一条sql 语句显示所有可能的比赛组合

建表:

create table team(name varchar(20));
insert into team values('a');
insert into team values('b');
insert into team values('c');
insert into team values('d');

先做一个自连接形成笛卡尔积,看看有多少种组合

select *
from team a, team b;

因为字母也可根据顺序比较大小,所以通过这一点来对数据进行筛选

select *
from team a, team b
where a.name

Python

1.理解DataFrame.reset_index 函数中 drop,append,inplace参数作用

创建一个DataFrame以便观察

df = pd.DataFrame(np.arange(20).reshape(5,4),index=[1,3,4,6,8])
df

先看看不设置参数的reset_index()

df.reset_index()

设置参数drop=True参数,可以发现之前的index没有作为一列添加到DataFrame中。因此drop=True的含义是重置索引,并将原来的索引舍弃,不作为一列添加在DataFrame中。

df.reset_index(drop=True)

我们在执行reset_index()后,再看看df,会发现df并没有发生变化,也就是说reset_index()没有生效。


但是当我们加上参数inplace=True时,发现reset_index()生效了。说明Inplace=True是指在原本的数据上进行修改,而不是返回一个新的数据。

df.reset_index(inplace=True)
df

关于append参数,在说明文档里搜索不到,自己也没有用到过。不是很明白。

2.现有两个DataFrame : df1,df2


如何将df2附加到df1的末尾

创建DataFrame

df1=pd.DataFrame({'a':[1,2,3,4],'b':[5,6,7,8]})
df2=pd.DataFrame({'a':[1,2,3],'b':[5,6,7]})

利用concat连接

pd.concat([df1,df2])

3.如何正确理解 if name == 'main'

name 是当前模块名,当模块被直接运行时模块名为 main 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行;当模块是被导入时,代码块不被运行。

4.for in range()的作用是什么?

for in range()的作用可以理解为对range()里的每一个元素进行遍历,即依次取出range()里的每一个元素。


关于range

操作题目

使用python读取excel数据,保存到mysql

总共三步:导包→读取→写入

#导入模块
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
#读取excel
content=pd.read_excel(r'C:\Users\admin\Desktop\pt_overall_sale_performance_1_vayne.xlsx')
#存入数据库
engine = create_engine("mysql://{}:{}@{}/{}?charset={}".format('用户名', '登录密码', '127.0.0.1:3306', '数据库名','字符编码'))
content.to_sql('pt_overall_sale_performance_1_vayne',con = engine,if_exists='append', index=False)

你可能感兴趣的:(20200611题目)