日志文章

2007年09月03日 23:35:12

左连接 右连接 全连接

left join(左连接)包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
right join(右连接),即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
full join(全连接),左右表中所有记录都会选出来。
有时表的某些字段值可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在。
空值不等同于字符串中的空格,也不是数字类型的0。因此,判断某个字段值是否为空值时不能使用=,<>这些判断符,必需用专用的短语:IS NULL 来选出有空值字段的记录,用 IS NOT NULL 选出不包含空值的记录。
社团表(Organization)
Organization(Code,Name, Chairman)
Code: 社团代码
Name: 社团名称
Chairman:社团主席
社员表(Member)
Member(Name, Code, Duty)
Name: 社员名
Code: 社员所在社团代码
Duty: 职责
查询还没有主席的社团
SELECT code, name FROM Organization
WHERE Chairman IS NULL
查询退出社团的社员的姓名
SELECT Name FROM Member
WHERE Code IS NULL
查询所有社员的名字和其所在社团
SELECT Member.name, Organization.name
FROM Member JOIN Organization ON Member.Code= Organization.Code
注意:JOIN ==inner join;Join左边的叫左表(Member),Join右边的叫右表(Organization)。
查询结果中并不包含不属于任何社团的社员。

左连接查询后就不会遗漏任何成员,即使不在任何社团,SQL文如下:
SELECT Member.name, Organization.name
FROM Member LEFT JOIN Organization ON Member.Code= Organization.Code
左连接--包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。

查询所有的社员和社团,包含没有社员的社团,但不包含没有社团的社员,SQL文如下:
SELECT Member.name, Organization.name
FROM Member RIGHT JOIN Organization ON Member.Code= Organization.Code

查询既包含没有社员的社团,又包含没有社团的社员的SQL文如下:
SELECT Member.name, Organization.name
FROM Member FULL JOIN Organization ON Member.Code= Organization.Code


类别: SoftWare |  评论(0) |  浏览(5016) |  收藏