接著上次的常用操作二補充涉及多個表的查詢。首先用乙個問題引導情景,目前有兩個表,分別是用於存放教學安排資訊的teaches表和用於存放課程資訊的course表,表結構描述如下:
現在要查詢在夏季(summer)開課的課程名稱(title),這兩個屬性跨越的兩個表,因此就需要將兩個表連線起來後在進行查詢。
需要注意的是查詢語句中『列名』要改為用』表名.列名『的形式書寫,這樣可以避免出現兩個表中其他相同列名的衝突。
1.等值連線
等值連線即用兩個表中相同的列名將同名列(連線字段)中值相等的元組連線起來,然後去掉兩個表中未能連線的元組
select 《表名.列名1>, 《表名.列名2>…
from 表1, 表2…
where 表1.連線字段=表2.連線字段 and 表2.連線字段=表3.連線字段…
2.外連線
等值連線會去掉為連線的元組,在外連線中則會講沒有連線的元組保留下來,並在連線表的屬性填上空值。
這裡需要用到三個新的關鍵字:
left outer join on:列出左邊表的所有元組
inner join on:列出兩個表都有的元組
right outer join on:列出右邊表的所有元祖
select 《列名1>, 《列名2>…
from 《表1>
left outer join | right outer join | inner join 《表2>
on (表1.關鍵字段=表2.關鍵字段)
自身連線
有些時候資料表會需要與本身相連線,這種情況一般會出現表中有同性質但不同名的屬性的現象。比如一下的表結構:course(number(課程編號), name(課程名), p_no(前置課程編號)),其中前置課程的值域和課程編號的值域是相同的。
這個時候要求查詢所有課程和它的前置課程的前置課程則需要用到自身連線。
select a.number, b.p_no
from course a, course b
where a.p_no=b.number
這裡其實根本上還是運用了等值連線的方法,只是給原來的同乙個表取了兩個別名然後再連線起來。
資料庫常用操作回顧一
最近在學習資料分析方面的知識,因為做資料分析工作中很多資料都會來自資料庫,因此資料庫的一些常用操作都是必不可少的,所以有重新回顧了一下之前學習的資料庫操作知識,同時也可以當作面試前關於資料庫知識的總結。資料庫操作大致可以分為三類,一是資料庫層面的看 建 用 導 刪 二是表層面的看 建 刪 三是資料記...
資料庫回顧
一 資料庫設計之模式設計 資料庫模式設計是資料庫邏輯設計的基礎 模式分解包括 1 無損連線 保證依賴關係r可以被分解成的ri恢復 2 保持函式依賴 關係模式的fd集在分解後仍然在資料庫模式中保持不變 3 無損連線加保持函式依賴 上述兩者的綜合 er模型 包括實體,屬性,實體與實體間的聯絡 資料庫設計...
資料庫常用操作
1 複製表結構及資料到新錶 create table 新錶select from 舊表 這種方法會將oldtable中所有的內容都拷貝過來,當然我們可以用delete from newtable 來刪除。不過這種方法的乙個最不好的地方就是新錶中沒有了舊表的primary key extra auto...