MySQL高级

数据库用户

grant 权限列表 on 数据库 to '用户名‘@’访问主机‘ indentified by ’密码'

新版本8.0创建用户: create user '用户名‘@’地址‘ indentified by ’密码'

授权操作:grant 权限 on 数据库 to '用户名’ @'ip地址‘

*.*表示所有数据库的所有表  with grant option表示它具有grant权限,可以创建用户

如果分配所有权限需要用 all privileges

flush privileges 标识让赋予的权限立即生效

事务

处理数据量大 数据复杂度高的事件

事务也称为工作单元,是有一个或者多个SQL语句所组成的操作序列,这些SQL语句作为一个完整的工作单元,要么全部执行成功,要么全部执行失败,在数据库中通过事务来保证数据的一致性。

事务处理语言TPL 主要用来度组成事务的DML语句的操作结果进行确认或取消,确认是使DML操作生效,使用提交COMMIT命令实现,取消是使DML操作失效,使用回滚ROLLBACK命令实现

通过事务的使用防止数据库中出现数据不一致现象。

MySQL支持事务 内部使用Innodb引擎支持ACID事务 支持行级锁

事务的特性:ACID 原子性  一致性  隔离性 持久性

手动提交事务 begin开启事务 commit提交 rollback回滚事务

默认自动提交,可以通过set autocommit =0 禁止自动提交  自动提交没有begin也将每一条sql语句都当做一条事务自动提交

set autocommit =0 禁止自动提交后 直到用commit或者rollback才会完成事务操作开启新的事务

隐式提交 当下列任意一种情况发生时,执行一个DDL (create alter drop truncate rename)

执行一个DCL语句(grant revoke)

隐式回滚: 下列任意一种情况发生时 客户端强行退出 客户端链接到服务器端异常中断 系统崩溃

视图:是一张虚拟的表,可以当做一张表来做查询等

这个表的数据结构和数据是由select语句来指定的,不会生成生成的文件吗,本质上就是对查询的封装

使用场景: 某个查询结果出现的非常频繁,经常用着查询结果来做子查询,此时可以用视图,用户可以将注意力集中在所关心的数据上。

构建一个数据镜像,把数据映射到这张虚拟的表里面

保密的诉求

创建视图 : create view 视图名称 as select语句

索引

建立索引优化查询速度 好比一个目录

常见的索引:主键索引 唯一索引 普通索引 全文索引 组合索引

PRIMARY KEY 主键索引

alter table 表名 add primary key(列名)一种特殊的唯一索引,不允许有空值

unique 唯一索引

INDEX 普通索引

FULLTEXT全文索引

存储过程

是一条或者多条SQL语句的集合,可以视为批处理

delimiter //

create procedure 存储过程名称(参数列表)

begin

sql 语句

end

//

delimiter;

delimiter 用于设置sql语句分隔符,默认为分好

所有存储过程和函数都存储在mysql数据库下的proc表中

show PROCEDURE STATUS;

CALL调用存储过程 

存储过程中的变量 DECLARE 声明变量

有IF ELSE结构 WHILE循环

CONCAT 拼接两个字符串

函数

内置函数 字符串函数

ascii 查询ascii码值

length concat 

截取字符串 left right substring 

创建自定义函数 

delimiter  $$

create function 函数名称(参数列表) returns 返回类型

begin 

sql语句

end 

$$

delimiter;

调用函数

select 函数名(参数)

python 操作数据库


conn = connect(host='127.0.0.1', user='root', password='mysql', database='python', charset='utf8')



cur = conn.cursor() # cursor对象用于sql语句执行


创建连接对象 游标对象