T-Sql(八)字段索引和數據加密


  t-sql的基本用法講到第八章也差不多了,最后就講下字段索引和數據加密,這兩個內容對編程人員可能用的地方不是太多,還是那句老話“防患於未然”。

  下面我就簡單的說下字段索引和數據加密的內容,只是簡單概述,對初學者起到拋磚引玉的作用,大牛們請飄過!!!

一,字段索引

  索引是什么,使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓名(name)列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會幫助您更快地獲得該信息。

  下面是百度百科對索引概述的優缺點;

  優點:

  1.大大加快數據的檢索速度;
  2.創建唯一性索引,保證數據庫表中每一行數據的唯一性;
  3.加速表和表之間的連接;
  4.在使用分組和排序子句進行數據檢索時,可以顯著減少查詢中分組和排序的時間。

  缺點:

  1.索引需要占物理空間。
  2.當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度。
  
  這里我將下t-sql中索引的用法,示例代碼:
1 create index IX_ID_NAME--創建索引
2 on worker(w_id,w_name)--在ID NAME 兩個字段上創建非聚集索引
3 
4 drop index worker.IX_ID_NAME--刪除索引
5 select * from sys.indexes where name = 'IX_ID_NAME'--查看索引

  創建唯一非聚集索引語法:

1 create unique nonclustered index index_Production_Product  --創建唯一的非聚集索引
2 on Production.Product(ProductID,Name)
3 where Color is not null;

   我們在創建表的時候也可以指定主鍵為唯一非聚集索引。

  示例代碼:

1 create table Index_Table_Student 
2 (
3     id int identity primary key nonclustered,    --指定該主鍵為非聚集索引
4     name nvarchar(50)
5 )
    啟動和禁用索引示例代碼:
1 alter index all      --禁用所有的索引
2 on Production.Product
3 disable
4 
5 alter index all      --啟用所有的索引
6 on Production.Product
7 rebuild

二,數據加密(certificatesymmetric

  編程的時候我們有時候會接觸到數據加密,但那個數據加密是表現在程序上的,數據庫的數據加密我們平時會用的很少,除非一些敏感,機密的數據要使用數據加密,還有一種情況是防止數據庫數據泄露。

  下面主要講t-sql中的兩種數據加密方式:證書加密(certificate),密鑰加密(symmetric)。

  大家只要熟悉t-sql的語法,知道怎么創建證書和密鑰,怎么加密數據,怎么解密數據就行了。

1,證書加密

  首先我們創建一個證書:

1 create certificate WageCert             --創建證書
2 with subject='To Encrypt Wage',        --證書主題
3 expiry_date='2014/1/1';                 --證書過期時間

  expiry_date表示的是證書的過期時間,超過這個時間,創建的證書也就失效了,這點注意下。

  創建好證書,下一步就是使用證書加密數據了,我們先創建一張員工表,然后插入數據對工資字段進行機密。

  示例代碼:

1 create table employee
2 (
3     EmpID int primary key,
4     Wage varbinary(500) not null        --工資字段,加密后為二進制數據
5 )
6 insert into dbo.employee
7 values(1,encryptbyCert(Cert_id('WageCert'),'5000'))   --使用證書加密

   使用證書解密數據示例代碼:

1 select EmpID,CONVERT(varchar(30),DECRYPTBYcert(Cert_id('WageCert'),Wage)) as Wage
2 from dbo.employee                                     --使用證書解密數據

2,密鑰加密

  密鑰加密我們結合剛才的證書加密進行講解。

  首先創建一個證書和使用證書的密鑰,示例代碼:

1 create certificate AdminPwdCert               --創建證書
2 with subject='To Encrypt Admin Password',     --證書主題
3 expiry_date='2014/1/1';                       --證書過期時間
4 
5 create symmetric key PwdKey                   --創建對稱密鑰
6 with algorithm=aes_256                          --使用aes_256加密算法
7 encryption by certificate AdminPwdCert        --使用證書加密

  使用密鑰加密和使用證書加密不同的是,使用密鑰加密的時候要打開密鑰,然后加密數據,最后再關閉密鑰。

  示例代碼:

 1 open symmetric key PwdKey                     --打開對稱密鑰
 2 decryption by certificate AdminPwdCert
 3 
 4 insert into dbo.Wrokers(WrokerID,Name,Sex,Monery)    --插入加密數據
 5 values(103,'張三','',encryptbykey(key_guid('PwdKey'),'1234'))
 6 
 7 select WrokerID,Name,Sex,convert(varchar(100),DECRYPTBYKEY(Monery)) as Monery    --解密數據
 8 from dbo.Wrokers
 9 
10 close symmetric key PwdKey                    --關閉對稱密鑰

  t-sql中索引和數據加密就到着,這也可能是t-sql系列中最后一篇,以后有新內容的話會補充。

  接下來打算再做一些有關編程的學習筆記整理,希望大家多多關注。。。

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM