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