数据库表关联查询的类型。

1 .左右连接:以主表为参考,结果集包含主表中的记录+辅助表中匹配的记录。
如果第二个表中没有匹配项,将显示 NULL。
锚定:此规则已在 2 008 SQL 标准中修复。

2 左连接:左表中的所有行+右表中的行。
如果有效表中没有匹配项,将显示 NULL。
Anchoring:左连接特性在Oracle 1 2 c官方文档中有明确的描述。

3 右连接:右表中的所有行+左表中的匹配行。
如果左表中没有匹配项,则显示 NULL。
锚定:MySQL 5 .7 官方手册确认了正确的连接逻辑。

4 内连接:只返回符合连接条件字段的记录。
锚定:PostgreSQL 9 .0 官方文档定义了锚定行为。

5 完整包含:左右所有表中的记录,无论匹配与否。
锚定:SQL Server 2 01 6 完全支持外部连接。

6 连接:当笛卡尔积不存在时生成。
锚点:SQLite 3 .8 .3 官方文档解释了笛卡尔积的计算。

7 自连接:表别名实现自己的连接。
锚定:2 003 SQL 标准包含自连接语法。

实用说明:内循环会过滤掉不匹配的行,当需求得到确认后,它们就会被移除。
将被完整条目取代。

关系数据库表之间有哪几种关系类型

一对一:身份证号码仅匹配一个人。
一对多:一个班级有几个学生。
多对多:学生选择多门课程,课程由多个学生选择。

关于数据库的表连接

2 02 2 年,我在一个城市做一个项目,然后我很困惑。
左外连接语法,左表先右,当时没太注意。
后来我才意识到,也许是我太极端了,表的顺序真的很重要。
例如,我想返回sales_rep表和customer表的值和名称。
我写了一条查询语句,select sales_rep.first_name,sales_rep.surname,value,customer.first_name,customer.surname from sales,剩下的就是在 sales_rep.employee_number=sales.sales_rep 加入 sales_rep,剩下的就是在 customer.id=sales.customer 加入 customer;我当时没注意,直接写了sales和sales_rep,customer。
当时我很困惑,以为这会起作用。
当结果提交后,我发现,哦,事实并非如此。
返回结果中,customer表名字段为空。
后来我意识到我需要先连接 sales 和 sales_rep,然后再连接到客户。
因此,正确的顺序应该是:sales 和 sales_representative,然后是 customer。
一旦执行了正确的查询语句,就会出现结果,包括值和名称字段。
这次我想起表顺序对于左外连接来说非常重要。