MySQL數據庫中的表有一列用於電子郵件地址。最終,電子郵件地址應該是唯一的,並且具有有效的格式。我很難決定檢查的位置以及檢查的必要性。需要唯一的電子郵件地址
顯然,SQL本身並不能完全驗證電子郵件地址,但我正在考慮添加NOT NULL
約束來防止提交空白電子郵件地址。由於每個電子郵件地址必須是唯一的,因此e-mail
列的唯一密鑰似乎是合理的,但僅僅因爲列是唯一密鑰並不會使其NOT NULL
正確嗎?由於我可能會使用PHP驗證服務器上的電子郵件地址,因此我可以檢查它是否爲空。
我正在製作的一條關鍵信息是是否添加了唯一鍵或約束使搜索更快或更慢?
對於保存電子郵件地址的列,應該沒有重複項,也沒有空字符串/空值等,是否應將其作爲唯一鍵和/或給定約束或其他約束?
我是MySQL的新手,所以代碼示例會有幫助。如果使用phpMyAdmin更容易,我有phpMyAdmin。
對於唯一我會用ALTER TABLE USER ADD UNIQUE INDEX(``e-mail``);
對於沒有空,我會用ALTER TABLE user CHANGE ``e-mail`` varchar(254) NOT NULL;
另一個想法我是插入一行與一個空的e-mail地址,然後進行郵件列唯一的,這樣沒有其他空電子郵件地址可以插入。
您可以使用SQL驗證電子郵件(使用自定義約束),並且添加密鑰通常會使搜索更加快速 –
與唯一索引相比,唯一約束更好地傳達您的意圖。 –
@ MikeSherrill'Catcall'有什麼區別?根據[這裏](http://stackoverflow.com/questions/3245328/what-is-the-difference-between-unique-index-and-unique-key)這些術語是同義詞。 – Celeritas