t-sql的基本用法講到第八章也差不多了,最后就講下字段索引和數據加密,這兩個內容對編程人員可能用的地方不是太多,還是那句老話“防患于未然”。
下面我就簡單的說下字段索引和數據加密的內容,只是簡單概述,對初學者起到拋磚引玉的作用,大牛們請飄過?。。?
一,字段索引
索引是什么,使用索引可快速訪問 數據庫 表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓名(name)列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會幫助您更快地獲得該信息。
下面是百度百科對索引概述的優缺點;
優點:
缺點:
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
二,數據加密( certificate , symmetric )
編程的時候我們有時候會接觸到數據加密,但那個數據加密是表現在程序上的,數據庫的數據加密我們平時會用的很少,除非一些敏感,機密的數據要使用數據加密,還有一種情況是防止數據庫數據泄露。
下面主要講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系列中最后一篇,以后有新內容的話會補充。
接下來打算再做一些有關編程的學習筆記整理,希望大家多多關注。。。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

