Python day 44 :数据库的存储引擎/索引/权限管理

## 存储引擎

```python
分类:
    Innodb:
        1,默认版本5.5及以上
        2,支持事务
        3,不支持全文索引(MySQL 5.6 及以后的版本,MyISAM 和             InnoDB 存储引擎均支持全文索引;)
        4,索引和数据都是在同一个文件中: .ibd
          表的结构在.frm文件中
    MyIsam:
        1,默认版本在5.5以下
        2,不支持事务
        3,支持全文索引
        4,表结构:.frm
          表数据:.MYD
          表索引:.MYI
   全文所以插件:sphinx. 

```

## 索引



```python
作用: 加快查询的速度
类比: 新华字典的目录, 可以将索引理解成一个特殊的文件, 然后如果没有这个文件的话, 查询是从前到后查找数据的,如果有这个文件的话, 会按照一种特殊的数据结构(二叉树)查找数据
分类:
    主键索引: 加快查询 + 不能重复 + 不能为空  primary key
    唯一索引: 加快查询 + 不能重复   unique(列名)
    联合唯一索引: 加快查询 + 不能重复 unique(列名1,列名2)
    普通索引: 加快查询    index('列名')
主键索引创建:
      第一种:create table ti(id int auto_increment primary key,name varchar(32) not null default "")engine=Innodb charse=utf8;
    第二种:alter table t1 change id id int auto_increment primary key;
唯一索引创建:
    第一种:create table t1(id int auto_increment primary key,name varchar(32) not null default "",unique ix_name("name"))engine=Innodb charset=utf8;
    第二种:create unique index ix_name on t1(name)
    格式:create unique index 索引名称 on 表名 (列名)
普通索引创建:
    第一种:create table t1(in int auto_increment key,name varchar(32) not null default "",index ix_name("name"))engine=Innodb charset=utf8;
     第二种:create index ix_name on t1(name)
 索引的删除操作:
    drop index 索引名称 on 表名(列名);
    drop index ix_name on t1(name);
 
"索引的使用场景:使用频繁的列上加一个索引!

索引的使用:
    explain 工具
        :查看sql语句是否用得上索引,或者查看sql执行效率的工具
          给执行的SQL语句一个报告,通过次报告来判断sql语句的执行效率和效果
     SQL语句的规则:
        1,不建议使用like进行搜索  ...不使用索引
        2,组合索引最左前缀:
            如果组合索引为:(name,email)
            where name and email...   使用索引
             where name...             使用索引
             where email...              不适用索引
        3,函数,比如max/count(name)... 函数都不使用索引
慢日志查询(slow log):
    属于日志文件:记录了执行速度特别慢的SQL语句
    开启步骤:
        1,show variables like "%query%";
        2,set global long_query_time=0.5(设置慢查询时间)
        3,show_query_log=ON
        4,slow_query_log_file=E:\program\mysql-5.6.44-winx64\data\oldboy-slow.log
 普通日志:(general log):
        SQL审计(记录sql的每一条操作语句)
        show variables like "%general%";
        见下图:
        set global general_log = ON;
       
```

![general log](general log.png)

## 权限管理

```python
创建用户:
    create user "用户名"@"IP地址" identified by "密码";
    create user "pengsir"@"192.168.1.%" identified by"123"
    create user "pengsir"@"localhost" identified by"111"
    create user "pengsir"@"%" identifide by"222"
删除用户:
    drop user "用户名"@"IP地址";
修改用户:
    rename user "用户名"@"IP地址" to "新用户名"@"IP地址";
修改密码:
    set password for "用户名"@"IP地址" =Password("新密码")
授权:
    grant 权限 on 数据库.表 to "用户"@"IP地址";   
    grant select on db1.* to "pengsir"@"%";
       grant select on *.* to "pengsir"@"%";
    grant select,insert,delete on db1.* to "pengsir"@"%";
    最后:flush privileges;(执行这一步才将授权成功)
    
```

 

posted @ 2019-06-17 21:48  Python-Man  阅读(181)  评论(0编辑  收藏  举报