儲存過程和檢視的區別
SQL裡面不帶引數的儲存過程與檢視的區別
1、儲存過程是程式化的sql可以實現一般sql不能實現的功能。 如:先檢索一個表得到一些資料,經過一定的編輯後更新到另外一個表中、這就可以用不帶引數的儲存過程實現。 2、檢視是虛擬表,不儲存資料,儲存的是sql,檢索他的時候實際上是執行定義它的sql語句。
說明:從你的問題上可以看出,你使用儲存過程僅僅是用它檢索資料,所以你會產生這樣的疑問,一定要記住,儲存過程理解的簡單一點就是“資料庫中的程式”,可以在不需要外部程式(如C,java,vb等)的情況下,讓資料庫自己解決複雜的、用一般sql不能實現的功能,而檢視則不然。
1.檢視和儲存過程比是沒什麼意義的。
2.檢視就是虛擬表,把檢視和表比較還有點意思。
3.檢視不佔實際空間,可以對任意的表進行疊加和剪裁,利用分割槽檢視的功能,能加快表的I/O讀取時間(需要2塊以上硬碟)
檢視只不過是儲存在sql server上的select語句罷了,當對檢視請求時,sql server會像執行一句普通的select語句那樣的執行檢視的select語句,它的效能並不像人們想象得那麼出色。
而儲存過程在編譯後可以生成執行計劃,這使得每次執行儲存過程的時候效率將會更高,這是儲存過程,另外臺提交引數的時候,使用儲存過程將會減少網路頻寬流量,這是儲存過程相對於普通的sql語句在效能上的最大的優勢。
檢視可以被看成是虛擬表或儲存查詢。可通過檢視訪問的資料不作為獨特的物件儲存在資料庫內。資料庫記憶體儲的是 SELECT 語句。SELECT 語句的結果集構成檢視所返回的虛擬表。使用者可以用引用表時所使用的方法,在 Transact-SQL 語句中通過引用檢視名稱來使用虛擬表。使用檢視可以實現下列任一或所有功能:
1.將使用者限定在表中的特定行上。 例如,只允許僱員看見工作跟蹤表內記錄其工作的行。
2.將使用者限定在特定列上。 例如,對於那些不負責處理工資單的僱員,只允許他們看見僱員表中的姓名列、辦公室列、工作電話列和部門列,而不能看見任何包含工資資訊或個人資訊的列。
3.將多個表中的列聯接起來,使它們看起來象一個表。
4.聚合資訊而非提供詳細資訊。 例如,顯示一個列的和,或列的最大值和最小值。
------------------
資料庫中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查詢所需資訊,無須閱讀整本書。在資料庫中,索引使資料庫程式無須對整個表進行掃描,就可以在其中找到所需資料。
------------------
儲存過程可以使得對資料庫的管理、以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱儲存並作為一個單元處理。儲存過程儲存在資料庫內,可由應用程式通過一個呼叫執行,而且允許使用者宣告變數、有條件執行以及其它強大的程式設計功能。
儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。
可以出於任何使用 SQL 語句的目的來使用儲存過程,它具有以下優點:
1.可以在單個儲存過程中執行一系列 SQL 語句。
2.可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。
3. 儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快。
相關推薦
儲存過程和檢視的區別
SQL裡面不帶引數的儲存過程與檢視的區別1、儲存過程是程式化的sql可以實現一般sql不能實現的功能。 如:先檢索一個表得到一些資料,經過一定的編輯後更新到另外一個表中、這就可以用不帶引數的儲存過程實現。 2、檢視是虛擬表,不儲存資料,儲存的是sql,檢索
資料庫第八次作業建表,儲存過程和檢視舉例
1)用DDL寫出Booking表的定義,包括主鍵,外來鍵,域約束。** 主鍵由三個欄位組成,外來鍵來自多個表,分開寫更清晰, 域約束用check來限制,另外一種方法是用Domain,在建表之前就限制 CREATE TABLE Booking( hotelNo I
在SQL2000中建立儲存過程和檢視使用with encryption後的破解
create PROCEDURE sp_decrypt(@objectname varchar(50)) AS begin set nocount on --CSDN:j9988 copyrigh
MySQL基礎篇(04):儲存過程和檢視,用法和特性詳解
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、儲存過程 1、概念簡介 儲存程式是被儲存在伺服器中的組合SQL語句,經編譯建立並儲存在資料庫中,使用者可通過儲存過程的名字呼叫執行。儲存過程核心思想就是資料庫SQL語言層面的封裝與重用性。使用儲存過程可以較少應用系統的業務複雜性,但是會增加資
MySQL儲存過程和函式的區別與優缺點
為什麼要使用儲存過程和函式 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。 儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合
儲存過程和函式的區別
2018年11月11日 16:32:01 張公子不吃辣 閱讀數:4 個人分類: JAVA
Oracle中儲存過程和函式中IS和AS的區別
在儲存過程(PROCEDURE)和函式(FUNCTION)中沒有區別; 在檢視(VIEW)中只能用AS不能用IS; 在遊標(CURSOR)中只能用IS不能用AS。 --記住就行了,沒什麼技巧.-_-.
sql相關:檢視儲存過程和表結構
sql資料庫相關: 1,檢視儲存過程的內建函式:sp_helptexteg:sp_helptext 儲存過程名 2,提供一個儲存過程用於檢視資料庫表的新結構tbinfo create procedu
Oracle建立和呼叫儲存過程,函式,檢視
【1】Oracle建立和呼叫儲存過程1:寫一個簡單的例子刪除三級級聯 1)create or replace procedure ww_procedure_servicecheck (V_ID IN NUMBER)-- 定義輸入變數 IS begin DELETE
儲存過程和儲存函式的詳細區別
儲存過程是使用者定義的一系列sql語句的集合,涉及特定表或其它物件的任務,使用者可以呼叫儲存過程,而函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。 儲存過程和函式存在以下幾個區別: 1)一般來說,儲存過程實現的功能要
MySQL——檢視儲存過程和函式
1. 檢視儲存過程和函式的狀態 用 SHOW STATUS 語句可以檢視儲存過程和函式的狀態,其基本的語法結構如下: SHOW { PROCEDURE | FUNCTION } STATUS [ LIKE 'pat
使用T-SQL語句檢視資料庫的儲存過程和表結構資訊
/*****************************************************************************************************************************//********
索引、檢視、遊標、儲存過程和觸發器的理解
1、索引 1-1、索引的概述 我們把一個表中的一列或者多列和列中元素所在表中記錄的實體地址組合成一個新的表。這個表的記錄大致為列的內容和該列所在記錄的實體地址。 1-2、索引的優缺點 www.2cto.com 優
檢視、儲存過程和函式以及觸發器
一、檢視1.檢視的定義檢視是一種虛擬存在的表,它本身在資料庫中並不存在,而是在我們出於某種目的想要去使用檢視的時候,使用我們資料庫中已經存在的表的行和列資料來自定義的一種動態生成的,便於檢索的安全的資料獨立的一種虛擬表。2.優點①簡單。檢視是一種已經經過過濾篩選之後的符合條件
Oracle資料庫儲存過程和函式的區別
儲存過程 函式 作為PL/SQL語句執行 作為表示式的一部分呼叫 在規範中不包含RETURN子句 必須在規範中包含RETURN子句 不返回任何值 必須返回單個值 可以包含RETURN語句,但是與函式不同,它不能用於返回值 必須包含至少一條
MySQL儲存過程和自定義函式、Navicat for mysql、建立儲存過程和函式、呼叫儲存過程和函式的區別
與你相遇 好幸運 可我已失去為你淚流滿面的權利 但願在我看不到的天際 你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由
6.儲存過程和函式-mysql
儲存過程和函式是在資料庫中定義一些SQL語句的集合。然後需要哪些功能的時候,直接掉用儲存過程和函式來執行已經定義好了的SQL語句,引入儲存過程和函式可以減少開發人員編寫重複的SQL。 儲存過程和函式是在MYSQL的伺服器中儲存執行的,這個SQL語句是已經編譯過了的,可以減少了客戶端服務端資料傳
MySQL優化---儲存過程和儲存函式-1-轉自部落格園
轉自網際網路.mysql優化 當一個大型系統在建立時,會發現,很多的SQL操作是有重疊的,個別計算是相同的,比如:業務系統中,計算一張工單的計算方式。當遇到這些情況時,我們運用儲存過程就是一個非常棒的優化啦。那麼,什麼是儲存 過程和儲存函式呢? 一、MYSQL儲存過程簡介(技術
mysql儲存過程遊標檢視select結果集
mysql中使用select(或者使用print未嘗試)檢視引數 DELIMITER $ create PROCEDURE myPro() BEGIN DECLARE id varchar(64); -- id DE
函式儲存過程和聯合主鍵
建立批量插入資料 第一個命令是DELIMITER //,它與儲存過程語法無關。 DELIMITER語句將標準分隔符 - 分號(;)更改為://。 在這種情況下,分隔符從分號(;)更改為雙斜槓//。為什麼我們必須更改分隔符? 因為我們想將儲存過程作為整體傳遞給伺服器,而不是讓mysql工具一次解釋每個語句。