MySQL 8在處理大小寫方面有一定的變化。在以前的MySQL版本中,所有的標識符(如表名、字段名等)都是不區分大小寫的,但在MySQL 8中,標識符的大小寫是有區別的。
在MySQL 8中,如果要讓標識符不區分大小寫,可以在創建表時指定字符集為“utf8mb4_0900_ai_ci”(即Accent-Insensitive),例如:
CREATE TABLE myTable (
id INT PRIMARY KEY,
name VARCHAR(20)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
這樣,如果在查詢時使用不同大小寫的標識符,MySQL 8也會將它們視為相同的。例如:
SELECT * FROM MyTable;
SELECT * FROM mytable;
SELECT * FROM MYTABLE;
上述三個查詢都會返回相同的結果。
但是,如果沒有指定字符集為“utf8mb4_0900_ai_ci”時,MySQL 8會將標識符的大小寫視為不同的。例如:
CREATE TABLE myTable (
id INT PRIMARY KEY,
name VARCHAR(20)
);
SELECT * FROM MyTable; -- 這個查詢會出現錯誤,因為MySQL 8將大小寫視為不同
另外,如果想要強制大小寫敏感,可以在創建表時指定字符集為“utf8mb4_0900_as_cs”(即Accent-Sensitive、Case-Sensitive),例如:
CREATE TABLE myTable (
id INT PRIMARY KEY,
name VARCHAR(20)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;
這樣,MySQL 8會將標識符的大小寫視為不同的,例如:
SELECT * FROM MyTable;
SELECT * FROM mytable; -- 這兩個查詢會返回不同的結果
綜上,MySQL 8在處理大小寫方面有了一定的變化,需要在創建表時指定字符集來控制標識符的大小寫敏感性。