MySQL数据库使用唯一索引避免重复插入数据

我们在MySQL数据库时,有时不希望存入重复的数据。比如用户表中想要每个用户的用户名不重复。除了,在插入数据时使用程序查询数据库判断,我们还可以使用MySQL数据库的唯一索引进行限制。以下说下具体操作方法:

1.在数据库表中为某个字段设置唯一索引,比如用户表中的 username 字段,设置唯一索引 UNIQUE

ALTER TABLE user ADD UNIQUE username_unique (username);

注意:在创建唯一索引时,有时会出现提示 ERROR 1062 (23000): Duplicate entry ‘***’ for key ‘username_unique’。这个问题的原因是该字段中已经存在重复的值,所以不能直接创建唯一索引。解决办法是删除重复的值,或清空表数据。

2.SQL插入语句修改,这里有三种方法插入数据

2.1 使用 ignore 关键字

INSERT IGNORE INTO user(username,password) values('admin','123456');

使用 ignore 关键字插入数据时,如果索引为唯一索引或主键索引的字段有重复的记录会忽略插入,执行返回0。

2.2 使用 repalce into 关键字

REPLACE INTO user(username,password) values('admin','123456');

使用replace into 插入数据,如果索引为唯一索引或主键索引的字段有重复的记录,它会先将字段重复的那条数据删除,再插入新数据。返回受影响的行数,这个数是删除与插入的行数总和。

2.3 使用 on duplicate key update 

INSERT INTO user(username,password) values('admin','123456') ON DUPLICATE KEY UPDATE password = 456789;

这句sql语句的含义是,当username的索引是唯一索引或主键索引时,插入的数据重复,就执行UPDATE语句。类似于下面的语句

UPDATE user SET password = 456789 WHERE username = 'admin';

 

小提示:善用MySQL的索引功能,可以大大提升数据库的性能。

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇