1. 程式人生 > 其它 >資料庫學習筆記4(SQL中級)

資料庫學習筆記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可以在基本型別上施加完整性約束