为什么使用“*”构建视图不好?

2023-11-24

为什么使用“*”构建视图不好?

假设您有一个复杂的联接,并且所有字段都可能在某处使用。

然后您只需选择所需的字段即可。

SELECT field1, field2 FROM aview WHERE ...

视图“aview”可以是SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...

如果表 1 和表 2 中的 2 个字段具有相同的名称,则会出现问题。

这只是在视图中使用“*”不好的原因吗?

使用“*”,您可以在不同的上下文中使用该视图,因为信息就在那里。

我缺少什么?

Regards


我不认为软件中有太多“只是糟糕”,但有很多东西被以不好的方式滥用:-)

您给出的示例是 * 可能无法给您所期望的结果的原因,我认为还有其他原因。例如,如果基础表发生更改,可能会添加或删除列,则使用 * 的视图将继续有效,但可能会破坏使用它的任何应用程序。如果您的视图明确命名了列,那么有人在更改架构时更有可能发现问题。

另一方面,你实际上可能want你对快乐的看法 接受对基础表的所有更改,在这种情况下,* 将 成为你想要的。

Update:我不知道OP是否考虑了特定的数据库供应商,但现在很明显,我的最后一句话并不适用于所有类型。我感谢 user12861 和 Jonny Leeds 指出了这一点,很抱歉我花了 6 年多的时间来编辑我的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用“*”构建视图不好? 的相关文章

随机推荐

  • Tensorflow 跨设备通信

    正如tensorflow论文所述 Tensorflow的跨设备通信是通过在设备中添加 接收节点 和 发送节点 来实现的 根据我的理解 设备 请考虑仅涉及CPU设备 负责执行操作的计算 然而 数据 例如 操作产生的张量 变量缓冲区 驻留在内存
  • 无法使用 ServerSocket.socketBind 分配请求的地址

    当我尝试设置套接字服务器时 收到一条错误消息 Exception in thread main java net BindException Cannot assign requested address JVM Bind at java
  • 用户定义函数中的错误处理

    我想在 SQL Server 2005 中编写一个非 CLR 用户定义函数 该函数接受输入字符串并返回输出字符串 如果输入字符串无效 那么我想向调用者指示错误 我的第一个想法是使用 RAISERROR 来引发异常 但是 SQL Server
  • Core Data 中多语言数据的良好实践

    我的 iPhone 应用程序中需要一个多语言 coredata 数据库 我可以为每种语言创建不同的数据库 但我希望在 iphone sdk 中存在一种自动方式来管理不同语言核心数据中的数据 例如资源和字符串 有人有一些提示吗 我做了一些与
  • (405 Method Not allowed)响应 Google 代码提交期间的 MKACTIVITY

    我已将代码上传到 code google 并成功提交了两次 但现在当我尝试提交代码时 它总是给出 Server sent unexpected return value 405 Method Not Allowed in response
  • 如何在 Visual Basic 中声明全局变量?

    我想创建一个可以跨多种表单使用的变量 它将成为整数的临时存储位置 在 VB 中 有多种方法可以实现此目的 一种 VB 特定的方法和一种非 VB 特定的方法 即也可以在 C 中实现的方法 VB 特有的方法是创建一个模块并将变量放置在模块中 P
  • 为什么可以创建 COM 接口的新实例?

    我对 COM 和 coclass 没有太多背景 所以我不太明白为什么我可以使用new具有接口的操作员 从与语言 框架无关的角度来看 为什么它能正确编译和运行是令人困惑的 using Microsoft Office Interop Exce
  • intelliJ idea 10 社区版和 GWT 插件

    安装 GWT 插件遇到困难 尝试搜索 GWT 插件 我所能找到的只是 GWT Imagebundle 它已经非常过时了 尝试了 文件菜单 gt 配置插件 但没有帮助 因为插件尚未安装 intelliJ 10 社区版是否支持 GWT 插件 如
  • Angular2 - Http POST 请求参数

    我正在尝试发出 POST 请求 但无法使其正常工作 testRequest var body username myusername password mypassword var headers new Headers headers a
  • css3 webkit动画停止在div上:悬停

    我尝试使用 webkit animation 和 webkit keyframes 制作动画 我有一个 div 动画 里面有子 div 当我的鼠标位于孩子上方时 我会停止父母的 webkit 动画 有例子吗 Thanks 不幸的是CSS中没
  • Linux 上的 openSSL 证书验证 [关闭]

    Closed 这个问题是无关 目前不接受答案 JKJS 我有这个证书链 cert pem self signed gt cert pem gt cert pem 所有三个证书都是我生成的 任何地方都没有使用互联网连接 这是完美的离线工作 现
  • XSS 安全。来自同一域的 2 个 iframe 之间的通信

    域 abc com 有一个包含 2 个 iframe 的页面 它们都是从域 xyz com 加载的 XSS 安全性是否会阻止这两个 iframe 之间的 JavaScript 访问 通信 交互 嗯 这取决于你所说的沟通是什么意思 似乎某种类
  • 访客设计模式-返回类型

    我使用访客设计模式来解决我们系统中的问题之一 作为如何实现它的参考 我使用了工厂现场 and 这个 YouTube 视频 在 DoFactory 示例中 访问者使用返回类型为 void 的方法 而在 YouTube 视频中 作者使用 dou
  • 将代码从 Mathematica 复制到其他平台的已知问题?

    我刚刚注意到 如果你在 MMA 8 0 1 win7 64 中有这个 然后你将它复制到SO 只需ctrl c ctrl v 你会得到这个 maxY minY stepy maxX minX stepx 这是数学上不等价 应该是这样的 max
  • AVCaptureSession 收到内存警告并无故崩溃

    我正在开发一个处理高清照片的应用程序 我正在使用 AVCaptureSession 拍照 停止它 然后对该照片应用效果 让我疯狂的是 一切都运行良好 仪器告诉我 我正确且按时地释放了我使用的所有内存 是的 它确实很高 有时达到 100mb
  • 为什么 Xcode 构建配置的精确副本会失败?

    我有一个react native具有桥接 Swift 代码的应用程序 可以使用 Xcode 毫无问题地构建 运行和存档10 0使用默认的Release and Debug构建配置 我用Xcode gt Product gt Archive或
  • 如何叠加不同单元格的图?

    在我笔记本的一个单元格中 我已经用以下内容绘制了一些内容 myplot plt figure plt plot x y 现在 在不同的单元格中 我想再次绘制完全相同的图形 但在其顶部添加新的图形 类似于两次连续调用所发生的情况 plt pl
  • 角度材质 - 更改单击的垫列表选项的颜色

    是否可以更改选中复选框的默认颜色 mat pseudo checkbox checked
  • preg_match_all() [function.preg-match-all]: 未知修饰符 ']'

    使用了几种不同的模式 但它们都出现了这个错误 那么出了什么问题呢 我要诊断的最短的一个是 pattern
  • 为什么使用“*”构建视图不好?

    为什么使用 构建视图不好 假设您有一个复杂的联接 并且所有字段都可能在某处使用 然后您只需选择所需的字段即可 SELECT field1 field2 FROM aview WHERE 视图 aview 可以是SELECT table1 t