SQL查询的底层运行原理深入分析_数据库其它

来源:脚本之家  责任编辑:小易  

www.zgxue.com防采集请勿采集本网。

前言

SQL 语言无处不在。SQL 已经不仅仅是技术人员的专属技能了,似乎人人都会写SQL,就如同人人都是产品经理一样。如果你是做后台开发的,那么CRUD就是家常便饭。如果你是做数仓开发的,那么写SQL可能占据了你的大部分工作时间。我们在理解 SELECT 语法的时候,还需要了解 SELECT 执行时的底层原理。只有这样,才能让我们对 SQL 有更深刻的认识。本文分享将逐步分解SQL的执行过程,希望对你有所帮助。

数据准备

本文旨在说明SQL查询的执行过程,不会涉及太复杂的SQL操作,主要涉及两张表: citizen 和 city ,具体数据如下所示:

CREATE TABLE citizen ( name CHAR ( 20 ), city_id INT ( 10 ) );CREATE TABLE city ( city_id INT ( 10 ), city_name CHAR ( 20 ) );INSERT INTO cityVALUES ( 1, "上海" ), ( 2, "北京" ), ( 3, "杭州" ); INSERT INTO citizenVALUES("tom",3),("jack",2),("robin",1),("jasper",3),("kevin",1),("rachel",2),("trump",3),("lilei",1),("hanmeiei",1);

查询执行顺序

本文所涉及的查询语句如下,主要是citizen表与city表进行join,然后筛掉city_name != "上海"的数据,接着按照city_name进行分组,统计每个城市总人数大于2的城市,具体如下:

查询语句

SELECT city.city_name AS "City", COUNT(*) AS "citizen_cnt"FROM citizen JOIN city ON citizen.city_id = city.city_id WHERE city.city_name != '上海'GROUP BY city.city_nameHAVING COUNT(*) >= 2ORDER BY city.city_name ASCLIMIT 2

执行步骤

上面SQL查询语句的书写书序是:

SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...

但是执行顺序并不是这样,具体的执行顺序如下步骤所示: 1.获取数据 ( From, Join ) 2.过滤数据 ( Where ) 3.分组 ( Group by ) 4.分组过滤 ( Having ) 5.返回查询字段 ( Select ) 6.排序与分页 ( Order by & Limit / Offset )

尖叫提示:本文旨在说明通用的SQL执行底层原理,对于其优化技术不做考虑,比如谓词下推、投影下推等等。

执行的底层原理

其实上面所说的SQL执行顺序就是所谓的底层原理,当我们在执行SELECT语句时,每个步骤都会产生一张 虚拟表(virtual table) ,在执行下一步骤时,会将该虚拟表作为输入。指的注意的是,这些过程是对用户透明的。

你可以注意到,SELECT 是先从FROM 这一步开始执行的。在这个阶段,如果是多张表进行JOIN,还会经历下面的几个步骤:

获取数据 ( From, Join ) 首先会通过 CROSS JOIN 求笛卡尔积,相当于得到虚拟表 vt1-1; 接着通过ON 条件进行筛选,虚拟表 vt1-1 作为输入,输出虚拟表 vt1-2; 添加外部行。我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3

过滤数据 ( Where )

经过上面的步骤,我们得到了一张最终的虚拟表vt1,在此表之上作用where过滤,通过筛选条件过滤掉不满足条件的数据,从而得到虚拟表vt2。

分组 ( Group by )

经过where过滤操作之后,得到vt2。接下来进行GROUP BY操作,得到中间的虚拟表vt3。

分组过滤 ( Having )

在虚拟表vt3的基础之上,使用having过滤掉不满足条件的聚合数据,得到vt4。

返回查询字段 ( Select )

当我们完成了条件筛选部分之后,就可以筛选表中提取的字段,也就是进入到 SELECT 和 DISTINCT 阶段。首先在 SELECT 阶段会提取目标字段,然后在 DISTINCT 阶段过滤掉重复的行,分别得到中间的虚拟表 vt5-1 和 vt5-2。

排序与分页 ( Order by & Limit / Offset )

当我们提取了想要的字段数据之后,就可以按照指定的字段进行排序,也就是 ORDER BY 阶段,得到虚拟表 vt6。最后在 vt6 的基础上,取出指定行的记录,也就是 LIMIT 阶段,得到最终的结果,对应的是虚拟表 vt7

详细执行步骤分析

Step 1:获取数据 ( From, Join )

FROM citizenJOIN city

该过程的第一步是执行From子句中的语句,然后执行Join子句。这些操作的结果是得到两个表的笛卡尔积。

name city_id city_id city_name
tom 3 1 上海
tom 3 2 北京
tom 3 3 杭州
jack 2 1 上海
jack 2 2 北京
jack 2 3 杭州
robin 1 1 上海
robin 1 2 北京
robin 1 3 杭州
jasper 3 1 上海
jasper 3 2 北京
jasper 3 3 杭州
kevin 1 1 上海
kevin 1 2 北京
kevin 1 3 杭州
rachel 2 1 上海
rachel 2 2 北京
rachel 2 3 杭州
trump 3 1 上海
trump 3 2 北京
trump 3 3 杭州
lilei 1 1 上海
lilei 1 2 北京
lilei 1 3 杭州
hanmeiei 1 1 上海
hanmeiei 1 2 北京
hanmeiei 1 3 杭州

在FROM和JOIN执行结束之后,会按照JOIN的ON条件,筛选所需要的行

ON citizen.city_id = city.city_id

name city_id city_id city_name
tom 3 3 杭州
jack 2 2 北京
robin 1 1 上海
jasper 3 3 杭州
kevin 1 1 上海
rachel 2 2 北京
trump 3 3 杭州
lilei 1 1 上海
hanmeiei 1 1 上海

Step 2:过滤数据 ( Where )

获得满足条件的行后,将传递给Where子句。这将使用条件表达式评估每一行。如果行的计算结果不为true,则会将其从集合中删除。

WHERE city.city_name != '上海'

name city_id city_id city_name
tom 3 3 杭州
jack 2 2 北京
jasper 3 3 杭州
rachel 2 2 北京
trump 3 3 杭州

Step 3:分组 ( Group by )

下一步是执行Group by子句,它将具有相同值的行分为一组。此后,将按组对所有Select表达式进行评估,而不是按行进行评估。

GROUP BY city.city_name

GROUP_CONCAT(citizen. name ) city_id city_name
jack,rachel 2 北京
tom,jasper,trump 3 杭州

Step 4:分组过滤 ( Having )

对分组后的数据使用Having子句所包含的谓词进行过滤

HAVING COUNT(*) >= 2

Step 5:返回查询字段 ( Select )

在此步骤中,处理器将评估查询结果将要打印的内容,以及是否有一些函数要对数据运行,例如Distinct,Max,Sqrt,Date,Lower等等。本案例中,SELECT子句只会打印城市名称和其对应分组的count(*)值,并使用标识符“ City”作为city_name列的别名。

SELECT city.city_name AS "City", COUNT(*) AS "citizen_cnt"

city citizen_cnt
北京 2
杭州 3

Step 6:排序与分页 ( Order by & Limit / Offset )

查询的最后处理步骤涉及结果集的排序与输出大小。在我们的示例中,按照字母顺序升序排列,并输出两条数据结果。

ORDER BY city.city_name ASCLIMIT 2

city citizen_cnt
北京 2
杭州 3

总结

本文主要剖析了SQL语句的执行顺序和底层原理,基本的SQL查询会分为六大步骤。本文结合具体事例,给出了每一步骤的详细结果,这样会对其执行的底层原理有更加深刻的认识。

到此这篇关于SQL查询的底层运行原理深入分析的文章就介绍到这了,更多相关SQL查询底层运行原理内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:SQL重复记录查询的几种方法SQL 多表连接查询实现语句sql表连接查询使用方法(sql多表连接查询)SQL 查询语句积累三表左连接查询的sql语句写法

以下推荐一些从入门到2113精通——关于5261学习数据分析的书籍清单!入门篇4102《深1653入浅出数据分析》:大头书,HeadFirst系列,内容很浅,比较适合没有基础的人作为科普读物,适合快速入门;《统计数字会撒谎》:本文不涉及枯燥的数学公式与推理过程,通俗易懂,其实讲的都是统计学最基本的常识,可是却往往容易被人所忽视;《谁说菜鸟不会数据分析》:不错的工具类书籍。比较浅显,适合完全没有Excel或对Excel似懂非懂的人。 讲了一些方法论的东西,但是非常的简单,不太适合对Excel熟悉的读者;《深入浅出统计学》:帮你快速了解统计学相关的知识。进阶篇《MySQL 必知必会》:不到250页的小册子,实践性很强,基本没有什么理论的堆砌,完完全全就是一本实践指南,教会你怎么用SQL语句操作MySQL;《高性能MySQL(第3版)》:跟《MySQL必知必会》相似的书籍,主要讲解了MySQL的理论和实践知识;《数据化管理:洞悉零售及电子商务运营》:讲解在企业中应用数据的例子,读完受益匪浅,里面举的很多例子都很接地气,很值得数据分析师阅读学习。高级篇《统计学》(贾俊平,何晓群,金勇进著):统计比较通用的入门教材了,也算是兼顾数学证明和应用,可读性没有上面强,但是也非常的通俗易懂,有很多统计学专业的起始教材也会选择这本。《Python数据分析》:作者对于利用Python进行数据分析有着很丰富的经验,因此写出的书也是深入浅出,让人很容易就能看懂。对一个热爱学习的数据分析师来说学一门数据分析处理的编程语言是一件很有用的事情。《Python数据挖掘入门与实践》:作为一个专业的数据分析师,实际上很多时候都需要用到模型。这本书作为数据挖掘入门读物,介绍了数据挖掘的基础知识、基本工具和实践方法,通过循序渐进地讲解算法,还是挺不错的一本书,数据分析师的2113基本工作流程5261:1.定义问题确定需要的问题,以及想得出的结论4102。需要考虑的选1653项有很多,要根据所在业务去判断。常见的有:变化趋势、用户画像、影响因素、历史数据等。2.数据获取数据获取的方式有很多种:一是直接从企业数据库调取,需要SQL技能去完成数据提取等的数据库管理工作。二是获取公开数据,政府、企业、统计局等机构有。三是通过Python编写网页爬虫。3.数据预处理对残缺、重复等异常数据进行清洗。4.数据分析与建模这个部分需要了解基本的统计分析方法、数据挖掘算法,了解不同统计方法适用的场景和适合的问题。5.数据可视化和分析报告撰写学习一款可视化工具,将数据通过可视化最直观的展现出来。数据分析入门需要掌握的技能有:1. SQL(数据库):怎么从数据库取数据?怎么取到自己想要的特定的数据?等这些问题就是你首要考虑的问题,而这些问题都是通过SQL解决的,所以SQL是数据分析的最基础的技能。2. excel分析师更多的时候是在分析数据,分析数据时需要把数据放到一个文件里,就是excel。熟练excel常用公式,学会做数据透视表,什么数据画什么图等。3.Python或者R的基础:必备项,也是加分项,在数据挖掘方向是必备项,语言相比较工具更加灵活也更加实用。4.学习一个可视化工具如果你想往更高层次发展,上面的东西顶多只占20%,剩下的80%则是业务理解能力,目标拆解能力,根据数据需求更多新技能的学习能力,一、2113掌握基础、更新知识。基本技术5261怎么强调都不过分。这里的4102术更多是(计算1653机、统计知识), 多年做数据分析、数据挖掘的经历来看、以及业界朋友的交流来看,这点大家深有感触的。数据库查询—SQL数据分析师在计算机的层面的技能要求较低,主要是会SQL,因为这里解决一个数据提取的问题。有机会可以去逛逛一些专业的数据论坛,学习一些SQL技巧、新的函数,对你工作效率的提高是很有帮助的。统计知识与数据挖掘你要掌握基础的、成熟的数据建模方法、数据挖掘方法。例如:多元统计:回归分析、因子分析、离散等,数据挖掘中的:决策树、聚类、关联规则、神经网络等。但是还是应该关注一些博客、论坛中大家对于最新方法的介绍,或者是对老方法的新运用,不断更新自己知识,才能跟上时代,也许你工作中根本不会用到,但是未来呢?行业知识如果数据不结合具体的行业、业务知识,数据就是一堆数字,不代表任何东西。是冷冰冰,是不会产生任何价值的,数据驱动营销、提高科学决策一切都是空的。一名数据分析师,一定要对所在行业知识、业务知识有深入的了解。例如:看到某个数据,你首先必须要知道,这个数据的统计口径是什么?是如何取出来的?这个数据在这个行业, 在相应的业务是在哪个环节是产生的?数值的代表业务发生了什么(背景是什么)?对于A部门来说,本月新会员有10万,10万好还是不好呢?先问问上面的这个问题:对于A部门,1、新会员的统计口径是什么。第一次在使用A部门的产品的会员?还是在站在公司角度上说,第一次在公司发展业务接触的会员?2、是如何统计出来的。A:时间;是通过创建时间,还是业务完成时间。B:业务场景。是只要与业务发接触,例如下了单,还是要业务完成后,到成功支付。3、这个数据是在哪个环节统计出来。在注册环节,在下单环节,在成功支付环节。4、这个数据代表着什么。10万高吗?与历史相同比较?是否做了营销活动?这个行业处理行业生命同期哪个阶段?在前面二点,更多要求你能按业务逻辑,来进行数据的提取(更多是写SQL代码从数据库取出数据)。后面二点,更重要是对业务了解,更行业知识了解,你才能进行相应的数据解读,才能让数据产生真正的价值,不是吗?对于新进入数据行业或者刚进入数据行业的朋友来说:行业知识都重要,也许你看到很多的数据行业的同仁,在微博或者写文章说,数据分析思想、行业知识、业务知识很重要。我非常同意。因为作为数据分析师,在发表任何观点的时候,都不要忘记你居于的背景是什么?但大家一定不要忘记了一些基本的技术,不要把基础去忘记了,如果一名数据分析师不会写SQL,那麻烦就大了。哈哈。。你只有把数据先取对了,才能正确的分析,否则一切都是错误了,甚至会导致致命的结论。新同学,还是好好花时间把基础技能学好。因为基础技能你可以在短期内快速提高,但是在行业、业务知识的是一点一滴的积累起来的,有时候是急不来的,这更需要花时间慢慢去沉淀下来。不要过于追求很高级、高深的统计方法,我提倡有空还是要多去学习基本的统计学知识,从而提高工作效率,达到事半功倍。以我经验来说,我负责任告诉新进的同学,永远不要忘记基本知识、基本技能的学习。二、要有三心。1、细心。2、耐心。3、静心。数据分析师其实是一个细活,特别是在前文提到的例子中的前面二点。而且在数据分析过程中,是一个不断循环迭代的过程,所以一定在耐心,不怕麻烦,能静下心来不断去修改自己的分析思路。三、形成自己结构化的思维。数据分析师一定要严谨。而严谨一定要很强的结构化思维,如何提高结构化思维,也许只需要工作队中不断的实践。但是我推荐你用mindmanagement,首先把你的整个思路整理出来,然后根据分析不断深入、得到的信息不断增加的情况下去完善你的结构,慢慢你会形成一套自己的思想。当然有空的时候去看看《麦肯锡思维》、结构化逻辑思维训练的书也不错。在我以为多看看你身边更资深同事的报告,多问问他们是怎么去考虑这个问题的,别人的思想是怎么样的?他是怎么构建整个分析体系的。四、业务、行业、商业知识。当你掌握好前面的基本知识和一些技巧性东西的时候,你应该在业务、行业、商业知识的学习与积累上了。这个放在最后,不是不重要,而且非常重要,如果前面三点是决定你能否进入这个行业,那么这则是你进入这个行业后,能否成功的最根本的因素。 数据与具体行业知识的关系,比作池塘中鱼与水的关系一点都不过分,数据(鱼)离开了行业、业务背景(水)是死的,是不可能是“活”。而没有“鱼”的水,更像是“死”水,你去根本不知道看什么(方向在哪)。如何提高业务知识,特别是没有相关背景的同学。很简单,我总结了几点:1、多向业务部门的同事请教,多沟通。多向他们请教,数据分析师与业务部门没有利益冲突,而更向是共生体,所以如果你态度好,相信业务部门的同事也很愿意把他们知道的告诉你。2、永远不要忘记了google大神,定制一些行业的关键字,每天都先看看定制的邮件。3、每天有空去浏览行业相关的网站。看看行业都发生了什么,主要竞争对手或者相关行业都发展什么大事,把这些大事与你公司的业务,数据结合起来。4、有机会走向一线,多向一线的客户沟通,这才是最根本的。标题写着告诫,其实谈不上,更多我自己的一些心得的总结。希望对新进的朋友有帮助,数据分析行业绝对是一个朝阳行业,特别是互联网的不断发展,一个不谈数据的公司根本不叫互联网公司,数据分析师已经成为一个互联网公司必备的职位了。数据分析师中国统计网——一位资深数据分析师的分享,第1本《谁说菜鸟不会数据2113分析入门篇》5261很有趣的数据分析书!基本看4102过就能明白,以小说的形1653式讲解,很有代入感。包含了数据分析的结构化思维、数据处理技巧、数据展现的技术,很能帮我们提升职场竞争能力。找不到工作的,学好了它,自然没问题。第2本《拯救你的Excel数据的分析、处理、展示(动画版)》一本用手机看的Excel操作书,大部分例子都配置了二维码,手机扫扫就能看,基本上可以躺着把书学了。所有数据的分析、处理也都带了职场范例(有会计、HR、销售场景),很贴合实际。拯救我们小白的Excel,职场加薪不是梦想!第3本《Excel图表之道:如何制作专业有效的商务图表》职场大牛的书,教我们做图表的,好看到不能再好看。可以设计和制作达到杂志级质量的、专业有效的商务图表。相信平时我们很难做到吧,看了你就知道,也许一切没那么难。第4本《绝了!Excel可以这样用:数据分析经典案例实战图表书》挺好的一个系列,都是Excle常用的技巧,适合销售和HR。也是职场故事,很接地气,带视频的,全都是Excel数据分析的常用理念和方法。第5本《深入浅出数据分析》深入浅出系列是对新手非常友好的丛书,用生动但啰嗦的语言讲解案例。厚厚的一本书翻起来很快。本书涉及的基础概念比较广,包含一点统计学知识,学下来对数据分析思维会有一个大概了解。第6本《MySQL必知必会》如果真想买书看,可以看这本,适合新手向的学习,看基础概念和查询相关的章节即可。网络上大部分MySQL都是偏DBA的。第7本《深入浅出统计学》大概是最啰嗦的深入浅出系列,从卖橡皮鸭到赌博机的案例,囊括了常用的统计分析如假设检验、概率分布、描述统计、贝叶斯等。第8本《网站分析实战》互联网不再是网站的天下,但是移动端依旧有Web,我们在朋友圈看到的所有H5活动、第三方内容等,都是依托网页实现。网站的数据分析依旧有存在空间,网站的数据指标还是能够指导我们运营!第9本《深入浅出Python》还是深入浅出系列,完全适合零基础的新人。需要注意的是,编程学习不同于其他知识,如果计算机基础不稳固,在使用中会遇到各类问题。知其然不知其所以然!第10本《Python学习手册》对于拥有编程基础的人,这本书系无巨细的有些啰嗦,不过对新人,可以避免不必要的坑。把它当作一本工具文档吧,当遇到不理解的内容随时翻阅。第11本《利用Python进行数据分析》这本书是你学习python不二之选,对着书,着重学习numpy,pandas两个包!每段代码都敲打一遍,千万行的数据清洗基本不会有大问题了。第12本《R语言实战》R语言的入门书籍,从数据读取到各类统计函数的使用。虽然没有涉及机器学习,依靠这本书入门R是绰绰有余了。第13本《统计学:从数据到结论》这本书是将R语言和统计学结合的教材,可以利用这本书再复习一遍统计知识。第14本《深入浅出SQL》带你进入SQL语言的心脏地带,从使用INSERT和SELECT这些基本的查询语法到使用子查询(subquery)、连接(join)和事务(transaction)这样的核心技术来操作数据库。到读完《深入浅出SQL》之时,你将不仅能够理解高效数据库设计和创建,还能像一个专家那样查询、归一(normalizing)和联接数据。你将成为数据的真正主人。第15本《数据挖掘导论》这本书绝对是一本良心教材,拿到手从第一章开始阅读,能看多少就看多少。但是要尽量多看点,因为此书你可能要看一辈子的~~第16本《算法导论中文版》本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。上面的书籍都是PDF版视频教材的有:Python入门教程完整版(懂中文就能学会)资料Python入门教程完整版(懂中文就能学会)视频Mysql从入门到精通全套视频教程8天深入理解python教程大数据Hadoop视频教程,从入门到精通Python就业班Python标准库(中文版)数学建模0基础从入门到精通,全套资源0基础Python实战-四周实现爬虫系统麦子学院招牌课程[明星python编程视频VIP教程][200G](价值9000元)从零基础到数据分析师,帮你拿到年薪50万!维心:xccx158,中文专业的前期要多2113花点功夫了啊,我是数学专业的,5261大学做过建模,所有4102统计学的东西还有一1653些软件多少接触过一点。建议你自学的话,excel软件和spss先熟悉一下,找两本书看看,《谁说菜鸟不会数据分析》是入门的,可以看一看,先了解一下吧,数据分析的东西还是要多实践的。如果你现在工作跟数据分析没有什么关系的话,转业工作可能有点困难,这种情况建议去考个证书吧,虽然现在国内数据分析刚起步,还没有太有含金量的证书,不过你这种情况有肯定比没有好,我就去考了一个,考CPDA吧,还有一个CDA,我选考的CPDA,说是CDA国外有机构什么的,但是我找不到任何网站可以查到这个证书,问他们他们也不说,我怕找工作人家要查查不到,但是CPDA工信部网站能查询证书信息的,所以对就业帮助可能会大一些,工作还是有参考作用的,不过指望靠班学到很多还是不可能,只是让你了解入门,手上多个敲门砖。数据分析属于技术类工种,要多实践,数据采集和挖掘是基础,这些工作门槛比数据分析岗相对低一些,好找,希望对你有帮助。追问请问要想成为一名数据分析师的话需要具备哪些专业知识,例如你提到的数学建模?本回答被提问者和网友采纳内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 对分区表进行alter-switch时遇到的错误
  • 数据库服务器构建和部署检查列表详解
  • mysql与oracle 差异比较之七用户权限
  • 如何利用分析函数改写范围判断自关联查询详解
  • access数据库升级为sql数据库的注意事项和方法
  • rbac权限模型_动力节点java学院整理
  • 关于关系数据库如何快速查询表的记录数详解
  • 超大数据量存储常用数据库分表分库算法总结
  • 数据库中union 与union all 的区别
  • 关于数据库设计中主键问题的思考
  • 如何自学成为数据分析师
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sql重复记录查询的几种方法sql 多表连接查询实现语句sql表连接查询使用方法(sql多表连接查询)sql 查询语句积累三表左连接查询的sql语句写法对分区表进行alter-switch时遇到的错误数据库服务器构建和部署检查列表详解mysql与oracle 差异比较之七用户权限如何利用分析函数改写范围判断自关联查询详解access数据库升级为sql数据库的注意事项和方法rbac权限模型_动力节点java学院整理关于关系数据库如何快速查询表的记录数详解超大数据量存储常用数据库分表分库算法总结数据库中union 与union all 的区别关于数据库设计中主键问题的思考sql join on 用法mysql mysqldump命令使用详解sqlserver、mysql、oracle三种数sql中代替like语句的另一种写法如何让sql运行得更快关于adox的相关知识如何取得一个表的所有字段名用逗sql server下数据库链接的使用方sql server 2005的表分区sql 查询语句积累详解sql中group by的使用教程datastage server job之dsjob 命令数据库设计的折衷方法jdbc 数据库的连接(sqlserver oracle)access数据库升级为sql数据库的注意事项和dbcc shrinkdatabasems sql数据库日志压缩sql大量数据查询的优化及非用like不可时的sql基础教程之行转列pivot函数rbac简介_动力节点java学院整理hadoop map-reduce中的文件并发操作
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved