我的第二十一篇博客---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的主要内容,如果未能解决你的问题,请参考以下文章