最新最全的 SQL 入门教程

最新最全的 SQL 入门教程

专栏背景

1970 年 IBM 的 E.F. Codd 博士发表了论文《A Relational Model of Data for Large Shared Data Banks》并创建了关系模型,通过一个简单的数据结构(关系,也就是二维表)来实现数据的存储。

1979 年 Relational Software, Inc.(后来改名为 Oracle)发布了第一个商用的关系数据库产品。随后出现了大量的关系数据库管理系统,包括 MySQL、SQL Server、PostgreSQL 以及大数据分析平台 Apache Hive、Spark SQL、Presto 等。至今,关系数据库仍然是数据库领域的主流。

以下是著名的数据库系统排名网站 DB-Engines 上各种数据库的排名情况,关系数据库占据了绝对的优势。



SQL

SQL(Structured Query Language,结构化查询语言)是访问和操作关系数据库的标准语言。只要是关系数据库,都可以使用 SQL 进行访问和控制。SQL 同样由 IBM 在 1970 年代开发,1986 年成为 ANSI 标准,并且在 1987 年成为 ISO 标准。SQL 标准随后经历了多次修订,最新的版本为 SQL:2019,增加了多维数组(MDA)的支持。下图是 SQL 标准的发展历程和主要的新增功能。

对于 SQL 标准,人们最熟悉的就是 SQL92 或者 SQL99。但实际上经过多次修改,SQL 早已不是 40 年前的 SQL;如今它已经相当完备,功能强大,并且能够同时支持关系模型和非关系(XML、JSON)模型。具体来说,最新的 SQL 标准包含 10 个部分:

为了便于学习,通常将主要的 SQL 语句分为以下几个类别:


SQL 是一种标准,不同厂商基于 SQL 标准实现了自己的数据库产品,例如 Oracle、MySQL 等。这些数据库都在一定程度上兼容 SQL 标准,具有一定的可移植性。但另一方面,它们都存在许多专有的扩展,没有任何一种产品完全遵循标准。

NoSQL

随着互联网的发展和大数据的兴起,出现了各种各样的非关系(NoSQL)数据库。NoSQL 代表 Not only SQL,表明它是针对传统关系数据库的补充和升级,而不是为了替代关系数据库。

NoSQL 数据库主要用于解决关系数据库在某些特定场景下的局限性,比如海量存储和水平扩展;但同时也会为此牺牲某些关系数据库的特性,例如对事务强一致性的支持和标准 SQL 接口。因此,这类数据库主要用于对一致性要求不是非常严格的互联网业务。常见的 NoSQL 数据库可以分为以下几类:

另一方面,关系数据库也在积极拥抱变化,添加了许多非关系模型(XML 和 JSON)支持。以最流行的开源关系数据库 MySQL 为例,最新的 MySQL 8.0 版本增加了 JSON 文档存储的支持,并且推出了一个新的概念:NoSQL + SQL = MySQL。以下是 MySQL 官方的宣传图。

![mysql]( img-blog.csdnimg.cn/201 =330x)

Oracle、SQL Server 以及 PostgreSQL 同样也进行了类似的扩展,可以支持原生的 XML 和 JSON 数据,并且提供了许多标准的 SQL 接口。

NewSQL

中国有句古话:天下大势,合久必分,分久必合。数据库领域的发展也印证了这一规律,市场上已经出现了一类新型关系型数据库系统:NewSQL 数据库。这类数据库不仅保留了关系数据库对于事务的支持和标准的 SQL 接口,同时具有 NoSQL 的高度扩展性和高性能。

目前比较有代表性的 NewSQL 数据库包括 Google Spanner、VoltDB、PostgreSQL-XL 以及国产的 TiDB。这类新型数据库是数据库领域最新的发展方向,有志于在数据库行业发展的同学可以加以关注。

为什么要学习 SQL?

让我们回到专栏的主题,为什么要学习 SQL 呢?简单来说,因为有用。下图是 Stack Overflow 在 2019 年关于最流行编程技术的调查结果。

作为数据处理领域的专用语言,SQL 排在了第三位,超过 50% 的开发者都需要使用到 SQL。那么,具体什么职位需要使用 SQL,用 SQL 来做什么?

SQL 不但应用广泛,而且简单易学。因为它在设计之初就考虑了非技术人员的使用需求,SQL 语句全都是由简单的英语单词组成,使用者只需要声明自己想要的结果,而将具体的实现过程交给数据库管理系统。

学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何,SQL 都是 IT 从业人员不可或缺的一项技能!

专栏内容

本专栏主要讨论 SQL 编程技术和思想,分为四个部分:基础篇、进阶篇、开发篇以及扩展篇。


第一部分:基础篇。首先介绍数据库领域的最新发展,回顾数据库和 SQL 的核心概念;然后讨论如何使用 SELECT 语句查询数据,过滤数据,对结果进行排序,实现排行榜与分页效果;同时还会介绍常见的 SQL 函数,CASE 表达式以及数据的分组汇总;最后是一个分析世界银行全球 GDP 数据的实战案例。

第二部分:进阶篇。主要包括 SQL 数据分析的一些高级功能:空值的问题、多表连接查询、子查询、集合运算、通用表表达式与递归查询、高级分组与多维度交叉分析、窗口函数与高级报表以及基于行模式识别的数据流分析等。

第三部分:开发篇。讲述数据库设计与开发过程中涉及到的一些实用知识。包括如何设计规范化的数据库,管理数据库对象,对数据进行增删改,数据库事务的概念,索引的原理;同时还会介绍视图的概念,使用存储过程实现业务逻辑以及利用触发器实现用户操作的审计。

第四部分:扩展篇。分析 SQL 语句的执行计划与查询语句的优化,使用 SQL 处理 JSON 数据,在 Python 和 Java 中执行 SQL 语句,以及动态语句和 SQL 注入攻击的预防。在专栏的最后,探讨一下 SQL 编程中的道与术。

如果是初学者,建议按照顺序阅读;如果你已经具有一定的 SQL 基础,也可以针对感兴趣的部分单独学习。

专栏寄语

希望大家能够通过本专栏的学习,在掌握 SQL 技能的同时能够理解对面向集合的编程思想,并且在将来的工作中学以致用。

学习是一个输入再输出的过程,因此特地创建了本专栏的微信交流群,让我们一起学习一起成长。入群方式请扫描第 3 篇末尾的微信二维码,欢迎你来!

聚圣源给自己部门起名字写给母校起名招摇电视剧免费观看全集完整版伊索寓言故事周生如故和一生一世什么关系谢咏老师起名网址起个什么网名火王和王咋起名字赵斗淳为什么掏素媛肠子?春晚凤凰传奇饺子馆咋起名起点中文网站域名梦见捡钱是什么意思人民日报客户端王姓起名字给男宝宝起什么名字好一起来看流星雨女主角名字五行缺木起名字大全许宝宝起名辉丰农化童车店起名字大全起个名字呗吗以军字起个网名父亲姓杨母亲姓周起名李嘉欣和大刘的事件密室3装修起名大全装修起名大全牛年宝宝起名字男孩2021免费connectify破解起名字2021免费八字起名男淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化