1、定义:对数据库表的一列或多列的值进行排序的一种结构(Btree方式)
  2、优点:加快数据检索速度
  3、缺点:占用物理存储空间;当对表中数据更新时,索引需要动态维护,降低数据维护速度
4、索引示例
      1、开启运行时间检测 :set profiling=1;
      2、执行查询语句
          select name from t1 where name="lucy99999";
      3、查看执行时间
          show profiles;
      4、在name字段创建索引
          create index name on t1(name);
      5、再执行查询语句
          select name from t1 where name="lucy88888";
      6、查看执行时间
          show profiles;
  5、索引
      1、普通索引(index)
          1、使用规则
              1、可设置多个字段
	  2、字段值无约束
	  3、key标志 :MUL
          2、创建index
              1、创建表时
	          create table 表名(...
	          index(字段名),index(字段名));
              2、已有表
	        create index 索引名 on 表名(字段名);
	        create index name on t3(name);
            3、查看索引
                1、desc 表名;  --> KEY标志为:MUL
	  2、show index from 表名\G;
          4、删除索引
              drop index 索引名 on 表名;
      2、唯一索引(unique)
          1、使用规则
              1、可设置多个字段
	  2、约束 :字段值不允许重复,但可为 NULL
	  3、KEY标志 :UNI
          2、创建
              1、创建表时创建
	          unique(字段名),
	          unique(字段名)
	  2、已有表
	      create unique index 索引名 on 表名(字段名);
            3、查看、删除 同 普通索引
      3、主键索引(primary key)
           自增长属性(auto_increment,配合主键一起使用)
          1、使用规则
              1、只能有一个主键字段
	  2、约束 :不允许重复,且不能为NULL
	  3、KEY标志 :PRI
	  4、通常设置记录编号字段id,能唯一锁定一条记录
          2、创建
              1、创建表时
	          (id int primary key auto_increment,
	          )auto_increment=10000;##设置自增长起始值
	          已有表添加自增长属性:
	            alter table 表名 modify id int auto_increment;
	          已有表重新指定起始值:
	            alter table 表名 auto_increment=20000;
	      2、已有表
	          alter table 表名 add primary key(id);
            3、删除
                1、删除自增长属性(modify)
                    alter table 表名 modify id int;
	        2、删除主键索引
	            alter table 表名 drop primary key;        
        4、外键索引
4、数据导入
  1、作用 :把文件系统的内容导入到数据库中
  2、语法
      load data infile "/var/lib/mysql-files/文件名"
      into table 表名
      fields terminated by "分隔符"
      lines terminated by "\n";
  3、将scoretable.csv文件导入到数据库的表中
      1、在数据库中创建对应的表
        create table scoretab(
        id int,
        name varchar(15),
        score float(5,2),
        number bigint,
        class char(7)
        );
    2、把文件拷贝到数据库的默认搜索路径中
        1、查看默认搜索路径
            show variables like "secure_file_priv";
            /var/lib/mysql-files/
        2、拷贝文件
           sudo cp ~/scoretable.csv /var/lib/mysql-files/
      3、执行数据导入语句
          load data infile "/var/lib/mysql-files/scoretable.csv"
          into table scoretab
          fields terminated by ","
          lines terminated by "\n";
      4、文件权限
           rwxrw-rw- 1 tarena tarena  scoretable.csv
                             所有者 所属组
           rwx : tarena用户
           rw- : 同组其他用户
           rw- : 其他组的其他用户(mysql用户)
       
           r -> 4
           w -> 2
           x -> 1
           chmod 644 文件名   rw-r--r--
      5、Excel表格如何转化为CSV文件
          1、打开Excel文件 -> 另存为 -> CSV(逗号分隔)
      6、更改文件编码格式
          1、用记事本/编辑器 打开,文件->另存为->选择编码
5、数据导出
  1、作用 
      将数据库中表的记录导出到系统文件里
  2、语法格式
      select ... from 表名
      into outfile "/var/lib/mysql-files/文件名"
      fields terminated by "分隔符"
      lines terminated by "\n";
  3、把MOSHOU库下的sanguo表英雄的姓名、攻击值、国家导出来,sanguo.txt
      select name,gongji,country from MOSHOU.sanguo
      into outfile "/var/lib/mysql-files/sanguo.txt"
      fields terminated by "   "
      lines terminated by "\n";
      $ sudo -i
      $ cd /var/lib/mysql-files/
      $ ls
      $ cat sanguo.txt
  4、将mysql库下的user表中 user、host两个字段的值导出到 user.txt
      select user,host from mysql.user 
      into outfile "/var/lib/mysql-files/user.txt" fields terminated by "   " 
      lines terminated by "\n";
原文:https://www.cnblogs.com/LXP-Never/p/9404611.html