1.select e.lname,d.name from employee e join department d;
多表连接如果没有明确指出如何连接,默认采用内链接。
没有明确指出连接条件,结果返回笛卡尔积。也就是说两张表所有置换,若employee 有5条信息,department 表有3条信息,那么结果会返回 5 * 3 = 15 条结果。
inner join 连接失败
select e.fname,e.lname,d.name from employee e inner join department d one.dept_id = d.dept_id;
如果一个表中的dept_id 列中存在某个值,但是该值在另一个表中的dept_id中不存在,那么相关行就会连接失败。在结果集中值存在两表相互存在的行数据。
内链接是查询交叉部分的数据,假如连接条件为a.bid = b.id 那么结果中只会出现,a.bid 的值既存在a表中也存在b表中的数据。
如果想要显示在a.bid 存在于a表中的值,但是不存在b表中的值的行,可以采用外连接 outer join ... on...
连接条件和过滤条件
1.连接条件 on 后面的条件
2.过滤条件 where 后面的条件
select a.account_id,a.cust_id,a.open_date,a.product_cd from account a innerjoin employee e on a.open_emp_id = e.emp_id innerjoin branch b on e.assigned_branch_id = b.branch_id where e.start_date < '2007-01-01'and (e.title = 'Taller'or e.title = 'Head Teller') and b.name = 'Woburn Branch';