加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL:一种熟悉又陌生的编程语言,你了解他吗?

发布时间:2019-07-20 07:46:56 所属栏目:MySql教程 来源:小姐姐学Python
导读:副标题#e# 一、SQL :一种熟悉又陌生的编程语言 这里有几个关键词;熟悉、陌生、编程语言。 说它熟悉,是因为它是DBA和广大开发人员,操作数据库的主要手段,几乎每天都在使用。说它陌生,是很多人只是简单的使用它,至于它是怎么工作的?如何才能让它更高效
副标题[/!--empirenews.page--]

 一、SQL :一种熟悉又陌生的编程语言

这里有几个关键词;“熟悉”、“陌生”、“编程语言”。

说它“熟悉”,是因为它是DBA和广大开发人员,操作数据库的主要手段,几乎每天都在使用。说它“陌生”,是很多人只是简单的使用它,至于它是怎么工作的?如何才能让它更高效的工作?却从来没有考虑过。

SQL:一种熟悉又陌生的编程语言,你了解他吗?

这里把SQL归结为一种“编程语言”,可能跟很多人对它的认知不同。让我们看看它的简单定义(以下内容摘自百度百科)

结构化查询语言(Structured Query Language),简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

总结一句话,SQL是一种非过程化的的编程语言,可通过它去访问关系型数据库系统。

二、你真的了解“SQL”吗?

下面我会通过一个小例子,看看大家是否真正了解SQL。

SQL:一种熟悉又陌生的编程语言,你了解他吗?

这是一个很简单的示例,是关于SQL语句执行顺序的。这里将一个普通的SELECT语句,拆分为三个子句。那么在实际的执行过程中,是按照什么顺序处理的呢?这里有A-F六个选项,大家可以思考选择一下…

最终的答案是D,即按照先执行FROM子句,然后WHERE子句,最后是SELECT部分。

SQL:一种熟悉又陌生的编程语言,你了解他吗?

针对上面的示例,让我们真实构造一个场景,通过查看执行计划看看是否按照我们选择的顺序执行的。关于执行计划的判读,我后面会专门谈到。这里我先解释一下整个执行过程。

第一步,是按照全表扫描的方式访问了对象表(EMP)。对应于语句中的FROM部分。

第二步,是对提取出的结果集进行了过滤(filter部分),即将满足条件的记录筛选出来。对应于语句中的WHERE部分。

第三步,是对满足条件的记录进行字段投射,即将需要显示的字段提取出来。对应于语句中的SELECT部分。

SQL:一种熟悉又陌生的编程语言,你了解他吗?

这是一个详细的SQL各部分执行顺序的说明。

通过对执行顺序的理解,可以为我们未来的优化工作带来很大帮助。一个很浅显的认识就是,优化动作越靠前越好。

三、SQL现在是否仍然重要?

这里引入了一个新的问题,在现有阶段SQL语言是否还重要?

之所以引入这一话题,是因为随着NOSQL、NEWSQL、BIGDATA等技术逐步成熟推广,“SQL语言在现阶段已经变得不那么重要”成为一些人的观点。那实际情况又是如何呢?、

SQL:一种熟悉又陌生的编程语言,你了解他吗?

让我们先来看一张经典的图。图中描述了传统SMP架构的关系型数据库、MPP架构的NEWSQL、MPP架构的NoSQL不同方案的适用场景对比。

从上面的“数据价值密度、实时性”来看,传统关系型数据库适合于价值密度更高、实时性要求更高的场景(这也就不难理解类似账户、金额类信息都是保存在传统关系型数据库中);MPP架构的NewSQL次之,MPP架构的NoSQL更适合于低价值、实时性要求不高的场景。

从下面的“数据规模”来看,传统关系型数据库适合保存的大小限制在TB级别,而后两者可在更大尺度上(PB、EB)级保存数据。

从下面的“典型场景”来看,传统关系型数据库适合于OLTP在线交易系统;MPP架构的NewSQL适合于OLAP在线分析系统;而NoSQL的使用场景较多(利于KV型需求、数据挖掘等均可以考虑)。

最后从“数据特征”来看,前两者适合于保存结构化数据,后者更适合于半结构化、乃至非结构化数据的保存。

归纳一下,不同技术有其各自特点,不存在谁代替谁的问题。传统关系型数据库有其自身鲜明特点,在某些场合依然是不二选择。而作为其主要交互语言,SQL必然长期存在发展下去。

SQL:一种熟悉又陌生的编程语言,你了解他吗?

我们再来对比一下传统数据库与大数据技术。从数据量、增长型、多样化、价值等维度对比两种技术,各自有其适用场景。

对于大数据领域而言,各种技术层出不穷。但对于广大使用者来说,往往会存在一定的使用门槛,因此现在的一种趋势就是在大数据领域也引入“类SQL”,以类似SQL的方式访问数据。这对于广大使用者来说,无疑大大降低了使用门槛。

解答一些疑问:

SQL:一种熟悉又陌生的编程语言,你了解他吗?

NoSQL、NewSQL已经超越了传统数据库,SQL没有了用武之地!

各种技术有着各自适合的不同场景,不能一概而论。SQL语言作为关系型数据库的主要访问方式,依然有其用武之地。

以后都是云时代了,谁还用关系型数据库!

对于价值密度高,严格一致性的场景,仍然适合采用关系型数据库作为解决方案。

我编程都是用OR Mapping工具,从不需要写SQL!

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读