联表查询,外键
联表查询
使用多表可以减少冗余,便于增删改操作,查询操作复杂
表与表之间通过主键和外键关联
外键
如果一张表的某个列指向另一个表的主键列 ,就称之为外键列
-- 添加外键
alter table t_emp add constraint 外键名 foreign key (depart) references t_depart(id);
-- 删除外键
alter table t_emp drop foreign key 外键名
联表查询
-- 隐式连接
select * from t_emp,t_depart where t_emp.depart=t_depart.id;
select * from t_emp e ,t_depart p where e.depart=p.id;
-- 显示连接
select * from t_emp join t_depart on t_emp.depart=t_depart.id;
select * from t_emp e join t_depart p on e.depart=p.id;-- 外连接
-- 左外连接
select e.id,e.name,e.sex,e.birthday,e.dy,e.depart,e.address,e.rdate,p.name from t_emp e left join t_depart p on e.depart=p.id;
-- 右外连接
select e.id,e.name,e.sex,e.birthday,e.dy,e.depart,e.address,e.rdate,p.name from t_emp e right join t_depart p on e.depart=p.id;-- 自连接
select * from test t1
join test t2
on t1.id=t2.pid where t1.dname='市场'
嵌套查询
把一个查询的结果作为另一个查询的条件值。
select * from t_emp where (sex,address) =(select sex,address from t_emp WHERE name='孙华')