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'),'')) --使用证书加密

  使用证书解密数据示例代码:

 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'),'')) select WrokerID,Name,Sex,convert(varchar(100),DECRYPTBYKEY(Monery)) as Monery --解密数据
from dbo.Wrokers close symmetric key PwdKey --关闭对称密钥

  t-sql中索引和数据加密就到着,这也可能是t-sql系列中最后一篇,以后有新内容的话会补充。

  接下来打算再做一些有关编程的学习笔记整理,希望大家多多关注。。。

  

T-Sql(八)字段索引和数据加密的更多相关文章

  1. SQL Server 数据库索引

    原文:SQL Server 数据库索引 一.什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用[索引] 索引允许SQL Server在表中查找数据而不需要扫描整个表. 1.1.索引的好处: ...

  2. SQL语句-创建索引

    语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100 GO USE 库名GO IF EXISTS (SELECT * FRO ...

  3. 公司内部培训SQL Server传统索引结构PPT分享

    公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...

  4. 理解SQL Server中索引的概念

    T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他   简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...

  5. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

  6. 理解SQL Server中索引的概念,原理

    转自:http://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html 简介 在SQL Server中,索引是一种增强式的存在,这意味着, ...

  7. SQL Server 查询优化 索引的结构与分类

    一.索引的结构 关系型数据库中以二维表来表达关系模型,表中的数据以页的形式存储在磁盘上,在SQL SERVER中,数据页是磁盘上8k的连续空间,那么,一个表的所有数据页在磁盘上是如何组织的呢?分两种情 ...

  8. T-SQL查询进阶--理解SQL Server中索引的概念,原理

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,sql server仍然可以实现应有的功能,但索引可以在大多数情况下提升查询性能,在OLAP(On line Trans ...

  9. 理解SQL Server中索引的概念,原理以及其他(转载)

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

随机推荐

  1. MongoDB 由于目标计算机积极拒绝,无法连接 2014-07-25T11:00:48.634+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:10061

    转载自:http://www.cnblogs.com/xiaoit/p/3867573.html 1:启动MongoDB 2014-07-25T11:00:48.634+0800 warning: F ...

  2. Python 爬虫6——Scrapy的安装和使用

    前面我们简述了使用Python自带的urllib和urllib2库完成的一下爬取网页数据的操作,但其实能完成的功能都很简单,假如要进行复制的数据匹配和高效的操作,可以引入第三方的框架,例如Scrapy ...

  3. linux一句话轻松提权

    linux命令:‍ [b@fuckks~]$ printf "install uprobes /bin/sh" > exploit.conf; MODPROBE_OPTI** ...

  4. 单页Web应用优缺点

    一.定义单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用.它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HT ...

  5. Jtable 表格按多列排序(支持中文汉字排序)

    这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...

  6. NGINX实现反向代理

    一.安装NGINX 略,请自行百度,GOOGEL 二.配置文件1.由上面的步骤,我们看到配置文件放置在/etc/nginx/目录下:主要配置文件:/etc/nginx/nginx.conf 扩展配置文 ...

  7. 完美解决 Linux 下 Sublime Text 中文输入

    首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sub ...

  8. Delphi自己隐藏自定义弹出列表

    先上代码 procedure TForm3.Timer1Timer(Sender: TObject); var Point: TPoint; Name: array[0..255] of Char; ...

  9. (翻译)《Hands-on Node.js》—— Introduction

    今天开始会和大熊君{{bb}}一起着手翻译node的系列外文书籍,大熊负责翻译<Node.js IN ACTION>一书,而我暂时负责翻译这本<Hands-on Node.js> ...

  10. 玩转JavaScript OOP[1]——复杂类型

    概述 在JavaScript中,我们可以使用函数.数组.对象,以及日期.正则等一些内置类型的实例,它们都是复杂类型的表现.从本质上讲,这些复杂类型都是Object类型.本篇将主要介绍三种Object类 ...