本文主要是介绍SQL笔记(14)_第十四章 使用子查询定义未确定数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第十四章 使用子查询定义未确定数据
子查询也叫嵌套查询,是位于另一个查询的WHERE子句里的查询,它返回的数据通常在主查询里作为一个条件,从而进一步限制数据库返回的数据。它可以用于SELECT,UPDATE, DELETE, INSERT语句。
在某些情况下,子查询能够间接的基于一个或多个条件把多个表里的数据关联起来,从而代替结合操作。当使用子查询时,子查询首先被执行,然后主查询再根据其返回的结果继续执行。子查询的结果用于在主查询的WHERE子句里处理表达式。子查询可以用于主查询的WHERE子句或HAVING子句。
标准查询的规则同样也适用于子查询。
子查询必须遵循以下规则:
子查询必须位于圆括号里。
除非主查询里有多个字段让子查询进行比较,否则子查询的SELECT子句里只能有一个字段。
子查询里不能使用ORDER BY子句。在子查询里,我们可以利用GROUP BY子句实现ORDER BY子句的功能。
返回多条记录的子查询只能与多值操作符(比如IN)配合使用。
SELECT列表里不能引用任何BLOB,ARRAY,CLOB,NCLOB类型的值。
子查询不能直接被包围在函数里。
操作符BETWEEN不能用于子查询(外部),但子查询内部可以使用它。
子查询与SELECT语句
虽然子查询可以用于数据操作语句,但它最主要还是用于SELECT语句里,获取数据给主查询使用。
子查询与INSERT语句
INSERT INTO TABLE_NAME [ ( COLUMN1, [ COLUMN2 ] ) ] SELECT [ * | COLUMN1 | [ COLUMN2 ]] FROM TABLE1 [, TABLE2] [ WHERE VALUE OPERATE ]
子查询与UPDATE语句
UPDATE TABLE ...
SET ...= (SELECT ...) 注意返回多个结果的时候用IN而不是用“=”
子查询与DELETE语句
DELETE FROM TABLE_NAME
WHERE ...(SELECT ...)
嵌套子查询
子查询由内向外执行。
关联子查询
关联子查询在很多SQL实现里都存在,它的概念属于ANSI标准。关联子查询时依赖主查询里的信息的子查询,这以为着子查询里的表可以与主查询里的相关联。
子查询的效率
*适当使用关联子查询:在进行关联子查询时,如果要在子查询中使用某个表,必须首先在主查询中引用这个表。
这篇关于SQL笔记(14)_第十四章 使用子查询定义未确定数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!