黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

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

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

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

一,字段索引

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

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

  優(yōu)點(diǎn):

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

  缺點(diǎn):

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

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

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


        
        
          3
        
        
          where
        
         Color 
        
          is
        
        
          not
        
        
          null
        
        ;
      

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

  示例代碼:

        
          1
        
        
          create
        
        
          table
        
        
           Index_Table_Student 


        
        
          2
        
        
          (


        
        
          3
        
             id 
        
          int
        
        
          identity
        
        
          primary
        
        
          key
        
        
          nonclustered
        
        ,    
        
          --
        
        
          指定該主鍵為非聚集索引
        
        
          4
        
             name 
        
          nvarchar
        
        (
        
          50
        
        
          )


        
        
          5
        
         )
      
?   啟動(dòng)和禁用索引示例代碼:
        
          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í)候我們有時(shí)候會(huì)接觸到數(shù)據(jù)加密,但那個(gè)數(shù)據(jù)加密是表現(xiàn)在程序上的,數(shù)據(jù)庫(kù)的數(shù)據(jù)加密我們平時(shí)會(huì)用的很少,除非一些敏感,機(jī)密的數(shù)據(jù)要使用數(shù)據(jù)加密,還有一種情況是防止數(shù)據(jù)庫(kù)數(shù)據(jù)泄露。

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

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

1,證書(shū)加密

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

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

expiry_date表示的是證書(shū)的過(guò)期時(shí)間,超過(guò)這個(gè)時(shí)間,創(chuàng)建的證書(shū)也就失效了,這點(diǎn)注意下。

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

  示例代碼:

        
          1
        
        
          create
        
        
          table
        
        
           employee


        
        
          2
        
        
          (


        
        
          3
        
             EmpID 
        
          int
        
        
          primary
        
        
          key
        
        
          ,


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


        
        
          6
        
        
          insert
        
        
          into
        
        
           dbo.employee


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

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

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


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

2,密鑰加密

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

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

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

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

  示例代碼:

        
           1
        
        
          open
        
         symmetric 
        
          key
        
         PwdKey                     
        
          --
        
        
          打開(kāi)對(duì)稱(chēng)密鑰
        
        
           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)閉對(duì)稱(chēng)密鑰
        
      

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

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

?

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論