【查漏补缺】Python数据库高阶:事务、索引、账户管理241~260

241.事务的四大特性ACID:atomicity原子性(不可再分割)、consistency一致性、isolation隔离性(相当于谁先抢到谁加锁,只有释放锁后其他才能处理)、durability持久性(一旦事务提交,将真正地持久化存在数据库了)。

242.使用Python代码操作MySQL的增删改时,因为必须要commit,即:默认开启了事务。

243.Window黑窗口、Mac终端中操作数据表,默认每一行增删改语句都是自成事务。查询不涉及更新数据,无所谓事务不事务。

244.索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),索引包含着对数据表里所有记录的引用指针。说白了就是,数据库索引好比生活中一本书前面的目录,能加快数据库的查找速度。

数据库中的索引思想,好比C语言的指针思想。

245.开启运行时间监测,SQL语句:set profiling=1;
...
查看执行的耗时:show profiles;

246.创建索引:create index 索引名 on 表名(字段名)或者当被创建索引的字段为字符类型时,例如为字段name varchar(20)创建索引,则通常指定字段的字符的最大长度,书写格式为:create index 索引名 on 表名(name(20)),其他类型的则不用指定。

247.索引通常数据量越大,效果也更明显。例如:10万条数据时,用索引比不用索引,查询效率就已提高了2个数量级。

248.索引原理:通过不断缩小想要的数据的查找范围来最终筛选出目标数据,同时把随机查找变成顺序查找,也就是总是通过同一种方式锁定目标数据。

249.索引是一种特殊的文件,一般一个索引只关联着一张数据表的一个字段。对同一张数据表的其他未有索引的字段进行查询,这个已有的索引是起不到任何优化作用的。说白了就是,只有用已建立索引的字段进行查询,索引才会发挥作用。

250.查看一张表中已有的索引:show index from 表名;

251.删除索引:drop 索引名 on 表名;

252.只有对数据表中非常常用的字段建立索引,并不是对每个字段都建立索引的。因为一张表中索引建立太多,反过来是会影响数据更新速度的,每次更新数据都要更新索引,对更新数据效率不利。另外,索引也是会占用内存空间的。

253.默认情况下,一张表的主键、外键在创建表时,都自动建立了索引。也就是,使用一张表的主键或外键查询时,比没有建立索引的字段去查询速度会高很多。

254.创建索引的底层是用C实现的,很多涉及到效率的优化,大多都是用C实现的。

255.创建账户并对某数据表授权:grant 权限列表 on 数据库名.数据表 to '用户名'@'用户主机' identified by '密码';

说明:权限列表,如让账户只有查询权限,则写:select;如果让账户具有所有权限,则写:all privileges

如果直接对某数据库创建账户并授权,则用数据库名.*即可。

'用户主机' 可以设置为'localhost' 或者具体的IP。如果想要任一台电脑都可访问,则写%即可。

256.修改某账户的权限:grant 权限列表 on 数据库名.数据表 to '用户名'@'用户主机' with grant option;

修改后一定记得刷新一下权限:flush privileges;

257.删除账户方式有二,第一种root登录后直接去删除:drop user '用户名'@'用户主机';

第二种是去账户数据表中删除账户:delete from user where user='账户名';

删除后一定记得刷新一下权限:flush privileges;

你可能感兴趣的:(【查漏补缺】Python数据库高阶:事务、索引、账户管理241~260)