T-Sql(八)字段索引和数据加密
2014-03-10 16:18
106 查看
原文:T-Sql(八)字段索引和数据加密 t-sql的基本用法讲到第八章也差不多了,最后就讲下字段索引和数据加密,这两个内容对编程人员可能用的地方不是太多,还是那句老话“防患于未然”。
下面我就简单的说下字段索引和数据加密的内容,只是简单概述,对初学者起到抛砖引玉的作用,大牛们请飘过!!!
下面是百度百科对索引概述的优缺点;
优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:
1.索引需要占物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
这里我将下t-sql中索引的用法,示例代码:
创建唯一非聚集索引语法:
我们在创建表的时候也可以指定主键为唯一非聚集索引。
示例代码:
启动和禁用索引示例代码:
下面主要讲t-sql中的两种数据加密方式:证书加密(certificate),密钥加密(symmetric)。
大家只要熟悉t-sql的语法,知道怎么创建证书和密钥,怎么加密数据,怎么解密数据就行了。
1,证书加密
首先我们创建一个证书:
expiry_date表示的是证书的过期时间,超过这个时间,创建的证书也就失效了,这点注意下。
创建好证书,下一步就是使用证书加密数据了,我们先创建一张员工表,然后插入数据对工资字段进行机密。
示例代码:
使用证书解密数据示例代码:
2,密钥加密
密钥加密我们结合刚才的证书加密进行讲解。
首先创建一个证书和使用证书的密钥,示例代码:
使用密钥加密和使用证书加密不同的是,使用密钥加密的时候要打开密钥,然后加密数据,最后再关闭密钥。
示例代码:
t-sql中索引和数据加密就到着,这也可能是t-sql系列中最后一篇,以后有新内容的话会补充。
接下来打算再做一些有关编程的学习笔记整理,希望大家多多关注。。。
下面我就简单的说下字段索引和数据加密的内容,只是简单概述,对初学者起到抛砖引玉的作用,大牛们请飘过!!!
一,字段索引
索引是什么,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓名(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。下面是百度百科对索引概述的优缺点;
优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:
1.索引需要占物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
这里我将下t-sql中索引的用法,示例代码:
create index IX_ID_NAME--创建索引 on worker(w_id,w_name)--在ID NAME 两个字段上创建非聚集索引 drop index worker.IX_ID_NAME--删除索引 select * from sys.indexes where name = 'IX_ID_NAME'--查看索引
创建唯一非聚集索引语法:
create unique nonclustered index index_Production_Product --创建唯一的非聚集索引 on Production.Product(ProductID,Name) where Color is not null;
我们在创建表的时候也可以指定主键为唯一非聚集索引。
示例代码:
create table Index_Table_Student ( id int identity primary key nonclustered, --指定该主键为非聚集索引 name nvarchar(50) )
启动和禁用索引示例代码:
alter index all --禁用所有的索引 on Production.Product disable alter index all --启用所有的索引 on Production.Product rebuild
二,数据加密(certificate,symmetric)
编程的时候我们有时候会接触到数据加密,但那个数据加密是表现在程序上的,数据库的数据加密我们平时会用的很少,除非一些敏感,机密的数据要使用数据加密,还有一种情况是防止数据库数据泄露。下面主要讲t-sql中的两种数据加密方式:证书加密(certificate),密钥加密(symmetric)。
大家只要熟悉t-sql的语法,知道怎么创建证书和密钥,怎么加密数据,怎么解密数据就行了。
1,证书加密
首先我们创建一个证书:
create certificate WageCert --创建证书 with subject='To Encrypt Wage', --证书主题 expiry_date='2014/1/1'; --证书过期时间
expiry_date表示的是证书的过期时间,超过这个时间,创建的证书也就失效了,这点注意下。
创建好证书,下一步就是使用证书加密数据了,我们先创建一张员工表,然后插入数据对工资字段进行机密。
示例代码:
create table employee ( EmpID int primary key, Wage varbinary(500) not null --工资字段,加密后为二进制数据 ) insert into dbo.employee values(1,encryptbyCert(Cert_id('WageCert'),'5000')) --使用证书加密
使用证书解密数据示例代码:
select EmpID,CONVERT(varchar(30),DECRYPTBYcert(Cert_id('WageCert'),Wage)) as Wage from dbo.employee --使用证书解密数据
2,密钥加密
密钥加密我们结合刚才的证书加密进行讲解。
首先创建一个证书和使用证书的密钥,示例代码:
create certificate AdminPwdCert --创建证书 with subject='To Encrypt Admin Password', --证书主题 expiry_date='2014/1/1'; --证书过期时间 create symmetric key PwdKey --创建对称密钥 with algorithm=aes_256 --使用aes_256加密算法 encryption by certificate AdminPwdCert --使用证书加密
使用密钥加密和使用证书加密不同的是,使用密钥加密的时候要打开密钥,然后加密数据,最后再关闭密钥。
示例代码:
open symmetric key PwdKey --打开对称密钥 decryption by certificate AdminPwdCert insert into dbo.Wrokers(WrokerID,Name,Sex,Monery) --插入加密数据 values(103,'张三','男',encryptbykey(key_guid('PwdKey'),'1234')) select WrokerID,Name,Sex,convert(varchar(100),DECRYPTBYKEY(Monery)) as Monery --解密数据 from dbo.Wrokers close symmetric key PwdKey --关闭对称密钥
t-sql中索引和数据加密就到着,这也可能是t-sql系列中最后一篇,以后有新内容的话会补充。
接下来打算再做一些有关编程的学习笔记整理,希望大家多多关注。。。
相关文章推荐
- T-Sql(八)字段索引和数据加密
- oracle spatial 创建空间字段索引 创建字段索引 完善SQL语句实例
- 查看Oracle执行计划的几种方法 / oracle中DateTime类型的字段,建立索引后,查寻时索引如何生效?/ oracle 中sql语句怎么加多个强制索引
- oracle spatial 创建空间字段索引 创建字段索引 完善SQL语句实例二
- mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效
- Sql Server之旅——第七站 为什么都说状态少的字段不能建索引
- oracle spatial 创建空间字段索引 创建字段索引 完善SQL语句实例二
- sql order by与索引之间的关系(where条件出现字段才有效)
- 使用SQL语句查询某表中所有的主键、唯一索引以及这些主键、索引所包含的字段(转)
- SQLServer中常用的一些操作表,字段和索引的SQL语句
- Sql Server之旅——第七站 为什么都说状态少的字段不能建索引
- SqlBulkCopy excel 字段映射解决办法二 使用数字索引代替 字段名称 做映射 避免字段中有中文 大小写等情况
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
- SQLServer中常用的一些操作表,字段和索引的SQL语句
- oracle DDLsql语句字段效率&索引
- 避免在sql的where中对字段进行转换(函数转换/操作符转换/隐式转换)------索引会失效从而导致慢查询
- SQLServer中常用的一些操作表,字段和索引的SQL语句
- SQL 百万级别记录优化之 -- where 字段加索引
- 使用pl/sql 给一个oracle数据库中的表的字段建索引
- oralce 提高查询效率 给条件字段添加索引 sql