MySQL必知必会
ISBN:9787115191120
作者:[英] Ben Forta
译者:刘晓霞 / 钟鸣
出版社:人民邮电出版社
出版时间:2009.1
评价:☆☆☆☆
本书很全面的介绍和说明了MySQL的每一个方面,书中有一些技巧和建议值得我们采纳和学习。作为一本MySQL入门书籍很好,全书没有一句废话,可以让读者大体了解MySQL。特别是对于像我这种在实际编程中使用过一些,但没有系统地学习过数据库,整个知识体系很混乱的人,可以起到理清知识体系的作用。
对于主键(primary key)应该坚持的几个习惯:
- 不更新主键列中的值;
- 不重用主键列的值;
- 不在主键列中使用可能会更改的值。
决不要用关键字命名一个表或列。
DISTINCT关键字顾名思义是使MySQL只返回不同的值,该关键字必须直接放在列名的前面,它应用于所有列而不仅是单独的某一列。
任何时候使用具有AND和OR操作符的WHERE子句,都一个使用圆括号明确地分组操作符。不要过分依赖默认计算次序,计算它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。(AND的优先级比OR高)
IN操作符的优点:
- 在使用长的合法选择清单时,IN操作符的预防更清楚且更直观。
- 在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。
- IN操作符一般比OR操作符清单执行更快。
- IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
通配符的技巧:
- 不要过度使用通配符。如果其他操作符能达到相同,应该使用其他操作符。
- 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
- 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
HAVING和WHERE的差别: WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。这是一个重要的区别,WHERE排除的行不包括在分组中。 WHERE会改变数据分组的结果,从而影响HAVING子句中需要过滤的分组。
不要忘记ORDER BY,一般在使用GROUP BY子句时,应该也给出ORDER BY子句。这是保证数据正确排序的唯一方法。因为GROUP BY子句输出分组行,但输出可能不是分组的的顺序,而ORDER BY子句则可以保证是根据排序条件产生的输出。
子查询要求MySQL版本为4.1或更高级版本。
两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,而后者不支持。另外前者不支持明确的事务处理管理,而后者支持。
不要把NULL值与空字符串 相混淆。NULL值是没有值,它不空字符串。如果指定’‘(两个单引号,其间没有字符),这在NOT NULL列中是允许的。空字符串是一个有效的值,它不是NULL。NULL值用关键字NULL而不是空字符串指定。
视图、存储过程、游标、触发器要求MySQL版本为5或更高级版本。
所有MySQL变量都必须以@开始。