码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-05-26 16:17:50      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:fetch   ble   base   信息   signed   print   主键   sele   查询   

使用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

标签:fetch   ble   base   信息   signed   print   主键   sele   查询   

原文地址:https://www.cnblogs.com/sll-csdn/p/10926044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!