當前位置:首頁 » 存儲配置 » 面試存儲過程問什麼

面試存儲過程問什麼

發布時間: 2023-07-27 21:02:26

A. 資料庫常見筆試面試題

資料庫常見筆試面試題

資料庫常見筆試面試題有哪些?資料庫常見筆試面試會考什麼?下面是資料庫常見面試題總結,為大家提供參考。

1、sql的表連接方式有哪些?

SQL中連接按結果集分為:內連接,外連接,交叉連接

內連接:inner join on,兩表都滿足的組合。內連接分為等值連接,不等連接,自然連接。

等值連接:兩表中相同的列都會出現在結果集中。

自然連接:兩表中具體相同列表的列會合並為同一列出現在結果集中。

外連接:分為左(外)連接,右(外)連接,全連接

左(外)連接:A left (outer) join B,以A表為基礎,A表的全部數據,B表有的組合,沒有的為null。

右(外)連接:A right(outer) join B,以B表為基礎,B表的全部數據,A表有的組合,沒有的位null。

全連接:A full (outer) join 兩表相同的組合在一起,A表有,B表沒有的數據(顯示為null),同樣B表有,A表沒有的顯示為null。

交叉連接:cross join,就是笛卡爾乘積。

2、三範式

1NF:表中的欄位都是單一屬性,不再可分。

2NF:在1NF的基礎上,表中所有的非主屬性都必須完全依賴於任意一組候選鍵,不能僅依賴於候選鍵中的某個屬性。

3NF:在2NF的基礎上,表中所有的屬性都不依賴其他非主屬性。

簡單的說就是:1NF表示每個屬性不可分割,2NF表示非主屬性不存在對主鍵的部分依賴,3NF表示不存在非主屬性對主鍵的依賴傳遞。

3、表的操作

表的創建:create table 表名 (列名1 類型 約束,列2 類型 約束…)

表的刪除: 表名

表的更改(結構的更改,不是記錄的更新):alter table 表名 add|drop 列名|約束名

插入記錄: into 表名…values…

更新記錄:表名 set 列名=值 where 條件

刪除記錄: from 表名 where 條件

4、數據的完整性

數據完整性指的是存儲在資料庫中的數據的一致性和准確性。

完整性分類:

(1)實體完整性:主鍵值必須唯一且非空。(主鍵約束)

(2) 引用完整性(也叫參照完整性):外鍵要麼為空,要麼引用主表中存在的記錄。(外鍵約束)。

(3)用戶自定義完整性:針對某一具體關系資料庫中的約束條件。

5、SQL的查詢優化

(1)從表連接的角度優化:盡量使用內連接,因為內連接是兩表都滿足的行的組合,而外連接是以其中一個表的全部為基準。

(2)盡量使用存儲過程代替臨時寫SQL語句:因為存儲過程是預先編譯好的SQL語句的集合,這樣可以減少編譯時間。

(3)從索引的角度優化:對那些常用的查詢欄位簡歷索引,這樣查詢時值進行索引掃描,不讀取數據塊。

(4)還有一些常用的select優化技巧:

(5)A.只查詢那些需要訪問的欄位,來代替select*

B、將過濾記錄越多的where語句向前移:在一個SQL語句中,如果一個where條件過濾的資料庫記錄越多,定位越准確,則該where條件越應該前移。

6、索引的作用,聚集索引與非聚集索引的區別

索引是一個資料庫對象,使用索引,可以是資料庫程序無須對整個數據進行掃描,就可以在其中找到目標數據,從而提高查找效率。索引的底層採用的是B樹。

聚集索引:根據記錄的key再表中排序數據行。

非聚集索引:獨立於記錄的結構,非聚集所以包含的`key,且每個鍵值項都有指向該簡直的數據行的指針。

聚集索引與非聚集索引的區別:

(1)聚集索引的物理存儲按索引排序,非聚集所以的物理存儲不按索引排序。

(2) 聚集索引插入,更新數據的速度比非聚集索引慢,單查詢速度更快。

(3) 聚集索引的葉級結點保存的是時間的數據項,而非聚集結點的葉級結點保存的是指向數據項的指針。

(4)一個表只能有一個聚集索引(因為只有一種排序方式),但可以有多個非聚集索引。

7、存儲過程與函數的區別

(1)函數有返回值,存儲過程沒有返回值。

(2) 因為存儲過程沒有返回值,所以不能將存儲過程的執行結果賦值給變數;函數有返回值類型,調用函數時,可以將函數的執行結果賦值給變數。也就是說,函數可以在select語句中使用,而存儲過程則不能。


;

B. 「春招系列」MySQL面試核心25問(附答案)

篇幅所限本文只寫了MySQL25題,像其他的Redis,SSM框架,演算法,計網等技術棧的面試題後面會持續更新,個人櫻褲整理的1000餘道面試八股文會放在文末給大家白嫖,最近有面試需要刷題的同學可以直接翻到文末領取。

如果表使用自增主鍵,那麼每次插入新的記錄,記錄就會順序添加到當前索引節點的後續位置,當一頁寫滿,就會自動開辟一個新的頁。如果使用非自增主鍵(如果身份證號或學號等),由於每次插入主鍵的值近似於隨機,因此每次新紀錄都要被插到現有索引頁得中間某個位置, 頻繁的移動、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結構,後續不得不通過OPTIMIZE TABLE(optimize table)來重建表並優化填充頁面。

Server層按順序執行sql的步驟為:

簡單概括:

可以分為服務層和存儲引擎層兩部分,其中:

服務層包括連接器、查詢緩存、分析器、優化器、執行器等 ,涵蓋MySQL的大多數核心服務功能,以及所有的內置函數(如日期、時間、數學和加密函數等),所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等。

存儲引擎層負責數據的存儲和提取 。其架構模式是插件式的,支持InnoDB、MyISAM、Memory等多個存儲引擎。現在最常用的存儲引擎是InnoDB,它從MySQL 5.5.5版本開始成為了默認的存儲引擎。

Drop、Delete、Truncate都表示刪除,但是三者有一些差別:

Delete 用來刪除表的全部或者一部分數據行,執行Delete之後,用戶需要提交(commmit)或者回滾(rollback)來執行刪除或者撤銷刪除,會觸發這個表上所有的delete觸發器。

Truncate 刪除表中的所有數據,這個操作不能回滾,也不會觸發這個表上的觸發器,TRUNCATE比Delete更快,佔用的空間更小。

Drop 命令從資料庫中刪除表,所有的數據行,索引和許可權也會被刪除,所有的DML觸發器也不會被觸發,這個命令也不能回滾。

因此,在不再需要一張表的時候,用Drop;在想刪除部分數據行時候,用Delete;在保留表而刪除所有數據的時候用Truncate。

隔離級別臟讀不可重復讀幻影讀 READ-UNCOMMITTED 未提交讀 READ-COMMITTED 提交讀 REPEATABLE-READ 重復讀 SERIALIZABLE 可串列化讀

MySQL InnoDB 存儲引擎的默認支持的隔離級別是 REPEATABLE-READ (可重讀)

這里需要注意的是 :與 SQL 標准不同的地方在於InnoDB 存儲引擎在 REPEATABLE-READ(可重讀)事務隔離級別 下使用的是 Next-Key Lock 鎖 演算法,因此可以避免幻讀的產生,這與其他資料庫系統(如 SQL Server)是不同的。所以 說InnoDB 存儲引擎的默認支持的隔離級別是 REPEATABLE-READ(可重讀) 已經可以完全保證事務的隔離性要 求,即達到了 SQL標準的SERIALIZABLE(可串列化)隔離級別。

因為隔離級別越低,事務請求的鎖越少,所以大部分資料庫系統的隔離級別都是READ-COMMITTED(讀取提交內 容):,但是你要知道的是InnoDB 存儲引擎默認使用 REPEATABLE-READ(可重讀)並不會有任何性能損失

InnoDB 存儲引擎在分布式事務 的情況下一般會用到SERIALIZABLE(可串列化)隔離級別。

主要原因:B+樹只要遍歷葉子節點就可以實現整棵樹的遍歷,而且在資料庫中基於范圍的查詢是非常頻繁的,而B樹只能中序遍歷脊空簡所有節點,效率太低。

文件與資料庫都是需要較大的存儲,也就是說,它們都不可能全部存儲在內存中,故需要存儲到磁碟上。而所謂索引,則為了數據的快速定位與查找,那麼索引的結構組織要盡虧帆量減少查找過程中磁碟I/O的存取次數,因此B+樹相比B樹更為合適。資料庫系統巧妙利用了局部性原理與磁碟預讀原理,將一個節點的大小設為等於一個頁,這樣每個節點只需要一次I/O就可以完全載入,而紅黑樹這種結構,高度明顯要深的多,並且由於邏輯上很近的節點(父子)物理上可能很遠,無法利用局部性。

最重要的是,B+樹還有一個最大的好處:方便掃庫。

B樹必須用中序遍歷的方法按序掃庫,而B+樹直接從葉子結點挨個掃一遍就完了,B+樹支持range-query非常方便,而B樹不支持,這是資料庫選用B+樹的最主要原因。

B+樹查找效率更加穩定,B樹有可能在中間節點找到數據,穩定性不夠。

B+tree的磁碟讀寫代價更低:B+tree的內部結點並沒有指向關鍵字具體信息的指針(紅色部分),因此其內部結點相對B 樹更小。如果把所有同一內部結點的關鍵字存放在同一塊盤中,那麼盤塊所能容納的關鍵字數量也越多。一次性讀入內存中的需要查找的關鍵字也就越多,相對來說IO讀寫次數也就降低了;

B+tree的查詢效率更加穩定:由於內部結點並不是最終指向文件內容的結點,而只是葉子結點中關鍵字的索引,所以,任何關鍵字的查找必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每一個數據的查詢效率相當;

視圖是一種虛擬的表,通常是有一個表或者多個表的行或列的子集,具有和物理表相同的功能 游標是對查詢出來的結果集作為一個單元來有效的處理。一般不使用游標,但是需要逐條處理數據的時候,游標顯得十分重要。

而在 MySQL 中,恢復機制是通過回滾日誌(undo log)實現的,所有事務進行的修改都會先記錄到這個回滾日誌中,然後在對資料庫中的對應行進行寫入。當事務已經被提交之後,就無法再次回滾了。

回滾日誌作用:1)能夠在發生錯誤或者用戶執行 ROLLBACK 時提供回滾相關的信息 2) 在整個系統發生崩潰、資料庫進程直接被殺死後,當用戶再次啟動資料庫進程時,還能夠立刻通過查詢回滾日誌將之前未完成的事務進行回滾,這也就需要回滾日誌必須先於數據持久化到磁碟上,是我們需要先寫日誌後寫資料庫的主要原因。

InnoDB

MyISAM

總結

資料庫並發會帶來臟讀、幻讀、丟棄更改、不可重復讀這四個常見問題,其中:

臟讀 :在第一個修改事務和讀取事務進行的時候,讀取事務讀到的數據為100,這是修改之後的數據,但是之後該事務滿足一致性等特性而做了回滾操作,那麼讀取事務得到的結果就是臟數據了。

幻讀 :一般是T1在某個范圍內進行修改操作(增加或者刪除),而T2讀取該范圍導致讀到的數據是修改之間的了,強調范圍。

丟棄修改 :兩個寫事務T1 T2同時對A=0進行遞增操作,結果T2覆蓋T1,導致最終結果是1 而不是2,事務被覆蓋

不可重復讀 :T2 讀取一個數據,然後T1 對該數據做了修改。如果 T2 再次讀取這個數據,此時讀取的結果和第一次讀取的結果不同。

第一個事務首先讀取var變數為50,接著准備更新為100的時,並未提交,第二個事務已經讀取var為100,此時第一個事務做了回滾。最終第二個事務讀取的var和資料庫的var不一樣。

T1 讀取某個范圍的數據,T2 在這個范圍內插入新的數據,T1 再次讀取這個范圍的數據,此時讀取的結果和和第一次讀取的結果不同。

T1 和 T2 兩個事務都對一個數據進行修改,T1 先修改,T2 隨後修改,T2 的修改覆蓋了 T1 的修改。例如:事務1讀取某表中的數據A=50,事務2也讀取A=50,事務1修改A=A+50,事務2也修改A=A+50,最終結果A=100,事務1的修改被丟失。

T2 讀取一個數據,T1 對該數據做了修改。如果 T2 再次讀取這個數據,此時讀取的結果和第一次讀取的結果不同。

悲觀鎖,先獲取鎖,再進行業務操作,一般就是利用類似 SELECT … FOR UPDATE 這樣的語句,對數據加鎖,避免其他事務意外修改數據。當資料庫執行SELECT … FOR UPDATE時會獲取被select中的數據行的行鎖,select for update獲取的行鎖會在當前事務結束時自動釋放,因此必須在事務中使用。

樂觀鎖,先進行業務操作,只在最後實際更新數據時進行檢查數據是否被更新過。Java 並發包中的 AtomicFieldUpdater 類似,也是利用 CAS 機制,並不會對數據加鎖,而是通過對比數據的時間戳或者版本號,來實現樂觀鎖需要的版本判斷。

分庫與分表的目的在於,減小資料庫的單庫單表負擔,提高查詢性能,縮短查詢時間。

通過分表 ,可以減少資料庫的單表負擔,將壓力分散到不同的表上,同時因為不同的表上的數據量少了,起到提高查詢性能,縮短查詢時間的作用,此外,可以很大的緩解表鎖的問題。分表策略可以歸納為垂直拆分和水平拆分:

水平分表 :取模分表就屬於隨機分表,而時間維度分表則屬於連續分表。如何設計好垂直拆分,我的建議:將不常用的欄位單獨拆分到另外一張擴展表. 將大文本的欄位單獨拆分到另外一張擴展表, 將不經常修改的欄位放在同一張表中,將經常改變的欄位放在另一張表中。對於海量用戶場景,可以考慮取模分表,數據相對比較均勻,不容易出現熱點和並發訪問的瓶頸。

庫內分表 ,僅僅是解決了單表數據過大的問題,但並沒有把單表的數據分散到不同的物理機上,因此並不能減輕 MySQL 伺服器的壓力,仍然存在同一個物理機上的資源競爭和瓶頸,包括 CPU、內存、磁碟 IO、網路帶寬等。

分庫與分表帶來的分布式困境與應對之策 數據遷移與擴容問題----一般做法是通過程序先讀出數據,然後按照指定的分表策略再將數據寫入到各個分表中。分頁與排序問題----需要在不同的分表中將數據進行排序並返回,並將不同分表返回的結果集進行匯總和再次排序,最後再返回給用戶。

不可重復讀的重點是修改,幻讀的重點在於新增或者刪除。

視圖是虛擬的表,與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢;不包含任何列或數據。使用視圖可以簡化復雜的 sql 操作,隱藏具體的細節,保護數據;視圖創建後,可以使用與表相同的方式利用它們。

視圖不能被索引,也不能有關聯的觸發器或默認值,如果視圖本身內有order by 則對視圖再次order by將被覆蓋。

創建視圖:create view xxx as xxxx

對於某些視圖比如未使用聯結子查詢分組聚集函數Distinct Union等,是可以對其更新的,對視圖的更新將對基表進行更新;但是視圖主要用於簡化檢索,保護數據,並不用於更新,而且大部分視圖都不可以更新。

B+tree的磁碟讀寫代價更低,B+tree的查詢效率更加穩定 資料庫索引採用B+樹而不是B樹的主要原因:B+樹只要遍歷葉子節點就可以實現整棵樹的遍歷,而且在資料庫中基於范圍的查詢是非常頻繁的,而B樹只能中序遍歷所有節點,效率太低。

B+樹的特點

在最頻繁使用的、用以縮小查詢范圍的欄位,需要排序的欄位上建立索引。不宜:1)對於查詢中很少涉及的列或者重復值比較多的列 2)對於一些特殊的數據類型,不宜建立索引,比如文本欄位(text)等。

如果一個索引包含(或者說覆蓋)所有需要查詢的欄位的值,我們就稱 之為「覆蓋索引」。

我們知道在InnoDB存儲引 擎中,如果不是主鍵索引,葉子節點存儲的是主鍵+列值。最終還是要「回表」,也就是要通過主鍵再查找一次,這樣就 會比較慢。覆蓋索引就是把要查詢出的列和索引是對應的,不做回表操作!

舉例

學號姓名性別年齡系別專業 20020612李輝男20計算機軟體開發 20060613張明男18計算機軟體開發 20060614王小玉女19物理力學 20060615李淑華女17生物動物學 20060616趙靜男21化學食品化學 20060617趙靜女20生物植物學

主鍵為候選鍵的子集,候選鍵為超鍵的子集,而外鍵的確定是相對於主鍵的。

C. 資料庫的面試會問什麼樣的問題

目前在職場中很難找到非常合格的資料庫開發人員。有人說:「sql開發是一門語言,它很容易學,但是很難掌握。」
在面試應聘的sql Server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。當你問到關於主鍵和外鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。
你能向我簡要敘述一下sql Server 2000中使用的一些資料庫對象嗎?
你希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數,以及存儲過程;如果他們還能夠提到像觸發器這樣的對象就更好了。如果應聘者不能回答這個基本的問題,那麼這不是一個好兆頭。
null是什麼意思?
null(空)這個值是資料庫世界裡一個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。
null這個值表示unknown(未知):它不表示「」(空字元串)。假設您的sql Server資料庫里有ANSI_nullS,當然在默認情況下會有,對null這個值的任何比較都會生產一個null值。您不能把任何值與一個 unknown值進行比較,並在邏輯上希望獲得一個答案。您必須使用IS null操作符。

什麼是索引?sql Server 2000里有什麼類型的索引?
任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。
簡單地說,索引是一個數據結構,用來快速訪問資料庫表格或者視圖里的數據。在sql Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數據。這意味著不論聚集索引里有表格的哪個(或哪些)欄位,這些欄位都會按順序被保存在表格。由於存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁碟上數據的指針。它允許每個表格有多個非聚集索引。
什麼是主鍵?什麼是外鍵?
主鍵是表格里的(一個或多個)欄位,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關系的約束。這種關系一般都涉及一個表格里的主鍵欄位與另外一個表格(盡管可能是同一個表格)里的一系列相連的欄位。那麼這些相連的欄位就是外鍵。
什麼是觸發器?sql Server 2000有什麼不同類型的觸發器?
讓未來的資料庫開發人員知道可用的觸發器類型以及如何實現它們是非常有益的

觸發器是一種專用類型的存儲過程,它被捆綁到sql Server 2000的表格或者視圖上。在sql Server 2000里,有INSTEAD-OF和after兩種觸發器。INSTEAD-OF觸發器是替代數據操控語言(Data Manipulation Language,dml)語句對表格執行語句的存儲過程。例如,如果我有一個用於TableA的INSTEAD-OF-UPDATE觸發器,同時對這個表格執行一個更新語句,那麼INSTEAD-OF-UPDATE觸發器里的代碼會執行,而不是我執行的更新語句則不會執行操作。
after觸發器要在dml語句在資料庫里使用之後才執行。這些類型的觸發器對於監視發生在資料庫表格里的數據變化十分好用。
您如何確一個帶有名為Fld1欄位的TableB表格里只具有Fld1欄位里的那些值,而這些值同時在名為TableA的表格的Fld1欄位里?
這個與關系相關的問題有兩個可能的答案。第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的欄位只保存有已經在不同的(或者相同的)表格里的另一個欄位里定義了的值。這個欄位就是候選鍵(通常是另外一個表格的主鍵)。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設置與維護,而且性能一般都很糟糕。由於這個原因,微軟建議開發人員使用外鍵限制而不是觸發器來維護引用的完整性。
對一個投入使用的在線事務處理表格有過多索引需要有什麼樣的性能考慮?
你正在尋找進行與數據操控有關的應聘人員。對一個表格的索引越多,資料庫引擎用來更新、插入或者刪除數據所需要的時間就越多,因為在數據操控發生的時候索引也必須要維護。
你可以用什麼來確保表格里的欄位只接受特定范圍里的值?
這個問題可以用多種方式來回答,但是只有一個答案是「好」答案。您希望聽到的回答是Check限制,它在資料庫表格里被定義,用來限制輸入該列的值。
觸發器也可以被用來限制資料庫表格里的欄位能夠接受的值,但是這種辦法要求觸發器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。
<b?返回參數和output參數之間的區別是什麼?>如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用存儲過程的經驗。
返回參數總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數總是int數據類型。
OUTPUT參數明確要求由開發人員來指定,它可以返回其他類型的數據,例如字元型和數值型的值。(可以用作輸出參數的數據類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數,而您只能夠使用一個返回參數。
什麼是相關子查詢?如何使用這些查詢?
經驗更加豐富的開發人員將能夠准確地描述這種類型的查詢。
相關子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似於循環的狀況。</b?返回參數和output參數之間的區別是什麼?>

D. 資料庫存儲過程有哪些,面試題

/*
系統存儲過程很多,有些常用,有些不常用
常用:
sp_attach_db附加資料庫到一個伺服器中
sp_columns返回在當前環境中列的信息
sp_databases列出當前系統中的資料庫
sp_configure顯示或修改當前伺服器的全局配置
sp_depends顯示資料庫對象的依賴信息
sp_executesql執行動態的T-SQL語句
sp_help報告有關資料庫對象的信息
sp_helpdb返回指定資料庫或全部資料庫的信息
sp_helptext顯示規則、默認值、存儲過程、觸發器、視圖等的未加密的文本定義信息
sp_indexes返回指定遠程表的索引信息
sp_lock返回有關鎖的信息
sp_password增加或者修改指定login的口令
sp_rename更改用戶創建的資料庫對象名稱
sp_renamedb更改資料庫名稱
sp_spaceused顯示資料庫的空間使用情況
sp_tables返回在當前環境中可以被查詢的對象的列表
sp_who提供當前用戶和進程的信息
不常用:
sp_addlinkedserver創建一個允許執行分布式查詢的鏈接伺服器
sp_addlinkedsrvlogin在本地伺服器和遠程伺服器之間創建login帳戶的映射關系
sp_addlogin創建一個新的login帳戶
sp_add_agent_parameter在代理文件中增加一個參數
sp_add_agent_profile為復制代理增加一個代理文件
sp_add_alert創建一個警報
sp_add_category在伺服器上,增加一種作業、警報或者操作員的特定分類
sp_add_data_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個數據文件
sp_add_file_recover_suspect_db對於復原有問題的資料庫增加一個文件
sp_add_job增加一個sqlserveragent可以執行的作業
sp_add_jobschele為作業創建調度
sp_add_jobserver把指定的作業增加到指定伺服器上
sp_add_jobstep在作業中增加一步或一個操作
sp_add_log_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個日誌文件
sp_add_notification為警報創建一個通知
sp_add_operator為警報或者作業創建一個操作員
sp_add_targetservergroup增加指定的伺服器組
sp_add_targetsvrgrp_member在指定的目標伺服器組增加一個目標伺服器
sp_addalias在資料庫中為login帳戶增加一個別名
sp_addapprole在資料庫中增加一個特殊的應用程序角色
sp_addarticle創建文章,並把該文章添加到出版物中
sp_adddistpublisher創建一個使用本地分布伺服器的出版伺服器
sp_adddistributiondb在分布伺服器上創建一個新的distribution資料庫
sp_adddistributor增加一個分布伺服器
sp_addextendedproc在系統中增加一個擴展存儲過程
sp_addgroup在當前資料庫中增加一個組
sp_addmergearticle為一個已有的合並出版物創建一個文章
sp_addmergefilter為了連接另外一個表,創建一個合並過濾器
sp_addmergepublication創建一個新的合並出版物
sp_addmergepullsubscription增加一個拉回類型的訂閱物
sp_addmergepullsubscription_agent在訂閱伺服器上,為合並拉回訂閱物創建一個代理
sp_addmergesubscription創建一個推出或者拉回類型的訂閱物
sp_addmessage在系統中增加一個新的錯誤消息
sp_addpublicaton創建一個快照復制或者事務復制出版物
sp_addpublicaton_snapshot創建一個快照代理
sp_addpullsusscription在當前訂閱伺服器的資料庫中增加一個拉回或者匿名訂閱物
sp_addpullsusscription_agent在訂閱伺服器的資料庫中增加一個新的代理
sp_addremotelogin在本地伺服器上增加一個遠程login帳戶,允許執行遠程存儲過程調用
sp_addrole在當前資料庫中增加一個角色
sp_addrolemember為當前資料庫中的一個角色增加一個安全性帳戶
sp_addserver添加一個遠程或者本地伺服器
sp_addsrvrolemember為固定的伺服器角色增加一個成員
sp_addsubscriber增加一個新的訂閱伺服器
sp_addsubscriber_schele為分布代理和合並代理增加一個調度
sp_addsubscription訂閱文章並且設置訂閱伺服器的狀態
sp_addsynctrigers在訂閱伺服器上創建一個立即修改觸發器
sp_addtabletocontents在合並跟蹤表中插入一個參考
sp_addtype創建一個用戶定義的數據類型
sp_admpdevice增加一個備份設備
sp_adser在當前資料庫中為一個新用戶增加一個安全性帳戶
sp_altermessage修改錯誤信息的狀態
sp_addly_job_to_targets把作業應用到一個或者多個目標伺服器
sp_approlepassword在當前資料庫中改變應用程序角色的口令
sp_aarticle_validation為指定的文章初始化確認請求
sp_aarticlecolumn指定在文章中使用的列
sp_aarticlefilter創建一個用於水平過濾數據的過濾器
sp_articleview當表被過濾時,為文章創建一個同步化對象
sp_attach_single_file_db在當前伺服器中,附加一個只有一個數據文件的資料庫
sp_aautostats對於一個指定的索引或統計,自動顯示updatestatistics的狀態
sp_bindefault把默認值綁定到列或用戶定義的數據類型上
sp_bindrule把規則綁定到列或用戶定義的數據類型上
sp_bindsession綁定或解除綁定與實例中的其它事務的連接
sp_browsereplcmds在分布資料庫中返回一種可讀格式的結果集
sp_catalogs返回指定連接伺服器中的系統目錄列表,在本地伺服器中等價於資料庫列表
sp_certify_removable確認在可移動介質上用於分布的資料庫是否正確配置
sp_change_agent_parameter修改復制代理配置使用的參數
sp_change_agent_profile修改復制代理配置使用的配置參數
sp_change_users_login修改login與當前資料庫中用戶之間的關系
sp_changearticle改變文章的屬性
sp_changedbowner改變當前資料庫的所有者
sp_changedistpublisher改變分布出版伺服器的屬性
sp_changedistributor_password改變分布伺服器的口令
sp_changedistributor_property改變分布伺服器的屬性
sp_changedistribtutiondb改變分布資料庫的屬性
sp_changegroup改變安全性帳戶所屬的角色
sp_changemergearticle改變合並文章的屬性
sp_changemergefilter改變一些合並過濾器的屬性
sp_changemergepublication改變合並出版物的屬性
sp_changemergepullsubscription改變合並拉回出版物的屬性
sp_changemergesubscription改變合並的推出或者拉回出版物的屬性
sp_changeobjectowner改變對象的所有者
sp_changepublication改變出版物的屬性
sp_changesubscriber改變用於訂閱伺服器的選項
sp_changesubscriber_schele改變用於分布式代理和事務代理的訂閱伺服器的調度
sp_changesubstatus改變訂閱伺服器的狀態
sp_column_privileges返回列的許可權信息
sp_column_privileges_ex返回在鏈接伺服器上指定表的列的許可權信息
sp_columns_ex返回在鏈接伺服器上列的信息
sp_create_removable創建一個可移動介質資料庫
sp_createstats創建單列的統計信息
sp_cursor用於請求定位更新
sp_cursor_list報告當前打開的伺服器游標屬性
sp_cursorclose關閉和釋放游標
sp_cursorfetch從游標中取出數據行
sp_cursoropen定義與游標和游標選項相關聯的SQL語句,然後填充游標
sp_cursoroption用於設置各種游標選項
sp_cycle_errorlog關閉錯誤日誌文件重新開始錯誤記錄
sp_datatype_info返回當前環境支持的數據類型信息
sp_dbfixedrolepermission顯示每一個固定資料庫角色的許可
sp_dboption顯示或修改資料庫選項
sp_dbremove刪除資料庫和與該資料庫相關的所有文件
sp_defaultdb設置登錄帳戶的默認資料庫
sp_defaultlanguage設置登錄帳戶的默認語言
sp_delete_alert刪除警報
sp_delete_backuphistory刪除備份和恢復的歷史信息
sp_delete_category刪除指定類型的作業、警報和操作員
sp_delete_job刪除一個作業
sp_delete_jobschele刪除作業的調度
sp_delete_jobserver刪除指定的目標伺服器
sp_delete_jobstep從作業中刪除指定的作業步驟
sp_delete_notfication刪除發送給某個操作員的所有通知
sp_delete_operator刪除操作員
sp_delete_targetserver從可以使用的目標伺服器列表中刪除指定的伺服器
sp_delete_targetservergroup刪除指定的目標伺服器組
sp_delete_targetsvrgrp_member從目標伺服器組中刪除一個目標伺服器
sp_deletemergeconflictrow刪除沖突表中的記錄行
sp_denylogin防止window用戶或群組連接到sqlserver
sp_describe_cursor報告伺服器游標的屬性
sp_describe_cursor_columns報告在伺服器游標的結果集中列的屬性
sp_describe_cursor_tables報告伺服器游標參考的基表信息
sp_detach_db分享伺服器中的資料庫
sp_drop_agentparameger刪除配置文件中的一個或者多個參數
sp_drop_profile刪除配置文件
sp_dropalias刪除一個帳戶的別名
sp_dropapprole刪除當前資料庫中的應用程序角色
sp_droparticle從出版物中刪除一篇文章
sp_dropdevice刪除資料庫或者備份設備
sp_dropdistpublisher刪除出版伺服器
sp_dropdistributiondb刪除分布資料庫
sp_dropdistributor刪除分布伺服器
sp_dropdropextendedproc刪除一個擴展存儲過程
sp_dropgroup從當前資料庫中刪除角色
sp_droplinkedsrvlogin刪除一個本地伺服器和連接伺服器的映射帳戶
sp_droplogin刪除一個登錄帳戶
sp_dropmergearticle從合並出版物中刪除一篇文章
sp_dropmergefilter刪除一個合並過濾器
sp_dropmergepublication刪除一個合並出版物和與其相關的快照復制
sp_dropmergepullsubscription刪除一個合並拉回訂購物
sp_dropmergesubscription刪除一個訂閱物
sp_dropmessage刪除一個消息
sp_droppublication刪除出版物和與其相關的文章
sp_droppullsubscription刪除當前訂閱伺服器資料庫中的訂閱物
sp_dropremotelogin刪除一個遠程登錄帳戶
sp_droprole從當前資料庫中刪除一個角色
sp_droprolemember從當前資料庫中的一個角色中刪除一個安全性帳戶
sp_dropserver刪除一個遠程或者連接伺服器列表中的伺服器
sp_dropsrvrolemember從一個固定的伺服器角色中刪除一個帳戶
sp_dropsubscriber刪除一個訂閱伺服器
sp_dropsubscription刪除訂閱物
sp_droptype刪除一種用戶定義的數據類型
sp_dropuser從當前資料庫中刪除一個用戶
sp_dropdropwebtask刪除以前版本定義的web任務
sp_dsninfo從一個與當前伺服器相關的分布伺服器返回ODBC和OLEDB數據源的信息
sp_mpparamcmd返回存儲在分布資料庫中的參數化命令的詳細信息
sp_enumcodepages返回一個字元集和代碼頁的列表
sp_enumcustomresovers返回所有可用的定製解決方案表表
sp_enumdsn返回所有可用的odbc和oledb數據源列表
sp_enumfullsubscribers返回訂閱伺服器的列表
sp_expired_subscription_cleanup周期性地檢查訂閱物的狀態是否失效
sp_fkeys返回當前環境的外鍵信息
sp_foreignkeys返回參照連接伺服器的表的主鍵的外鍵
sp_fulltext_catalog創建和刪除全文本目錄
sp_fulltext_column指定某一個列是否參加全文本索引
sp_fulltext_database從當前資料庫中初始化全文本索引
sp_fulltext_service改變MicrosoftSearchService屬性
sp_fulltext_table標記用於全文本索引的表
sp_generatefilters在外鍵表上創建一個過濾器
sp_get_distributor確定一個分布伺服器是否安裝在某個伺服器上
sp_getbindtoken創建一個綁定的連接文本
sp_getmergedeletype返回合並刪除的類型
sp_grant_publication_access在出版物的訪問列表中增加一個用戶
sp_grantdbaccess在當前資料庫中增加一個安全性帳戶
sp_grantlogin允許Windows用戶或群組連接到SQLServer
sp_help_agent_default檢索作為參數傳送的代理類型的默認配置的標識號
sp_help_agent_parameter返回代理配置的所有參數
sp_help_agent_profile返回指定代理的配置
sp_help_alert報告有關警報的信息
sp_help_category提供有關作業、警報、操作員的指定種類的信息
sp_help_downloadlist列出有關作業的信息
sp_help_fulltext_catalogs返回有關全文本索引表的信息
sp_help_fulltext_columns返回標記全文本索引的列信息
sp_help_fulltext_columns_cursor使用游標檢索標記為全文本的索引列
sp_help_fulltext_tables返回標記為全文本索引的表
sp_help_fulltext_tables_cursor使用游標返回標記為全文本索引的表
sp_help_job返回有關作業的信息
sp_help_jobhistory提供有關作業的歷史信息
sp_help_jobschele返回作業的調度信息
sp_help_jobserver返回給定作業的伺服器信息
sp_help_jobstep返回作業的步驟信息
sp_help_operator返回有關操作員的信息
sp_help_publication_access返回可以訪問指定出版物的帳戶列表
sp_help_targetserver列出全部目標伺服器
sp_help_targetservergroup列出指定伺服器組中的全部目標伺服器
sp_helparticle顯示有關文章的信息
sp_helpconstraint返回有關約束的類型、名稱等信息
sp_helpdbfixedrole返回固定的伺服器角色的列表
sp_helpdevice返回有關資料庫文件的信息
sp_helpdistpublisher返回充當分布伺服器的出版伺服器的屬性
sp_helpdistributiondb返回分布資料庫的屬性信息
sp_helpdistributor列出分布伺服器、分布資料庫、工作目錄等信息
sp_helpextendproc顯示當前定義的擴展存儲過程信息
sp_helpfile返回與當前資料庫相關的物理文件信息
sp_helpfilegroup返回與當前資料庫相關的文件組信息
sp_helpgroup返回當前資料庫中的角色信息
sp_helpindex返回有關表的索引信息
sp_helplanguage返回有關語言的信息
sp_helplinkedsrvlogin返回鏈接伺服器中映射的帳戶信息
sp_helplogins返回有關login和與其相關的資料庫用戶信息
sp_helpmergearticle返回有關合並文章的信息
sp_helpmergearticleconflicts返回有關沖突的出版物中的文章信息
sp_helpmergeconflictrows返回在指定沖突表中的行
sp_helpmergefilter返回有關合並過濾器的信息
sp_helpmergepublication返回有關合並出版物的信息
sp_helpmergepullsubscription返回有關拉回訂閱物的信息
sp_helpmergesubscription返回有關推出訂閱物的信息
sp_help_notification報告對於給定操作員的警報信息
sp_helppublication返回有關出版物的信息
sp_helprole返回當前資料庫中的角色信息
sp_helprolemember返回當前資料庫中角色成員的信息
sp_helprotect返回有關用戶許可的信息
sp_helpserver顯示特定遠程或者復制伺服器的信息
sp_helpsort顯示系統的排列順序和字元集的信息
sp_helpsrvrole顯示系統中的固定伺服器角色列表
sp_helpsrvrolemember顯示系統中的固定伺服器角色成員的信息
sp_helpsubscrberinfo顯示有關訂閱伺服器的信息
sp_helpsubscription顯示有特定出版物等有關的訂閱物信息
sp_helpsubscription_properties檢索安全性信息
sp_helptrigger顯示觸發器的類型
sp_helpuser顯示當前資料庫中的用戶、WindowsNT用戶和組、角色等信息
sp_indexoption為用戶定義的索引設置選項
sp_link_publication設置立即修改訂閱伺服器的同步化觸發器使用的配置和安全性信息
sp_linkedservers返回在本地伺服器上定義的鏈接伺服器的列表
sp_makewebtask創建一個執行html文檔的任務
sp_manage_jobs_by_login刪除或者重新指定屬於login的作業
sp_mergemmyupdate製作用於合並復制的修改備份
sp_mergesubscription_cleanup刪除元數據
sp_monitor顯示系統的統計信息
sp_msx_defect從多個伺服器操作中刪除當前伺服器
sp_msx_enlist增加當前伺服器到可用的目標伺服器列表中
sp_pkeys返回某個表的主鍵信息
sp_post_msx_operation插入一些目標伺服器可以執行的信息
sp_primarykeys返回主鍵列的信息
sp_processmail使用擴展存儲過程修改郵件信息
sp_procoption設置或者顯示過程選項
sp_publication_validation初始化文章校驗請求
sp_purge_jobhistory刪除作業的歷史記錄
sp_recompile使存儲過程和觸發器在下一次運行時重新編譯
sp_refreshsubscriptions在拉回出版物中增加訂閱物到文章中
sp_refreshview刷新指定視圖的元數據
sp_reinitmergepullsubscription標記一個合並拉回訂閱
sp_reiniteergesubscription標記一個合並訂閱
sp_reinitpullsubscription標記一個事務訂閱或者匿名訂閱
sp_reinitsubscription重新初始化訂閱
sp_remoteoption顯示或者修改遠程登錄帳戶的選項
sp_remove_job_from_targets從給定的目標伺服器中刪除指定的作業
sp_removedbreplication從資料庫中刪除所有的復制對象
sp_replcounters返回復制的統計信息
sp_repldone修改伺服器做的分布事務的統計信息
sp_replflush處理文章的高速緩沖存儲區
sp_replication_agent_checkup檢查每一個分布資料庫
sp_replicationdboption在當前資料庫中設置復制資料庫的選項
sp_replsetoriginator用於在事務復制中檢測循環登錄
sp_replshowcmds返回標記復制的事務命令
sp_repltrans返回在出版資料庫事務日誌中的所有事務的結果集
sp_resetstatus重新設置異常資料庫的形態
sp_resync_targetserver重新同步所有的多伺服器作業
sp_revoke_publication_access從出版資料庫的訪問列表中刪除login帳戶
sp_revokedbaccess從當前資料庫中刪除安全性帳戶
sp_revokelogin刪除系統的login帳戶
sp_script_synctran_commands生成一個可以用於立即修改訂閱物的腳本
*/

E. Oracle 存儲過程面試題

提供參考
DECLARE
BEGIN
mergeINTOt17_organt1
USINGt40_organt2
ONt1.organno=t2.organno
WHENmatchedTHEN
UPDATE
SETt1.organname=t2.organname,
t1.organlevel=t2.organlevel,
t1.uporgankey=t2.uporgankey,
t1.flag=t2.flag;
COMMIT;
END;
/

F. 面試問 說說對Oracle存儲過程的理解,應該從哪方面說呢

首先從功能上講procere能完成純SQL完成不了的事情,比如需要一些結構化的語言,循環等等
其次可以說說存儲過程於自定義函數的區別,函數只有一個輸出值,procere功能更多
第三說說運用,存儲過程方便用於job調用,便於每天自動後台執行完成自定義batch的需要

這樣說肯定就ok了,還有什麼不懂的可以追問

G. 面試官問執行存儲過程需要多久,該怎麼回答啊

回答:
存儲過程的執行時間,要看過程體內各個事務執行操作的時間,以及過程體本身邏輯的復雜程度。另外還要看過程體中所操作的對象的數量級,操作對象數量多需要的時間長,操作對象數量少需要的時間短。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726