2025年【MySQL】轻松学习 唯一索引

【MySQL】轻松学习 唯一索引目录 引言 什么是索引 一 唯一索引概述 二 创建唯一索引 1 创建表时创建唯一索引 唯一索引与 unique 约束共存时 2 已存在的表上创建索引 2 1 使用 create 语句 2 2 使用 alter table 语句

大家好,我是讯享网,很高兴认识大家。

目录

🍀🍀🍀🍀🍀

引言:什么是索引

一、唯一索引概述

二、创建唯一索引

    1.创建表时创建唯一索引

  唯一索引与unique约束共存时

    2、已存在的表上创建索引

   2.1、使用create语句

   2.2、使用alter table语句


引言:什么是索引

     创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有3种方式,分别是1.创建表的时候创建索引2.在已经存在的表上创建索引和使用3.ALTER TABLE语句来创建索引


一、唯一索引概述

     所谓唯一索引,就是在创建索引时,限制索引的字段值必须是唯一的。通过该类型的索引可以比普通索引更快速地查询某条记录。

二、创建唯一索引

    1.创建表时创建唯一索引

CREATE TABLE tablename( propname1 type1, …… propnamen type..n, UNIQUE INDEX | KEY [indexname] (propnamen [(length)] [ ASC | DESC ] ) );

讯享网

 注意:

  • 参数UNIQUE INDEXUNIQUE KEY是用来指定字段为索引的,两者选择其中之一即可;
  • 参数indexname是索引名字,可省略;
  • 参数propnamen是索引对应的字段的名称,该字段必须为前面定义好的字段
  • 参数length是可选参数,其指索引的长度,必须是字符串类型才可以使用;
  • 参数ASC和DESC都是可选参数,ASC表示升序排列,DESC表示降序排列,如果不指定,则为升序。 

    下面👇由SQL语句演示

讯享网create table class ( id int , name varchar(128), teacher varchar(64), unique index name_index(name) );


讯享网

     查看一下表的详细结构 

     使用insert插入一些数据,并通过唯一索引来进行检索 

insert into class values(1,'一班','王老师'),(2,'二班','李老师');

     由检索结果我们可知,这里的检索使用到了定义的唯一索引


     当我们将检索方式改为模糊查找时

    由检索结果我们可知,这里并没有使用定义的唯一索引。其实数据库本身有一些优化,并不是创建了索引就一定会用,至于什么时候检索会使用索引,就要看数据库的内部机制了,感兴趣的小伙伴可以深入学习一下数据库的内部系统;


     当我们将唯一索引的字段加上unique约束后又会是什么情形呢?👇

唯一索引与unique约束共存时

    当唯一索引与unique约束共同作用在同一字段时,唯一索引便显得有些重复;下面会用SQL语句演示👇;

    创建一张包含唯一索引与unique约束共同作用的表

讯享网create table class( id int, name varchar(128) unique, teacher varchar(64), unique index name_index (name) );

    查看一下表的详细结构

    插入与上面相同数据,并进行检索 

    由结果我们可得知,虽然表中存在唯一索引,但当我们进行检索时,MySQL还是根据唯一约束来检索。事实上,当我们给某给字段定义了唯一约束时,MySQL为了保证唯一性,便会自动给这个字段添加唯一索引,而之后再手动给这个字段添加唯一索引便是一些多余操作


2、已存在的表上创建索引

    2.1、使用create语句

CREATE UNIQUE INDEX indexname ON tablename (propname [(length)] [ASC|DESC]); 

    下面👇通过简单SQL语句演示

讯享网create table class( id int , name varchar(128), teacher varchar(64) ); create unique index name_index on class(name);

 

    2.2、使用alter table语句

ALTER TABLE tablename ADD UNIQUE INDEX | KEY indexname (propname [(length)] [ASC|DESC]); 

    下面👇通过简单SQL语句演示 

讯享网create table class( id int , name varchar(128), teaccher varchar(64) ); alter table class add unique index name_index (name);

小讯
上一篇 2025-02-22 13:36
下一篇 2025-03-14 11:32

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17713.html