亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1954 0
原文: T-Sql(八)字段索引和數據加密

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

  下面我就簡單的說下字段索引和數據加密的內容,只是簡單概述,對初學者起到拋磚引玉的作用,大牛們請飄過!!!

一,字段索引

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

  下面是百度百科對索引概述的優缺點;

  優點:

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

  缺點:

  1.索引需要占物理空間。
  2.當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度。
  這里我將下t-sql中索引的用法,示例代碼:
        
          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系列中最后一篇,以后有新內容的話會補充。

  接下來打算再做一些有關編程的學習筆記整理,希望大家多多關注。。。

?

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲日本在线观看视频 | 91免费精品国自产拍在线不卡 | 真实国语对白视频播放 | 亚欧乱色视频大全 | 91精品国产综合久久精品 | 久草在线在线视频 | 2018久久久国产精品 | 欧美成人aⅴ | 能在线观看的一区二区三区 | 国产精品视屏 | 久久综合久久久 | 国产精品欧美日韩精品 | 99涩涩| 久久久久久久91精品免费观看 | 99热久久这里只有精品 | 女女女女女女bbbbbb级毛片 | 99视频在线观看视频一区 | 国产精品久久一区一区 | 牛牛影院成人网 | 特级毛片在线大全免费播放 | 免费高清成人啪啪网站 | 无毒不卡在线观看 | 成人在线精品视频 | 一级毛片在线看在线播放 | 国产日产久久 | 人成午夜欧美大片免费视频 | 精品亚洲欧美高清不卡高清 | 精品久久久久久国产91 | 高清人人天天夜夜曰狠狠狠狠 | 国产69精品久久久久999小说 | 日韩欧美中文字幕出 | 欧美劲爆第一页 | 亚洲天堂久久精品成人 | 手机看高清特黄a大片 | 日韩精品成人 | 午夜不卡影院 | 奇米第四色视频 | 亚洲欧美高清 | www.国产福利视频.com | 全黄一级裸片视频免费 | 国产成人91一区二区三区 |