32. SQL數據庫的體系結構及術語:
SQL數據庫的體系結構也是三級,但術語與傳統的關系模型不同。
關系模式稱為“基本表”,存儲模式稱為“存儲文件”,子模式稱為“視圖”,元組稱為“行”,屬性稱為“列”。
33. SQL數據庫的體系結構要點是什麽:
(1) 壹個SQL數據庫是表(table)的匯集,它用壹個或多個SQL模式定義。壹個SQL模式是表和授權的表態定義。
(2) 壹個SQL表由行集構成,壹行是列的序列,每列對應壹個數據項。
(3) 壹個表或者是壹個基本表,或者是壹個視圖。(視圖只保存定義,不保存數據)
(4) 壹個基本表可跨壹個或多個存儲文件,壹個存儲文件也可存放壹個或多個基本表。每個存儲文件與外部存儲器上壹個物理文件對應。
(5) 用戶可用SQL語句對視圖和基本表進行查詢等操作。
(6) SQL用戶可以是應用程序,也可以是終端用戶。
34. SQL的組成分成幾部分:
SQL主要分成四部分:
(1) 數據定義。(SQL DDL)用於定義SQL模式、基本表、視圖和索引的創建和撤消操作。
(2) 數據操縱。(SQL DML)數據操縱分成數據查詢和數據更新兩類。數據更新又分成插入、刪除、和修改三種操作。
(3) 數據控制。包括對基本表和視圖的授權,完整性規則的描述,事務控制等內容。
(4) 嵌入式SQL的使用規定。涉及到SQL語句嵌入在宿主語言程序中使用的規則。
35. SQL模式的撤消有哪兩種方式:
CASCADE(連鎖式)方式:執行DROP語句時,把SQL模式及其下屬的基本表、視圖、索引等所有元素全部撤消。
RESTRICT(約束式)方式:執行DROP語句時,只有當SQL模式中沒有任何下屬元素時,才能撤消SQL模式,否則拒絕執行DROP語句。
36. SQL提供的基本數據類型有哪些?每種舉兩個例子:
(1) 數值型:INTEGER長整數、SMALLINT短整數
(2) 字符串型:CHAR(N)長度為N的定長字符串、VARCHAR(N)具有長度為N的變長字符串。
(3) 位串型:BIT(N)長度為N的二進制位串、BIT VARYING(N)長度為N的變長二進制位串
(4) 時間型:DATE日期、TIME時間
SQL2允許用戶使用“CREATE DOMAIN”語句定義新的域。
37. 完整性約束主要有哪三種子句:
完整性約束主要有三種子句:主鍵子句(PRIMARY KEY),檢查子句(CHECK)和外鍵子句(FOREIGN KEY)
38. 什麽是視圖,它與表的區別是什麽:
在SQL中,外模式壹級數據結構的基本單位是視圖,視圖是從若幹基本表和(或)其他視圖構造出來的表。我們創建壹個視圖時,只是把其視圖的定義存放在數據字典中,而不存儲視圖對應的數據,因此,視圖被稱為“虛表”,這是它與表的主要區別。
39. 對於視圖元組的更新操作(INSERT、DELETE、UPDATE)有哪三條規則:
(1) 如果壹個視圖是從多個基本表使用聯接操作導出的,那麽不允許對這個視圖執行更新操作。
(2) 如果在導出視圖的過程中,使用了分組和聚合操作,也不允許對這個視圖執行更新操作。
(3) 如果視圖是從單個基本表使用選擇、投影操作導出的,並且包含了基本表的主鍵或某個候選鍵,那麽這樣的視圖稱為“行列子集視圖”,並且可以被執行更新操作。
SQL2中,允許更新的視圖在定義時,必須加上“WITH CHECK OPTION”短語。
40. SQL語言有哪兩種使用方式:
壹種是在終端交互方式下使用,稱為交互式SQL;
另壹種是嵌入在高級語言的程序中使用,稱為嵌入式SQL,而這些高級語言可以是C、PASCAL、COBOL等,稱為宿主語言。
41. 嵌入式SQL的實現有哪兩種處理方式:
壹種是擴充宿主語言的編譯程序,使之能處理SQL語句;
另壹種是采用預處理方式。目前多數系統采用後壹種。
42. 在宿主語言的程序中使用SQL語句有哪些規定:
(1) 在程序中要區分SQL語言與宿主語句。所有SQL語句前必須加上前綴標識“EXEC SQL”,並以“END_EXEC”作為語句的結束標誌。(結束標誌在不同的宿主語言中不同)
(2) 允許嵌入的SQL語句引用宿主語言的程序變量(***享變量),但有兩條規定:
1) 引用時,這些變量前必須加冒號“:”作為前綴,以示與數據庫中變量有區別。
2) 這些變量由宿主語言的程序定義,並用SQL的DECLARE語句說明。
43. 用遊標機制協調SQL的集合處理方式所用的SQL語句有哪些:
與遊標有關的SQL語句有下列四個:
(1) 遊標定義語句(DECLARE)
(2) 遊標打開語句(OPEN)
(3) 遊標推進語句(FETCH)
(4) 遊標關閉語句(CLOSE)
44. SQL DML的嵌入使用技術:
(1) 若是INSERT、DELETE、UPDATE語句,則不必涉及遊標,只要加上前綴標識和結束標誌就能嵌入宿主語言程序中使用。
(2) 若是已知查詢結果肯定是單元組的SELECT語句,則不必涉及遊標,也可加上前綴標識和結束標誌後嵌入宿主語言程序中使用,但此時應該在SELECT語句中增加壹個INTO子句,指出找到的值應送到相應的***享變量中去。
(3) 若是已知查詢結果為多個元組的SELECT語句,則必須涉及到遊標,用遊標機制把多個元組壹次壹個地傳送給宿主程序處理。