作為數據庫開發人員,你負責創建和管理數據庫和表。當創建表的時候,維護數據的完整性對你是很重要的。為確保表中的數據是準確的,一致的和可靠的,SQL Server提供了各種你可以應用到表上以增強數據完整性的檢查。 SQL Server包含各種系統數據庫。本章介紹不
作為數據庫開發人員,你負責創建和管理數據庫和表。當創建表的時候,維護數據的完整性對你是很重要的。為確保表中的數據是準確的,一致的和可靠的,SQL Server提供了各種你可以應用到表上以增強數據完整性的檢查。 SQL Server包含各種系統數據庫。本章介紹不同類型的系統數據庫并且解釋如何管理用戶定義的數據庫和管理用戶自定義表。
? 管理數據庫 ? 管理表 ? SQL Server 2008中的數據類型
? 創建數據庫 ? 修改數據庫 ? 刪除數據庫 ? 創建表 ? 修改表 ? 刪除表 |
|
SQL Server 2008有4個系統數據庫,它們分別為Master、Model、Msdb、Tempdb。
(1)Master數據庫是SQL Server系統最重要的數據庫,它記錄了SQL Server系統的所有系統信息。這些系統信息包括所有的登錄信息、系統設置信息、SQL Server的初始化信息和其他系統數據庫及用戶數據庫的相關信息。因此,如果master 數據庫不可用,則 SQL Server 無法啟動。在 SQL Server 2008 中,系統對象不再存儲在 master 數據庫中,而是存儲在Resource 數據庫中。
(2)model 數據庫為在 SQL Server 實例上創建的所有數據庫的提供模板。因為每次啟動 SQLServer 時都會創建 tempdb,所以 model 數據庫必須始終存在于 SQL Server 系統中。當發出 CREATE DATABASE(創建數據庫)語句時,將通過復制 model 數據庫中的內容來創建數據庫的第一部分,然后用空頁填充新數據庫的剩余部分。 如果修改 model 數據庫,之后創建的所有數據庫都將繼承這些修改。例如,可以設置權限或數據庫選項或者添加對象,例如,表、函數或存儲過程。
(3)Msdb數據庫是代理服務數據庫,為其報警、任務調度和記錄操作員的操作提供存儲空間。
(4)Tempdb是一個臨時數據庫,它為所有的臨時表、臨時存儲過程及其他臨時操作提供存儲空間。Tempdb數據庫由整個系統的所有數據庫使用,不管用戶使用哪個數據庫,他們所建立的所有臨時表和存儲過程都存儲在tempdb上。SQL Server每次啟動時,tempdb數據庫被重新建立。當用戶與SQL Server斷開連接時,其臨時表和存儲過程自動被刪除。
|
數據庫的存儲結構分為邏輯存儲結構和物理存儲結構兩種。
1、數據庫的邏輯存儲結構指的是數據庫是由哪些性質的信息所組成,SQL Server的數據庫不僅僅只是數據的存儲,所有與數據處理操作相關的信息都存儲在數據庫中。實際上,SQL Server的數據庫是由諸如表、視圖、索引等各種不同的數據庫對象所組成,它們分別用來存儲特定信息并支持特定功能,構成數據庫的邏輯存儲結構。
2、數據庫的物理存儲結構則是討論數據庫文件是如何在磁盤上存儲的。數據庫在磁盤上是以文件為單位存儲的,由數據庫文件和事務日志文件組成,一個數據庫至少應該包含一個數據文件和一個事務日志文件,可以有多個第二數據文件。實際上這句話可以這樣理解:“數據庫中有且僅有一個主數據文件,至少有一個事物日志文件(也就是說可以有多個但必須有),可以有多個第二數據文件(可以沒有)”那么什么是“主數據庫文件”“第二數據文件”“事物日志文件呢”
|
數據文件又可以分成主數據文件和次數據文件兩種形式。
1. 主數據庫文件(Primary Database File)
主數據文件是數據庫的起點,每一個數據庫都有且僅有一個主數據文件。主數據文件名稱的默認后綴是mdf。次數據文件是可選的,它們可以存儲不在主數據文件中的全部數據和對象。
2. 第二數據庫文件(Secondary Database File)
第二數據庫文件又稱之為次數據庫文件,數據庫既可能沒有次數據文件,也可能有多個次數據文件。次數據文件名稱的默認后綴是ndf。
3. 事務日志文件
事務就是一個單元的工作,該單元的工作要么全部完成,要么全部不完成。Microsoft SQL Server系統具有事務功能,可以保證數據庫操作的一致性和完整性。
Microsoft SQLServer系統使用數據庫的事務日志來實現事務的功能。事務日志記錄了對數據庫的所有修改操作。日志記錄了每一個事務的開始、對數據的改變和取消修改等操作的足夠信息。隨著對數據庫的操作,日志是連續增加的。對于一些大型操作,如創建索引,日志只是記錄該操作的事實,而不是記錄所發生的數據。事務日志還記錄了數據頁的分配和釋放,以及每一個事務的提交和滾回。這樣就允許SQL Server系統要么恢復事務,要么取消事務。事務日志以操作系統文件的形式存在,在數據庫中被稱為日志文件。
每一個數據庫都至少有一個日志文件。日志文件名稱的后綴默認是ldf
4. 文件組
為了便于分配和管理,SQL Server允許將多個文件歸納為同一組,并賦予這個組一個名稱,這就是文件組。
文件組就是文件的邏輯集合。為了方便數據的管理和分配,文件組可以把一些指定的文件組合在一起。例如,在某個數據庫中,3個文件(data1.ndf、data2.ndf和data3.ndf)分別創建在3個不同的磁盤驅動器中,然后為它們指定一個文件組fgroup1。以后,所創建的表可以明確指定放在文件組fgroup1上。對該表中數據的查詢將分布在這3個磁盤上,因此,可以通過執行并行訪問而提高查詢性能。
在創建表時,不能指定將表放在某個文件上,只能指定將表放在某個文件組上。因此,如果希望將某個表放在特定的文件上,那么必須通過創建文件組來實現。
|
定義數據庫就是從無到有地創建數據庫和設置數據庫選項。
這個部分從三個方面講述定義數據庫,即創建數據庫、設置數據庫選項和查看數據庫信息。
創建數據庫就是確定數據庫名稱、文件名稱、數據文件大小、數據庫的字符集、是否自動增長以及如何自動增長等信息的過程。
在一個Microsoft SQL Server實例中,最多可以創建32767個數據庫。數據庫的名稱必須滿足系統的標識符規則。在命名數據庫時,一定要使數據庫名稱簡短和具有一定的含義。
數據庫創建之后,根據需要可以使用ALTER DATABASE語句對數據庫進行修改。修改操作可以包括更改數據庫名稱、擴大數據庫、收縮數據庫、修改數據庫文件、管理數據庫文件組、修改字符排列規則等。
? 修改數據庫名字
【例2-4】將LCBCom數據庫的名稱更改為LGCom
? 擴大數據庫
在Microsoft SQLServer系統中,如果數據庫的數據量不斷膨脹,可以根據需要擴大數據庫的尺寸。
有3種擴大數據庫的方式。第一種方式是設置數據庫為自動增長方式,可以在創建數據庫時設置。第二種方式是直接修改數據庫的數據文件或日志文件的大小,第三種方式是在數據庫中增加新的次要數據文件或日志文件。
【例2-5】通過擴大文件來擴大LGCom數據庫
? 修改數據庫文件
用戶可以根據需要使用ALTER DATABASE語句修改數據庫中指定的文件。這些修改操作包括增加數據文件、在指定的文件組中增加指定文件、增加日志文件、刪除指定的文件等。
增加數據文件、修改指定的文件等操作已經講過了,下面通過一些示例講述有關數據庫文件的其他操作。
【例2-6】在指定的文件組中增加文件
? 管理文件組
文件組是數據庫數據文件的邏輯組合,它可以對數據文件進行管理和分配,以便提高數據庫文件的并發使用效率。
Transact-SQL語言沒有提供獨立的管理文件組的命令,只能通過ALTER DATABASE語句提供了管理文件組的命令。
|
設計數據庫實際上就是設計數據庫中的表。在設計數據庫中的表時,目標是使用盡可能少的表數量、每個表中包含盡可能少的列數量來達到設計要求。合理的表結構,可以大大提高整個數據庫數據查詢效率。
? 創建表和修改表
本節主要圍繞創建和修改表展開討論。
內容包括創建表、增加和刪除列、修改列的屬性、設置標識符列、查看表的信息、刪除表等。
在Microsoft SQLServer 2008系統中,既可以使用CREATE TABLE語句創建表,也可以使用可視化的SQL Server Management Studio圖形工具。下面主要研究如何使用CREATE TABLE語句創建表。CREATE TABLE語句是一種經常使用的創建表的方法,也是一種最靈活、最強大的創建表的方式。
【例2-7】使用CREATE TABLE語句創建students表
【例2-8】使用CREATE TABLE語句創建orders表
表創建之后,用戶可以根據需要使用ALTER TABLE語句修改表的結構。在表中增加新列、刪除已有的列是常見的修改表結構的操作。
當用戶向表中添加一個新列時,Microsoft SQLServer為表中該列在已有數據的每一行中的相應位置插入一個數據值。
因此,當向表中增加一個新列時,最好為該新列定義一個默認約束,使該列有一個默認值。如果該新列沒有默認約束,并且表中已經有了其他數據,那么必須指定該新列允許空值,否則系統將產生一個錯誤信息。
【例2-10】使用ALTER TABLE語句增加表中的列
使用ALTER TABLE語句除了可以增加新列和刪除列之外,還可以對列的屬性進行更改。本節主要講述如何更改列的數據類型。使用ALTER TABLE語句更改列的數據類型的基本語法形式如下所示:
ALTER TABLEtable_name ALTER COLUMN column_name new_type_name
在上面的語法中,table_name參數指定將要更改的表名稱,ALTER COLUMN子句用于指定將要更改的列名稱和新的數據類型名稱,column_name參數指定列名稱,new_type_name參數指定新的數據類型名稱
【例2-12】使用ALTER TABLE語句更改列的數據類型
標識符列表示唯一地標識表中的每一行數據的符號。
在Microsoft SQL Server 2008系統中,可以創建兩種類型的標識符列,即IDENTITY列和ROWGUIDCOL列。
下面,詳細研究這兩種標識符列的創建和修改方式。
使用IDENTITY屬性的列是IDENTITY列,每一個表中最多只能有一個IDENTITY列。
定義IDENTITY屬性時需要指定兩個值:種子值和增量值。這樣,表中第一行的IDENTITY列的值是種子值,其他行的IDENTITY列的值是在前一行值的基礎上增加一個增量值得到的。
【例2-13】使用IDENTITY屬性
IDENTITY屬性的作用范圍是表。也就是說,在一個指定的表中,IDENTITY屬性列的值不會有重復值。但是,不同的表之間是有可能存在IDENTITY屬性列的值相同的現象。在執行合并多個表的復制操作中,這種現象是必須避免的。Microsoft SQL Server系統提供的用于標識符列的ROWGUIDCOL屬性可以解決這種問題。ROWGUIDCOL列是全局唯一標識符列。每一個表中最多可以創建一個ROWGUIDCOL列。
【例2-14】使用ROWGUIDCOL列
? 刪除表
刪除表就是將表中數據和表的結構從數據庫中永久性地去除。表被刪除之后,就不能再恢復該表的定義。
刪除表可以使用DROPTABLE語句來完成,該語句的語法形式如下:
DROPTABLE table_name
不能使用DROPTABLE語句刪除正在被其他表中的外鍵約束參考的表。當需要刪除這種有外鍵約束參考的表時,必須首先刪除外鍵約束,然后才能刪除該表。表的所有者可以刪除自己的表。當刪除表時,綁定在該表上的規則和默認將失掉綁定。屬于該表的約束或觸發器則自動地被刪除。如果重新創建表時,必須重新綁定相應的規則和默認、重新創建觸發器和增加必要的約束。
|
1、擁有什么權限的用戶能夠使用 DROPDATABASE 命令刪除數據庫
2、用什么樣的命令能夠修改數據庫的名字、大小。
3、用命令創建一個數據表
4、用命令修改一個數據表
5、怎樣刪除一個表
|
1、SQL SERVER中自帶的數據庫
Master數據庫記錄所有服務器特定的配置信息,包括認證用戶、數據庫、系統配置設置和遠程服務器
Tempdb 數據庫保存所有臨時表和存儲過程的臨時數據庫。
Model數據庫是作為新數據庫的模版或原型
Msdb數據庫支持SQL Server代理,SQLServer代理包括計劃SQL Server的周期性活動的特征
2、Create Database 語句被用于創建數據庫,他也包含確定數據庫的名稱、數據庫的大小和在數據中用于存儲數據的文件。
3、Drop Database語句被用于刪除數據庫。
4、Create Table語句被用于創建表。
5、Alter Tabel 語句用于修改表
6、Drop Table 語句用于刪除表聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com