ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

编程语言与SQL语言小节

2022-02-16 09:03:24  阅读:277  来源: 互联网

标签:语言 编程语言 小节 OOP SQL 声明 命令式


编程语言

SQL语言也属于是一种编程语言,而编程语言大体可分为四种:命令式,对象式,并发式还有声明式。

1.命令式编程语言

命令式编程语言是最像“编程语言”的语言。

命令式编程语言是几乎所有编程语言所采用的,在命令式编程语言中,程序是若干指令组成的语句。程序员要告知电脑如何运行。

我们学的汇编,C语言这些都是命令式的编程语言。也就所谓的冯•诺伊曼机运行机制,从内存中获取指令和数据,然后一条一条的执行。

类似于命令电脑:先走A,再走B,碰到C以后再返回B……

2.声明式编程语言

声明式语言只描述了程序应该完成的任务,至于如何做,并不管。比如SQL就是这样一种语言,看下面这条语句。

SELECT id FROM qqgroup WHERE driving > 50

这条语句的意思是从QQ群中选出开车次数大于50的人来。只描述了一个任务,至于怎么选,声明式语言并不关心。以结果为导向。

这和我们普通人首次接触的命令式编程语言有非常大的区别。于是,很多人认为SQL语言不是编程语言,或者是一种很奇怪的编程语言。

其实,SQL语句只是声明式编程语言中的一小部分,往细了分,声明式编程语言可以分为以Lisp家庭为代表的函数式编程语言和以Prolog为代表的逻辑式编程语言。

不仅如此,在Java中的annotation和XDoclet库中,采用的也是具有声明式特征的编程。假以时日,也许命令式和声明式语言会互相渗透,尤其是在声明式语言的大本营:人工智能领域,符号处理领域,数理逻辑领域越来越被人重视以后。

SQL语言执行不按顺序来

比如说,SQL查询的时候,一般是这样写:

SELECT + FROM + WHERE + GROUP BY + HAVING + UNION + ORDER BY

但是在执行的过程中,和命令式不一样,执行的顺序又变了

FROM + WHERE + GROUP BY + HAVING + SELECT + UNION + ORDER BY

在写SQL的时候,一定要记住,写的顺序和执行的顺序没什么关系。这一点和命令式编程也有非常大的不同。

3.对象式编程语言

OOP (Object-Oriented Programming),翻译成面向对象其实非常不好,可能是个单身汉翻译的。

我认为我前面讲的命令式语言,声明式语言(包括声明式与逻辑式)想比,OOP并不能单独存在,如果说这三个可以平行并能自成一体独挡一面的话,OOP是与这三者相交的一种编程范式。

命令式和声明式语言,都能融合OOP的范式。C++和Java都是在命令式的基础上发展了OOP,其核心思想是:以数据为中心,将系统划分为相互作用的对象集合。这个思想不仅仅能运用在命令式语言上,也可以运用在函数式语言上和逻辑式语言上,只是将命令式语言中的过程换成函数式语言中的函数,或者逻辑式语言中的断言。

那OOP能和SQL这种声明式语言结合么?

答案是:当然可以!

SQL如何和OOP结合起来?

这种方法叫ORM(Object-Relational Mapping),对象关系映射,这是是一种为了解决OOP与关系数据库存在的互不匹配的现象的技术。

我们都知道,OOP会让编程相对来说更易于理解。

使用了ORM以后,我们可以不用操作表,不用写SQL语句,可以在程序中用面向对象的思路,直接操作对象即可。

几乎所有大型的web框架都实现了ORM,在Ruby on Rails中,实现的方法叫做ActiveRecord。虽然名字各有区别,但是,里面的原理是一样的。

标签:语言,编程语言,小节,OOP,SQL,声明,命令式
来源: https://www.cnblogs.com/longyoudahai/p/15898883.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有