常常有人在QQ上问我一些,关于数据库方面的问题。其实,其中一些问题很隐含,不容易发现。
比如,下面的语句:"select *from order",当前数据库存在一个叫order的表,就是订单的意思,很多数据库开发中都会用到订单。执行这条语句,数据库系统会返回错误,告诉你在order附近有语法错误。
我们仔细看,这个SQL语句,从语法上完全没有错误,但是就是执行有错误,各种手册上都是用这样的句子查询表的,怎么会有错呢?
原因在于,order是数据库系统的保留字,常来排序,比如select *from book order by id意思就是按照id的顺序来排列查询到的结果。
所以系统在执行select *from order时就认为你会有错误。
我们更改数据库名order为bookorder,再执行查询select *from bookorder时,没有错误了。
相似的,有人常喜欢用user来做用户表的表明,但实际上user也同样会带来上面的错误。
因此,我们建议初学者,在设计数据库表名的时候,尽量避开这些数据库系统的保留字,以免带来不必要的麻烦。