加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql索引概论

发布时间:2022-07-04 18:34:06 所属栏目:MySql教程 来源:互联网
导读:Mysql索引概述 索引介绍 索引是对记录集的多个字段进行排序的方法。 类似于书的目录 索引类型包括:Btree,B+tree,hash 索引优缺点 索引优点-通过创建唯一性索引,可以保证数据库中每一行数据的唯一性-可以加快数据的检索速度 索引缺点-当对表中的数据进行
  Mysql索引概述
 
  索引介绍
 
  索引是对记录集的多个字段进行排序的方法。
  类似于书的目录
  索引类型包括:Btree,B+tree,hash
  索引优缺点
 
   索引优点-通过创建唯一性索引,可以保证数据库中每一行数据的唯一性-可以加快数据的检索速度
  索引缺点-当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,降低数据的维护速度-索引需要占物理空间
  MySQL键值类型
 Mysql索引概论
  键值类型
 
  INDEX:普通索引
  UNIQUE: 唯一索引
  FULLTEXT: 全文索引
  PRIMARY KEY: 主键
  POREIGN KEY: 外键
  INDEX普通索引
 
  基本概念-一个表中只能有一个primary key 字段-对应的字段值不允许有重复,且不允许赋NULL值-如果有多个字段都作为primary key,称为复合主键,必须一起创建-主键字段的KEY标志是PRI-通常与AUTO_INCREMENT 连用-经常把表中能够唯一标识记录的字段设置为主键字段【记录编号字段】
  建表的时候指定主键字段-primary key(字段名)
  mysql> create table test2(
      -> id int(3) auto_increment,
      -> name varchar(4) not null,
      -> age int(2) not null,
      -> primary key(id)
      -> );
  Query OK, 0 rows affected (0.05 sec)
  mysql> desc test2;
  +-------+------------+------+-----+---------+----------------+
  | Field | Type       | Null | Key | Default | Extra          |
  +-------+------------+------+-----+---------+----------------+
  | id    | int(3)     | NO   | PRI | NULL    | auto_increment |
  | name  | varchar(4) | NO   |     | NULL    |                |
  | age   | int(2)     | NO   |     | NULL    |                |
  +-------+------------+------+-----+---------+----------------+
  3 rows in set (0.00 sec
  在已有的表中设置primary key字段-alter table 表名 add primary key(字段名);
  mysql> desc test2;
  +-------+------------+------+-----+---------+-------+
  | Field | Type       | Null | Key | Default | Extra |
  +-------+------------+------+-----+---------+-------+
  | id    | int(3)     | NO   |     | NULL    |       |
  | name  | varchar(4) | NO   |     | NULL    |       |
  | age   | int(2)     | NO   |     | NULL    |       |
  +-------+------------+------+-----+---------+-------+
  3 rows in set (0.01 sec)
  mysql> alter table test2 add primary key(name);
  Query OK, 0 rows affected (0.05 sec)
  Records: 0  Duplicates: 0  Warnings: 0
  mysql> desc test2;
  +-------+------------+------+-----+---------+-------+
  | Field | Type       | Null | Key | Default | Extra |
  +-------+------------+------+-----+---------+-------+
  | id    | int(3)     | NO   |     | NULL    |       |
  | name  | varchar(4) | NO   | PRI | NULL    |       |
  | age   | int(2)     | NO   |     | NULL    |       |
  +-------+------------+------+-----+---------+-------+
  3 rows in set (0.00 sec)
  移除表中的PRIMARY KEY字段-alter table 表名 drop primary key;(如果有auto_increment则需要先移除再移除主键,移除auto_incrememt为对该字段type重新赋值)
  ysql> desc test2;
  +-------+------------+------+-----+---------+-------+
  | Field | Type       | Null | Key | Default | Extra |
  +-------+------------+------+-----+---------+-------+
  | id    | int(3)     | NO   | PRI | NULL    |       |
  | name  | varchar(4) | NO   |     | NULL    |       |
  | age   | int(2)     | NO   |     | NULL    |       |
  +-------+------------+------+-----+---------+-------+
  3 rows in set (0.00 sec)
  mysql> alter table test2 drop primary key;
  Query OK, 0 rows affected (0.31 sec)
  Records: 0  Duplicates: 0  Warnings: 0
  mysql> desc test2;
  +-------+------------+------+-----+---------+-------+
  | Field | Type       | Null | Key | Default | Extra |
  +-------+------------+------+-----+---------+-------+
  | id    | int(3)     | NO   |     | NULL    |       |
  | name  | varchar(4) | NO   |     | NULL    |       |
  | age   | int(2)     | NO   |     | NULL    |       |
  +-------+------------+------+-----+---------+-------+
  3 rows in set (0.01 sec)
  foreign key 外键
 
  基本概念-让当前表字段的值在另一个表中字段值得范围内选择。
  使用外键的条件-表的存储引擎必须是innodb-字段类型要一致-被参照字段必须要是索引类型的一种(primary key)。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读