求大神,告诉我SQL中的派生表有什么用,用白话说下,谢谢详细一些!我非常不明白,还有相关子查询,跪

求大神,告诉我SQL中的派生表有什么用,用白话说下,谢谢详细一些!我非常不明白,还有相关子查询,跪,第1张

派生表:比如要查找一个叫张铁牛的人的信息,我们知道他是男性,为了缩小查找范围我把所有的男性都找出来,然后从这些男性中里面再去找张铁牛。这里男性的集合就相当于派生表,转成sql语句是这样select 姓名,住址,身份z from (select * from 表名 where 性别='男性') t where 姓名='张铁牛'(这里只是为了举例子),这里的t这个数据集就是派生表,它是虚表,在数据库中不存在的,是我们构建的,在这里的目的是为了缩小数据的查找范围。

相关子查询:子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。比如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名=内表.姓名),你看在括号里的sql语句,是与外表关联的。这里顺便说一下非相关子查询,还是以上面为例,如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名='张铁牛'),你看这个语句中括号里的sql语句,它是单独执行的,与外表没有任何关联,它只执行一次,执行完后将结果集传递给外部查询使用。

这里只是表面上描述了一下,内部还有其他区别,lz需要通过联系体会,有问题再追问,望采纳。

数据库CTE指的是公共表表达式(Common Table Expression).

可以把它认为是在单个select,insert,update, delete 或者 create view 语句中定义的临时结果集。

CTE类似派生表,但它不以对象的形式存储在数据库中,只在当前查询语句的执行期间有效。而且CTE可以在同一个语句中被多次引用。

CTE可以用于:

1. 建立递归查询。常见的场景有组织架构图、BOM等。具体用法请参考联机丛书。

2. 当不需要常规视图时,代替视图,提高可读性。

3. 允许在派生列上分组。

4. 在同一个语句中多次被引用。

派生表:比如要查找一个叫张铁牛的人的信息,我们知道他是男性,为了缩小查找范围我把所有的男性都找出来,然后从这些男性中里面再去找张铁牛。这里男性的集合就相当于派生表,转成sql语句是这样select 姓名,住址,身份z from (select * from 表名 where 性别='男性') t where 姓名='张铁牛'(这里只是为了举例子),这里的t这个数据集就是派生表,它是虚表,在数据库中不存在的,是我们构建的,在这里的目的是为了缩小数据的查找范围。

相关子查询:子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。比如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名=内表.姓名),你看在括号里的sql语句,是与外表关联的。这里顺便说一下非相关子查询,还是以上面为例,如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名='张铁牛'),你看这个语句中括号里的sql语句,它是单独执行的,与外表没有任何关联,它只执行一次,执行完后将结果集传递给外部查询使用。

这里只是表面上描述了一下,内部还有其他区别,lz需要通过联系体会,有问题再追问,望采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9603437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存