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语句执行
 
创建连接对象 游标对象
 
 
                     
            
        













 
                    

 
                 
                    