經典的sql語言教程4

2021-04-27 04:34:07 字數 3615 閱讀 5850

經典的sql語言教程4

2023年11月05日 星期日 16:48

##2 (四) 資料控制

由於資料庫管理系統是乙個多使用者系統,為了控制使用者對資料的訪問權利,保持資料的 共享及完全性,sql語言提供了一系列的資料控制功能。其中,主要包括安全性控制、完整性控制、事務控制和併發控制。

1.安全性控制

資料的安全性是指保護資料庫,以防非法使用造成資料洩露和破壞。保證資料安全性的主要方法是通過對資料庫訪問權力的控制來防止非法使用資料庫中的資料。即限定不同使用者操作不同的資料物件的許可權。訪問權控制包括權力的授與、檢查和撤消。權力授與和撤消命令由資料庫管理員或特定應用人員使用。系統在對資料庫操作前,先核實相應使用者是否有權在相應資料上進行所

要求的操作。

(1)權力授與:權力授與有資料庫管理員專用的授權和使用者可用的授權兩種形式。資料庫管理員專用授權命令格式如下:

|connect | grant|resource|to 使用者名稱[identifed by 口令]|dba | 其中,connect表示資料庫管理員允許指定的使用者具有連線到資料庫的權力,這種授權是針對新使用者;resource表示允許使用者建立自己的新關係模式,使用者獲得connect權力後,必須獲得resource權力才能建立自己的新錶;dba表示資料庫管理員將自己的特權授與指定的使用者。若要同時授與某使用者上述三種授權中的多種權力,則必須通過三個相應的grant命令指定。

另外,具有connect和resource授權的使用者可以建立自己的表,並在自己建立的表和檢視上具有查詢、插入、修改和刪除的權力。但通常不能使用其他使用者的關係,除非能獲得其他使用者轉授給他的相應權力。

例:若允許使用者sse連線到資料庫並可以建立他自己的關係,則可通過如下命令授與權力:

grant connect to sse inentified by bd1928

grant resource to sse

使用者可用的授權是指使用者將自己擁有的部分或全部權力轉授給其他使用者的命令形式,其命令格式如下:

|select |

|insert |

|delete |

grant|update(列名1[,列名2]…)|on|表名 |to|使用者名稱|[with grant option]

|alter | |檢視名| |public|

|ndex |

|all |

若對某一使用者同時授與多種操作權力,則操作命令符號可用「,」相隔。public 表示將權力授與資料庫的所有使用者,使用時要注意:

任選項with grant option表示接到授權的使用者,具有將其所得到的同時權力再轉授給其他使用者權力。

例:如果將表student的查詢權授與所有使用者,可使用以下命令:

grant select on student to public

例:若將表subject的插入及修改權力授與使用者sse並使得他具有將這種權力轉授他人的

權力,則可使用以下命令:

grant insert,update(su_subject) on subject to sse with grant option 這裡,update後面跟su_subject是指出其所能修改的列。

(2)權力**:權力**是指**指定使用者原已授與的某些權力。與權力授與命令相匹配,權力**也有資料庫管理員專用和使用者可用的兩種形式。

dba專用的權力**命令格式為:

|connect |

revoke|resource|from使用者名稱

|dba |

使用者可用的權力**命令格式為:

|select |

|insert |

|delete |

revoke|update(列名1[,列名2]…) |on|表名 |from |使用者名稱|

|alter | |檢視名| |public|

|index |

|all |

例:**使用者sse的dba權力:

revoke dba from sse

2.完整性控制

資料庫的完整性是指資料的正確性和相容性,這是資料庫理論中的重要概念。完整性控 制的主要目的是防止語義上不正確的資料進入資料庫。關係系統中的完整性約束條件包括實體完整性、參照完整性和使用者定義完整性。而完整性約束條件的定義主要是通過create table語句中的[check]子句來完成。另外,還有一些輔助命令可以進行資料完整性保護。如unique和not null,前者用於防止重複值進入資料庫,後者用於防止空值。

3.事務控制

事務是併發控制的基本單位,也是恢復的基本單位。在sql中支援事務的概念。所謂事務,是使用者定義的乙個操作序列(集合),這些操作要麼都做,要麼乙個都不做,是乙個不可分割的整體。乙個事務通常以begin transaction開始,以commit或rollback結束。

sql提供了事務提交和事務撤消兩種命令:

(1)事務提交:事務提交的命令為:

commit [work]

事務提交標誌著對資料庫的某種應用操作成功地完成,所有對資料庫的操作都必須作為事務提交給系統時才有效。事務一經提交就不能撤消。

(2)事務撤消:事務撤消的命令是:

rollback [work]

事務撤消標誌著相應事務對資料庫操作失敗,因而要撤消對資料庫的改變,即要「回 滾」到相應事務開始時的狀態。當系統非正常結束時(如掉電、系統宕機),將自動執行rollback命令sql還提供了自動提交事務的機制,其命令為:

set auto commit on

其對應的人工工作方式命令為:

set auto commit off

一旦規定了自動提交事務方式,則系統將每條sql命令視為乙個事務,並在命令成功執行完成時自動地完成事務提交。

4.併發控制

資料庫作為共享資源,允許多個使用者程式並行地訪問資料。當多個使用者並行地運算元據庫時,需要通過併發控制對它們加以協調、控制,以保證併發操作的正確執行,並保證資料庫的一致性。在sql中,併發控制採用封鎖技術實現,當乙個事務欲對某個資料物件操作時,可申請對該物件加鎖,取得對資料物件的一定控制,以限制其他事務對該物件的操作。其語句格式為:

|share |

lock table 表名(或表名集合)in |exclusve |mode [nowait]

|share update|

其中,表名(或表名集合)中指出封鎖物件,若為多個表名,則各個表名間以「,」相隔 ;任選項nowait表示多個使用者要求封鎖相同的關係時,後來提出的要求會被立即退回去,否則會等待該資源釋放。

share表示共享封鎖方式;exclusive表示獨佔封鎖方式;share updae表示共享更新封鎖方式。其中共享封鎖方式允許其他事務讀同一資料,但防止其他事務對已封鎖的表進行更新,該鎖主要防止在表的兩次查詢之間對該錶的改動;共享更新封鎖share update 是乙個行封鎖機制,它可改善表級封鎖的並行性,它能允許併發事務讀和修改乙個表中的不同的行;獨佔封鎖方式exclusive禁止其他事務獲得乙個共享鎖且禁止其他事務執行任何資料操作語句,即一旦某個執行事務對某個資料物件施加了排它鎖,則其他任何事務都不能再對該資料物件施加任何方式的鎖,只有處於等待狀態。如果不想無限等待,則選擇nowait。

php(hypertext preprocessor,超文字預處理器)是乙個遞迴的縮寫名稱,它是一種內嵌在html頁面內的指令碼語言。它的功能強大,使用方便,開發難度不大,而且可以免費使用。

Golang 語言 教程

目錄 golang入門指南 golang教程,設定工作區 go mods hello world golang教程 變數 golang教程 資料型別 數字,字串和布林值 陣列,切片和對映 golang教程 型別轉換 條件語句 if else switch case 迴圈指標 函式可變函式 方法,結構...

C語言教程(三)

主要普及c語言的基本語法,本文預設初看的人啥也不懂,如果有程式設計基礎請略過 下面來仔細看一下c編輯器預設給我們生成的 include int main 執行後可以在控制台看見 hello word於是可以做以下嘗試根據程式的變化來逐一了解 的含義 注釋printf hello word n inc...

C語言教程 迴圈

c語言中有2種最常用的迴圈語句 while迴圈 和for 迴圈。while迴圈 while loop while 表示式 程式塊還有乙個變種 do while迴圈,do while 表示式 只要while裡得到表示式是真的,就一直執行程式塊的語句。for迴圈 for loop for 表示式1 表示...