delete from dept where deptno = '1001';-----不可以删除(被依赖了)delete from dept where deptno = '1004'; ------可以删除delete from emp where eid = '7'; -----可以删除 删除外键约束 删除之后,表与表之间就没有关系了 语法:
alter table 表名字 drop foreign key 外键约束名alter table emp2 drop foreign key emp2_fk; 怎么掌握mysql多表操作
1、交叉连接查询返回返回被连接的两个表所有数据行的笛卡尔积 2、笛卡尔集可以理解为一张表的每一行去和另外一张表的任意一行进行匹配 3、假如A表有 m 行数据,B表有 n 行数据,则返回 m * n 行数据 4、笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选
内连接查询 求的是两个表之间的交集 怎么掌握mysql多表操作
inner 可以省略
隐式内连接(SQL92标准):
select * from A,B where 条件; 显式内连接(SQL99标准);
select * from A inner join B on 条件 ---查询每个部门的所属员工 //隐式内连接 select* from dept3,emp3 where dept3.deptno = emp3.dept_id; //这样写标准 还可以给表起别名,如;
select* from dept3 a ,emp3 b where a.deptno = b.dept_id; ---查询每个部门的所属员工 //显式内连接select *from dept3 inner join emp3 on dept3.deptno = emp3.dept_id; //这样写标准 还可以给表起别名,如;
select *from dept3 a join emp3 b on a.deptno = b.dept_id;
外连接查询 分为:(outer可以 省略) 左外连接left outer join、
select* from A left outer join B on 条件; 右外连接right outer join、
select* from A right outer join B on 条件; 满外连接full outer join
select* from A full outer join B on 条件; 注意: Oracle 里面有 full join ,可是在mysql 对 full join 支持的不好,我们可以使用 union来达到目的
----外连接查询 ----查询哪些部门有员工,哪些部门没有员工
use mydb3;select* from dept3 left outer join emp3 on dept3.deptno =emp3.dept_id; ----查询哪些员工有对应的部门,哪些没有
select* from dept3 right outer join emp3 on dept3.deptno =emp3.dept_id; ----使用 union 关键字实现左外连接和右外连接的并集
select* from dept3 left outer join emp3 on dept3.deptno=emp3.dept_idunionselect* from dept3 right outer join emp3 on dept3.deptno =emp3.dept_id;
----外连接查询 ----查询哪些部门有员工,哪些部门没有员工
usemydb3;select* from dept3 a left outer join emp3 b on a.deptno = b.dept.idselect* from dept3 a left join emp3 b on a.deptno = b.dept_id; ----外连接多个表
select* from Aleft join B on 条件1left join C on 条件2left join D on 条件3;
----查询哪些员工有对应的部门,哪些没有
select * from dept3 a right outer join emp3 b on a.deptno = b.dept_id;select* from dept3 a right join emp3 b on a.deptno = b,dept_id;select*from Aright joinB on条件1,right joinC on条件2,right joinD on条件3;
----实现满外连接: full join ----使用 union 关键字实现左外连接和右外连接的并集 ----select * from dept3 a full join emp3 b on a.deptno = b.dept_id; --不能执行
----union是将两个查询结果上下拼接,并去重
select* from dept3 a left join emp3 b on a.deptno = b.dept_idunionselect* from dept3 a right join emp3 b on a.deptno = b.dept_id ----union all 是将两个查询结果上下拼接,不去重
select* from dept3 a left join emp3 b on a.deptno = b.dept_idunion allselect* from dept3 a right join emp3 b on a.deptno= b.dept_id