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系列中最后一篇,以后有新内容的话会补充。
接下来打算再做一些有关编程的学习笔记整理,希望大家多多关注。。。

