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;(执行这一步才将授权成功)
        
    ```
  • 相关阅读:
    过拟合问题详解
    C++数据结构原理和经典问题求解--绪论
    centos系统 anaconda3(python3)安装pygrib
    pycharm激活教程
    如何查看电脑是几核几线程(网传方法有错误)
    深度学习过程
    VS2010 编译 boost thread库
    windows多线程编程
    matplotlib画条形图
    matplotlib画折线图,并以时间作为横轴
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/11042385.html
Copyright © 2011-2022 走看看