freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

第9章服務器環(huán)境下的sql(編輯修改稿)

2025-01-30 02:36 本頁面
 

【文章內容簡介】 L中的事務 ? SQL中的安全機制和用戶認證 64 什么是 SQL環(huán)境 ? SQL環(huán)境是 SQL中數據所在的框架,為數據操作提供支持,即一個運行環(huán)境 (如 DBMS的運行環(huán)境 )。 ? 數據庫的所有元素,包括表、視圖、觸發(fā)器等,都是在 SQL環(huán)境中定義的。這些元素組成了 層次性結構 : ?模式 ?目錄 ?簇 65 1. 模式 ? 模式是組織的基本單元。 ? 模式是表、視圖、斷言、觸發(fā)器等模式元素的集合。 ? 模式聲明的形式 CREATE SCHEMA模式名 模式元素聲明 ? 模式聲明示例 66 1. 模式 (續(xù) ) ? CREATE SCHEMA 提供了在 SQL語句中創(chuàng)建表、視圖以及授予對象權限的方法,并區(qū)別重名,即屬于不同模式的模式元素可以重名,可用“模式名 .模式元素名”來引用某個模式元素。 ? 沒有必要一次就聲明完所有的模式??梢允褂煤线m的CREATE、 DROP或 ALTER語句來修改或增加模式 ? 使用 SET SCHEMA語句改變“當前”的模式。 ?例如: SET SCHEMA MovieSchama 。 將使例 67 2. 目錄 ? 模式的集合。每個目錄有一個或多個模式,目錄中的模式名必須唯一,每個目錄包含一個叫INFORMATION_SCHEMA的特殊模式,這個模式包含了該目錄中所有模式的信息。 ? 沒有 CREATE CATALOG語句,只規(guī)定了 設置當前目錄的語句: ? SET CATALOG 目錄名 ; ?對模式的操作 (新建 /修改模式等 )都是針對當前目錄 68 模式元素的全名 ? 目錄名 . 模式名 . 模式元素名 ?例如: 目錄 MovieCatalog中的模式 MovieSchema的表Movies的引用如下: MovieCatalog . MovieSchema . Movies ? 如果目錄是缺省的或是當前的目錄,則可省去目錄名 ? 如果模式也是缺省的或當前的模式,那么模式部分也可以省去,這樣只留下元素自己的名稱。 ? 然而,當需要訪問當前模式或目錄以外的元素時,就不得不使用完全名。 69 3. 簇 ? 簇是目錄的集合。每個用戶有一個關聯的簇:用戶可訪問的所有目錄的集合。簇是被提交的查詢的最大范圍,故在一定程度上,簇是特定用戶所看到的“數據庫”。 70 SQL環(huán)境中的客戶端和服務器 ? 依照 SQL標準, SQL環(huán)境有兩種特殊的進程: ? SQL 服務器: 支持對數據庫元素的操作,充當數據庫服務器的角色。 ? SQL客戶端: 允許用戶連接到服務器上,對數據庫進行操作 ? 例如: ?服務器運行在一個大的存儲數據庫的主機上,而客戶端運行在其他主機上,也許是遠離服務器的個人工作站,也許是和服務器運行在同一臺主機上。 71 連接 ? 如果在 SQL客戶端主機上運行包含 SQL 的程序,則可通過下面的 SQL語句打開客戶端和服務器間的連接: CONNECT TO 服務器名 AS 連接名 AUTHORIZATION 用戶名和密碼 ? 服務器名 依賴于安裝??捎妹Q DEFAULT將用戶連接到任何被作為“缺省服務器”安裝的 SQL服務器。如果僅是在SQL客戶端主機上執(zhí)行 SQL語句,也可為自己建立一個缺省連接 ? 連接名 可在以后用于引用連接。原因是 SQL允許用戶打開好幾個連接,但任何時候只有一個連接有效 ? AUTHORIZATION授權子句 后跟隨著用戶名和密碼。 72 引用連接 ? 將 conn1切換為有效連接: SET CONNECTION conn1。 ? 任何當前有效的連接進入休眠狀態(tài)后,只有用下列語句顯式地調用才能將其激活: SET CONNECTION conn1。 ? 斷開連接時 conn1被中止,不是休眠,也不能被激活 : DISCONNECT conn1。 ? 注:如果連接創(chuàng)建后再也不被引用, CONNECT TO子句中的 AS和連接名可以省略 73 會話 ? 連接有效時,執(zhí)行的 SQL操作形成了一個會話 ? 會話和創(chuàng)建它的連接具有相同的生命周期 。 例如 : ?當連接處于休眠狀態(tài)時,它的會話也處于休眠態(tài) ? SET CONNECTION語句可激活連接,同時激活相應會話。連接會話是客戶和服務器間鏈路的兩個方面 ? 每個會話有一個當前目錄和該目錄中的一個當前模式 ?由語句 SET SCHEMA和 SET CATALOG進行設置 ?每個會話都有一個授權用戶 74 模塊 ? 模塊是對應用程序而言的, SQL標準提出三種模塊: ? 普通 SQL界面: 用戶可以鍵入 SQL服務器執(zhí)行的 SQL語句。這種模式下,每個查詢或其他語句本身是一個模塊。 ? 嵌套 SQL: 預處理器將這個嵌套的 SQL語句轉變?yōu)?SQL系統的對應函數或過程調用。編譯后的宿主語言程序 (包括這些函數調用 )是一個模塊。 ? 真模塊: 含有存儲函數或過程集合的模塊。這些函數 |過程部分是宿主語言代碼,部分是 SQL語句,它們之間可通過參數或共享變量進行通訊。 ? 僅要求 SQL的實現中至少提供一種類型給用戶。 75 SQL客戶端 服務器交互 ? 模塊的執(zhí)行被稱為 SQL代理 ? 模塊 (代碼 )和 SQL代理 (代碼的執(zhí)行 )作為一個單元,通過訪問 SQL客戶端建立與數據庫的連接 76 主要內容 ? 編程環(huán)境下的 SQL ? 模式中的存儲過程 ? SQL 環(huán)境 ? 使用調用層接口 ? Java數據庫連接 ? SQL中的事務 ? SQL中的安全機制和用戶認證 77 主要內容 ? 編程環(huán)境下的 SQL ? 模式中的存儲過程 ? SQL 環(huán)境 ? 使用調用層接口 ? Java數據庫連接 ? SQL中的事務 ? SQL中的安全機制和用戶認證 78 1. 問題的提出 ? 像銀行業(yè)務或機票預定這樣的應用,每秒鐘都會有上百個操作在數據庫上執(zhí)行。 ? 如果 DBMS完全沒有約束對數據庫操作的順序 ,將會出現錯誤。 79 (1) 可串行性 ? 示例 : 假設航空公司數據庫里有這樣一個關系 Flights (fltNo, fltDate, seatNo, seatStatus) ? Step1: 查詢所需航班的空位 ? Step2: 若找到空位,則占用這個座位,更新數據庫 SELECT seatNo FROM Flights WHERE fltNo=123 AND fltDate=DATE ‘ 20231225’ AND seatStatus=‘ available’ 。 UPDATE Flights SET seatStatus=‘ occupied’ WHERE fltNo=123 AND fltDate=DATE ‘ 20231225’ AND seatNo=’ 22A’ 。 80 用戶 1發(fā)現座位空 用戶 2發(fā)現座位空 用戶 1占用 用戶 2占用 不同用戶占用同一座位 不同用戶在不同售票點按上述 2個步驟購票 問題 81 解決方法 ? 用戶 1的操作執(zhí)行完,再執(zhí)行用戶 2的操作。 ? 將一組操作組成一個 事務 ,事務中進行封鎖,保證事務的 可串行性 。 ? 可串行性: 一個時刻只有一個事務,相互之間沒有重疊。 82 (2) 原子性 ? 示例 假設銀行數據庫有關系 Accounts (acctNo, balance) ? 考慮從賬戶 123向賬戶 456轉帳 $100。可以先檢查賬戶123中是否至少有 $100,若有,則執(zhí)行以下兩個步驟: ? 1. 通過如下 SQL修改語句向賬戶 456加上 $100 ? 2. 通過如下 SQL修改語句從賬戶 123減去 $100 UPDATE Accounts SET balance=balance+100 WHERE acctNo=456。 UPDATE Accounts SET balance=balance100 WHERE acctNo=123。 83 問題 ? 設想: 金額轉入賬戶 2 之后,系統故障。 ? 數據庫狀態(tài): 賬戶 2 增加金額,賬戶 1未減金額 對銀行造成損失 ? 問題 : 數據處于不一致狀態(tài) ? 結論 : 數據庫操作的某些組合,需 原子地 完成 即要么都做 要么都不做。 84 2. 事務 ? 事務: 必須被原子地執(zhí)行的一個或多個數據庫操作的集合, (如:一組 SQL語句 ,一條 SQL語句或一段程序 ) ?要么所有操作都執(zhí)行,要么所有操作都不執(zhí)行。 ?另外 SQL要求事務缺省地以可串行化方式執(zhí)行。 ? 在 SQL語言中定義事務的相關語句 ? START TRANSACTION 事務開始 ? COMMIT TRANSACTION 提交,事務成功結束 ? ROLLBACK TRANSACTION 撤消 (夭折、回滾 ) 85 課本示例 42 ? 假設要把例 。 ? 在訪問數據庫之前要執(zhí)行 START TRANSACTION。 ? 如果發(fā)現資金不夠轉帳,則執(zhí)行 ROLLBACK命令。 ? 但是,如果有足夠資金,那么執(zhí)行那兩條修改語句,然后執(zhí)行 COMMIT。 86 保證事務正確執(zhí)行的 ACID性質 ? A:原子性 ?事務中的操作或者都執(zhí)行或者都不執(zhí)行。 ? C:一致性 ?事務執(zhí)行前后數據庫滿足所有約定的一致性條件。 ? I :獨立性 ?兩個事務同時執(zhí)行不相互干擾。 ? D:持久性 ?事務完成后即使系統故障,事務的結果長期保存。 例如:賬戶余額不能是負數 87 3. 只讀事務 ? 航班預定和銀行轉帳的例子,都包含一個先讀 然后 (可能 )向數據庫中寫一些數據的事務。這種事務容易出現可串行化問題。 ? 然而當一個事務只讀數據而不寫數據時,就可以更自由地讓該事務與別的事務并發(fā)執(zhí)行。 88 示例 ? 例:讀數據判定座位是否有效 ? 一次可以執(zhí)行多個查詢程序的調用,不用擔心會對數據庫造成永久性的傷害。 ? 可能出現最壞的情況是,讀取某個座位是否空閑的數據時,該座位正在被某個別的程序預定或釋放。當前查詢得到的答案只在當前時刻有效。 SELECT seatNo FROM Flights WHERE fltNo=123 AND fltDate=DATE ‘ 20231225’ AND seatStatus=‘ available’ 。 89 只讀事務的設置 ? 如果 SQL執(zhí)行系統被告知當前事務只讀,則許多訪問同一數據的只讀事務可以并發(fā)地運行,但是寫同一數據的事務不可以。 ? 只讀、讀寫的設置 ? SET TRANSACTION READ ONLY ? SET TRANSACTION READ WRITE (默認 ) ? 只讀事務 可以 更自由地與其他事務并行 90 4. 讀臟數據 ? 臟數據( dirty data) :未提交事務所寫的數據 ? 臟讀?。?dirty read) :對臟數據的讀取 ? 讀臟數據的風險: ?寫數據的事務夭折,臟數據被移走,
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1