MySQL - 唯一索引

唯一索引

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

    1. 创建表时定义索引

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

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

    mysql> create table class(id int, name varchar(64), teacher varchar(64), UNIQUE INDEX name_index(name));	//创建class表,同时指定name为唯一索引列
    mysql> show create table class;						//查询表结构
    mysql> insert into class values(1, '一班', '张三');	//插入数据1
    mysql> insert into class values(2, '二班', '李四');	//插入数据2
    mysql> select * from class where id>0;				//根据列查询
    

    在这里插入图片描述

    2. 已存在的表上创建索引
    方法一:

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

    在这里插入图片描述

    方法二:

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

    在这里插入图片描述

### 创建唯一索引的方法 在 MySQL 中,可以通过多种方式来创建唯一索引。这些方法不仅能够确保数据的唯一性,还能够在一定程度上优化查询性能。 #### 方法一:通过 `CREATE INDEX` 语句 可以使用 `CREATE INDEX` 语句显式地为指定列创建唯一索引。其基本语法如下: ```sql CREATE UNIQUE INDEX index_name ON table_name (column_name); ``` 此方法适用于已经存在的表,并希望为其添加新的唯一索引的情况[^1]。 #### 方法二:通过 `ALTER TABLE` 语句 另一种常见的方法是使用 `ALTER TABLE` 语句向现有表中添加唯一索引。具体语法如下所示: ```sql ALTER TABLE table_name ADD UNIQUE (column_name); ``` 这种方法同样支持单列或多列联合唯一索引的定义。例如,要基于两列建立联合唯一索引,则可写成: ```sql ALTER TABLE table_name ADD UNIQUE (column1, column2); ``` 这种方式更加灵活,尤其当需要修改已有表格结构时非常有用[^4]。 #### 方法三:在建表时直接声明 除了事后添加之外,在最初设计并创建新表时也可以直接设置某些列为唯一约束条件。示例代码如下: ```sql CREATE TABLE table_name ( id INT NOT NULL, name VARCHAR(50), email VARCHAR(100) UNIQUE, PRIMARY KEY(id) ); ``` 这里我们看到,在定义邮箱字段(email)的同时就指定了它应具有唯一属性。这样做的好处是可以从一开始就强制实施业务逻辑上的限制[^5]。 ### 注意事项 - 如果尝试插入违反唯一性规则的数据记录,将会引发错误提示。 - 对于NULL值处理方面,大多数情况下允许存在多个NULL实例;但是具体情况可能依据不同存储引擎有所差异[^3]。 ### 总结 综上所述,无论是新建还是更新现有的数据库架构,都有相应的手段去实现所需功能——即保障特定字段或者组合不会出现重复项。这一步骤对于维护高质量、一致性强的关系型数据库至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值