当前位置:  开发笔记 > 编程语言 > 正文

请帮我理解SQL vs C之类的编程?

如何解决《请帮我理解SQLvsC之类的编程?》经验,为你挑选了3个好方法。

具体来说,我试图了解SQL语句与普通C风格编程的区别,我似乎无法理解如何做"像这个表中的每个用户ID都有另一列数据等等的东西,运行这个存储程序"在编程中将是一个for循环,你怎么做这样的东西?

或者,对于tableA中contentID为11的每一行,向包含此数据的tableB添加一个新行,并从tableA的行中找到包含contentID为11的userID ...

任何人都在想与编程相比如何理解SQL语句?如果我明白自己的想法,我觉得我可以更好地运用它......



1> JosephStyons..:

他们从不同的角度来看世界.C是关于执行动作.SQL是关于存储数据和操作数据.它擅长的唯一"行动"是拉动和改变数据.

想想你的所有数据,比如维恩图 - SQL让你"看"你想要的那个图的任何部分.

如果你想真正对这些数据做些什么,那么在C中,你可能会说"转到每个用户并对它们执行此操作",如

//if a customer is late, send them a reminder
for(int i=0;i

在SQL中,您可以为用户列表提供ASK,如下所示:

SELECT *
FROM CUSTOMERS
WHERE LATE_FLAG = 'Y';

或者您可以更改有关这些客户的数据,如:

UPDATE CUSTOMERS
SET TRUST_LEVEL = TRUST_LEVEL - 1  --trust a little less when they are late
WHERE LATE_FLAG = 'Y';

请注意,此UPDATE可能会影响任意数量的行,但没有循环...您只是说"查找这些记录,并以这种方式更改它们".

但是如果你想给他们发一个提醒,那太糟糕了......你必须使用C或存储过程来做到这一点.

当您传统语言与SQL 结合使用时,您真正获得了两全其美的优势.如果你可以用这个替换C中的早期示例(免责声明:我知道这是伪代码,它只是一个例子):

//if a customer is late, send them a reminder

//get all the late customers
sqlCommand = 'SELECT CUSTOMER_ID FROM CUSTOMERS WHERE LATE_FLAG = ''Y''';
dataSet = GetDataSet(sqlCommand);

//now loop through the late customers i just retrieved    
for(int i=0;i

现在代码更具可读性,并且每个人都在运行时指向相同的数据源.您还可以避免C中可能涉及构建客户列表的潜在混乱代码 - 现在它只是一个数据集.

就像SQL在执行命令性操作时一样,C很难操纵数据集.它们一起使用,可以轻松获取数据,操作数据并对其执行操作.



2> Jason L..:

让我对此嗤之以鼻.我在这里走很长的路,所以忍受我.

最终,计算机上的所有程序,数据等都由相同的东西组成:1和0.没有更多,没有更少.那么计算机如何知道将一组1和0视为图像而将另一组视为可执行文件呢?

答案是背景.这是人类非常擅长的东西所以毫不奇怪它是计算机所做的大部分工作的基础.这些机制很复杂,但最终效果相当于一台计算机不断切换视角,以便用非常有限的数据集做出令人难以置信的灵活事物.

我提出这个问题是因为计算机语言很相似.最后,所有计算机语言最终都会通过处理器运行一系列操作码.换句话说,它是汇编语言.所有计算机语言都是汇编语言,包括SQL的任何实现.

我们打扰的原因是:编程语言允许我们从新的角度创建一个有用的幻觉来解决问题.它们为我们提供了解决问题并重新构建解决方案的方法.

冒着被陈词滥调的风险,当我们不喜欢问题的答案时,不同的编程语言允许我们提出不同的问题.

因此,当你接近一种语言时,无论是查询语言还是面向对象的语言或程序语言,你的第一个问题都需要是,"这种语言的观点是什么?解决问题的任务是什么?" 我甚至建议一种没有清晰视野的语言比它的价值更麻烦.

有了C,我认为这个观点是这样的:"即使是极其不同的处理器的最低级别的操作也可以用简单的通用语言来描述." C设计用于进入任何处理器的驾驶员座位,同时仍然具有相同的旧方向盘,踏板和仪表板.

所以用C语言,你就是在做所有事情.这就是为什么它被称为"高级汇编语言".或者,引用我的一个朋友,"C是计算机语言的拉丁语.汇编语言是树中猿猴的咕噜声."

SQL是一个完全不同的野兽,具有完全不同的视角......或者是它?SQL的观点是:"即使是最复杂的数据库,也可以用简单的通用语言来描述."

听起来很熟悉,嗯?SQL旨在让您进入任何数据库软件的驾驶员座位并拥有相同的方向盘,踏板等.

总而言之,C是一种用于向任意CPU提供常用命令的语言,而SQL是一种用于向任意数据库后端提供常用命令的语言.

现在,他们在哪里穿越路径?它实际上相当简单.

CPU做什么?它接收,转换和发送信息.因此,如果您的目标是解释和呈现数据或接受来自最终用户的命令,那么您正在使用C. C是针对您通过计算机自动执行所需的过程.

数据库做什么?它存储,分组和检索大量信息.因此,如果您的C程序在任何时候需要存储,分组或检索大型数据集或大型数据集的子集,那么您很可能会与数据库进行交互.

怎么样?当然,让C程序将SQL命令发送到数据库.;)

我希望这有点照亮一些事情,因为否则我只是看起来像一个浮夸的这么长时间,漫无边际的答复.:-P



3> 小智..:

SQL是一种用于处理数据集的查询语言.我注意到一些程序员犯了从SQL检索大型结果集然后在C中循环遍历以过滤数据的错误.最佳设计可以在SQL中进行尽可能多的集合过滤,让数据库将您的设置调整为执行循环或其他业务逻辑所需的最小数据集.所以基本上你的问题的答案是使用SQL来获取最小的数据集,然后使用C来根据业务逻辑操作数据集.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有