SQL,一门不是语言的语言?
提起编程语言,更多人想到的是java、python、C、C++,甚至是php、js,几乎无人提到SQL,甚至很多编程语言排行榜里也将SQL排除在外。
同是向计算机发出指令,得到结果,凭什么别的算语言,SQL不算?
IT技术革新如此之快,曾经C如日中天,后来轮到java,现在号称是python的天下,但有人预测很快要被go所取代,每一门语言都有着其独特的使用场合,并不断被后来者超越。
然而却有一门语言从其诞生到现在,从未被替代,那就是SQL。甚至那些号称要取代它的反而被他所取代,如hadoop、如spark,最终还是不得不拾起SQL搞起sql on hadoop、sparkSQL。
在大数据时代,SQL依然散发着伟大的光芒,并不断把所谓的挑战者(hadoop、spark)纳入麾下,并不用说mpp分布式并行计算本身就是sql数据库。
而且,即使其他语言,一样离不了SQL去操作底层的数据,如下图所示:
那SQL到底是一门什么样的语言呢?明明干着最累最重的活(大数据量的计算,不是指程序员),却得不到大部分一个编程语言的名分呢?
我想原因可能有以下几个:
1、SQL藏在深闺(工作都在后台悄悄干掉了),不像web语言等在外面“抛头露面”为大众所熟知(甚至很多语言还创造了ORM框架,更是把sql金屋藏娇了,尽管其实还是sql在实际干活)
2、不像其他语言都是过程化语言,非常接近人类的思维方式。SQL语言却是一门“非人类”的语言,它是结构化的、集合化的,不太好理解,尤其是中高级SQL。不信?试试理解下下面这句:
SELECT FanName FROM Fans
WHERE NOT EXISTS
(
SELECT EventID FROM Events
WHERE NOT EXISTS
(
SELECT * FROM Attendance
WHERE Attendance.FanID=Fans.FanID
AND Attendance.EventID=Events.EventID
)
)
所以,朋友说,加入SQL的怀抱吧,让我们一起交流,一起成长。
- 【特斯拉组件】iOS高性能PageController
- SUSE Linux系统在线安装软件命令zypper参数详解
- Linux下通过rdesktop连接Windows远程桌面
- 微信iOS收款到账语音提醒开发总结
- React Native按需加载 手Q狼人杀探索之路
- nginx日志切割及7天前的历史日志删除脚本
- 《ios爆内存问题解决方案-OOMDetector组件》
- Linux/SUSE安装svn客户端的问题记录
- 《广研Android卡顿监控系统》
- 替换WordPress默认搜索为百度站内搜索(知更鸟主题可照搬)
- 《Android插件化技术——原理篇》
- 利用Centos或RedHat的iso镜像搭建本地yum仓库
- QUIC协议初探-iOS实践
- Golang语言社区--【基础知识】常量
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于leetcode第56题合并重复区间的解析
- java-覆盖equals和hashcode方法
- java-单链表反转解法及分析
- JAVA-判断两个单链表是否相交并求交点
- 删除排序数组中重复元素的方法
- zookeeper-3.4.10伪集群模式搭建及简单操作
- 04 Confluent_Kafka权威指南 第四章: kafka消费者:从kafka读取数据
- JAVA中的单例模式分析(doublecheck和枚举实现)
- 有关JAVA自动装箱-拆箱的分析
- 10 Confluent_Kafka权威指南 第十章:监控kafka
- 解决elasticsearch“Too many open files in system”问题
- elk基于jolokia监控springboot应用jvm方案
- elasticsearch集群更换节点操作
- 对storm1.2.3并行度的理解
- RabbitMQ集群搭建过程