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來達到目的
?。膺B接查詢 ----查詢哪些部門有員工,哪些部門沒有員工
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;
----外連接查詢 ?。樵兡男┎块T有員工,哪些部門沒有員工
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;
?。樵兡男﹩T工有對應的部門,哪些沒有
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;
?。瓕崿F滿外連接: full join ?。褂?union 關鍵字實現左外連接和右外連接的并集 ----select * from dept3 a full join emp3 b on a.deptno = b.dept_id; --不能執行
?。璾nion是將兩個查詢結果上下拼接,并去重
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 ?。璾nion 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