SQL标准是什么意思,SQL标准有哪些?SQL的英文全称叫做 Structured QueryLanguage,它有一个很强大的功能,就是能在各个数据表之间进行连接查询(Query)。这是因为SQL是建立在关系型数据库基础上的一种语言。关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的(Structured)。你可以把关系模型理解成一个二维表格模型,这个二维表格是由行(row)和列(column)组成的。每一个行(row)就是一条数据,每一列(column)就是数据在某一维度的属性。
正是因为在数据库中,表的组成是基于关系模型的,所以一个表就是一个关系。一个数据库中可以包括多个表,也就是存在多种数据之间的关系。而我们之所以能使用 SQL 语言对各个数据表进行复杂查询,核心就在于连接,它可以用一条 SELECT 语句在多张表之间进行查询。你也可以理解为,关系型数据库的核心之一就是连接。
既然连接在SQL中这么重要,那么针对今天的内容,需要你从以下几个方面进行掌握:
SQL实际上存在不同的标准,不同标准下的连接定义也有不同。你首先需要了解常用的 SQL标准有哪些;
了解了SQL的标准之后,我们从SQL92标准入门,来看下连接表的种类有哪些;
针对一个实际的数据库表,如果你想要做数据统计,需要学会使用跨表的连接进行操作。
一、常用的SQL标准有哪些
在正式开始讲连接表的种类时,我们首先需要知道 SQL 存在不同版本的标准规范,因为不同规范下的表连接操作是有区别的。
SQL 有两个主要的标准,分别是 SQL92 和 SQL99。92 和99 代表了标准提出的时间,SQL92 就是 92 年提出的标准规范。当然除了 SQL92 和 SQL99 以外,还存在 SQL-86、SQL-89、SQL:2003、SQL:2008、SQL:2011 和 SQL:2016等其他的标准。
这么多标准,到底该学习哪个呢?实际上最重要的 SQL 标准就是 SQL92 和 SQL99。一般来说 SQL92 的形式更简单,但是写的 SQL 语句会比较长,可读性较差。而 SQL99相比于 SQL92 来说,语法更加复杂,但可读性更强。我们从这两个标准发布的页数也能看出,SQL92 的标准有 500页,而 SQL99 标准超过了 1000 页。实际上你不用担心要学习这么多内容,基本上从 SQL99 之后,很少有人能掌握所有内容,因为确实太多了。就好比我们使用 Windows、Linux 和 Office 的时候,很少有人能掌握全部内容一样。我们只需要掌握一些核心的功能,满足日常工作的需求即可。
二、在SQL92中是如何使用连接的
相比于 SQL99,SQL92 规则更简单,更适合入门。在这篇文章中,我会先讲 SQL92 是如何对连接表进行操作的,下一篇文章再讲 SQL99,到时候你可以对比下这两者之间有什么区别。
在进行连接之前,我们需要用数据表做举例。这里我创建了NBA 球员和球队两张表。
其中 player 表为球员表,一共有 37 个球员,如下所示:
team 表为球队表,一共有 3 支球队,如下所示:
有了这两个数据表之后,我们再来看下 SQL92 中的 5 种连接方式,它们分别是笛卡尔积、等值连接、非等值连接、外连接(左连接、右连接)和自连接。
三、笛卡尔积
笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。我们假定 player 表的数据是集合 X,先进行 SQL 查询:
SELECT * FROM player
再假定 team 表的数据为集合 Y,同样需要进行 SQL 查询:
SELECT * FROM team
你会看到运行结果会显示出上面的两张表格。
接着我们再来看下两张表的笛卡尔积的结果,这是笛卡尔积的调用方式:
SQL: SELECT * FROM player, team
运行结果(一共 37*3=111 条记录):
笛卡尔积也称为交叉连接,英文是 CROSS JOIN,它的作用就是可以把任意表进行连接,即使这两张表不相关。但我们通常进行连接还是需要筛选的,因此你需要在连接后面加上
WHERE 子句,也就是作为过滤条件对连接数据进行筛选。比如后面要讲到的等值连接。
四、等值连接
两张表的等值连接就是用两张表中都存在的列进行连接。我们也可以对多张表进行等值连接。
针对 player 表和 team 表都存在 team_id 这一列,我们可以用等值连接进行查询。
SQL: SELECT player_id, player.team_id, player_name, hei
运行结果(一共 37 条记录):
我们在进行等值连接的时候,可以使用表的别名,这样会让SQL 语句更简洁:
SELECT player_id, a.team_id, player_name, height, team_
需要注意的是,如果我们使用了表的别名,在查询字段中就只能使用别名进行代替,不能使用原有的表名,比如下面的SQL 查询就会报错:
SELECT player_id, player.team_id, player_name, height,
五、非等值连接
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903052.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!