如何利用MySQL添加聯(lián)合唯一索引
聯(lián)合唯一索引
項(xiàng)目中需要用到聯(lián)合唯一索引:
例如:有以下需求:每個(gè)人每一天只有可能產(chǎn)生一條記錄:處了程序約定之外,數(shù)據(jù)庫(kù)本身也可以設(shè)定:
例如:t_aa 表中有aa,bb兩個(gè)字段,如果不希望有2條一模一樣的記錄(即:aa字段的值可以重復(fù); bb字段的值也可以重復(fù),但是一條記錄(aa,bb)組合值不允許重復(fù)),需要給 t_aa 表添加多個(gè)字段的聯(lián)合唯一索引:
alter table t_aa add unique index(aa,bb);
例如:
alter table use_info add unique index agd(user_account_id,game_id,daily_date); alter table user_info add unique key agdkey(user_account_id,game_id,daily_date);
這樣如果向表中添加相同記錄的時(shí)候,會(huì)返回一下錯(cuò)誤信息。
但是配合Insert into…ON DUPLICATE KEY UPDATE…來(lái)使用就不會(huì)報(bào)錯(cuò),存在相同的記錄,直接忽略。
例:
INSERT INTO unit ( id, unitsubclass, name, state ) VALUES('1111','CPU','CPU','0' ) ON DUPLICATE KEY UPDATE unitsubclass=VALUES(unitsubclass),name =VALUES(name),state =VALUES(state)
還有一種情況就是,我們需要為以前的表 創(chuàng)建這個(gè)索引,有可能以前的數(shù)據(jù)中存在重復(fù)的記錄 那怎么辦呢?
alter ignore table t_aa add unique index(aa,bb);
它會(huì)刪除重復(fù)的記錄(會(huì)保留一條),然后建立唯一索引,高效而且人性化。
擴(kuò)展延伸:
查看索引 :
show index from 數(shù)據(jù)庫(kù)表名
alter table 數(shù)據(jù)庫(kù)add index 索引名稱(數(shù)據(jù)庫(kù)字段名稱)PRIMARY KEY(主鍵索引):
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引);
ALTER TABLE table_name ADD UNIQUE (column) INDEX(普通索引):
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` )
附:mysql中如何用命令創(chuàng)建聯(lián)合索引
普通聯(lián)合索引
語(yǔ)法:
create index 索引名稱 on 表名(字段名稱)
示例:
create index firstIndex on student(id, name, address);
注意:
- 索引名稱、表名、字段名稱 都不要用引號(hào)括起來(lái)
- 對(duì)于聯(lián)合索引而言,字段名稱可以有多個(gè),中間用英文逗號(hào)分隔即可
- 普通索引數(shù)據(jù)可以重復(fù)
結(jié)果:
唯一聯(lián)合索引
語(yǔ)法:
create unique index 索引名稱 on 表名(字段名稱)
示例:
create unique index secondIndex on student(id, name, address);
注意:
- 索引名稱、表名、字段名稱 都不要用引號(hào)括起來(lái)
- 對(duì)于聯(lián)合索引而言,字段名稱可以有多個(gè),中間用英文逗號(hào)分隔即可
- 唯一索引數(shù)據(jù)不可重復(fù)
結(jié)果:
總結(jié)
到此這篇關(guān)于如何利用MySQL添加聯(lián)合唯一索引的文章就介紹到這了,更多相關(guān)MySQL添加聯(lián)合唯一索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mysql添加聯(lián)合唯一索引及相同數(shù)據(jù)插入報(bào)錯(cuò)問(wèn)題
- mysql error 1071: 創(chuàng)建唯一索引時(shí)字段長(zhǎng)度限制的問(wèn)題
- MySQL創(chuàng)建唯一索引時(shí)報(bào)錯(cuò)Duplicate?entry?*?for?key問(wèn)題
- MySQL 普通索引和唯一索引的區(qū)別詳解
- MySQL死鎖套路之唯一索引下批量插入順序不一致
- MySQL批量插入和唯一索引問(wèn)題的解決方法
- MySQL普通索引和唯一索引的深入講解
- 淺談MySQL next-key lock 加鎖范圍
- MySQL語(yǔ)句加鎖的實(shí)現(xiàn)分析
- 一文掌握MySQL唯一索引是如何加鎖的
相關(guān)文章
mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用
本文主要介紹了mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Mysql誤刪除DELETE數(shù)據(jù)找回操作指南
如果我們?cè)跀?shù)據(jù)庫(kù)中不小心執(zhí)行了類似"delete from t1"這樣的不帶where條件的語(yǔ)句,那么整張表的數(shù)據(jù)就全被刪除了,下面這篇文章主要給大家介紹了關(guān)于Mysql誤刪除DELETE數(shù)據(jù)找回操作的相關(guān)資料,需要的朋友可以參考下2023-05-05MySQL存儲(chǔ)過(guò)程中變量的定義以及應(yīng)用詳解
MySQL變量定義和應(yīng)用是我們經(jīng)常會(huì)遇到的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過(guò)程中變量的定義以及應(yīng)用的相關(guān)資料,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06為什么MySQL分頁(yè)用limit會(huì)越來(lái)越慢
在mysql中l(wèi)imit可以實(shí)現(xiàn)快速分頁(yè),但是如果數(shù)據(jù)到了幾百萬(wàn)時(shí)我們的limit必須優(yōu)化才能有效的合理的實(shí)現(xiàn)分頁(yè)了,否則可能卡死你的服務(wù)器2021-07-07MySQL聯(lián)表查詢基本操作之left-join常見的坑
這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)表查詢基本操作之left-join的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05解決Mysql收縮事務(wù)日志和日志文件過(guò)大無(wú)法收縮問(wèn)題
這篇文章主要介紹了解決Mysql收縮事務(wù)日志和日志文件過(guò)大無(wú)法收縮問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-08-08MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語(yǔ)句介紹解決問(wèn)題實(shí)例
這篇文章主要介紹了MYSQL的REPLACE和ON DUPLICATE KEY UPDATE語(yǔ)句介紹解決問(wèn)題實(shí)例,需要的朋友可以參考下2014-04-04MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用
這篇文章主要介紹了MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用,包括窗口函數(shù)的基本用法,LAG()和LEAD()函數(shù)介紹,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08