|
MySQL是一個逐漸完善的過程,使用前期版本時會遇到一些問題,通常搞得莫名其妙,在版本選擇上盡量選擇最新的,反正都是Free的,不存在價格問題。
1.在5.03以前版本中,存儲varchar型數據時,后面的空格會被忽視掉,前面的空格會保留,在5.03版本中修正了這個問題。
2.在某些情況下,定義表或更改其結構時,將CHAR列轉換為VARCHAR列。(在MySQL 5.0.3中更正),這個bug比較神奇,暫時沒有遇到過,不知道這個“某些情況”指的是什么。
3. 刪除表時,不自動取消關于表的權限。必須明確發出REVOKE語句,以撤銷針對表的權限。還有覺著MySQL修改權限 以后還需要Flush一下,否則即使重新mysql -u xxx -p 進入也不成,比較困惑。
4.CAST()函數不支持對REAL或BIGINT的拋棄。編程語言中,例如Java中提供了不同格類型數據之間的相互轉化, Long.parseLong(),Float.parseFloat(),Double.parseDouble()……,這里少了2個感覺總是不爽;
5.標準SQL要求,SELECT語句中的HAVING子句能夠引用GROUP BY子句中的列。在MySQL 5.0.2之前,不能完成該功能。在4.x的時候,都沒有用過很復雜的SQL語句,-都快養成習慣了
6. MySQL服務器能夠理解“||”和“&&”操作符,將其當作邏輯OR和AND,就像在C編程語言中那樣。在MySQL服務器中,||和OR是同義詞,&&和AND也是同義詞。由于采用了該優異的語法體系,MySQL服務器不支持SQL針對字符串連接的“||”操作符,而采用了CONCAT()取而代之。由于CONCAT()能夠接受任意數目的參量,很容易將使用“||”操作符的情況轉換為MySQL服務器 支持的類型。--這個就好玩了,與寫程序很貼近,嗯,用慣了再用別的數據庫就需要注意了??!
7.另一個可能就是這個了,在MySQL中“%”操作符等同于MOD()。也就是說“N % M”等同于MOD(N,M)。Cyuyan的程序員支持“%”,而且它也是為了兼容PostgreSQL而使用的,其他的數據庫則不一定支持了!!
8.允許在數值列上使用LIKE,例如可以對一個數據列使用select * from table_name where int_column like 26;
還有不少MySQL對SQL的擴展,方便了使用,不過還是建議盡量使用標準的SQL語句,在以后換數據庫的時候會省卻很多的麻煩,起碼這些SQL語句不用重寫了,^_^ MySQL短小精悍,可以在自己機子上部署,對調程序基本感覺不到影響。如果使用Linux(Redhat系列)里面就帶有了MySQL了(當然在安裝的時候得勾上),相當的方便。 |