首页 > 数据库 >mysql索引类型及操作

mysql索引类型及操作

时间:2023-01-30 12:41:31浏览次数:30  
标签:index name tablename 索引 mysql 类型 table alter

一、索引主要类型

PRIMARY KEY(主键索引)

UNIQUE(唯一索引)

INDEX(普通索引)

FULLTEXT(全文索引)


索引创建的通用语法

alter table 表名 add index 索引名称(数据库字段名称);


PRIMARY KEY(主键索引)

alter table 'table_name' add primary key (column);


UNIQUE(唯一索引)

alter table 'table_name' add unique (column);


INDEX(普通索引)

alter table 'table_name' add index 'index_name' (column1、column2、....);


FULLTEXT(全文索引)

alter table 'table_name' add fulltext (column);


二、各类索引创建语法

1.普通索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

(1)创建索引:create index 'indexname' on 'tablename'(tableColumns(length));

    如果是char,varchar类型,length可以小于字段实际长度;如果是blob和text类型,必须指定length,下同。

(2)修改表结构:alter table 'tablename' add  index [indexName] ON ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […], index ['indexName'] ('tablecolumns');


2.唯一索引

它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

(1)创建索引:create unique index 'indexname' on 'tablename'('tablecolumns');

(2)修改表结构:alter table 'tablename' add  unique ['indexname'] on ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […], unique ['indexname'] ('tablecolumns') ;


3、主键索引

它是在唯一索引索引的基础上加了非空限制:unique+not null(唯一,非空)

(1)修改表结构:alter table 'tablename' add  primary key('tableColumns');

(2)创建表的时候直接指定:create table 'tablename' ( […] primary key ) ;


4、全文索引

MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;

只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。它有以下几种创建方式:

(1)创建索引:create fulltext index 'indexname' on 'tablename'('tablecolumns');

(2)修改表结构:alter table 'tablename' add  fulltext index ('tablecolumns');

(3)创建表的时候直接指定:create table 'tablename' ( […] fulltext key ['indexname'] ('tablecolumns') ;


5、auto_increment

是自动增加,只能修饰数值类型的,一个表中只能有一个,而且这个字段必须是索引  

一直是从记录中的最大值往上递加,即使是把记录全部删除还会从最后的标记处增加。创建方式:

(1)创建自增:create table 'tablename'([…] auto_increment));


三、索引的删除


索引删除的通用语法

alter table 表名 drop index 索引名称(数据库字段名称);


PRIMARY KEY(主键索引)

alter table 'table_name' drop primary key;


UNIQUE(唯一索引)

alter table 'table_name' drop index 'index_name';


INDEX(普通索引)

alter table 'table_name' drop index 'index_name' ;

drop index 'index_name' on 'tablename';


FULLTEXT(全文索引)

alter table 'table_name' drop index 'index_name' ;

drop index 'index_name' on 'tablename';


NOT NULL(非空约束)

alter table 'table_name' modify 'columnname' 'datatype' not null;

标签:index,name,tablename,索引,mysql,类型,table,alter
From: https://blog.51cto.com/u_15575266/6026182

相关文章

  • coredns mysql 扩展使用+readyset 试用
    基于db进行dns记录的管理还是比较有用的,尤其在一些开发环境中,以下是一个使用同时也会尝试集成readyset(但是木有成功,应该是mysql编码兼容的问题)添加&构建插件方法比较简......
  • readyset 轻量级pg 以及mysql 缓存引擎
    readyset是基于rust开发的pg以及mysql轻量级缓存服务参考玩法如下图  说明readyset一些设计还是很有意思的,很值得学习,同时也可以在项目中尝试使用参考资料​​https:/......
  • 问题:MySQL和Redis安装和配置
    MySQLmysql官网下载:https://dev.mysql.com/downloads/mysql/下载后将目录下的bin路径加入到环境变量中在安装目录下创建my.ini配置文件:(可以解决---本地计算机上的......
  • MySql 错误:建表时出错1067 - Invalid default value for 'id'
    问题描述:建表时报错无效的默认值:CREATETABLE`product`(`id`INT(10)NOTNULLPRIMARYKEYAUTO_INCREMENTCOMMENT'编号'DEFAULT0,`pName`VARCHAR(20)NOT......
  • nginx索引静态文件
    前言针对nas服务器文件下载或者需要索引一些静态二进制文件的地方,可以利用nginx自带的索引文件功能实现。root/var/www/html;#索引目录autoindexon;autoindex_exact_size......
  • 8.3 SQL Server非聚集索引
    SQLServerNon-ClusteredIndexes(非聚集索引)目录SQLServerNon-ClusteredIndexes(非聚集索引)简介使用SQLServerCREATE[NONCLUSTERED]INDEX创建非聚集索引示例A)使用C......
  • 8.4 SQL Server唯一索引
    SQLServer唯一索引(UniqueIndex)目录SQLServer唯一索引(UniqueIndex)简介示例A)创建包含一列的唯一约束B)创建包含多列的唯一约束SQLServer唯一索引与NULL唯一索引(Uniquei......
  • 8.5 SQL Server包含列索引
    SQLServer索引与包括的列目录SQLServer索引与包括的列简介创建包含列的索引的语法简介本文使用sales.customers表作为示例下面语句在email列创建唯一约束:CREATEU......
  • 8.6 SQL Server筛选索引
    SQLServer筛选索引目录SQLServer筛选索引简介示例筛选索引的优点简介如果使用得当,非聚集索引可以大大提高查询性能。然而,非聚集索引的好处是有代价的:存储和维护。......
  • 8.7 SQL Server计算列上的索引
    SQLServer计算列上的索引目录SQLServer计算列上的索引简介计算列索引的要求简介有如下客户表:查找居住在garry.espinoza的客户:SELECTfirst_name,last......