解決問題知識點 mysql資料庫

2022-07-22 07:24:12 字數 996 閱讀 7182

一: 連線 多表的字段中含null的  多表查詢 ----左右連線查詢! 

例:一張  emp(emano,ename,sal,deptno) 雇員表, 一張 dept(deptno,dname) 部門表,  雇員 中 有 字段 為 部門 編號,而 部門表 只有 部門編號,與部門名稱。

但  雇員表中 有一些 雇員 是沒有 部門的, 即 字段 為 null,  如何 通過 查詢語句 查出 所有 雇員 資訊 以及 雇員 對應的 部門名稱?

select e.empno,e.ename,e.sal,d.deptno,d.dname  from emp e,dept d where e.deptno=d.deptno;

上面 語句 的確 可以 查出 雇員資訊 與 其所屬 部門名稱,但 問題 就在於  雇員表中 deptno 為 null 的 記錄 是 顯示不出來的,

mysql 資料庫  的查詢 有 一特點 : 字段 值 帶 null 的 都不參與 運算。 (oracle貌似就可以)

那麼 如何 讓 部門為 null 的 雇員 也以  null 的形式 查出 ,而不是 直接 忽略跳過呢?

這裡 就用到了  左右連線查詢!!!(好吧,我承認 資料庫課 沒好好讀......最開始 遇到這問題 頭疼死了哈哈)

mysql 中 left join    right join

left join是以左表的記錄為基礎,找對應 右表記錄。 

換句話說,左表的記錄將會全部表示出來,而右表只會顯示符合搜尋條件的記錄。 

右表記錄不足的地方均為null. 

這樣 寫出的 sql 語句為:

select e.empno,e.ename,e.sal,e.deptno,d.dname from emp e left join dept d on e.deptno=d.deptno;

完美!~~~

補充: 除了 左右 連線, 還有 乙個  inner join   : 相等 連線 ,即 並不以 任何一張表 為 基礎, 只羅列 出 相等的,忽略 連線 查詢 為 null的。

MYSQL資料庫知識點

唯一索引 unique 測試 建表create table test id int notnull,name varchar 30 unique,phonenumber varchar 20 password varchar 32 primary key id unique key pn phone...

Mysql資料庫知識點

mvcc multi version concurrency control,實現方式每行記錄增加兩個隱藏字段 事務版本號,刪除版本號 每次事務開啟使用同一版本並 1,提交後刪除版本號更新。mvcc原理 最左字首匹配原則,非常重要的原則,mysql會一直向右匹配直到遇到範圍查詢 between li...

mysql資料庫知識點總結

mysql屬於關係型資料庫,關係型資料庫是指採用了關係模型來組織資料的資料庫,而關係模型就是指二維 模型,所以,關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。1.mysql資料庫中常用的概念有 1 高併發讀寫效能低 由於 的使用者併發性高,往往是每秒上萬次的讀寫請求,雖然mysql等關...