資料庫學習筆記4(SQL中級)
資料庫學習筆記4(SQL中級)
1.連線表示式(Join Expression)
1.連線條件
-
關鍵詞on
-
on條件可以表示任何SQL謂詞
-
from student join takes on student.ID=takes.ID
2.外連線
-
外連線通過在結果中建立包含空值元組的方式,保留了那些在連線中丟失的元組
-
有三種形式的外連線
1.左外連線(left outer join) 只保留出現在左外連線運算之前的關係中的元組
2.右外連線(right outer join) 只保留出現在右外連線運算之後的關係中的元組
3.全外連線(full outer join) 保留出現在兩個關係中的元組
-
不保留未匹配元組的連線運算被稱作內連線
-
當join子句中沒有使用outer字首,預設的連線型別是inner join
3.檢視
-
SQL允許通過查詢來定義虛關係,它在概念上包含查詢的結果。虛關係並不預先計算並存儲,而是在使用虛關係的時候才通過執行查詢被計算出來
-
不是邏輯模型的一部分但作為虛關係對使用者可見的關係稱為檢視
-
檢視定義
-
creat view v as < query expression >
-
如果用於定義檢視的實際關係改變,檢視也跟著修改,這樣的檢視稱為物化檢視(materialized view)
-
檢視的更新
-
檢視的更新會修改原來的資料
-
一般來說,只有下面的條件都滿足,檢視才是可更新的
1.from子句中只有一個數據庫關係
2.select子句只包含關係的屬性名,不包含任何表示式,聚集或distinct宣告
3.任何沒有出現在select子句中的屬性可以取空值,即這些屬性上沒有not null 約束,也不構成主碼的一部分
4.查詢中不含有group by 或 having 子句
4.事務(transaction)
-
事務必須滿足4個條件
1.原子性
2.一致性
3.隔離性
4.永續性
-
Commit work提交當前事務,也就是將該事務所做的更新在資料庫中持久儲存。在事務被提交後,一個新的事務自動開始
-
Rollback work回滾當前事務,即撤銷該事務中所有SQL語句對資料庫的更新。這樣,資料庫就恢復到執行該事務第一條語句之前的狀態
5.完整性約束
-
單個關係上的約束
1.not null
2.unique
3.check<>
-
check子句
check(P)子句指定一個謂詞P,關係中的每個元組都必須滿足謂詞P
-
參照完整性(referential integrity)
當違反殘照完整約束時,通常的處理是拒絕執行導致完整性破壞的操作,但在foreign key 子句中可以指明:如果被參照關係上的刪除或更新動作違反了約束,系統可以採取一些步驟修改參照關係中的元組來恢復完整性約束,而不是拒絕這樣的操作
這樣的宣告有:on delete cascade 和 on update cascade
6.SQL資料型別和模式
1.大物件型別
- SQL提供字元資料的大物件資料型別(clob)和二進位制資料的大物件型別(blob)
2.使用者定義的資料型別
- 可以用 creat type子句來定義新型別
- domain可以在基本型別上施加完整性約束