当我们进行多表查询的时候,如果连接多个表的条件是等号时,就是等值连接,其他的运算符连接就是非等值查询。这里我创建一个身高级别表 height_grades,如下所示:
我们知道 player 表中有身高 height 字段,如果想要知道每个球员的身高的级别,可以采用非等值连接查询。
SQL:SELECT p.player_name, p.height, h.height_levelFROM player AS p, height_grades AS hWHERE p.height BETWEEN h.height_lowest AND h.height_hig
运行结果(37 条记录):
六、外连接
除了查询满足条件的记录以外,外连接还可以查询某一方不满足条件的记录。两张表的外连接,会有一张是主表,另一张是从表。如果是多张表的外连接,那么第一张表是主表,即显示全部的行,而第剩下的表则显示对应连接的信息。在SQL92 中采用(+)代表从表所在的位置,而且在 SQL92中,只有左外连接和右外连接,没有全外连接。
什么是左外连接,什么是右外连接呢?
左外连接,就是指左边的表是主表,需要显示左边表的全部行,而右侧的表是从表,(+)表示哪个是从表。
SQL:SELECT * FROM player, team where player.team_id =
相当于 SQL99 中的:
SQL:SELECT * FROM player LEFT JOIN team on player.team
右外连接,指的就是右边的表是主表,需要显示右边表的全部行,而左侧的表是从表。
SQL:SELECT * FROM player, team where player.team_id(+)
相当于 SQL99 中的:
SQL:SELECT * FROM player RIGHT JOIN team on player.tea
需要注意的是,LEFT JOIN 和 RIGHT JOIN 只存在于SQL99 及以后的标准中,在 SQL92 中不存在,只能用(+)表示。
七、自连接
自连接可以对多个表进行操作,也可以对同一个表进行操作。也就是说查询条件使用了当前表的字段。
比如我们想要查看比布雷克·格里芬高的球员都有谁,以及他们的对应身高:
SQL:SELECT b.player_name, b.height FROM player as a ,
运行结果(6 条记录):
如果不用自连接的话,需要采用两次 SQL 查询。首先需要查询布雷克·格里芬的身高。
SQL:SELECT height FROM player WHERE player_name = '布雷
运行结果为 2.08。
然后再查询比 2.08 高的球员都有谁,以及他们的对应身高:
SQL:SELECT player_name, height FROM player WHERE heigh
运行结果和采用自连接的运行结果是一致的。
八、总结
今天我讲解了常用的 SQL 标准以及 SQL92 中的连接操作。SQL92 和 SQL99 是经典的 SQL标准,也分别叫做 SQL-2和 SQL-3标准。也正是在这两个标准发布之后,SQL 影响力越来越大,甚至超越了数据库领域。现如今 SQL 已经不仅仅是数据库领域的主流语言,还是信息领域中信息处理的主流语言。在图形检索、图像检索以及语音检索中都能看到SQL 语言的使用。
除此以外,我们使用的主流 RDBMS,比如 MySQL、Oracle、SQL Sever、DB2、PostgreSQL 等都支持 SQL 语言,也就是说它们的使用符合大部分 SQL 标准,但很难完全符合,因为这些数据库管理系统都在 SQL 语言的基础上,根据自身产品的特点进行了扩充。即使这样,SQL 语言也是目前所有语言中半衰期最长的,在 1992 年,Windows3.1 发布,SQL92 标准也同时发布,如今我们早已不使用 Windows3.1 操作系统,而 SQL92 标准却一直持续至今。
当然我们也要注意到 SQL 标准的变化,以及不同数据库管理系统使用时的差别,比如 Oracle 对 SQL92 支持较好,而 MySQL 则不支持 SQL92 的外连接。
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903052_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!