mysql 给表添加一个联合唯一索引

原创 2014年05月12日 14:11:34

项目中需要用到联合唯一索引:

例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定:

例如:user表中有userID,userName两个字段,如果不希望有2条一模一样的记录,需要给user表添加多个字段的联合唯一索引:

alter table user add nuique index(user_id,user_name);

例如:

alter table user_daily_money_info add unique index agd(user_account_id,game_id,daily_date);


alter table user_daily_money_info add unique key agdkey(user_account_id,game_id,daily_date);

这样如果向表中添加相同记录的时候,会返回一下错误信息:


2还有一种情况就是,我们需要为以前的表 创建这个索引,有可能以前的数据中存在重复的记录 那怎么办呢?

alter ignore table user add unique index(user_id,user_name);
它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化.


查看索引  show index from 数据库表名
alter table 数据库add index 索引名称(数据库字段名称)
PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`) 

INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
1.普通索引。
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
(1)创建索引:CREATE INDEX indexName ON  tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是  BLOB 和 TEXT 类型,必须指定length,下同。
(2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length)) 
(3)创建表的时候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;

2.唯一索引。
它与前面的”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));

3.主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT  NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY  KEY(i_testID)); 当然也可以用ALTER命令。



相关文章推荐

MySql 给表添加一个联合唯一索引

做项目需要用到联合唯一 例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,需要给user表添加两个字段的联合唯一索引...

mysql创建唯一索引

资料来源:http://www.cnblogs.com/aquilahkj/archive/2011/11/07/2240310.html 查看索引  show index from 数据库表名 ...
  • wocjj
  • wocjj
  • 2012年03月31日 12:50
  • 70480

mysql中,索引,主键,唯一索引,联合索引的区别

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。...

mysql唯一索引和unique

最近遇到一个问题:高并发环境下,如何避免一张表里的某些列不要重复。

mysql 普通索引 唯一索引的创建与效率比较

unique(唯一索引) alter table `table_name` add unique (`column`)  index(普通索引) mysql教程>alte...

MySQL复合唯一索引分析

MySQL查询优化分析快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插入链接 Ctrl + L 插入代码 Ctrl + K 插入图片...

MySQL的几个概念:主键,外键,索引,唯一索引

概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主键可以保证记录的...

mysql多字段唯一索引

项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:user表中有userID,userName两个字段,如果...

mysql 建立索引 唯一索引(转)

转自:http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=7917 不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引 ...

Mysql中的联合索引、前缀索引、覆盖索引

Mysql中的联合索引、前缀索引、覆盖索引索
  • Air_hjj
  • Air_hjj
  • 2017年04月16日 13:09
  • 688
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql 给表添加一个联合唯一索引
举报原因:
原因补充:

(最多只允许输入30个字)