首页 > 数据库 >SQL学习八

SQL学习八

时间:2023-02-02 19:11:50浏览次数:32  
标签:SQL height 学习 player team SQL92 连接

1.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 页。

2.了解了 SQL 的标准之后,我们从 SQL92 标准入门,来看下连接表的种类有哪些;

它们分别是笛卡尔积、等值连接、非等值连接、外连接(左连接、右连接)和自连接。

笛卡尔积

笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。

笛卡尔积也称为交叉连接,英文是 CROSS JOIN,它的作用就是可以把任意表进行连接,即使这两张表不相关。但我们通常进行连接还是需要筛选的,因此你需要在连接后面加上 WHERE 子句,也就是作为过滤条件对连接数据进行筛选。


SQL: SELECT * FROM player, team

等值连接

两张表的等值连接就是用两张表中都存在的列进行连接。我们也可以对多张表进行等值连接。


SQL: SELECT player_id, player.team_id, player_name, height, team_name FROM player, team WHERE player.team_id = team.team_id

非等值连接

当我们进行多表查询的时候,如果连接多个表的条件是等号时,就是等值连接,其他的运算符连接就是非等值查询。

 


SQL:SELECT p.player_name, p.height, h.height_level
FROM player AS p, height_grades AS h
WHERE p.height BETWEEN h.height_lowest AND h.height_highest

外连接

除了查询满足条件的记录以外,外连接还可以查询某一方不满足条件的记录。两张表的外连接,会有一张是主表,另一张是从表。如果是多张表的外连接,那么第一张表是主表,即显示全部的行,而第剩下的表则显示对应连接的信息。在 SQL92 中采用(+)代表从表所在的位置,而且在 SQL92 中,只有左外连接和右外连接,没有全外连接。

什么是左外连接,什么是右外连接呢?

左外连接,就是指左边的表是主表,需要显示左边表的全部行,而右侧的表是从表,(+)表示哪个是从表。


SQL:SELECT * FROM player, team where player.team_id = team.team_id(+)

自连接

自连接可以对多个表进行操作,也可以对同一个表进行操作。也就是说查询条件使用了当前表的字段。


SQL:SELECT b.player_name, b.height FROM player as a , player as b WHERE a.player_name = '布雷克-格里芬' and a.height < b.height

 

 案例中的 team 表做一道动手题,表格中一共有 3 支球队,现在这 3 支球队需要进行比赛,请用一条 SQL 语句显示出所有可能的比赛组合。

标签:SQL,height,学习,player,team,SQL92,连接
From: https://www.cnblogs.com/anniedaniel/p/17087156.html

相关文章

  • 安卓应用漏洞学习case7
    安卓应用漏洞学习case7前期回顾漏洞免费实战部分-安卓应用层getLastPathSegment函数问题漏洞实战部分2-安卓应用ZipEntry对象问题实战漏洞实战部分3-ContentProvider......
  • RAID 磁盘阵列学习资料
    目录RAID和LVM的区别RAID等级RAID0RAID1RAID5RAID10Linux软RAID创建RAID阵列使用RAID阵列模拟磁盘坏了什么是快(R)乐(A)星(I)球(D)磁盘阵列(RedundantArr......
  • Sql整理
    1:数据库数据库是以某种有组织的方式存储的数据集合。保存有组织数据的容器,通常是一个文件或者一组文件。SQL是StructuredQueryLanguage(结构化查询语言)的缩写。2:表......
  • win下如何用heidiSQL连接Docker Desktop中的pg数据库
    step1:   step2:  setp3:在container中就出现了这个示例 ......
  • Django学习教程
    一、django安装ubuntu一般都是自带python,可以先python3-V查看版本,没出现就代表未安装python安装python3sudoapt-getinstallpython3pip是Python包管理工具,提供了......
  • 【英语学习工具】LeHoCat 提供免费的 视频集播放工具 使用方法, 看视频学英语的工具,
    学习英语常常要硬背教材,要背得起来真的很难,看看能不能找有兴趣的内容一面消遣一面学习,比如说一部英文电影视频至少有1000句话,要是能把整部电影视频的英语学得差不多......
  • MySQL基础
    vsMySQL数据库1.数据库相关概念数据库:存储数据的仓库,数据是有组织的进行存储,英文:DataBase,进程DB存储和管理数据的仓库其本质是一个文件系统,还是以文件的方式将......
  • SQL学习六
    1.聚集函数都有哪些,能否在一条SELECT语句中使用多个聚集函数;SQL中的聚集函数一共包括5个,可以帮我们求某列的最大值、最小值和平均值等,它们分别是:  一条SELECT......
  • Redis 学习笔记
    Redis是非关系型的键值对数据库,数据是存储在内存中的,读写速度很快,广泛用于缓存方向,也可用于数据库的持久化。MySQL是关系型的磁盘数据库。访问Redis的速度要更快一点,但受......
  • 【英语学习工具】解说 LeHoCat 提供免费的 视频集制作工具 使用方法, 看视频学英语的
    这一次更新版本提供下载的文件需要制作视频集要使用视频集制作的用户,要下载这个文件LeHoCat_2023xxxx_All.zip,容量大小约2200MB,包含了所需要的所有单词音频MP......