日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2200 0
原文: T-Sql(八)字段索引和數(shù)據(jù)加密

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

  下面我就簡單的說下字段索引和數(shù)據(jù)加密的內(nèi)容,只是簡單概述,對初學(xué)者起到拋磚引玉的作用,大牛們請飄過?。?!

一,字段索引

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

  下面是百度百科對索引概述的優(yōu)缺點;

  優(yōu)點:

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

  缺點:

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

創(chuàng)建唯一非聚集索引語法:

        
          1
        
        
          create
        
        
          unique
        
        
          nonclustered
        
        
          index
        
         index_Production_Product  
        
          --
        
        
          創(chuàng)建唯一的非聚集索引
        
        
          2
        
        
          on
        
        
           Production.Product(ProductID,Name)


        
        
          3
        
        
          where
        
         Color 
        
          is
        
        
          not
        
        
          null
        
        ;
      

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

  示例代碼:

        
          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
      

二,數(shù)據(jù)加密( certificate symmetric

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

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

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

1,證書加密

  首先我們創(chuàng)建一個證書:

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

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

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

  示例代碼:

        
          1
        
        
          create
        
        
          table
        
        
           employee


        
        
          2
        
        
          (


        
        
          3
        
             EmpID 
        
          int
        
        
          primary
        
        
          key
        
        
          ,


        
        
          4
        
             Wage 
        
          varbinary
        
        (
        
          500
        
        ) 
        
          not
        
        
          null
        
        
          --
        
        
          工資字段,加密后為二進制數(shù)據(jù)
        
        
          5
        
        
          )


        
        
          6
        
        
          insert
        
        
          into
        
        
           dbo.employee


        
        
          7
        
        
          values
        
        (
        
          1
        
        ,encryptbyCert(Cert_id(
        
          '
        
        
          WageCert
        
        
          '
        
        ),
        
          '
        
        
          5000
        
        
          '
        
        ))   
        
          --
        
        
          使用證書加密
        
      

?   使用證書解密數(shù)據(jù)示例代碼:

        
          1
        
        
          select
        
         EmpID,
        
          CONVERT
        
        (
        
          varchar
        
        (
        
          30
        
        ),DECRYPTBYcert(Cert_id(
        
          '
        
        
          WageCert
        
        
          '
        
        ),Wage)) 
        
          as
        
        
           Wage


        
        
          2
        
        
          from
        
         dbo.employee                                     
        
          --
        
        
          使用證書解密數(shù)據(jù)
        
      

2,密鑰加密

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

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

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

  使用密鑰加密和使用證書加密不同的是,使用密鑰加密的時候要打開密鑰,然后加密數(shù)據(jù),最后再關(guān)閉密鑰。

  示例代碼:

        
           1
        
        
          open
        
         symmetric 
        
          key
        
         PwdKey                     
        
          --
        
        
          打開對稱密鑰
        
        
           2
        
         decryption 
        
          by
        
        
           certificate AdminPwdCert


        
        
           3
        
        
           4
        
        
          insert
        
        
          into
        
         dbo.Wrokers(WrokerID,Name,Sex,Monery)    
        
          --
        
        
          插入加密數(shù)據(jù)
        
        
           5
        
        
          values
        
        (
        
          103
        
        ,
        
          '
        
        
          張三
        
        
          '
        
        ,
        
          '
        
        
        
          '
        
        ,encryptbykey(key_guid(
        
          '
        
        
          PwdKey
        
        
          '
        
        ),
        
          '
        
        
          1234
        
        
          '
        
        
          ))


        
        
           6
        
        
           7
        
        
          select
        
         WrokerID,Name,Sex,
        
          convert
        
        (
        
          varchar
        
        (
        
          100
        
        ),DECRYPTBYKEY(Monery)) 
        
          as
        
         Monery    
        
          --
        
        
          解密數(shù)據(jù)
        
        
           8
        
        
          from
        
        
           dbo.Wrokers


        
        
           9
        
        
          10
        
        
          close
        
         symmetric 
        
          key
        
         PwdKey                    
        
          --
        
        
          關(guān)閉對稱密鑰
        
      

  t-sql中索引和數(shù)據(jù)加密就到著,這也可能是t-sql系列中最后一篇,以后有新內(nèi)容的話會補充。

  接下來打算再做一些有關(guān)編程的學(xué)習(xí)筆記整理,希望大家多多關(guān)注。。。

?

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 象州县| 穆棱市| 姜堰市| 和硕县| 黑龙江省| 当雄县| 房山区| 龙里县| 龙川县| 山东省| 雅江县| 永修县| 木里| 辽宁省| 威信县| 左云县| 宝兴县| 巴彦淖尔市| 新丰县| 合水县| 阿拉善左旗| 百色市| 垫江县| 彭州市| 雷波县| 自治县| 宁晋县| 宝清县| 永年县| 民乐县| 英吉沙县| 昭苏县| 宜昌市| 原阳县| 大余县| 渭源县| 盱眙县| 长寿区| 城步| 云梦县| 陆良县|