当前位置:网站首页>【MySQL】索引的创建、查看和删除
【MySQL】索引的创建、查看和删除
2022-07-01 21:42:00 【张艳伟_Laura】
文章目录
一、创建索引
1、在创建表的同时创建索引
使用create table创建表时,除了可以定义列的数据类型外,还可以定义主键约束 外键约束 或者唯一性约束,而不论创建那种约束,在定义约束的同时相当于在指定列上创建了一个索引。
① 创建普通索引
CREATE TABLE book(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR,
#声明索引
INDEX idx_bname(book_name)
);
② 创建唯一性索引
声明有唯一索引的字段,在添加数据时,要保证唯一性,但是可以添加null
唯一性索引的关键字:unique
CREATE TABLE book1(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR,
#声明索引
UNIQUE INDEX uk_idx_cmt(COMMENT)
);
③ 创建主键索引
设定为主键后数据库会自动建立索引,innodb为聚簇索引,语法:
关键字:PRIMARY KEY
#通过定义主键约束的方式定义主键索引
CREATE TABLE book2(
book_id INT PRIMARY KEY ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR
);
注意:删除主键索引:通过删除主键约束的方式来删除主键索引
ALTER TABLE book2
DROP PRIMARY KEY;
修改主键索引:必须先删除掉(drop)原索引,再新建(add)索引
④创建单列索引
CREATE TABLE book3(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR,
#声明索引
UNIQUE INDEX idx_bname(book_name)
);
⑤ 创建联合索引
CREATE TABLE book4(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR,
#声明索引
INDEX mul_bid_bname_info(book_id,book_name,info)
);
⑥ 创建全文索引
fulltext全文索引可以用于全文搜素,并且只为char varchar 和text列创建索引。
索引总是对整个列进行,不支持局部(前缀)索引。
CREATE TABLE test4(
id INT NOT NULL,
NAME CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX futxt_idx_info(info(50))
# info(50)属于局部(前缀)索引,当前不支持,只会对当前列进行全部搜索
)
全文索引可以创建多列
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR (200),
body TEXT,
FULLTEXT index (title, body)
) ENGINE = INNODB ;
tips:用于模糊查询
like方式的查询:
SELECT * FROM papers WHERE content LIKE ‘%查询字符串%’;
全文索引用match+against方式查询:
SELECT * FROM papers WHERE MATCH(title,content) AGAINST (‘查询字符串’);
注意点
1. 使用全文索引前,搞清楚版本支持情况;
2. 全文索引比 like + % 快 N 倍,但是可能存在精度问题;
3. 如果需要全文索引的是大量数据,建议先添加数据,再创建索引。
⑦ 创建空间索引
空间索引创建中,要求空间类型的字段必须为 非空 。
举例:创建表test5,在空间类型为GEOMETRY的字段上创建空间索引,SQL语句如下:
CREATE TABLE test5(
geo GEOMETRY NOT NULL,
SPATIAL INDEX spa_idx_geo(geo)
) ENGINE=MyISAM;
2、在已经创建好的表上创建索引
在已经存在的表中创建索引可以使用ALTER TABLE语句或者CREATE INDEX语句。
① 使用alter table语句创建索引
基本语法:alter table …add…
#创建数据表
CREATE TABLE book5(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR
);
# 创建索引 alter table ...add...
# 普通索引
ALTER TABLE book5 ADD INDEX idx_cmt(COMMENT);
# 唯一性索引
ALTER TABLE book5 ADD UNIQUE uk_idx_bname(book_name);
# 联合索引
ALTER TABLE book5 ADD INDEX mul_bid_bname_info(book_id,book_name,info);
② 使用create index创建索引
基本语法:create index…on…
CREATE INDEX语句可以在已经存在的表上添加索引,在MySQL中, CREATE INDEX被映射到一个ALTER TABLE语句上,基本语法结构为:
# 创建数据表
CREATE TABLE book6(
book_id INT ,
book_name VARCHAR(100),
AUTHORS VARCHAR(100),
info VARCHAR(100) ,
COMMENT VARCHAR(100),
year_publication YEAR
);
# 创建索引 create index...on....
# 普通索引
CREATE INDEX idx_cmt ON book6(COMMENT);
# 唯一性索引
CREATE UNIQUE INDEX uk_idx_bname ON book6(book_name);
# 联合索引
CREATE INDEX mul_bid_bname_info ON book6(book_id,book_name,info);
二、查看索引
通过命令查看索引
方式一:
SHOW CREATE TABLE book;
方式二:
SHOW INDEX FROM book;
三、删除索引
1、使用ALTER TABLE删除索引
ALTER TABLE删除索引的基本语法格式如下: ALTER TABLE … DROP INDEX …
ALTER TABLE book5
DROP INDEX idx_cmt;
提示:添加Auto_increment(自增长)约束字段的唯一索引不能被删除
2、使用DROP INDEX语句删除索引
DROP INDEX删除索引的基本语法格式如下: DROP INDEX … ON …
DROP INDEX uk_idx_bname ON book5;
tips:删除联合索引中的相关字段(删除表中字段)
删除联合索引中的相关字段
ALTER TABLE book5
DROP COLUMN book_name;
提示:删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。
边栏推荐
- 功利点没啥!
- MySQL empties table data
- List announced | outstanding intellectual property service team in China in 2021
- Internet of things RFID, etc
- [monomer] recommended configuration of streaming information i-bpsv3 server
- Application of real estate management based on 3D GIS
- C中main函数的几种写法
- 分离字符串中的字母和数字并使得字母在前数组在后
- Do you want to make up for the suspended examination in the first half of the year? Including ten examinations for supervision engineers, architects, etc
- 上半年暂停考试要补考?包含监理工程师、建筑师等十项考试
猜你喜欢
随机推荐
杰理之、产线装配环节【篇】
杰理之烧录上层版物料需要【篇】
Go - exe corresponding to related dependency
Case of camera opening by tour
企业架构与项目管理的关联和区别
Count the number of each character in the character
cmake工程化相关
Go — 相关依赖对应的exe
Pytest collection (2) - pytest operation mode
Getting started with the lockust series
AirServer2022最新版功能介绍及下载
[monomer] recommended configuration of streaming information i-bpsv3 server
杰理之烧录都使用 VBAT 供电,供电电压 4.2V【篇】
PHP 读取ini或env类型配置
Simple interactive operation of electron learning (III)
Difference and use between require and import
PHP reflective XSS, reflective XSS test and repair
最近公共祖先(LCA)在线做法
Business visualization - make your flowchart'run'up
运放-滞回(迟滞)比较器全流程实战计算






![[deep learning] use deep learning to monitor your girlfriend's wechat chat?](/img/03/ecf50eacc91c0633b0d9689cdad2c2.png)


