書名: 關系數據庫與SQL Server(2019版)作者名: 段利文 龔小勇主編本章字數: 2855字更新時間: 2021-12-17 17:41:08
項目3.1 認識SQL Server數據庫結構
一臺計算機可以安裝一個或多個SQL Server實例。每個SQL Server實例又可以包含一個或多個數據庫。在數據庫中,有一個或多個對象所有權組(稱為架構),在每個架構中,都存在數據庫對象,如表、視圖和存儲過程。
數據庫是用來存儲數據和數據庫對象的邏輯實體,是數據庫管理系統的核心內容。要更好地理解數據庫的含義,應該首先了解系統數據庫、數據庫文件和文件組、數據庫對象、數據庫狀態、文件狀態等相關含義。
任務3.1.1 認識系統數據庫
在SQL Server系統中,數據庫可分為“系統數據庫”和“用戶數據庫”兩大類。用戶數據庫是用戶自行創建的數據庫,系統數據庫則是SQL Server內置的,它們主要是用于系統管理。SQL Server 2019中包括以下的系統數據庫。
1.Master數據庫
Master數據庫用來追蹤與記錄SQL Server的相關系統級信息。這些信息包括:SQL Server的初始化信息、所有的登錄賬戶信息、所有的系統配置設置、其他數據庫的相關信息、數據庫文件的位置等。
由此可見,Master數據庫在系統中非常重要,如果Master數據庫不可用,則SQL Server也將無法啟動。因此,在使用Master數據庫時,比如進行了數據庫的創建、修改或刪除操作、更改了服務器或數據庫的配置值、修改或添加了登錄賬戶等操作時,應隨時對Master數據庫進行更新備份。
2.Model數據庫
Model數據庫是所有新建數據庫的模板,即新建的數據庫中的所有內容都是從模板數據庫中復制過來的。如果Model數據庫被修改了,那么以后創建的所有數據庫都將繼承這些修改。
模型數據庫數據和日志文件的默認初始大小為8MB,主數據文件以64MB的速度自動增長到磁盤充滿為止,日志文件以64MB的速度自動增長到最大2TB。
3.Msdb數據庫
Msdb數據庫用于SQL Server代理計劃警報和作業。SQL Server在Msdb的表中自動保留一份完整的聯機備份和還原歷史記錄(包括由自定義應用程序或第三方工具創建的),這些信息包括執行備份一方的名稱、備份時間和用來存儲備份的設備或文件。SSMS使用這些信息來提出計劃,還原數據庫和應用任何事務日志備份。SSMS、Service Broker和數據庫郵件等功能也使用該數據庫。
4.Tempdb數據庫
Tempdb數據庫用于為所有臨時對象或中間結果提供存儲空間,也為所有其他臨時存儲要求提供空間。Tempdb是一個全局資源,所有連接到SQL Server實例的用戶都可以使用。
每次啟動SQL Server時,系統都要重新創建Tempdb,以保證該數據庫為空。當SQL Server停止運行時,Tempdb中的臨時數據會自動刪除。
5.Resource數據庫
Resource數據庫用來存儲SQL Server所有的系統對象(如:以sp_開頭的存儲過程),是只讀數據庫。SQL Server系統對象在物理上保留在Resource數據庫中,但在邏輯上顯示在每個數據庫的sys架構中。
Resource數據庫與Master數據庫的區別在于:Resource數據庫存儲的是系統對象,而Master數據庫存儲的是系統級的信息。
Resource數據庫的物理文件名為mssqlsystemresource.mdf和mssqlsystemresource.ldf,它們默認存儲在安裝目錄中,如:C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\中,不能隨便移動。
任務3.1.2 認識數據庫對象
SQL Server數據庫中的數據在邏輯上被組織成一系列對象,當一個用戶連接到數據庫后,所看到的是邏輯對象,而不是物理的數據庫文件。數據庫對象就是存儲、管理和使用數據的不同結構形式,包括數據表、視圖、存儲過程、觸發器、類型、規則、默認值、索引等。
在圖3-1所示的窗口中,可看到SQL Server將服務器的數據庫組織成一個邏輯結構,在該結構中有若干的節點,每個節點又包括很多子節點,它們代表與該特定數據庫有關的不同類型的對象。

圖3-1 查看SQL Server的數據庫對象
任務3.1.3 認識數據庫標識符
1.了解標識符的含義
標識符指數據庫對象的名稱。在SQL Server中的所有內容都有標識標,包括服務器、數據庫和數據庫對象(如表、視圖、列、索引、觸發器、過程、約束及規則等)。表3-1中列出的是已經命名的部分數據庫對象。
表3-1 部分命名對象

2.掌握標識符的命名規則
SQL Server的標識符有兩類:常規標識符和分隔標識符。分隔標識符是用雙引號或方括號括起來的標識符。
在SQL Server 2019中,常規標識符的命名規則如下。
標識符長度不能超過128個字符,本地臨時表的名稱不能超過116個字符。
標識符的第一個字符必須是字母、下畫線、中文、@、#等符號;后續字符除前面這些外,還可以包括數字、$。
標識符中不允許嵌入空格或特殊字符。
標識符不能是Transact-SQL保留字。
說明:在SQL Server中,以“@”開頭的變量表示局部變量;以“@@”開頭的變量表示全局變量;以“#”開頭的表示局部臨時對象;以“##”開頭的表示全局臨時對象;所以,用戶在命名數據庫時不要以這些字符開頭,以免引起混亂。
任務3.1.4 認識數據庫文件
在SQL Server 2019系統中,一個數據庫在磁盤上可以保存為一個或多個文件,這些文件稱為數據庫文件。數據庫文件分成三類:主數據文件、次數據文件、日志文件。一個數據庫至少有兩個文件:一個數據文件和一個日志文件。當然,一個數據庫也可以有多個數據文件和多個日志文件。
1.了解數據庫文件的類型
(1)主數據文件。
每個數據庫有且僅有一個主數據文件。它用于存放數據和數據庫的啟動信息等,它的默認擴展名為.mdf。
(2)次數據文件。
如果數據庫中的數據量很大,除了將數據存儲在主數據文件中以外,還可以將一部分數據存儲在次數據文件中,這樣,有了次數據文件就可以將數據存儲在不同的磁盤中,便于操作管理。次數據文件是可選的,一個數據庫可以沒有次數據文件,也可以有多個次數據文件,它的默認擴展名為.ndf。
(3)日志文件。
SQL Server 2019系統具有事務功能,可以保證數據庫操作的一致性和完整性,它使用事務日志文件來記錄所有事務及每個事務對數據庫所做的操作。如果數據庫被損壞了,數據庫管理人員可以利用事務日志文件恢復數據庫。一個數據庫至少有一個事務日志文件,它的默認擴展名為.ldf。
說明:在SQL Server 2019中,默認的主數據文件的擴展名為.mdf、次數據文件的擴展名為.ndf、日志文件的擴展名為.ldf,但并不對擴展名強制要求。
2.理解邏輯和物理文件名
數據庫文件在操作系統中存儲的文件名稱為物理文件名。每個物理文件名都具有明確的存儲位置,其文件名稱會比較長,由于在SQL Server系統內部要訪問它們非常不方便,因此,每個數據庫又有邏輯文件名,每一個物理文件名都對應一個邏輯文件名,邏輯文件名簡單,引用起來非常方便。
任務3.1.5 認識數據庫文件組
為了便于分配和管理,可以將多個數據文件集合起來,組織成為一組,稱為文件組。每個文件組對應一個組名。可以將文件組中的文件存放在不同磁盤,以便提高數據庫的訪問性能。例如:在某個數據庫中,創建了三個次數據文件,分別存儲在三個不同的磁盤上,并將它們指定為同一個文件組f1,當在文件組f1上創建了一個表,并對表中數據進行訪問時,系統可以在不同的磁盤上實現并行訪問,這樣就能大大提高了系統的性能。在SQL Server 2019中,文件組有以下兩種類型。
1.主文件組
主數據文件所在的組稱為主文件組。在創建數據庫時,如果用戶沒有定義文件組,系統會自動建立主文件組。當數據文件沒有指定文件組時,默認都在主文件組中。
2.次文件組
用戶定義的文件組稱為次文件組。如果次文件組中的文件被填滿,那么只有該文件組中的用戶表會受到影響。
在創建表時,不能指定將表放在某個文件中,只能指定將表放在某個文件組中。因此,如果希望將某個表放在特定的文件中,必須通過創建文件組來實現。
數據庫文件和文件組必須遵循以下的規則。
1)一個文件或文件組只能被一個數據庫使用。
2)一個數據文件只能屬于一個文件組。
3)事務日志文件不能屬于文件組。

5 創建數據庫