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

視圖、索引、存儲過程 、觸發器、游標及事務

系統 1757 0

? 視圖

1. 視圖不占物理存儲空間,它只是一種邏輯對象。可將其看成一個"虛表 "

? 視圖是一個由select 語句指定,用以檢索數據庫表中某些行或列數據的語句存儲定義

? 注:創建視圖語句中,不能包括order by、compute或者compute by 子句,也不能出現into關鍵字

2.創建水平視圖

? 視圖的常見用法是限制用戶只能夠存取表中的某些數據行,用這種方法產生的視圖稱為水平視圖,即表中行的子集

      
        create
      
      
        view
      
      
         student_view1
        
as
select
* from student

where (class_id = ' 0903 ' )

3.創建投影視圖

? 如果限制用戶只能存取表中的部分列的數據,那么,使用這種方法創建的視圖就稱為投影視圖,即表中列的子集

      
        create
      
      
        view
      
      
         student_view2


      
      
        as
        
select
student_id as ' 學號 ' ,student_name as ' 姓名 ' ,sex as ' 性別 ' from student where sex = 1 with check option /* 強制視圖上執行的所有修改語句必須符合由select 語句設置的準則 */

4.創建聯合視圖

? 用戶可以生成從多個表中提取數據的聯合視圖,把查詢結果表示為一個單獨的"可見表"

? 索引

5.索引是數據庫的對象之一, 索引是為了加速對表中數據行的檢索而創建的一種分散的一種存儲結構。

? 索引是針對一個表而建立的,它是由數據頁面以外的索引頁面組成的 ?

6.索引的分類

? 聚簇索引

??數據表的物理順序和索引表的順序相同,它根據表中的一列或多列值的組合排列記錄

      
        create
      
      
        unique
      
      
        clustered
      
      
        index
      
       book_id_index
      
        --
      
      
        惟一性聚簇索引
      
      
        on
      
       book(book_id 
      
        asc
      
      
        )




      
      
        with
      
      
        fillfactor
      
      
        =
      
      
        50 /*
        
          填充因子50%*/
        
      
    

??非聚簇索引

      
        create
      
      
        nonclustered
      
      
        index
      
      
         student_course_index




      
      
        on
      
       student_course(student_id 
      
        asc
      
      ,course_id 
      
        asc
      
      
        )




      
      
        with
      
      
        fillfactor
      
      
        =
      
      
        50
      
    

? 存儲過程

? 存儲過程是一系列預先編輯好的、能實現特定數據操作功能的 SQL代碼集 。它與特定的數據庫相關聯,存儲在SQL Server 服務器上

? 存儲過程的好處:

?? (1)重復使用。存儲過程可以重復使用,從而減少數據庫開發人員的工作量

?? (2)提高性能。存儲過程在創建的時候就進行了編譯,將來使用的時候就不用再編譯。一般的SQL語句使用一次就編譯一次,所以使用存儲過程提高了效率

?? (3)減少網絡流量。存儲過程位于服務器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此減低了網絡傳輸的運輸量

?? (4)安全性。參數化的存儲過程可以防止SQL注入攻擊,而且可以將Grant、Deny、以及Revoke權限應用于存儲過程

? 定義一個存儲過程:

?

      
        create
      
      
        proc
      
      
         spAddStudents

  
      
      
        @name
      
      
        nvarchar
      
      (
      
        50
      
      )
      
        =
      
      
        null
      
      
        as
      
      
        begin
      
      
        transaction
      
      
        --
      
      
        事務
      
      
        insert
      
      
        into
      
      
        [
      
      
        StudentInfo
      
      
        ]
      
      .
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        Students
      
      
        ]
      
      
        

  (Name)

  
      
      
        values
      
      
        

  (
      
      
        @name
      
      
        )



  
      
      
        if
      
      
        @@ERROR
      
      
        <>
      
      
        0
      
      
        begin
      
      
        rollback
      
      
        tran
      
      
        return
      
      
        end
      
      
        commit
      
      
        transaction
      
      
        --
      
      
        提交事務
      
    

?創建一個實現加法計算并將運算結果作為輸出參數的存儲過程

      
        create
      
      
        proc
      
      
         spAdd

  
      
      
        @value1
      
      
        int
      
      
        ,

  
      
      
        @value2
      
      
        int
      
      
        ,

  
      
      
        @result
      
      
        int
      
      
         output

  
      
      
        as
      
      
        select
      
      
        @result
      
      
        =
      
      
        @value1
      
      
        +
      
      
        @value2
      
      
        go
      
    

?執行spAdd存儲過程

      
          declare
      
      
        @value1
      
      
        int
      
      
        declare
      
      
        @value2
      
      
        int
      
      
        declare
      
      
        @result
      
      
        int
      
      
        set
      
      
        @value1
      
      
        =
      
      
        1
      
      
        set
      
      
        @value2
      
      
        =
      
      
        1
      
      
        exec
      
       spAdd 
      
        @value1
      
      ,
      
        @value2
      
      ,
      
        @result
      
      
         output

  
      
      
        print
      
      
        convert
      
      (
      
        char
      
      (
      
        5
      
      ),
      
        @value1
      
      ) 
      
        +
      
      
        '
      
      
        +
      
      
        '
      
      
        +
      
      
        convert
      
      (
      
        char
      
      (
      
        5
      
      ),
      
        @value2
      
      ) 
      
        +
      
      
        '
      
      
        =
      
      
        '
      
      
        +
      
      
        convert
      
      (
      
        char
      
      (
      
        5
      
      ),
      
        @result
      
      )
    

? 觸發器

? 觸發器是一種實施復雜數據完整性的特殊存儲過程,在對表或視圖執行update、insert或delete語句時自動觸發執行,以防止對數據進行不正確、未授權或不一致的參數

      
        /*
      
      
        創建update觸發器
      
      
        */
      
      
        create
      
      
        trigger
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        TaocanType_update
      
      
        ]
      
      
        on
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        Table_TaocanType
      
      
        ]
      
      
        for
      
      
        update
      
      
        as
      
      
        update
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        Table_ChoseTaocanType
      
      
        ]
      
      
        set
      
       Taocan
      
        =
      
      
        inserted.Taocan


      
      
        from
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        Table_ChoseTaocanType
      
      
        ]
      
       ,inserted 
      
        where
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        Table_ChoseTaocanType
      
      
        ]
      
      .TaocanId
      
        =
      
      inserted.TaocanId
    

? 觸發器能夠維持兩個表間的參照完整性,就像外鍵一樣。外鍵執行這個任務的效率更高,因為它們在數據改變之前被測試,而不像觸發器在數據改變后才觸發

??游標

? 游標是一種處理數據的方法,為了查看或者處理結果集中的數據,游標提供了在結果集中向前或者向后瀏覽數據的能力

? (1)創建游標

? (2)打開游標

? (3)讀取數據

? (4)數據操作

? (5)關閉和釋放游標

      
        declare
      
      
        @taocan
      
      
        nvarchar
      
      (
      
        50
      
      ),
      
        @youhui
      
      
        nvarchar
      
      (
      
        50
      
      
        )
        
declare taocan_cursor scroll cursor -- 聲明游標 for select Taocan,youhui from [ 189Shop ] . [ dbo ] . [ Table_TaocanType ] for read only open taocan_cursor -- -打開游標 fetch from taocan_cursor into @taocan , @youhui -- 從游標中提取行 while @@FETCH_STATUS = 0 -- 表示成功完成FETCH 語句 begin print ' 套餐: ' + @taocan + ' ,優惠: ' + @youhui fetch from taocan_cursor into @taocan , @youhui end close taocan_cursor -- 關閉游標 deallocate taocan_cursor -- 釋放游標

? ?事務

??所謂事務,是指一個操作序列,這些操作序列要么都被執行,要么都不被執行,它是一個不可分割的工作單元

?

視圖、索引、存儲過程 、觸發器、游標及事務


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 操久在线 | 精品国产免费第一区二区三区日韩 | 欧美一级毛片免费高清的 | 亚洲欧美国产一区二区三区 | 日本高清视频一区二区 | 6080欧美一区二区三区四区 | 久久99亚洲精品久久 | 久久精品高清 | 久草在线新免费 | 91社区视频 | 亚洲欧美综合在线观看 | 久久这里有精品 | 午夜国产在线观看 | 亚洲色婷婷综合开心网 | 精品免费在线视频 | 久久频这里精品99香蕉久网址 | 两性视频久久 | 天堂国产 | 人禽毛片| 最新国产三级久久 | 日本一级毛片视频无遮挡免费 | 日韩在线视频网址 | 99精品一区二区三区 | 青青久久精品 | 99久久www免费 | 亚洲精品中文字幕区 | 久久xxx| 四虎免费永久在线播放 | 欧美成人aⅴ | 97影院午夜午夜伦不卡 | 99热这里精品 | 欧美亚洲国产色综合 | 黑人巨大精品战中国美女 | 青草资源站| 在线亚洲欧美性天天影院 | 欧美成人高清视频 | 国产视频一区在线播放 | 精品国产午夜久久久久九九 | 91宅男 | 亚洲综合国产一区在线 | 四虎最新视频 |