• day 44 数据库的补充,权限


                                                                                      数据库中的常见引擎,索引,慢日志,用户权限的设置

    数据库中的常见引擎 :

    有三种常见储存引擎:

          innodb :         

                1.(默认版本包含5.5)
                2.支持事务
                3.不支持全文索引
                4.索引和数据都是在同一个文件中, .ibd表的结构实在.frm文件中

          mylsam;

                1.(默认版本5.5以下 5.3)
        2.不支持事务
        3.支持全文索引
                4..frm: 表结构
           .MYD: 表数据
        .MYI: 表索引

          memory:           

                 全文索引: sphinx

    索引的目的就是为了加速查询速度:

    索引:

         数据库中的索引有三种

             1,主键索引:

                    作用是:便于数据查找,不能为空,不能重复, primary key

             2,唯一索引:

                       作用: 加快数据的查找速度,不能重复,可以为空,unique(列名)

                       联合唯一索引:加快查询 + 不能重复 unique(列名1,列名2)

             3,普通索引:

                       作用: 加快查询 index(列名)

        创建主键索引的方法:

             1.创建表的时候创建主键:

    create table t1(
       id int auto_increment primary key, # 创建主键
       name char(12) not null default ' '
    )engine=innodb charset=utf8

            2,表已经存在了,创建主键

    #表已经存在创建主键
    alter table t1 change  id id int auto_increment primary key;

        创建唯一索引的方法:

              1,创建表的时候创建唯一索引:

    #创建唯一索引
    #可在创建表的时候直接在需要创建唯一索引的属性后面添加unique
    #第一种方式
     create table t1(
       id  int auto_increment primary key,
       name char(12) not null default ' ' unique
    )
    #第二种方式,在创建表时在最后的属性后面添加unique ix_name (属性名)
    create table t1(
       id int auto_increment primary key ,
       name char(12) not null default '',
       unique ix_name (name)
    )engine=innodb charset=utf8
    #创建联合唯一属性
    create table t1(
       id int auto_increment primary key,
       name char(12) not null default ' ',
       age int not null,
       unique ix_name_age (name,age)
    )engine=innodb charset=utf8

              2,表已经存在了,创建唯一索引:

        

    #表已经存在了,需要添加唯一索引
    create unique index ix_name on t1 (name);
    #表已经存在了,创建联合唯一索引
    create unique index ix_name_age on t4 (name,age) 

        创建普通索引的方法:

             1,表已经存在,需要创建普通索引:

    #表已经存在,创建普通索引
    create index ix_age on t1 (age); 

            2,在创建表的时候创建普通索引    

    #在创建表的时候创建普通索引
    create table t1(
         id int  auto_increment primary key,
         name char(32) not null default '',
         age int not null 
         index ix_age(age)
    ) engine=innodb charset=utf8

        删除索引: 

    #drop index (索引名称) on (表名称)
    #实例: drop index ix_age on t1

    索引的使用:
        explain 工具
           查看sql语句是否用的上索引, 或者查看sql执行效率的工具
           给执行的SQL语句出一个报告, 通过此报告来判断sql语句的执行效率和效果
    ES (elasticsearch )
    SQL语句的规则:
      - 不建议使用 like 进行搜索
      - 组合索引最左前缀
      如果组合索引为:(name,email)
      where name and email   -- 使用索引
      where name        -- 使用索引
      where email        -- 不使用索引

    慢日志:

        记录执行速度特别慢的sql语句.

        开启mysql 中的慢日志步骤:

          1, show variables like '%query%'; (查看慢日志的状态是什么样的)

          2,set global long_query_time = 1 (设置慢查询的时间,超过这个时间就是比较慢的sql语句)

         3,set global slow_query_log = 'ON' (开启慢日志,默认为OFF)

         4,slow_query_log_file  = D:MySQLpmysql-5.6.44-winx64dataochen-PC-slow.log (这是一个文件,存放哪些速度比较慢的sql语句)

       关闭慢日志:

           set global slow_query_log = 'OFF';

    普通日志记录; 开启普通日志记录后,我们在数据库中操作的每一条sql都会记录下来

       show variables like '%general%'; (查看普通日志记录是什么状态)

      +------------------+------------------------------------------------+------------------------+
      | Variable_name | Value                                                                             |                                        
      +------------------+------------------------------------------------+------------------------+
      | general_log | ON                                                                                      |
      | general_log_file   |  D:MySQLpmysql-5.6.44-winx64dataochen-PC.log 
      +------------------+------------------------------------------------+------------------------+

       开启普通日志记录:

       set  global  general_log  = 'ON';(开启普通日志记录)

       general_log_file  (是存放日志文件路文件路径)

       关闭普通日志文件:

       set  global  general_log = 'OFF' ( 关闭普通日志文件)

    权限管理:

      

    创建用户 
        create user '用户名'@'IP地址' identified by '密码';
        creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
        creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
        create user 'zekai'@'%' identified by '123qwe';
    
      删除用户
        drop user '用户名'@'IP地址';
      修改用户
        rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
    
      修改密码
        set password for '用户名'@'IP地址' = Password('新密码')
    
      授权:
        grant 权限 on 数据库.表 to '用户'@'IP地址'     -- 授权
    
        grant select on db1.* to 'zekai'@'%';
        grant select on *.* to 'zekai'@'%';
        grant select, insert, delete on db1.* to 'zekai'@'%';

    需要记住的是:

              flush privileges; (刷新缓存,用于数据库中修改某一个值时候进行操作)

  • 相关阅读:
    63. Unique Paths II(中等, 能独立做出来的DP类第二个题^^)
    3.2 2-dim Vector Initialization
    62. Unique Paths(中等,我自己解出的第一道 DP 题^^)
    漫画:什么是动态规划?
    120. Triangle(中等)
    128. Longest Consecutive Sequence
    80. Remove Duplicates from Sorted Array II
    81. Search in Rotated Sorted Array II (中等)
    59. Spiral Matrix II(中等,同54题)
    spring cloud
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/11040162.html
Copyright © 2020-2023  润新知