數據庫知識小節

1 常見概念──約束、主鍵、外鍵、視圖

約束是數據庫服務器強制用戶必須遵從的業務邏輯。它們限制用戶可能輸入指定列的值,從而強制引用完整性。在數據庫設計器中創建約束時,約束遵從用於創建和更改表的 ANSI 標準。

主鍵:表中經常有一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱爲表的主鍵,通過它可強制表的實體完整性。 當創建或更改表時可通過定義 PRIMARY KEY 約束來創建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由於 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。

外鍵用於兩個表的聯繫。兩個表必須具有相同類型的屬性,在該屬性上有相同的值。該屬性應爲其中一個表的主 鍵,在另外一個表設置爲外鍵。約束內表的數據的更新,從定義外鍵時可以發現 外鍵是和主鍵表聯繫,數據類型要統一,長度(存儲大小)要統一。這樣在更新數據的時候會保持一致性。

索引:在數據庫表中,可以使用索引加快訪問數據的速度。通過在要執行搜索的表中選擇一列或多列來創建索引。索引可以看成是一個表按指定索引列的排序後的影射表
 

視圖: 所謂視圖(View)其實是執行查詢語句後得到的結果,但這個查詢結果可以仿真成數據表來使用,所以有人也稱它爲“虛擬數據表”,視圖在操作上和數據表沒有什麼區別,但兩者的差異是其本質是不同的:數據表是實際存儲記錄的地方,然而視圖並不保存任何記錄,它存儲的實際上是查詢語句,其所呈現出來的記錄實際來自於數據表,可以爲多張數據表,大家由此可以預見到視圖應用的彈性!我們可以依據各種查詢需要創建不同視圖,但不會因此而增加數據庫的數據量。其優點:1.增強可讀性 2.數據安全及保密:針對不同用戶,可以創建不同視圖,限制其所能瀏覽和編輯的數據內容。3.降低查詢複雜度 4.方便維護。

2聚簇索引和非聚簇索引

索引有兩種類型:聚簇索引和非聚簇索引。在聚簇索引中,索引樹的葉級頁包含實際的數據:記錄的索引順序與物理順序相同。在非聚簇索引中,葉級頁指向表中的記錄:記錄的物理順序與邏輯順序沒有必然的聯繫
聚簇索引非常象目錄表,目錄表的順序與實際的頁碼順序是一致的。非聚簇索引則更象書的標準索引表,索引表中的順序通常與實際的頁碼順序是不一致的。一本書也許有多個索引。例如,它也許同時有主題索引和作者索引。同樣,一個表可以有多個非聚簇索引
通常情況下,你使用的是聚簇索引,但是你應該對兩種類型索引的優缺點都有所理解。
每個表只能有一個聚簇索引,因爲一個表中的記錄只能以一種物理順序存放。通常你要對一個表按照標識字段建立聚簇索引。但是,你也可以對其它類型的字段建立聚簇索引,如字符型,數值型和日期時間型字段。
可以對一個表同時建立聚簇索引和非聚簇索引
 
非聚簇索引需要大量的硬盤空間和內存。另外,雖然非聚簇索引可以提高從表中取數據的速度,它也會降低向表中插入和更新數據的速度。每當你改變了 一個建立了非聚簇索引的表中的數據時,必須同時更新索引。因此你對一個表建立非聚簇索引時要慎重考慮。如果你預計一個表需要頻繁地更新數據,那麼不要對它 建立太多非聚簇索引。另外,如果硬盤和內存空間有限,也應該限制使用非聚簇索引的數量。
 
question——
SQL中建立一個索引,我怎麼用它,或者我怎麼知道它是怎樣被人使用的。
 
answer——
建索引主要是用於提高檢索數據的速度.
如果你有一個表(表名假設叫Table1)有一個字段名稱是Name,記錄有100000行.
有如下的查詢語句:select * from Table1 where Name='zhangshan'
在沒有針對Name創建索引的時候,這個查詢會相當慢,到少比創建了索引後慢好幾倍.這就是索引的好處之一.
你並不知道你用了它,只能從查詢速度上感覺出來.
 
 
對一個表建立唯一索引,可以使用關鍵字UNIQUE。對聚簇索引和非聚簇索引都可以使用這個關鍵字。這裏有一個例子:

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

這是你將經常使用的索引建立語句。無論何時,只要可以,你應該儘量對一個對一個表建立唯一聚簇索引來增強查詢操作。
最後,要建立一個對多個字段的索引──複合索引──在索引建立語句中同時包含多個字段名。下面的例子對firstname和lastname兩個字段建立索引:

CREATE INDEX name_index ON username(firstname,lastname)

這個例子對兩個字段建立了單個索引。在一個複合索引中,你最多可以對16個字段進行索引。

用事務管理器建立索引
用事務管理器建立索引比用SQL語句容易的多。使用事務管理器,你可以看到已經建立的索引的列表,並可以通過圖形界面選擇索引選項。
使用事務管理器你可以用兩種方式建立索引:使用Manage Tables窗口或使用Manage Indexes窗口。
   要用Manage Tables 窗口建立一個新索引,單擊按鈕Advanced Options(它看起來象一個前面有一加號的表)。這樣就打開了Advanced Options對話框。這個對話框有一部分標名爲Primary Key。

注意:
唯一索引是指該字段不能有重複的值,而不是隻能建立這一個索引。

3 存儲過程 觸發器
存儲過程是保存起來的可以接受和返回用戶提供的參數的 Transact-SQL 語句的集合。
可以創建一個過程供永久使用,或在一個會話中臨時使用(局部臨時過程),或在所有會話中臨時使用
全局臨時過程),也可以創建在 Microsoft SQL Server 啓動時自動運行的存儲過程。

觸發器是一種特殊類型的存儲過程,它不同於我們前面介紹過的存儲過程。觸發器主要是通過事件進行觸發而被執 行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如UPDATE、 INSERT、 DELETE 這些操作時,SQL Server 就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章