首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你会如何在SQL脚本中强制执行DRY(不要重复自己)?

在SQL脚本中强制执行DRY(不要重复自己)的方法是使用存储过程和视图。

存储过程是一种在数据库中存储的可重用的SQL代码块,可以接受参数并返回结果。使用存储过程可以将重复的SQL代码抽象出来,减少代码重复,提高代码的可维护性和可重用性。

视图是一种虚拟的表,它由一个SQL查询定义,并且在查询视图时会执行该SQL查询。视图可以将复杂的查询逻辑抽象出来,使得查询更加简单和易于理解。

以下是一个简单的示例,演示如何使用存储过程和视图来强制执行DRY原则:

假设我们有一个数据库表employees,其中包含员工的姓名、年龄和工资信息。我们想要查询所有工资高于平均工资的员工的姓名和工资信息。

首先,我们可以创建一个存储过程来计算平均工资:

代码语言:txt
复制
CREATE PROCEDURE calculate_average_salary
AS
BEGIN
    SELECT AVG(salary) FROM employees
END

然后,我们可以创建一个视图来查询所有工资高于平均工资的员工的姓名和工资信息:

代码语言:txt
复制
CREATE VIEW high_salary_employees AS
SELECT name, salary FROM employees WHERE salary > (EXEC calculate_average_salary)

最后,我们可以查询high_salary_employees视图来获取所有工资高于平均工资的员工的姓名和工资信息:

代码语言:txt
复制
SELECT * FROM high_salary_employees

这样,我们就将重复的SQL代码抽象出来,使用存储过程和视图来实现DRY原则。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC 5 - 给数据模型添加校验器

拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己DRY --Don’t Repeat Yourself)"。...您可以在一个地方 (模型类) 以声明的方式指定验证规则,这个规则会在应用程序的任何地方执行。 让我们看看您如何在本电影应用程序,使用此验证支持。...Code First确保的模型在指定class上在验证规则强制执行之前应用程序将变更储存在数据库。...具有通过.NET Framework自动强制执行的验证规则, 有助于使的应用程序更加健壮。它还确保可以不会忘记验证的东西,即在不经意间不会让坏的数据写入数据库。...它意味着您完全遵守DRY原则。 使用DataType属性 打开Movie.cs文件并检查Movie类。

9K70

软件设计原则——DRY(Dont Repeat Yourself)和KISS( Keep It Simple, Stupid)

在本文中,我将探讨软件设计原则及其优点,为什么设计原则对我们有用,以及如何在日常编程实现它们。我们将探索DRY和KISS软件设计原则。...DRY(Don’t Repeat Yourself)原则——不要重复自己 DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。...这样让管理代码变得很困难的,如果任何逻辑发生变化,那么我们必须在代码的所有地方进行更改,从而浪费时间。 如何实现DRY 为了避免违反DRY原则,需要把的系统分成几部分。...不要编写过于冗长的方法,要进行逻辑拆分,并尽量使用现有方法已经写好的逻辑。 DRY的好处 更少的代码是好的,它节省了时间和精力,易于维护,并且减少了bug的几率。...DRY原则的一个很好的例子是企业库enterprise libraries的helper类,其中每行代码都在库libraries和helper类是惟一的。

3.6K20

打造高质量代码:探究DRY、YAGNI和三次法则

其中,DRY原则、YAGNI原则和三次法则是我们编程过程中常常需要用到的三个重要原则。那么,这些原则具体是什么含义,又应该如何在实际开发运用呢?下面就让我们一起来探讨。...DRY原则:追求高效,摒弃重复 DRY,全称"Don't Repeat Yourself",翻译为中文就是"不要重复自己"。这是一种追求高效、优雅的编程原则。...根据DRY原则,任何形式的信息重复都应当被消除。在实际的编程,如果同一个逻辑出现在两个或更多的地方,那么我们就需要考虑将这部分逻辑抽象出来,避免重复代码。...它告诉我们,如果做了一次相同的事情,那就继续;如果做了两次相同的事情,那就稍微有点耐心;如果做了三次相同的事情,那么应该重构或抽象它。 实际上,这个法则是DRY原则的一个具体实践。...DRY原则、YAGNI原则和三次法则,都是我们在编程实践需要掌握的重要原则。通过运用这些原则,我们可以写出更高质量的代码,构建出更优秀的软件。

39010

CI一些优秀实践

首先是 MVC 如果还不知道 MVC ,应该尽快的学习,很快的体会到在 Model 数据访问,在 Controller 中进行业务逻辑,在 Views 编写 HTML 代码的价值。...如果之前没有使用过这种模式写过程序,也许皱起额头,不过应该给自己尝试这样做的机会。 一条实践准则是把更少的东西放进 Controller ,记住 DRY 准则:不要重复造轮子。...SQL注入。使用 CI 自带的 Active Record 可以解决这个问题。 XSS (跨站脚本)。...代码实践 编写简洁的代码,并且理解的代码,不要只是复制粘贴别人的代码,并且不断提高编码能力。手册上的开发规范是一个能学习怎样更好编写代码的地方。 1. DRY。...不要总是重复造轮子,把能重用的代码放在它应该在的地方,比如libraries, helpers 或者是 models,而不是controllers,一个经验准则:当你复制代码的时候,也许已经第二次把它放在了错误的地方

3.3K50

这些框架技术的出现都是为了解决什么问题?

① 首先从DRY原则开始说起 Don't Repeat Yourself,不要重复的代码。...* 2 + 1); } 我们进行这样的修改,只需要修改一处,而上面的形式却需要修改10处,当然更麻烦且更容易出错,所以请记住能不重复就不重复。...2)进阶的DRY原则:方法级别 当我们经常写一些重复性代码时,我们就要注意看能否将其抽取出来成为一个方法,: try { Thread.sleep(1000); } catch (InterruptedException...首先要夯实的语言基础,JavaSE基础,语法掌握,用法掌握,有些同学语法还不熟练就开始学框架,等于地基没打就起高楼,可能快一步,但是迟早要遇到瓶颈,甚至摔跟头。 3. 那么何时开始学习框架?...只要程序大了,归根究底还是要使用框架的,不是用别人写好的,就是自己写一套。这里我不建议自己写,不要重复造轮子,总有专业造轮子的。草草写就的往往不如别人已经千锤百炼的代码。

36720

设计模式(07)——设计原则(2)

正则表达式、位运算符等。 如果盲目的采用这些特性,影响代码的可读性,因为这种运算法为了减少代码行数,采用很多方式来规定一些特性,这些特性有时会不好理解。...,因为自己造的轮子在一定程度上肯定没有网上大家都用的好,比较容易出现问题,而这些问题可能在对应的轮子上已经被解决来(但自己学习的时候,该造还是要造) 不要过度优化,炫技,例如为了提高性能和减少代码行数,...** 后续会有一篇文章,来专门讲解如何在软件设计,防止过度设计,但对对应该优化,该留好优化点如何实现。...DRY原则 定义 英语解释为:Dont repeat yourself,可以理解为不要重复的代码,要做好代码的可复用性。...答案是这两段代码是重复的代码,虽然这两段代码的实现逻辑不一致,代码编写也不一致,但其仍然违反了 DRY 原则,因为这两段代码所实现的点是一样的,下面我们来看一下这样重复的代码带来什么隐患。

25820

程序员修炼之道 — DRY 原则

bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com 设计原则之DRY 原则 DRY(Don’t Repeat Yourself),翻译成中文就是,不要重复自己。...但是对于DRY原则,会比较容易陷入如下的一些思维陷阱: 陷阱一:随时关心代码重用性 代码重复通常有以下三种类型:   1....要想不重复自己,需要先不再随时关心代码重用性,保留适当的重复,等到真的重复时,再去抽象可复用的公共代码。 陷阱二:过度设计 我们总是期望通过现阶段的灵活设计来避免未来需求变化后的重复设计与编码。...复制粘贴编程,是指通过将他人已经实现的代码复制到自己的代码实现同样的功能。这是现在最常用的编程方式之一,理由就是不重复造轮子。...总结: 对于DRY原则,需要明白的是不要为了遵从设计原则而设计,并不是代码重复了就一定是坏的代码,不能以代码是否违反了DRY原则去判断重复代码的好坏。

46020

面向对象设计4原则 原

DRY(不自我重复) 通过将共同之物抽取出来并置于单一地方避免重复的程序代码。...,也违反DRY原则,系统中会出现大量的重复代码。...; } } return execute(new QueryStatementCallback()); } DRY不仅应用于编码 抽取出重复程序代码是运用DRY的好开始,但DRY的内涵可不只是如此...当试图避免重复程序代码时,实际也在试着确保对应用程序每一个功能和需求只实现一次。 其实无论编写需求,开发用例或者编写代码都应该遵守DRY原则!...(OCP) 通过将共同之物抽取出来并置于单一地方避免重复的程序代码(DRY) 系统每一个对象应该具有单一职责,所有对象的服务都应该聚焦在实现该职责上。(SRP) 子类型必须能够替换其基类型。

52020

软件开发: 高效策略-代码复用与DRY原则

本文将探讨代码复用的概念、DRY原则的重要性以及如何在实际项目中有效地应用这些原则。 代码复用的概念 定义 代码复用指的是在软件开发过程多次使用同一段代码,而不是重复编写相似的代码。...DRY原则的重要性 定义 DRY原则,即“不要重复自己”,强调在代码避免重复。该原则认为,每一片知识或逻辑应该有一个唯一的、明确的、权威的表示。...目的 避免冗余:确保代码不会出现重复的逻辑或功能。 提升可维护性:修改时只需更改一处,减少维护难度和错误风险。 如何有效应用代码复用与DRY原则 1....利用第三方库和框架 在不重复造轮子的前提下,合理选择成熟的第三方库和框架。 评估第三方库的稳定性、文档和社区支持。 3. 重构和代码审查 定期进行代码重构,消除重复代码。...结论 在软件开发,有效地运用代码复用和DRY原则是提高开发效率、保证软件质量的关键。

15110

可能被你误解的 DRY 原则

或许听说过 DRY 原则,但我打赌,理解的肯定有偏差;或许从未听过,那太好了,本文受益匪浅,对的编码一定有指导作用,甚至对的工作生活都有些许启发。...理解误区: 有些人将 DRY 固化为编码规范,这是狭隘的。 至少,别把它理解为“不要复制粘贴代码”,它和你想的真的不一样。...实际上,DRY 原则对工作、生活的问题也有着指导作用,比如我写本文由于要作用于博客、ppt 等场景,创建了多个副本,设想一下,如果我要修改某个章节,是不是每处都要改?到时候我或许抓狂。...同语言的服务,在项目构建工具的帮助下,在同一个仓库组织起来,依赖公共组件服务。 但是,无法破除跨语言的壁垒。 3 总结 DRY 原则描述的重复是 知识和意图 的重复。...不要过度追求 DRY,破坏了内聚性,这两者很难两头都握住,很遗憾的告诉,没有规则可言,多向经验丰富的程序员讨教。

1.2K20

架构师应该遵守的编程原则

总结工程专业人员在设计过程的经验,大多数系统的设计应保持简洁和单纯,而不掺入非必要的复杂性,这样的系统运作成效取得最优;因此简单性应该是设计的关键目标,尽量回避免不必要的复杂性。...(Don’t Repeat Yourself) DRY即Don’t repeat ourself(不要重复自己,简称DRY),或一个规则,实现一次(One rule, one place)是面向对象编程的基本原则...我对DRY的理解: 尽可能的减少重复代码重复、文档重复、数据重复、表征重复、开发人员重复(相同的功能不能的开发人员的优自己的实现) 不重复造轮子,能够使用开源的解决方案的情况下没有必要再实现一遍。...重复的事项,尽可能的使用自动化程序解决。 不要过于优化,过度追求DRY,破坏了程序的内聚性。...如果很忙,那就放慢速度。如果真的很忙,那就先放一放。这听起来很愚蠢,但是千万不要自己陷入会导致后期问题的妥协。如果正在编写程序的核心部分,尽可能保证精确。

23820

【五分钟阅读系列】程序员修炼之道——7:重复的危害

提示11: DRY – Don’t Repeat Yourself 不要重复自己   与此不同的做法是在两个或更多地方表达同一事物。如果改变其中一处,必须记得改变其他各处。...或者,就像那些异形计算机,的程序将因为自相矛盾而被迫屈服。这不是是否能记住的问题,而是何时忘记的问题。   会发现DRY原则在全书中一再出现,并且常常出现在与编码无关的语境。...项目标准可能要求建立含有重复信息的文档,或是重复代码的信息的文档。多个目标平台各自需要自己的编程语言、库以及开发环境,这会使我们重复共有的定义和过程。编程语言自身要求某些重复信息的结构。...当客户修订他们的规范时,测试套件自动改变。有一次团队向客户证明了,该过程很健全,生成验收测试在典型情况下只需要几秒种。 语言问题。许多语言会在源码强加可观的重复。...在源码树中指定一个中央区域,用于存放实用例程和脚本。一定要阅读他人的源码与文档,不管是非正式的,还是进行代码复查。不是在窥探——是在向他们学习。

1.1K20

怎样写出可读性高的代码?

部分代码可能读两遍就能想明白个中缘由,但为了保险起见,还是不要自己的大脑添加不必要的负担。 6不要搞混层次 不要搞混函数的抽象层次。...而对于其他决策类的函数,不同的决策引向不同的函数:有的部分负责制定决策,有的则是负责执行决策。分解函数的方法有很多种维度,只有通过不断的练习才能一眼看穿哪种才是正确的。...8不要分解函数 不要重复自己(don't repeat yourself, DRY)的意思经常被过度解读。 如今,抽取魔法数常量,以及针对某类特定决策的逻辑副本,已经算是公认的标准答案。...但这样以来,又不可避免会出现重复。当这些重复的部分需要保持同步时,我们可以利用 DRY 的思路,将相同的部分抽取到子函数。这时,做决策和考虑步骤就会容易很多。 请记住,区区几行重复代码是没问题的!...只关注某个特定函数的读者也更容易理解它们的用处。 (注意,当你能负责所有的 caller 时,这种方法才是正确的。如果的函数只是公共 API 的一部分,那么请不要考虑使用这种方法。

81210

过度设计有意义吗

有人基于自己的理解给具体原则: 3 YAGNI You aren’t gonna need it,用不着它。非必要,勿增功能。...4 DRY Don’t repeat yourself,不要重复自己。在一个系统,每一处知识都必须有单一、明确、权威地表述。...即不要做cv工程师。这还远远不够,DRY针对的是对知识和意图的复制:在两个不同地方的两样东西表达形式不同,但表达内容却可能相同。...DRY不局限于写代码: 注释和代码之间存在重复,可以尝试把代码写得更清晰 内部API在不同的使用者之间存在重复,可以通过中立格式进行API的定义,然后用工具生成文档、模拟 API 等等 开发人员之间做的事情存在重复...2 消除重复 正如DRY得能发现重复,就要会分离关注点 3 表达出程序员的意图 编写有表达性的代码,这也需要你对“什么是有表达性的代码”有认识。

44020

6个技巧加速的gradle编译

不要害怕,gradle对于Android项目和你的Java项目是一样的。这意味着我给你的建议同样适用于其他的项目的环境。所以同样也能用这些技巧去加速的JAVA项目编译。...确实有一个有用的阶段,我们也许能够在我们自己的编译脚本加快,Gradle完全执行自私的任务:配置本身和实施执行开销。 在这篇文章,我们将首先集中精力减少构建的开销之前,我们尽量使构建本身更快。.../gradlew :android:assembleDebug --dry-run 在考虑到所有的gradle执行的任务之后,跳过dry-run,会打印出运行这个命令消耗多少时间。...gradle不一样,大多数项目都用的gradle编译,修复gradle版本确保构建重复性。如果的项目用gradle编译确实很棒,并且也应该用wrapper。...,同时也失去了重复性的构建。

2.1K30

叶剑锋 手把手带你写一个Web框架(完结)

叶剑峰根据自己的十余年一线 Web 后端研发经验,梳理了一套系统的 Web 框架搭建方法论。...html 3.77M | ├──14丨定时任务:如何让框架支持分布式定时脚本?.m4a 16.36M | ├──14丨定时任务:如何让框架支持分布式定时脚本?....(上).html 3.50M | ├──21丨自动化:DRY,如何自动化一切重复性劳动?(上).m4a 13.09M | ├──21丨自动化:DRY,如何自动化一切重复性劳动?...(上).pdf 2.00M | ├──22丨自动化:DRY,如何自动化一切重复性劳动?(下).html 3.85M | ├──22丨自动化:DRY,如何自动化一切重复性劳动?...(下).m4a 10.91M | ├──22丨自动化:DRY,如何自动化一切重复性劳动?(下).pdf 2.05M | ├──23丨管理接口:如何集成swagger自动生成文件?.

84520

《程序员修炼之道 - 从小工到专家》吐血解读

软件开发也一样,如果我们项目留有很多“破窗户”(低劣的设计、错误的决策、糟糕的代码),之后接手的人也倾向于是它变得更糟糕。如果代码很漂亮,自己以及之后接手的人,都可能格外注意,不把它弄脏的。...遇到无法定位的问题时,对着小黄鸭(屏幕)解释自己的实现逻辑,很可能在说的过程自己就发现了问题所在。 6、不要第一时间怀疑 OS,IDE,三方库的问题,他们出问题的概率比你代码出问题概率小得多。...可以写一组 Perl 脚本读取数据库 schema 定义的纯文本文件,根据它生成,用于创建数据库的 SQL 语句。schema 的 XML 版本等 生成 web 文档。...感觉这个是承接上一节的内容,不要被以前的假设和设计所限制,留有一定的弹性空间。 2、我们相信,盲目地采用任何技术,而不把他们放进的开发实践和能力的语境,这样的处理日后可能后悔。...5、不要重复自己DRY):由于个人理解程度的不同或者新成员的加入,团队总会面临重复的内容,适当的指派一名管理员,让他专门维护这些资料,所有对此有疑问的人都不必自我寻找,只要去找管理员就行了。

30420

教你七步优化数据库

这并不意味着永远不应使用摘要表;相反,它意味着您不应仅用摘要数据替换明细数据。        如果所需分析需要明细数据,则无论技术如何,仅使用摘要表将会失败。...构建摘要表,添加索引,强制执行优先级和非规范化数据的主要原因是提高性能。如果您可以使用任意数量的数据来提出任何问题,并获得即时响应,那么您将永远不需要构建摘要或索引。        ...问题是:如何在提高性能、最小化数据复制和数据管理之间取得平衡。...) l 提供前端工具可能需要的结构,以创建优化的SQL并消除对前端工具的依赖,了解市场上的每个数据库 l 在视图中嵌入优化的连接技术 l 为表格集成一层安全性 l 为每个业务部门提供其自己的逻辑功能化-... 以用户希望看到的方式呈现数据 l 允许数据存储一次,然后通过视图转换,减少数据冗余,确保一致性并简化数据管理 三、添加索引,范围从简单的技术(二级索引)到复杂的结构(覆盖索引,连接索引或聚合索引)

68400

一个运维人员的编程思维7

---- DRY 是不是所有的工具脚本都要偏执地亲自来编写?...DRY(Don’t Repeat Yourself)不要重复发明轮子 ,因为使用工具的初衷是为了提升工作效率,编写脚本本身也是一种成本支出(探究语言和编写过程都得花费一定时间),当这种支出超过一定边界时反而成为了负担...人就是一种不断重蹈覆辙的动物,很多事情都是在反复发生,表现在同一空间中历史上的不同时刻,或同一时刻空间中不同个体的身上,所以,很多路已经被前人或他人走过,拿过来直接 借鉴 就好了嘛,何必亲自去踩一回坑呢 那反映在工作如何使用呢...在shell 对于排序的需求并不必自己写一个排序函数,直接使用sort就可以了,报表和汇总处理可以使用awk,替换可以使用sed ,过滤信息可以使用 grep ,定时执行也不必去循环检查时间,直接使用...,还要有代码审查的能力 总而言之,一定程度的编码能力是绕不过的,但是不要事必躬亲,核心思想是充分利用好现有工具,根本目的是提高工作效率 ----

31840

猫头鹰的深夜翻译:开发者最常踩到的六个低效陷阱

控制住这些想法,不要过度设计!不应该话大量时间在一些过于超前的功能上。而且,代码越多意味着更多的bug和不必要的脚本将会加到本已臃肿的程序,从而导致代码可读性扩展性的降低。...要想避免这一点,要经常反问自己这段代码是否在解决当前的需求。只需要考虑用例和边界场景,不要花大量的时间在一个短期内不会用到的功能上。...一次又一次的编写同样脚本 作为一个工程师,应当尽可能的遵循不要重复开发原则(DRY-Don't Repeat Yourself)来提效。...上述的工作不仅重复而乏味,人工执行还可能导致误操作带来故障。 低代码平台提供了开箱即用的工具,包括可复用的组件和图形化的界面拖拽生成器。...根据他们的具体用例进行优化,而不是构建自己的用例。 6. 无效沟通 无效的沟通是软件开发时间浪费的直接原因,有时是间接原因。

25930
领券