我的第二十一篇博客---Mysql强化及应用于python

Posted sll-csdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的第二十一篇博客---Mysql强化及应用于python相关的知识,希望对你有一定的参考价值。

使用python读取数据库:

 

from pymysql import connect
conn=connect(host=‘localhost‘,port=3306,database=‘数据库名‘,user=‘root‘,password=‘密码‘,charset=‘utf8‘)
#获取cursor对象
cur=conn.cursor()
#执行sql语句
sql="select *from stu"
cur.execute(sql)
#fetchall取多条数据
result=cur.fetchall()
#定义一个列表
list=[]
for i in result:
#定义一个字典来存放学生信息
dict={}
dict[‘name‘]=i[0]
dict[‘age‘]=i[1]
list.append(dict)
print(list)

 

sql语句强化:

求所有电脑产品的平均价格,并且保留两位小数:
select round(avg(price),2) avg_price from goods;

查询每种类型中最贵的信息
select *from goods
inner join
(
select name,max(price) as max_price from goods group by name
) as new
on new.name=goods.name and new.max_price=goods.price;

将分组结果写入到cate_goods数据表中
insert into cate_goods(name) select name from goods group by name;

同步表数据:
通过goods_cates数据表来更新goods表
update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;

语法:
要更新数据的表:a
根据aa表进行更新a表的数据
他这个应该只改了部分数据,id没改,name改了 则更新数据:
update a inner join aa on a.id=aa.id set a.name=aa.name;


创建表的同时插入数据:
create table aaa(
id int,
name varchar(10)
)
select id,name from a;
这样就把a表里的id,name的值插入到aaa表里了

三大范式:

第一范式:
原子性 (确保表中的每列都是一种信息)

第二范式:
确保表中的每列都和主键相关

第三范式:
确保每列都和主键列直接相关,而不是间接相关

 

删除数据的时候控制条件里用到子查询 而且是要删除的表时不能用
delete from student where class_id=1 and score=(select e.score from (select max(score) score from student) e));

 

 

当主键设有unsigned 时
再设外键时 也要有unsigned 不然添加不上

 

一个很好的事务处理系统,必须具备这些标准特性:
原子性:
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性

一致性:
数据库总是从一个一致性的状态转换到另一个一致性的状态。

隔离性:
通常来说,一个事务所做的修改在最终提交以前,

持久性

begin;
开始


commit;
结束
或者
rollback;
回滚

 

创建视图:
create view 视图名 as select ...;
删除视图:
drop view 视图名

 

查看索引
show index from 表名;

创建索引:
如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
字段类型如果不是字符串,可以不填写长度部分
create index 索引名称 on 表名(字段名称(长度))

删除索引:
drop index 索引名称 on 表名;

联合索引:
create index index_name_age on student(name,age);
单独用age的时候用不到索引
最左原则
查询时where 后条件有name的时候采用到了索引

create table q(
id int,
index(id)
);

 

修改引擎:
alter table s engine=InnoDB;

查看引擎:
show create table s;

创建表时修改引擎:
create table s(
id int
)engine=InnoDB;

以上是关于我的第二十一篇博客---Mysql强化及应用于python的主要内容,如果未能解决你的问题,请参考以下文章

C++从青铜到王者第二十一篇:哈希的应用之位图布隆过滤器

我的第二十篇博客---Mysql基本命令

Django 第二十一篇中介模型以及优化查询以及CBV模式

第二十一篇:Linux 操作系统中的进程结构

第二十一篇商城系统-服务熔断降级Sentinel

第二十一篇商城系统-服务熔断降级Sentinel