官术网_书友最值得收藏!

3.1 數據庫簡介

在具體介紹SQL Server 2016中如何創建數據庫之前,讀者需要對數據庫的基本概念有初步了解。本節將為讀者介紹一些數據庫的專用術語,如數據庫對象、系統數據庫、表、記錄、索引等。

3.1.1 數據庫基本概念

簡單地說,數據庫是一個單位或一個應用領域的通用數據處理系統,存儲的是屬于企業和事業部門、團體和個人的有關數據的集合。數據庫中的數據是從全局觀點出發建立的,按一定的數據模型進行組織、描述和存儲。數據庫的結構基于數據間的自然聯系,可提供一切必要的存取路徑,且數據不針對某一應用,而是面向全組織的,具有整體的結構化特征。

數據庫中的數據是為眾多用戶共享信息而建立的,已經擺脫了具體程序的限制和制約。不同的用戶可以按各自的用法使用數據庫中的數據,多個用戶可以同時共享數據庫中的數據資源,即不同的用戶可以同時存取數據庫中的同一個數據。數據共享性不僅滿足了各用戶對信息內容的要求,同時也滿足了各用戶之間信息通信的要求。

1.基本結構

數據庫的基本結構分3個層次,反映了觀察數據庫的3種不同角度。以內模式為框架所組成的數據庫叫作物理數據庫,以概念模式為框架所組成的數據庫叫作概念數據庫,以外模式為框架所組成的數據庫叫作用戶數據庫。

(1)物理數據層

它是數據庫的最內層,是物理存儲設備上實際存儲的數據的集合。這些數據是原始數據,是用戶加工的對象,由內部模式描述的指令操作處理的位串、字符和字組成。

(2)概念數據層

它是數據庫的中間一層,是數據庫的整體邏輯表示。概念數據庫指出了每個數據的邏輯定義及數據間的邏輯聯系,是存儲記錄的集合,涉及的是數據庫所有對象的邏輯關系,而不是它們的物理情況,是數據庫管理員概念下的數據庫。

(3)用戶數據層

它是用戶所看到和使用的數據庫,表示了一個或一些特定用戶使用的數據集合,即邏輯記錄的集合。

數據庫不同層次之間的聯系是通過映射進行轉換的。

2.主要特點

數據庫技術是數據管理技術發展到現在的最新產物,經歷了人工管理階段和文件系統階段。數據庫的主要特點是實現數據共享、減少數據冗余、實現數據集中控制,提高數據的可靠性和安全性,具體如下:

(1)實現數據共享

數據共享包括所有用戶可同時存取數據庫中的數據,也包括用戶可以用各種方式通過接口使用數據庫,并提供數據共享。

(2)減少數據的冗余度

與文件系統相比,由于數據庫實現了數據共享,因此避免了用戶各自建立應用文件,減少了大量重復數據,減少了數據冗余,維護了數據的一致性。

(3)數據的獨立性

數據的獨立性包括邏輯獨立性和物理獨立性,數據庫實現了數據在邏輯和物理上的相對獨立。

數據庫中數據庫的邏輯結構和應用程序相互獨立,數據物理結構的變化不影響數據的邏輯結構。

(4)數據實現集中控制

在文件管理方式中,數據處于一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關系。利用數據庫可對數據進行集中控制和管理,并通過數據模型表示各種數據的組織以及數據間的聯系。

(5)數據的安全性和可靠性

數據庫提供了相關技術保障數據具有一致性和可維護性,主要包括安全性控制、完整性控制和并發控制。其中,安全性控制用于防止數據丟失、錯誤更新和越權使用;完整性控制用于保證數據的正確性、有效性和相容性;并發控制使在同一時間周期內允許對數據實現多路存取,又能防止用戶之間的不正常交互作用。

(6)故障恢復

故障恢復是由數據庫管理系統提供的一套方法,可及時發現故障和修復故障,從而防止數據被破壞。數據庫系統能盡快恢復數據庫系統運行時出現的故障,可能是物理上或邏輯上的錯誤。例如,對系統的誤操作造成的數據錯誤等。

3.數據庫種類

數據庫通常分為層次式數據庫、網絡式數據庫和關系式數據庫3種。不同的數據庫是按不同的數據結構來聯系和組織的。在當今的互聯網時代,最常見的數據庫模型主要有兩種,即關系型數據庫和非關系型數據庫。

(1)關系型數據庫

關系型數據庫模型是把復雜的數據結構歸結為簡單的二元關系(二維表格形式)。在關系型數據庫中,對數據的操作幾乎全部建立在一個或多個關系表格上,通過對這些關聯的表格分類、合并、連接或選取等運算來實現數據庫的管理。

關系型數據庫誕生40多年了,從理論產生發展到現實產品。例如,Oracle、SQL Server和MySQL等都是關系型數據庫。其中,Oracle在數據庫領域處于霸主地位,形成每年高達數百億美元的龐大產業市場。

(2)非關系型數據庫

隨著互聯網Web 2.0網站的興起,傳統的關系數據庫在應付Web 2.0網站,特別是超大規模和高并發的SNS類型的Web 2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫(Not Only SQL, NoSQL,不僅是SQL)則由于其本身的特點得到了非常迅速的發展。NoSQL數據庫在特定的場景下可以發揮出難以想象的高效率和高性能,它是作為對傳統關系型數據庫的一個有效補充。

非關系型數據庫是一項全新的數據庫革命性運動。NoSQL在早期就有人提出,發展至2009趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念是一種全新的思維的注入。

3.1.2 數據庫常用對象

數據庫對象是數據庫的組成部分,常見的對象有表、索引、視圖、圖表、默認值、規則、觸發器、存儲過程、用戶、序列等,本小節將簡要介紹這些對象的概念,為后續學習打下基礎。

(1)表(Table)

數據庫中的表與日常生活中使用的表格類似,由行(Row)和列(Column)組成。其中,列由同類的信息組成,每列又稱為一個字段,每列的標題稱為字段名。行包括若干列的信息項。一行數據稱為一個或一條記錄,是有一定意義的信息組合。一個數據庫表由一條或多條記錄組成,沒有記錄的表稱為空表。

每個表中通常都有一個主關鍵字,用于唯一地確定一條記錄。

(2)索引(Index)

索引是根據指定的數據庫表列建立起來的順序。它提供了快速訪問數據的途徑,并且可監督表的數據,使其索引所指向的列中的數據不重復。

(3)視圖(View)

視圖看上去似乎與表一模一樣,具有一組命名的字段和數據項,但它其實是一個虛擬的表,在數據庫中并不實際存在。視圖是由查詢數據庫表產生的,它限制了用戶能看到和修改的數據。由此可見,視圖可以用來控制用戶對數據的訪問,并能簡化數據的顯示,即通過視圖只顯示那些需要的數據信息。

(4)圖表(Diagram)

圖表其實就是數據庫表之間的關系示意圖,利用圖表可以編輯表與表之間的關系。

(5)默認值(Default)

默認值是當在表中創建列或插入數據時,對沒有指定其具體值的列或列數據項賦予事先設定好的值。

(6)規則(Rule)

規則是對數據庫表中數據信息的限制,其限定的是表的列。

(7)觸發器(Trigger)

觸發器是一個用戶定義的SQL事務命令的集合。當對一個表進行插入、更改、刪除時,這組命令就會自動執行。

(8)存儲過程(Stored Procedure)

存儲過程是為完成特定的功能而匯集在一起的一組SQL程序語句,經編譯后存儲在數據庫中的SQL程序。

(9)用戶(User)

所謂用戶,就是有權限訪問數據庫的人,同時需要自己登錄賬號和密碼。一般來說,數據庫用戶分為管理員用戶和普通用戶,前者可對數據庫進行修改刪除,后者只能進行閱讀、查看等操作。

除了如上列出的數據庫對象之外,不同的數據庫管理系統也有部分自定義的對象,將在具體學習中分別介紹,此處不再贅述。

3.1.3 數據庫的組成

前面章節提到,數據庫是相關數據的集合。一個數據庫含有各種成分,包括數據表、記錄、字段、索引等。從使用者的觀點看,數據庫主要由文檔(Documents)、記錄(Records)和字段(Fields)3個層次構成。從開發者的角度看,數據庫主要由數據表(Table)、記錄(Record)、字段(Field)、索引(Index)、查詢(Query)和視圖(View)等部分組成,具體組成部分如下。

(1)數據庫(Database)

SQL Server 2016數據庫是關系型數據庫,一個數據庫由一個或一組數據表組成。每個數據庫都以文件的形式存放在磁盤上,即對應于一個物理文件。不同的數據庫與物理文件對應的方式也不一樣。

(2)數據表(Table)

數據表簡稱表,由一組數據記錄組成,數據庫中的數據是以表為單位進行組織的。一個表是一組相關的按行排列的數據,每個表中都含有相同類型的信息。事實上,數據表實際上是一個二維表格。例如,一個班所有學生的考試成績可以存放在一個表中,表中的每一行對應一個學生,包括學生的學號、姓名及各門課程成績。

(3)記錄(Record)

表中的每一行稱為一個記錄,它由若干個字段組成。

(4)字段(Field)

表中的每一列稱為一個字段,也稱為域。每個字段都有相應的描述信息,如數據類型、數據寬度等。

(5)索引(Index)

為了提高訪問數據庫的效率,可以對數據庫使用索引。當數據庫較大時,為了查找指定的記錄,使用索引和不使用索引的效率有很大差別。索引實際上是一種特殊類型的表,其中含有關鍵字段的值(由用戶定義)和指向實際記錄位置的指針,這些值和指針按照特定的順序(也由用戶定義)存儲,從而可以以較快的速度查找到所需要的數據記錄。

(6)查詢(Query)

查詢實質上是一條SQL(結構化查詢語言)命令,用來從一個或多個表中獲取一組指定的記錄,或者對某個表執行指定的操作。當從數據庫中讀取數據時,往往希望讀出的數據符合某些條件,并且能按某個字段排序,使用查詢可以使這一操作容易實現而且更加有效。

SQL是非過程化語言(有人稱為第4代語言),在用它查找指定的記錄時,只需指出做什么,不必說明如何做。每個語句可以看作是一個查詢(Query),根據這個查詢可以得到需要的查詢結果。

(7)過濾器(Filter)

過濾器是數據庫的一個組成部分,它把索引和排序結合起來,用來設置條件,然后根據給定的條件輸出所需要的數據。

(8)視圖(View)

數據的視圖指的是查找到(或者處理)的記錄數和顯示(或者進行處理)這些記錄的順序。在一般情況下,視圖由過濾器和索引控制。

3.1.4 系統數據庫

在SQL Server 2016系統運行時會用到的相關信息(如系統對象和組態設置等)都是以數據庫的形式存在的,而存放這些系統信息的數據庫稱為系統數據庫。

1.系統數據庫

當用戶成功安裝SQL Server 2016后,打開該數據庫時會發現系統會自動建立master、model、msdb、resource和tempdb五個系統數據庫。這些系統數據庫有著各自不同的功能,具體如下:

(1)master

master數據庫是SQL Server 2016中最重要的數據庫,記錄了SQL Server 2016系統中所有的系統信息,包括登入賬戶、系統配置和設置、服務器中數據庫的名稱、相關信息和這些數據庫文件的位置以及SQL Server 2016初始化信息等。由于master數據庫記錄了如此多且重要的信息,一旦數據庫文件損失或損毀,將對整個SQL Server系統的運行造成重大的影響,甚至使得整個系統癱瘓,因此要經常對master數據庫進行備份,以便在發生問題時對數據庫進行恢復。

(2)tempdb

tempdb數據庫是存在于SQL Server 2016會話期間的一個臨時性的數據庫。一旦關閉SQL Server 2016,tempdb數據庫保存的內容將自動消失。重新啟動SQL Server 2016時,系統將重新創建新的且內容為空的tempdb數據庫。

tempdb保存的內容主要包括顯示創建臨時對象,例如表、存儲過程、表變量或游標;所有版本的更新記錄;SQL Server創建的內部工作表;創建或重新生成索引時,臨時排序的結果。

(3)model

model系統數據庫是一個模板數據庫,可以用作建立數據庫的模板。它包含建立新數據庫時所需的基本對象,如系統表、查看表、登錄信息等。在系統執行建立新數據庫操作時,它會復制這個模板數據庫的內容到新的數據庫上。由于所有新建立的數據庫都是繼承這個model數據庫而來的,因此,若更改model數據庫中的內容,則稍后建立的數據庫也都會包含該變動。

model系統數據庫是tempdb數據庫的基礎,由于每次啟動SQL Server 2016時,系統都會創建tempdb數據庫,因此model數據庫必須始終存在于SQL Server系統中,用戶不能刪除該系統數據庫。

(4)msdb

msdb數據庫是代理服務數據庫,為其報警、任務調度和記錄操作員的操作提供存儲空間。

SQL Server代理服務是SQL Server 2016中的一個Windows服務,用于運行任何已創建的計劃作業。作業是指SQL Server中定義的能自動運行的一系列操作。例如,如果希望在每個工作日下班后備份公司所有服務器,就可以通過配置SQL Server代理服務使數據庫備份任務在周一到周五的22:00之后自動運行。

(5)resource

resource數據庫是只讀數據庫,包含SQL Server中所有系統對象,如sys.object對象。SQL Server系統對象在物理上持續存在于resource數據庫中。

2.修改系統數據

SQL Server 2016不支持用戶直接更新系統對象(如系統數據庫、系統存儲過程和目錄視圖)中的信息。但SQL Server 2016提供了一整套管理工具,用戶可以使用這些工具充分管理他們的系統以及數據庫中的所有用戶和對象。其中包括:

(1)管理實用工具,如SQL Server Management Studio,幫助用戶管理所有SQL Server 2016的數據對象。

(2)SQL-SMO API,使程序員獲得在其應用程序中管理SQL Server的全部功能。

(3)T-SQL腳本和存儲過程,這組工具允許用戶使用系統存儲過程和T-SQL DDL數據定義語句。

3.查看系統數據庫數據

同樣,SQL Server 2016允許用戶通過使用以下方法獲得系統數據庫的目錄和相關系統信息:

(1)系統目錄視圖。

(2)SQL-SMO。

(3)Windows Management Instrumentation(WMI)接口。

(4)應用程序中使用的數據API(如ADO、OLE DB或ODBC)的目錄函數、方法、特性或屬性。

(5)T-SQL系統存儲過程和內置函數。

主站蜘蛛池模板: 浪卡子县| 安溪县| 茂名市| 荥阳市| 吴忠市| 新密市| 福贡县| 土默特右旗| 孝义市| 南安市| 望江县| 仁寿县| 如皋市| 五莲县| 黄平县| 晴隆县| 横山县| 类乌齐县| 崇左市| 张家界市| 久治县| 定结县| 黄陵县| 玉屏| 房产| 吉隆县| 三明市| 庆阳市| 开江县| 连云港市| 喀喇| 六安市| 山阴县| 芒康县| 安图县| 灵寿县| 宜都市| 河西区| 安多县| 顺平县| 集安市|