Logo

MySQL必知必会

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变量都必须以@开始。

comments powered by Disqus