|
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
|