MYSQL 创建索引

打印 上一主题 下一主题

主题 980|帖子 980|积分 2940

目录
自动索引
手动创建
主键索引
唯一索引
普通索引
创建复合索引
查看索引
删除主键


 

自动索引

假如我们为一张表添加主键约束、外键约束、唯一约束时,MYSQL会为对应的列自动创建一个索引。假如不指定任何约束时,MYSQL会自动为每一列生成一个索引并用ROW_ID举行标识。
手动创建

主键索引

主键索引有三种创建方式,分别是:
1.创建表时创建主键
  1. -- 创建表的时候指定主键
  2. create table t_pk1(
  3. id bigint PRIMARY KEY auto_increment,
  4. name varchar(20)
  5. );
  6. desc t_pk1;
复制代码

   desc t_pk1 是查看 t_pk1表的索引信息 
  2.创建表时单独指定主键列 
  1. create table t_pk(
  2. id bigint  auto_increment,
  3. name varchar(20),
  4. PRIMARY KEY(id)
  5. );
  6. desc t_pk;
复制代码

3.修改表中的列为主键索引
  1. create table t_pk2(
  2. id bigint,  
  3. name varchar(20)
  4. );
  5. alter table t_pk2 add primary key (id);
  6. alter table t_pk2 modify id bigint auto_increment;
  7. desc t_pk2;
复制代码
这是未添加之前的,每一列的信息
 这是添加之后的,

唯一索引

创建唯一索引的方式有三种,和上面添加主键索引大致上是相同的,故只给出对应的代码部分。
1.创建表时创建唯一键
  1. create table t_uk(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique
  4. );
  5. desc t_uk;
复制代码
 2.创建表时单独指定唯一列
  1. create table t_uk1(
  2. id bigint primary key auto_increment,
  3. name varchar(20),
  4. unique (name)
  5. );
  6. desc t_uk1;
复制代码
3.修改表中的列为唯一索引
  1. create table t_uk2(
  2. id bigint primary key auto_increment,
  3. name varchar(20)
  4. );
  5. alter table t_uk2 add unique (name);
  6. desc t_uk2;
复制代码
普通索引

创建机遇有:

  • 创建表时,明白知道某些列频繁查询
  • 随着业务不断发展,在版本迭代过程中添加索引
我们也可在MYSQL中查看索引信息
  1. show index from t_pk1;
复制代码

 普通索引的三种创建方式和上面两种差不多,不过还是有一些差别的。
1.创建表的时间创建普通索引
  1. create table t_index1(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20),
  5. index (sno)
  6. );
复制代码
  index 是创建索引的关键字,括号里是索引列
  

其中:主键索引用PRI表示,唯一索引用UMI表示,普通索引用MUL表示。 
2.修改表中的列为普通索引
  1. create table t_index2(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20)
  5. );
  6. alter table t_index2 add index (sno);
复制代码
3.单独创建索引并指定索引名
  1. create table t_index3(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20)
  5. );
  6. create index index_name on t_index3(sno);
复制代码
 

创建复合索引

创建符合索引与创建普通索引语法相同,只不过是指定多个列,列与列之间用逗号隔开。
1.创建表时指定索引列
  1. create table t_index4(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20),
  5. class_id bigint,
  6. index(sno, class_id)
  7. );
复制代码
2.修改表中的列为复合索引
  1. create table t_index5(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20),
  5. class_id bigint
  6. );
  7. alter table t_index5 add index(sno, class_id);
复制代码
3.单独创建索引并指定索引名
  1. create table t_index6(
  2. id bigint primary key auto_increment,
  3. name varchar(20) unique,
  4. sno varchar(20),
  5. class_id bigint
  6. );
  7. create index t_index5_sno_class_id on t_index5 (sno, class_id);
复制代码
查看索引

查看索引的三种方式,在上面都有提到,现在可以举行一下总结

  • show keys from 表名
  • show index from 表名
  • desc 表名
删除主键

主键索引
   alter table 表名 drop PRIMARY KEY;
  
第一次使用删除语句报错的原因是:由于自增列的错误,所以下面是先删除了自增属性,然后重新删除主键。
其他索引
   alter table 表名 drop index 索引名

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表