zoukankan      html  css  js  c++  java
  • 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:programmysql-5.6.44-winx64dataoldboy-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;(执行这一步才将授权成功)
        
    ```
  • 相关阅读:
    JavaScript模态对话框类
    事件模块的演变(1)
    html5中可通过document.head获取head元素
    How to search for just a specific file type in Visual Studio code?
    What do 'lazy' and 'greedy' mean in the context of regular expressions?
    正则非获取匹配 Lookahead and Lookbehind ZeroLength Assertions
    regex length 正则长度问题
    Inversion of Control vs Dependency Injection
    How to return View with QueryString in ASP.NET MVC 2?
    今天才发现Google Reader
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/11042385.html
Copyright © 2011-2022 走看看