随笔分类 - emanual_数据库_子查询
摘要:子查询在DELETE 中唯一可以应用的位置就是WHERE 子句,使用子查询可以完成复杂的数据删除控制。其使用方式与SELECT 语句中的子查询基本相同,而且也可以使用相关子查询等高级的特性。下面的SQL语句用来将所有同类书本书超过3 本的图书删除: 上面的SQL 语句使用相关子查询来查询所有与待更新
阅读全文
摘要:在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询。下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: 注意,在MYSQL 中是不支持使用子查询来更新一个列的,所以这个UPDATE 语句无法在MYSQL中执行。 执行完毕查看T_Book表中的内容: 如果U
阅读全文
摘要:在使用INSERT语句的时候,一般都是使用它向数据库中一条条的插入数据,比如: 但是有时我们可能需要将数据批量插入表中,比如创建一个和T_ReaderFavorite表结构完全相同的表T_ReaderFavorite2,然后将T_ReaderFavorite 中的输入复制插入到T_ReaderFav
阅读全文
摘要:ALL在英文中的意思是“所有”,ALL运算符要求比较的值需要匹配子查询中的所有值。ALL运算符同样不能单独使用,必须和比较运算符共同使用。 下面的SQL语句用来检索在所有会员入会之前出版的图书: 执行完毕我们就能在输出结果中看到下面的执行结果: 与ANY 运算符相同,ALL 运算符同样不能与固定的集
阅读全文
摘要:和IN、ANY、ALL等运算符不同,EXISTS运算符是单目运算符,它不与列匹配,因此它也不要求待匹配的集合是单列的。EXISTS运算符用来检查每一行是否匹配子查询,可以认为EXISTS就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为false,否则匹配结果为true。 先来看一个简单的
阅读全文
摘要:在SQL中ANY和SOME是同义词,所以下面介绍的时候只使用ANY,SOME的用法和功能和ANY一模一样。和IN运算符不同,ANY必须和其他的比较运算符共同使用,而且必须将比较运算符放在ANY 关键字之前,所比较的值需要匹配子查询中的任意一个值,这也就是ANY在英文中所表示的意义。 首先看一个ANY
阅读全文
摘要:在前面已经介绍了IN运算符的简单使用,使用IN运算符可以用来匹配一个固定集合中的某一项。比如下面的SQL语句检索在2001、2003和2005年出版的所有图书: 执行完毕我们就能在输出结果中看到下面的执行结果: 这里进行匹配的集合是已经确定的集合“2001,2003,2005”,如果要匹配的集合是动
阅读全文
摘要:标量子查询不仅可以用在SELECT 语句的列表中,它还可以用在WHERE 子句中,而且实际应用中子查询很多的时候都是用在WHERE子句中的。 先来看一个简单的例子,我们要检索喜欢“Story”的读者主键列表,那么这可以使用连接来完成,不过这里我们将使用子查询来完成。 使用子查询的实现思路也比使用连接
阅读全文
摘要:与标量子查询不同,列值子查询可以返回一个多行多列的结果集。这样的子查询又被称为表子查询,表子查询可以看作一个临时的表,表子查询可以用在SELECT 语句的FROM子句中、INSERT语句、连接、IN 子句等很多场合。 首先来看一个在FROM子句中使用的最简单的表子查询。SQL语句如下: 这里将T_R
阅读全文
摘要:我们讲到可以将标量子查询当成SELECT列表中的一个列,唯一的约束就是子查询的返回值必须只有一行记录,而且只能有一个列。看完上章的例子有的读者可能认为标量子查询只能返回唯一的值,其实标量子查询完全可以返回随当前查询记录而变化的值。比如下面的SQL语句可以清楚的说明这一点: 这个SELECT语句首先检
阅读全文
摘要:单值子查询的语法和普通的SELECT语句没有什么不同,唯一的限制就是子查询的返回值必须只有一行记录,而且只能有一个列。这样的子查询又被称为标量子查询,标量子查询可以用在SELECT语句的列表中、表达式中、WHERE 语句中等很多场合。 首先来看一个在SELECT语句列表中使用的最简单的标量子查询。S
阅读全文
摘要:SQL语句允许将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替,比如SELECT FROM T 中就可以用子查询来代替表T,比如SELECTFROM(SELECT FROM T2 where F
阅读全文