在MySQL中,有些情況下需要允許某個字段允許重復(fù),這種情況通常發(fā)生在有些數(shù)據(jù)需要被多次引用的情況下。
舉個例子,在一個售賣糖果的網(wǎng)站上,我們需要記錄每一位用戶購買的商品信息,這時候需要記錄購買者的ID和購買的商品ID,但是一個購買者可能會多次購買同一種商品。如果在購買記錄表中不允許商品ID重復(fù),那么就需要在數(shù)據(jù)庫中新建一個表來記錄每個購買者每個購買行為,增加了數(shù)據(jù)冗余和時間成本。
為了允許某個字段允許重復(fù),需要在建表時添加UNIQUE關(guān)鍵字。例如,以下代碼會創(chuàng)建一個名為“purchase”的表,其中buy_id和item_id都允許重復(fù):
CREATE TABLE purchase(
buy_id INT,
item_id INT,
UNIQUE(buy_id, item_id)
);
在上面的代碼中,UNIQUE關(guān)鍵字后跟著要允許重復(fù)的字段名和有多個字段時還可以在括號里加上多個字段名以實現(xiàn)多字段重復(fù)的規(guī)則。
需要注意的是,UNIQUE關(guān)鍵字會影響到查詢速度,因為MySQL在處理INSERT和UPDATE語句時需要確保唯一性,因此當(dāng)UNIQUE關(guān)鍵字用于大量記錄的表時,會降低查詢效率。此外,UNIQUE關(guān)鍵字只對NULL值起作用,如果表中有NULL值存在,即使加了UNIQUE關(guān)鍵字,還是允許記錄中出現(xiàn)多個全是NULL的情況。
上一篇mysql某個字段自增長
下一篇css中 樣式表象的定義