要測試MySQL中的非唯一索引的效果,你可以按照以下步驟操作:
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
UNIQUE KEY (email) -- 這里創建了一個唯一索引,但我們的目標是測試非唯一索引
);
注意:雖然這里創建了一個UNIQUE KEY
,但我們的目標實際上是測試非唯一索引。不過,為了展示如何測試非唯一索引,我們會在后續步驟中添加另一個非唯一索引。
INSERT INTO test_table (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO test_table (name, email) VALUES ('Bob', 'bob@example.com');
INSERT INTO test_table (name, email) VALUES ('Charlie', 'charlie@example.com');
INSERT INTO test_table (name, email) VALUES ('David', 'david@example.com');
CREATE INDEX idx_name_email ON test_table (name, email);
INSERT INTO test_table (name, email) VALUES ('Alice', 'alice@example.com'); -- 這將引發錯誤,因為非唯一索引會阻止重復數據的插入
此時,MySQL將拋出一個錯誤,提示你違反了非唯一索引的約束。這是因為非唯一索引不允許在指定的列組合中出現重復的值。
你可以使用SELECT
語句來查詢表中的數據,以驗證非唯一索引是否按預期工作。
SELECT * FROM test_table;
如果你想在測試后清理數據,可以使用DELETE
語句。
DELETE FROM test_table WHERE name = 'Alice' AND email = 'alice@example.com';
如果你想在測試后徹底清理數據,可以使用DROP TABLE
語句。
DROP TABLE test_table;
通過這個過程,你可以驗證MySQL中的非唯一索引是否有效地阻止了重復數據的插入。