将逻辑放入 SQL 中的优点和缺点? [关闭]

2024-01-09

在一份新工作中,我刚刚接触到将逻辑放入 SQL 语句的概念。

在 MySQL 中,一个愚蠢的例子是这样的:

SELECT
    P.LastName, IF(P.LastName='Baldwin','Michael','Bruce') AS FirstName
FROM
    University.PhilosophyProfessors P
// This is like a ternary operator; if the condition is true, it returns 
// the first value; else the second value. So if a professor's last name 
// is 'Baldwin', we will get their first name as "Michael"; otherwise, "Bruce"**

举一个更现实的例子,也许您正在决定销售人员是否有资格获得奖金。您可以获取各种销售数字并在 SQL 查询中进行一些计算,然后返回 true / false 作为称为“qualizes”的列值。

以前,我会从查询中获取所有销售数据,然后在应用程序代码中完成计算。

对我来说,这似乎更好,因为如果有必要,我可以使用调试器逐步遍历应用程序逻辑,但无论数据库正在做什么对我来说都是一个黑匣子。但我是一名初级开发人员,所以我不知道什么是正常的。

让数据库服务器执行一些计算/逻辑有哪些优点和缺点?

**代码示例基于蒙蒂·派森素描。 http://orangecow.org/pythonet/sketches/bruces.htm


这边走SQL 成为域模型的一部分。这是应用领域知识的又一个(不一定是显而易见的)地方。这种泄漏会导致更紧业务逻辑/应用程序代码和数据库之间的耦合,这通常是一个坏主意。

一个例外是视图、报告查询等。但这些通常都是孤立的,因此它们所扮演的角色很明显。

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

将逻辑放入 SQL 中的优点和缺点? [关闭] 的相关文章

  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • SQL 错误:“没有这样的表”

    我试图解决为什么我的代码为所有查询返回 null 的原因 最后发现 sql 查询什么也没有返回 我使用简约代码创建了一个新的 AIR 文档 s WindowedApplication
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • 如何在 DB2 AS/400 中将小数字段转换为日期字段?

    我有一个 DECIMAL 字段 其中包含 AS400 格式的日期 1100614 我努力了 cast MYDATE as DATE 但我无法将 DECIMAL 转换为 DATE 而 DATE MYDATE 返回空值 如何将此字段转换为日期字
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • 可以使用表通配符创建 sql 查询吗?

    这可能是一个简单的问题 但我无法在网上找到解决方案 任何帮助将不胜感激 我正在尝试在 PHP 中创建一个 SQL 查询 并希望以某种方式将通配符应用于 TABLE 过滤器 可能是这样的 select from table 但是 到目前为止我
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 使用子查询 select 创建新表

    我试图从子查询选择创建一个新表 但出现以下错误 附近的语法不正确 SELECT INTO foo FROM SELECT DATEPART MONTH a InvoiceDate as CalMonth DATEPART YEAR a In
  • 如何从 SQL Server 2008 查询结果中删除“NULL”

    我有一个包含 59 列和超过 17K 行的表 很多行都有NULL在某些列中 我想删除NULL以便查询返回空白 而不是NULL 我可以运行一些更新功能来替换所有NULL with 使用 SQL Server 2008R2 Management
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST

随机推荐

  • 解析未声明的参数

    我正在编写一个用于运行 bash 命令的实用程序 该实用程序本质上将字符串和列表可选参数作为输入 并使用可选参数来插入字符串 我希望它像这样工作 interpolate py Hello user arg my name is comput
  • PHP cURL:修改/覆盖连接标头

    使用 PHP cURL 库 我可以操作 HTTP 标头 但是怎么样 联系标题 当我发送任何请求时 cURL 总是将其附加连接 保持活动状态当我尝试将此标头修改为这个标头时连接 保持活动状态 小写 keep alive 它会附加两行作为结果
  • Kafka 更新元数据失败

    我正在使用 Kafka v0 10 1 1弹簧启动 我正在尝试在 Kafka 主题中生成一条消息mobile user使用以下生产者代码 Topic mobile user有 5 个分区和 2 个复制因子 我已附上我的问题末尾的Kafka设
  • 使用 ie10 的 webbrowser c# winform

    我想强制网络浏览器在我的 c winform 应用程序中使用 IE10 我知道还有其他类似的问题 但我已经阅读了很多 但我不知道我错在哪里 这是我的代码 RegistryKey registrybrowser Registry LocalM
  • 为什么 jQuery 不使用 JSDoc? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 或者它们确实存在 但只是不在源代码中 我真的很想得到一些东西 可以阻止 js doc toolkit 每次解析 jQuery 时崩溃 这也意味着
  • 如何将 XML 发布到 MVC 控制器中? (而不是键/值)

    使用 Fiddler 我可以传入 body someXml ThisShouldBeXml 然后在控制器中 HttpPost public ActionResult Test object someXml return Json someX
  • C++ 中的可扩展自动类注册

    C 中的自动类注册是一项常见任务 也是 StackOverflow 上的一个常见问题 在对象工厂中注册对象创建者 https stackoverflow com questions 1310214 register an object cr
  • 如何在 app.config 文件中定义端点?

    如何在 app config 文件中使用 MEX 端点定义端点以及运行应用程序所需的内容 我有一个名为 IXMLService 的服务合同 并且我正在使用 WsHttpBinding 请举个例子 创建app config后 如何启动服务
  • 将一个 Div 插入到另一个 Div 中?

    我正在创建一个网络应用程序 想知道为什么以下代码不起作用 它首先创建一个元素 然后将其添加到主体中 然后 我创建另一个 Div 元素 我想将其放置在我创建的第一个 div 元素内 我使用 MooTools 类来创建和初始化对象 它工作正常
  • 挑战:ViewPager 的自定义动画。更改所选元素的高度(视图折叠)

    我目前正在研究 ViewPager 中切换页面之间的自定义动画 当我向左滑动时 视图向左移动 新视图从其下方来到前面 我想让视图向左移动 我处理的 以缩小 如下图所示 在第二张和第三张图片中 我没有想象新的视图出现在前面 但我认为这是没有必
  • 将 vsDoc 更新到 1.5 会破坏所有 JavaScript

    我在看似最简单的操作上遇到了一些困难 在 Visual Studio 中 当我将 vsDoc 从 1 4 1 更改为 1 5 时 页面上的 JavaScript 不再起作用 视觉工作室 2010 原来的 有效的 是这样的
  • 不可知地检查 unittest.mock 调用参数。它们是否作为位置参数或关键字参数传递

    When a unittest mock Mock对象已被调用 我可以使用调用的确切签名检查参数值 from unittest mock import Mock m Mock creation of mock m foo bar baz c
  • XNA C# 2D 平台游戏

    我正在尝试在 XNA 中制作 弄清楚如何 一个 2d 平台游戏 我知道如何创建平铺网格以及如何执行碰撞检测 我对玩家的 9 个边界图块执行碰撞检测 但我想知道是否有更好的方法来执行碰撞检测 我读过 时空幻境 不使用图块 而是使用拼凑的图像或
  • 当名称可以是任何语言时,如何按名称索引 postgres 表?

    我有一个很大的 postgres 表 其中包含位置 商店 地标等 用户可以通过各种方式进行搜索 当用户想要搜索某个地点的名称时 系统当前会执行以下操作 假设搜索是在咖啡馆 lower location name LIKE cafe 作为查询
  • 在css中为文件上传按钮添加样式

    我有一个带有以下 css 的文本字段和按钮 JS 小提琴链接 http jsfiddle net Tdkre http jsfiddle net Tdkre submit moz box shadow inset 0px 1px 0px 0
  • 如何防止删除Android中编辑文本的第一个字符

    这是我在应用程序中编辑文本之一
  • 如何迭代 C# 中的内置类型?

    我想迭代 C 中的内置类型 bool char sbyte byte short ushort 等 怎么做 foreach var x in GetBuiltInTypes do something on x 系统类型代码 http msd
  • 我们可以访问不存在的工会的成员吗?

    在 C 标准中 基本 lval 11 6 http eel is c draft basic lval 11 6 says 如果程序尝试通过以下类型之一以外的泛左值访问对象的存储值 则行为未定义 聚合或联合类型 其元素或非静态数据成员中包含
  • 如何重载Python中的内置模块?

    我正在尝试将主机绑定到我的 python 程序中的指定 ip 只是让它在python程序中起作用 所以我不打算修改 etc hosts file 我尝试添加一些代码create connection函数于socket py对于主机 IP 转
  • 将逻辑放入 SQL 中的优点和缺点? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在一份新工作中 我刚刚接触到将逻辑放入 SQL 语句的概念 在 MySQL 中 一个愚蠢的例子是这样的 SELECT P LastName IF