mysql的大小寫敏感性

2021-04-21 23:17:46 字數 1261 閱讀 3519

mysql的大小寫敏感性主要分為兩部份:乙個是表名區別大小寫;二是字段值不區分大小寫.這個跟我們希望的恰好相反,而這卻是mysql 的預設設定,不得不令人費解,而這些卻是oracle資料庫比較基本的東西。

首先說說mysql建表的特點?如果你建立一張test表,然後你到data目錄下會發現以下三個檔案: 

test.frm

test.myd

test.myi

即建立乙個表,它會自動生成三個檔案。這點跟oracle也有很大的不同,如果這樣,那如何使用裸裝置呢?看來要用mysql資料庫,是不得不要用檔案系統。而通常作業系統都對使用者同時開啟的檔案數有限制,一般為1024個,使用mysql要注意.

那如何設定讓mysql的表名不區分大小寫呢?修改/etc/my.cnf檔案,在[mysqld] 下增加引數lower_case_table_names = 1

這個引數的含義是使所有的表名都轉化成小寫來處理,如果你在原系統中已有大寫的表名,要先把它們重新命名為小寫,以免加了此引數後,以前大寫的表無法識別.

另外乙個問題,就是預設的字段值不區分大小寫?這點是比較令人頭痛的事。如果你在一有唯一約束的列上插入兩行值'a'和'a',mysql會認為它是相同的,而在oracle中就不會。請看下面的測試:

mysql> create table test4(nick varchar(20) primary key);

query ok, 0 rows affected (0.01 sec)

mysql> insert into test4 values('a');

query ok, 1 row affected (0.00 sec)

mysql> insert into test4 values('a');

error 1062: duplicate entry 'a' for key 1

而如何設定讓其列值區分大小寫呢?

mysql> create table test4(nick varchar(20) binary primary key);

query ok, 0 rows affected (0.01 sec)

mysql> insert into test4 values('a');

query ok, 1 row affected (0.00 sec)

mysql> insert into test4 values('a');

query ok, 1 row affected (0.00 sec)

在宣告字元型別後,在後面加乙個binary,mysql就可以區分大小寫了。

Mysql的大小寫敏感性

原文 mysql在預設的情況下查詢是不區分大小寫的,例如 create table t1 name varchar 10 對這個表,預設情況下,下面兩個查詢的結果是一樣的 select from t1 where a abc select from t1 where a abc 也就是說不區分大小寫...

mysql的大小寫敏感性

mysql的大小寫敏感性主要分為兩部份 乙個是表名區別大小寫 二是字段值不區分大小寫.這個跟我們希望的恰好相反,而這卻是mysql 的預設設定,不得不令人費解,而這些卻是oracle資料庫比較基本的東西。首先說說mysql建表的特點?如果你建立一張test表,然後你到data目錄下會發現以下三個檔案...

Mysql對大小寫的敏感性

1.資料庫名和表名 mysql中,資料庫名和表名的大小寫敏感性取決於作業系統對大小寫的敏感性,這就意味著在unix系統中是大小寫敏感的,而在win32下是不區分大小寫的。2.列名 列名在任何時候都是大小寫不敏感的。3.表的別名 雖然說表名的大小寫敏感性是由作業系統決定的,但是表的別名是大小寫敏感的。...