視圖可以被看成是虛擬表或存儲查詢。可通過視圖訪問的數據不作為獨特的對象存儲在資料庫內。資料庫內存儲的是 SELECT 語句。SELECT 語句的結果集構成視圖所返回的虛擬表。用戶可以用引用表時所使用的方法,在 Transact-sql 語句中通過引用視圖名稱來使用虛擬表。使用視圖可以實現下列任一或所有功能:
將用戶限定在表中的特定行上。
例如,只允許雇員看見工作跟蹤表內記錄其工作的行。
將用戶限定在特定列上。
例如,對於那些不負責處理工資單的雇員,只允許他們看見雇員表中的姓名列、辦公室列、工作電話列和部門列,而不能看見任何包含工資信息或個人信息的列。
將多個表中的列聯接起來,使它們看起來象一個表。
聚合信息而非提供詳細信息。
例如,顯示一個列的和,或列的最大值和最小值。
------------------
資料庫中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查找所需信息,無須閱讀整本書。在資料庫中,索引使資料庫程序無須對整個表進行掃描,就可以在其中找到所需數據。
------------------
存儲過程可以使得對資料庫的管理、以及顯示關於資料庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。存儲過程存儲在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。
存儲過程可包含程序流、邏輯以及對資料庫的查詢。它們可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
可以出於任何使用 SQL 語句的目的來使用存儲過程,它具有以下優點:
可以在單個存儲過程中執行一系列 SQL 語句。
可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快。
② SQL SERVER 中存儲過程、視圖、索引是什麼概念
儲存過程:簡單說就是SQL代碼的集合,和C語言里的函數類似,
儲存過程把SQL語句寫在一起,
調用儲存過程時
SQLserver執行 這些語句。
它有參數,有返回值。
優點:
1.模塊化設計
像其他程序語言的函數一樣,單獨出來,可以調用它n次,
並且可以獨立於源代碼,單獨修改儲存過程。
2.更快執行如果執行大量SQL代碼或重復執行,儲存過程比SQL批代碼執行要快。
3.減少網路流量
一條SQL語句就可以執行上千條SQL代碼,肯定視圖:顧名思意,可以看的圖形。
用圖形來表示資料庫中表,或表之間的關系
是虛擬表,是來自其一個表,或多個表的行或列 的子集。
臨時表是暫時存在的,而視圖是以文件存儲的,只要不人為刪除,
是永久存儲的,所以視圖不是臨時表。
索引:舉一個列子,你在學校要找一年級三班教室,但是你不知具體位置,
你只能按照順序,一間教室一間教室的找,
但如果,你看學校地圖(假設的),上面寫有一年級三班教室在XX單元XX樓左邊XX間,那你就可以直接到教室去了,
這里地圖就相當於索引,指明具體地址,使查詢更加的快捷。
SQL里就是這樣,要查詢某個數據,根據索引查找,比一個一個挨著查,更加的快捷。
③ SQL資料庫中,存儲過程,觸發器,視圖的區別,一般都用它們實現什麼需求呢請分別談一下謝謝~~~
視圖:
提高數吵螞配據安全性,可以不讓用戶看到表中的某升指個欄位。比如password,你只給他們執行視圖的權物首限,不給執行表的許可權,他們就無法查看全部數據。
④ 資料庫中創建視圖和索引還有存儲過程起什麼作用
視圖就是為了方便查看數據,比如說一個表有幾千個欄位,但常用的就那麼十來個,我就可以把那十來個歸集未一個視圖,省得查詢表要找來找去的麻煩,再比如說學生表和教師表,我要知道哪個學生是由那個教師教的,就要兩個表關鄭前聯起來看,為了方便我可以直接把他們做成一張視圖,查詢視圖就都出來了。索引就相當於給數據打個編號,用來提高效率的賀敬,當然要用對才有效果。存儲過程就是用來處理數據,事物等的一個邏輯集合,比如一個存儲過程接收到一個參數用戶出生時間20020601,但在表中要存注冊時間,用戶年齡,用戶生日,就可以在存儲過程中將注冊時間:當前時間,用戶年齡禪叢慎 :當前時間-出生時間,用戶生日:截取月份和號數這些數據處理後再存入到表
⑤ 在資料庫中什麼是儲存過程,視圖以及觸發器
存儲過程就好象一個批處理文件一樣,你可以在裡面執行很多的SQL,來得到你最好需要的結果 ,或者說類似於陵穗族一個函數,調用存儲過程後,T-SQL一次執行很多命令,最終給你個結果
視圖是虛擬表,比如要查詢的東西在兩個表裡,那麼可以把兩個表連接成一個視圖,這樣就可以查詢並顯示兩個表裡的內容了,尺弊具體還分左右外連接
觸發器是個特殊的存儲過程,它的執行不是人工操作的,而是由某事件的發生而引發的
你明白了族虧吧
插紅旗 吼吼
⑥ 資料庫裡面的表、觸發器、存儲過程、視圖這些都是什麼東西
表:裡面存儲的都是真實的數據
視圖:就是一個表或者多個表的一個映射,一般只做查詢使用。比如你想要的數據存在兩個表裡,但你查詢時不想每次都寫關聯,那麼你創建一個視圖,以後只查詢這個視圖就可以(查詢時視圖與查詢表語法一樣)。
觸發器:做資料庫操作的時候,還希望相關的數據同步操作就用觸發器,比如想要向A表插入數據的時候,同時向B表插入,這樣寫過觸發器每次向A表插入數據之後就會自動向B表插入。
存儲過程:這個一般是沉澱數據使用的,當你需要查詢的數據不能用一個sql語句查出或者sql語句查詢速度特別慢,想要提高效率,就會用到存儲過程,先把需要的數據沉澱到結果表裡然後直接查詢結果表就能提高效率。
⑦ 資料庫基礎詳解:存儲過程、視圖、游標、SQL語句優化以及索引
寫在文章前:本系列文章用於博主自己歸納復習一些基礎知識,同時也分享給可能需要的人,因為水平有限,肯定存在諸多不足以及技術性錯誤,請大佬們及時指正。
存儲過程 是事先經過編譯並存儲在資料庫中的一段SQL語句的集合。想要實現相應的功能時,只需要調用這個存儲過程就行了(類似於函數,輸入具有輸出參數)。
優點 :
缺點 :
Delete用來刪除表的全部或者部分數據,執行delete之後,用戶需要提交之後才會執行,會觸發表上的DELETE觸發器(包含一個OLD的虛擬表,可以只讀訪問被刪除的數據),DELETE之後表結構還在,刪除很慢,一行一行地刪,因為會記錄日誌,可以利用日誌還原數據;
Truncate刪除表中的所有數據,這個操作不能回滾,也不會觸發這個表上的觸發器。操作比DELETE快很多(直接把表drop掉,再創建一個新表,刪除的數據不能找回)。如果表中有自增(AUTO_INCREMENT)列,則重置為1。
Drop命令從資料庫中刪除表,所有的數據行,索引和約束都會被刪除。不能回滾,不會觸發觸發器。
觸發器(TRIGGER)是由事件(比如INSERT/UPDATE/DELETE)來觸發運行的操作(不能被直接調用,不能接收參數)。在資料庫里以獨立的對象存儲,用於保證數據完整性(比如可以檢驗或轉換數據)。
約束(Constraint)類型:
從資料庫的基本表中通過查詢選取出來的數據組成的虛擬表(資料庫中只存放視圖的定義,而不存放視圖的數據)。可以對其進行增/刪/改/查等操作。視圖是對若干張基本表的引用,一張虛表,查詢語句執行的結果,不存儲具體的數據(基本表數據發生了改變,視圖也會跟著改變)。
可以跟基本表一樣,進行增刪改查操作( 增刪改操作有條件限制,一般視圖只允許查詢操作 ),對視圖的增刪改也會影響原表的數據。 它就像一個窗口,透過它可以看到資料庫中自己感興趣的數據並且操作它們。 好處:
用於定位在查詢返回的結果集的特定行,以對特定行進行操作。使用游標可以方便地對結果集進行移動遍歷,根據需要滾動或對瀏覽/修改任意行中的數據。主要用於互動式應用。它是一段私有的SQL工作區,也就是一段內存區域,用於暫時存放受SQL語句影響的數據,簡單來說,就是將受影響的數據暫時放到了一個內存區域的虛表當中,這個虛表就是游標。
游標是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。即游標用來逐行讀取結果集。游標充當指針的作用。盡管游標能遍歷結果中的所有行,但他一次只指向一行。
游標的一個常見用途就是保存查詢結果,以便以後使用。游標的結果集是由SELECT語句產生,如果處理過程需要重復使用一個記錄集,那麼創建一次游標而重復使用若干次,比重復查詢資料庫要快的多。通俗來說,游標就是能在sql的查詢結果中,顯示某一行(或某多行)數據,其查詢的結果不是數據表,而是已經查詢出來的結果集。
簡單來說:游標就是在查詢出的結果集中進行選擇性操作的工具。
讓緩存更高效。對於連接查詢,如果其中一個表發生變化,那麼整個查詢緩存就無法使用。而分解後的多個查詢,即使其中一個表發生變化,對其它表的查詢緩存依然可以使用。分解成多個單表查詢,這些單表查詢的緩存結果更可能被其它查詢使用到,從而減少冗餘的查詢。減少鎖競爭。
索引是對資料庫表中一列或多列的值進行排序的一種結構(說明是在列上建立的),使用索引可快速訪問資料庫表中的特定信息。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助於更快地獲取信息。索引的一個主要目的就是加快檢索表中數據,亦即能協助信息搜索者盡快的找到符合限制條件的記錄ID的輔助數據結構。
當表中有大量記錄時,若要對表進行查詢,第一種搜索信息方式是全表搜索,是將所有記錄一一取出,和查詢條件進行一一對比,然後返回滿足條件的記錄,這樣做會消耗大量資料庫系統時間,並造成大量磁碟I/O操作。第二種就是在表中建立索引,然後在索引中找到符合查詢條件的索引值,最後通過保存在索引中的ROWID(相當於頁碼)快速找到表中對應的記錄。
例如這樣一個查詢:select * from table1 where id=10000。如果沒有索引,必須遍歷整個表,直到ID等於10000的這一行被找到為止。有了索引之後(必須是在ID這一列上建立的索引),即可在索引中查找。由於索引是經過某種演算法優化過的,因而查找次數要少的多。可見,索引是用來定位的。
從應用上分, 主鍵索引(聚集) , 唯一索引(聚集/非聚集) , 普通索引 , 組合索引 , 單列索引和全文索引
⑧ 請問SQL存儲過程,視圖,觸發器,資料庫表之間的關系是怎麼樣的有文章推薦么
資料庫表是數據的載體,數據內容衡旅及數據關系的存儲空間。
視圖是利用資料庫表生成的「偽表」,本身僅為一條查悔坦詢資料庫表的語句(物化視圖除外)。
sql存儲過程是處理、篩選數據的。作用是將資料庫表中的數據讀取出來,處理後將最終結果插入到某張表中,或者展現在頁面上。
觸發器是連帶功能的開關,我們通過這個開關控制一些與正在處理的數據咐前凳或動作具有連帶性質的資料庫表內的數據。
觸發器是開關,sql存儲過程是處理數據的,也就是說可以通過觸發器控制sql存儲過程處理連帶數據。
⑨ 資料庫存儲過程和視圖一般什麼時候用
存儲過程一般用於處理比較復雜的任務
存儲過程不僅僅適用於大型項目,對於中小型項目,使用存儲過程也是非常有必要的。其威力和優勢主要體現在:
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接資料庫。而換成存儲,只需要連接一次資料庫就可以了。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量。
視圖使用方案
視圖通常用來集中、簡化和自定義每個用戶對資料庫的不同認識。視圖可用作安全機制,方法是允許用戶通過視圖訪問數據,而不授予用戶直接訪問視圖基礎表的許可權。
⑩ sql資料庫的視圖和 存儲過程怎麼建
建議你的資料庫建立部門表的信息
在你的員工基本信息表裡加一個
alter table 員工基本信息表
add column 部門編號 char(10)
建立部門表
create table 部門表
(
部門編號 char(10),
部門名稱 char(10)
)
create view ccc
as
select max(d.基本工資-c.扣除工資) as 部門最高工資,min(d.基本工資-c.扣除工資) as 部門最低工資,avg(d.基本工資-c.扣除工資) as 部門平均工資,sum(d.基本工資-c.扣除工資) as部門工資總和
from 部門表 as b,員工基本信息表 as a,員工考勤情況表 as c,員工工情況表 as d
where a.員工號=c.員工號 and a.工種號=d.工種號 and a.部門編號=b.部門編號
group by b.部門名稱
具體可以在改改
存儲過程
create proc 過程名 @變數
as
begin
過程體
end