This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(16)

时间:2007-12-23  来源:不详  作者:迈克DB

3.6 检索记录
除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是SELECT 语句的用途,即帮助取出数据。SELECT 大概是SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。SELECT 语句的语法如下:

除了词“ S E L E C T”和说明希望检索什么的column_list 部分外,语法中的每样东西都是可选的。有的数据库还需要FROM 子句。MySQL 有所不同,它答应对表达式求值而不引用任何表:

在第1章中,我们对SELECT 语句下了很大的功夫,主要集中介绍了列选择的列表和WHERE、GROUP BY、ORDER BY、H AVING 以及LIMIT 子句。本章中,我们将主要精力放在SELECT 语句中最可能令人搞不清的方面,即连接( j o i n)上。我们将介绍MySQL 支持的连接类型、它们的含义、怎样指定它们等。这样做将有助于更有效地使用M y S Q L,因为在许多情况下,解决怎样编写查询的要害是确定怎样将表恰当地连接在一起。还应该参阅一下本章后面3 . 8节“解决方案随笔”。在那一节中将会找到解决几个SQL 问题的方案,它们多数 dedecms.com
都涉及SELECT 语句这样或那样的功能。
使用SELECT 的一个问题是,在第一次碰到一种新的问题时,并不总是能够知道怎样编写SELECT 查询来解决它。但在解决以后,再碰到类似的问题时,可利用其中的经验。SELECT 大概是过去的经验在能够有效地使用中起很大作用的语句,这是因为使用它的方法太多的原故。
在有了一定的经验后,可将这些经验用于新问题,您会发现自己思考问题类似于,“噢,是的,它就是一个LEFT JOIN 问题。”或者,“啊哈,这就是一个受各对索引列制约的三路线连接。”(指出这一点,实际上我也感到有点不愿意。听到经验有帮助,您可能受到一定的鼓舞。另外,考虑到您最终能那样思考问题也会令自己有点惊奇。)下几节中介绍怎样利用MySQL 支持的连接操作的格式,多数例子使用了下面的两个表。它们很小,很简单,足以很清楚地看出每种连接的效果。


3.6.1 平凡连接
最简单的连接是平凡连接( trivial join),这种连接中只指定一个表。在此情况下,行从指定的表中选择。如:
内容来自dedecms
有的作者根本就不考虑这种SELECT 连接的形式,仅对从两个或多个表中检索记录的SELECT 语句使用“连接”这个术语。本人认为那只是看法不同而已。
  3.6.2 全连接
  假如指定多个表,将各个表名用逗号分隔,就指定了全连接。例如,假如连接两个表,来自第一个表中的每行与第二个表中每行进行组合:

全连接也称为叉连接,因为每个表的每行都与其他表中的每行交叉以产生所有可能的组合。这也就是所谓的笛卡儿积。这样连接表潜在地产生数量非常大的行,因为可能得到的行数为每个表中行数之积。三个分别含有1 0 0、2 0 0、3 0 0行的表的全连接将产生1 0 0×2 0 0×3 0 0= 6百万行。即使各表很小,所得到的行数也会很大。在这样的情形下,通常要使用W H E R E

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息