MySQL是一个逐渐完善的过程,使用前期版本时会遇到一些问题,通常搞得莫名其妙,在版本选择上尽量选择最新的。
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了(当然在安装的时候得勾上),相当的方便。