【轉】視圖、索引、預存程序 、觸發器、遊標及事務

來源:互聯網
上載者:User

標籤:

原文地址:http://www.cnblogs.com/dong897812629/archive/2013/03/27/2981142.html

  視圖

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_view2as
select student_id as ‘學號‘ ,student_name as ‘姓名‘,sex as ‘性別‘from student where sex=1with 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_indexon 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 asupdate [dbo].[Table_ChoseTaocanType] set Taocan=inserted.Taocanfrom [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 --釋放遊標
  事務

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

【轉】視圖、索引、預存程序 、觸發器、遊標及事務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.