sql中如何实现级联表的操作 5
3个回答
展开全部
给一个表建立触发器,当插入或更新的时候,自动更新另一个表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的笔记:
1.自然联结
Natural Join、Using和On关键字创建的联结都叫自然联结。
使用Natural Join联结时,前提条件是源表和目标表有相同名称且数据类型一致的列,这种联结叫纯自然联结。
当源表和目标表,存在多个相同名称的列时,我们仅希望使用其中某一个或几个,并非使用全部相同列进行联结时,使用Using进行限制。Natural和Using是互斥的存在。
当源表和目标表,并不存在名称相同的列,但列的实际数据有等值或者不等值关系时,使用On显式的进行关系陈述。这种形式,也是最通用,最节省性能的方式。
on 举例:
select
e.employee_id,
e.department_id,
d.department_name,
d.location_id,
l.city
from employees e
join departments d
on(e.department_id=d.department_id)
join locations l
on(d.location_id=l.location_id);
老版本 举例:
select
department_id,
departments.location_id,
city
from departments,locations
where departments.LOCATION_ID = locations.LOCATION_ID;
2.自联结
select
worker.last_name,
worker.manager_id,
manager.last_name,
manager.employee_id
from employees worker
join employees manager
on(worker.manager_id = manager.employee_id);
3.非等值联结(外联结)
内联结:
数据可以进行一一匹配的(以上都是内联结)
外联结:
除了一一匹配的,还可以把不匹配的展示出来
左外联结 已左边表为主,右边表不匹配的补null
left outer join
右外联结 已右边表为主,左边表不匹配的补null
right out join
全外联结 以两边表为主,两边表不匹配的都补null
full out join
举例:
--左外联结
select
e.last_name,
e.department_id,
d.department_name
from employees e
left outer join departments d
on(e.department_id = d.department_id);
--右外联结
select
e.last_name,
d.department_id,
d.department_name
from employees e
right outer join departments d
on(e.department_id = d.department_id);
--全外联结
select
e.last_name,
d.department_id,
d.department_name
from employees e
full outer join departments d
on(e.department_id = d.department_id);
--左外 传统写法
select
last_name,
e.department_id,
d.department_name
from employees e,departments d
where e.DEPARTMENT_ID = d.DEPARTMENT_ID(+);
1.自然联结
Natural Join、Using和On关键字创建的联结都叫自然联结。
使用Natural Join联结时,前提条件是源表和目标表有相同名称且数据类型一致的列,这种联结叫纯自然联结。
当源表和目标表,存在多个相同名称的列时,我们仅希望使用其中某一个或几个,并非使用全部相同列进行联结时,使用Using进行限制。Natural和Using是互斥的存在。
当源表和目标表,并不存在名称相同的列,但列的实际数据有等值或者不等值关系时,使用On显式的进行关系陈述。这种形式,也是最通用,最节省性能的方式。
on 举例:
select
e.employee_id,
e.department_id,
d.department_name,
d.location_id,
l.city
from employees e
join departments d
on(e.department_id=d.department_id)
join locations l
on(d.location_id=l.location_id);
老版本 举例:
select
department_id,
departments.location_id,
city
from departments,locations
where departments.LOCATION_ID = locations.LOCATION_ID;
2.自联结
select
worker.last_name,
worker.manager_id,
manager.last_name,
manager.employee_id
from employees worker
join employees manager
on(worker.manager_id = manager.employee_id);
3.非等值联结(外联结)
内联结:
数据可以进行一一匹配的(以上都是内联结)
外联结:
除了一一匹配的,还可以把不匹配的展示出来
左外联结 已左边表为主,右边表不匹配的补null
left outer join
右外联结 已右边表为主,左边表不匹配的补null
right out join
全外联结 以两边表为主,两边表不匹配的都补null
full out join
举例:
--左外联结
select
e.last_name,
e.department_id,
d.department_name
from employees e
left outer join departments d
on(e.department_id = d.department_id);
--右外联结
select
e.last_name,
d.department_id,
d.department_name
from employees e
right outer join departments d
on(e.department_id = d.department_id);
--全外联结
select
e.last_name,
d.department_id,
d.department_name
from employees e
full outer join departments d
on(e.department_id = d.department_id);
--左外 传统写法
select
last_name,
e.department_id,
d.department_name
from employees e,departments d
where e.DEPARTMENT_ID = d.DEPARTMENT_ID(+);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询