MySQL使用ALTER命令创建与修改索引

2024-03-29 16:04

本文主要是介绍MySQL使用ALTER命令创建与修改索引,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

索引(index)分类

  • 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引。
  • 组合索引,即一个索引包含多个列。

创建索引时,需要确保该索引是应用在 SQL查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

索引的缺点:

虽然索引大大提高了查询速度,但是却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。同时,建立索引会占用磁盘空间的索引文件。

一、创建与修改索引

创建索引:

CREATE INDEX indexName ON table_name (column_name)

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length

修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName)

创建表的时候直接指定

CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))   
);  

删除索引

DROP INDEX [indexName] ON mytable; 

二、ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);
  • 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);
  • 该语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list);
  • 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);
  • 该语句指定了索引为FULLTEXT,用于全文索引。

以下实例为在表中添加索引:

ALTER TABLE testalter_tbl ADD INDEX (c);

还可以在 ALTER 命令中使用 DROP 子句来删除索引:

ALTER TABLE testalter_tbl DROP INDEX c;

三、ALTER 命令添加和删除主键

主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,需要确保该主键默认不为空(NOT NULL)。实例如下:

ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

也可以使用 ALTER 命令删除主键:

ALTER TABLE testalter_tbl DROP PRIMARY KEY;

删除主键时只需指定PRIMARY KEY,但在删除索引时,必须知道索引名。

四、显示索引信息

可以使用SHOW INDEX命令来列出表中的相关的索引信息。
可以通过添加 \G 来格式化输出信息。

\G:将查询到的横向表格纵向输出,方便阅读

SHOW INDEX FROM table_name\G

这篇关于MySQL使用ALTER命令创建与修改索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859020

相关文章

git变更远端仓库名之后如何修改本地仓库配置的另一种方法?(删remote指针、添加、绑定master)

背景 如果某个远端的仓库地址变化后,本地仓库可以修改对应的remote。 之前谈过几种方法,比如重新设置一个新的remote的指针,绑定到新地址。然后删除origin,然后把新指针mv到origin。比如直接seturl修改(git remote set-url)。本文使用先删,再添加,再绑定分支。 关键命令 下面是一种操作方式: 先删,再添加,再绑定分支 git remote remov

如何在 Ubuntu VPS 上配置 vsftpd 使用 SSL/TLS

简介 FTP(文件传输协议)曾经是在本地和远程计算机之间传输文件的一种流行方式。该协议本身存在安全隐患,因此它的使用已经不再受青睐。 如果您仍然想使用 FTP 而不是像使用 SSH 协议实现文件传输的更安全的替代方案 SFTP,您可以通过配置 FTP 使用 SSL 来使其相对安全。 在本指南中,我们将在 Ubuntu 12.04 VPS 上配置 vsftpd 以使用 SSL 证书。 安装

SpringCloud系列(20)--Ribbon的简介及使用

1、Ribbon的简介 Spring Cloud Ribbon是基于Netflix Ribboh实现的一套客户端负载均衡的工具,简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动

ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) 删库失败问题的解决

今天用mysql的图形化工具删除表和数据库失败,最终参考以下文档成功: 稍有不同的是,mysql的安装,一个是在linux系统,一个是在windows。 以下文档地址:http://blog.csdn.net/defonds/article/details/45113783 Win8 下,MySQL5.5,root 用户登录 MySQL 5.5 Command Line Client,

使用eclipse和maven生成java web程序war包

一、eclipse中,在需要打包的项目名上右击,然后把鼠标光标指向弹出框中的“run as”:   二、之后会看到在这个弹出框的右侧会出现一个悬浮窗,如下:   三、在上边的第二个悬浮窗鼠标点击“maven  clean”,maven会清除掉之前对这个项目的打包信息;执行以后在eclipse的控制台console会看到如下信息:       四、然后重复一、二步,选择“

MySQL的SQL文件转换为适用于SQLite的SQL文件

最近了解到一个较小众的数据库SQLite,打算拿来玩一玩,但手上目前只有MySQL的一些库表文件无法直接导入使用,所以出一期记录,手动进行二者转换 分析SQL语句 首先要明确,MySQL和SQLite两者格式差别不止限于字段类型、特殊的函数等,特别是 CREATE TABLE、INSERT INTO、ALTER TABLE等语句,这些都需要特别关注。 转换数据类型 将MySQL的数据

阿里云安装Mysql

阿里云安装Mysql 1、下载mysql包,并解压包2、继续解压文件3、拷贝到安装目录4、创建mysql组和用户5、创建mysql数据目录(根目录)6、赋予权限7、加入路径8、配置文件顺序:9、初始化mysql10、启动mysql(结尾加"&"为后台启动)11、查看启动log中生成mysql密码12、修改新密码13、创建远程访问授权14、添加mysql服务15、(忽略)防火墙:开启3306端

mysql常用基础操作语法(七)--统计函数和分组查询【命令行模式】

注:文中所有的。。。代表多个。 1、使用count统计条数:select count(字段名。。。) from tablename; 2、使用avg计算字段的平均值:select avg(字段名) from tablename; 这里都可以适当的拓展,比如加条件,重命名等等。 3、使用sum

mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】

1、使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2、使用limit限制查询结果的数量: 上图中的0,代表查询的开始位置,也可以理解为跳过的数量;上图中的2代表需要查询出的数量。这个表中有3条数据

mysql常用基础操作语法(五)--对数据的简单条件查询【命令行模式】

1、单条件查询:select 字段名 from tablename where 条件; 2、简单多条件查询,使用&&或者between and等: 3、is null和is not null查询,这里要注意null不是空字符串不是0: 4、in和not in查询,相当于是用or把in后