這纔是你需要的最基礎的數據庫面試題(通俗易懂)

如果有什麼丟失的基礎點或者描述的有錯誤的地方歡迎評論或者私信
這裏原諒小編沒有寫超鏈接,但是可以打開目錄點擊同樣快速訪問
以後CSDN可能也不怎麼更新了(個人原因😔),這段時間和藍橋杯的羣裏以及CSDN大佬們的日常嘮嗑讓我獲益匪淺,真的就是優秀的人連嘮嗑都是在學習

1. 觸發器的作用?

觸發器是一個特殊的存儲過程,當對指定的表進行某種特定操作(如:Insert,Delete或Update)時,觸發器產生作用。觸發器可以調用存儲過程。

觸發器的語句
Create Trigger[owner.]觸發器名
 
On [owner.]表名
 
For {insert,update,delete}
 
As
 
Begin
 
SQL語句(塊)
 
End

觸發器的限制:
一個表最多只能有三個觸發器,insert,update,delete
每個觸發器只能用於一個表
不能對視圖、臨時表創建觸發器
Truncate table能刪除表,但不能觸發觸發器
不能將觸發器用於系統表
常見的觸發器有三種:分別應用於Insert,Update,Delete事件。

2. 什麼是存儲過程?用什麼來調用?

存儲過程其實就是一個sql的方法(你就當成Java(或者C#等等)自己寫的方法,調用存儲過程其實就是調用方法)
如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。
可以用一個“execute 存儲過程名 參數”命令來調用存儲過程。

-------------創建名爲GetUserAccount的存儲過程----------------

create Procedure GetUserAccountRe2
@UserName nchar(20),           //這是輸入的值
@UserID int output             //這是輸出的值
as
if(@UserName>5)
select @UserID=COUNT(*) from UserAccount where UserID>25
else
set @UserID=1000
select * from UserAccount
return @@rowcount             //返回的值
go

-------------執行上面的存儲過程----------------

exec GetUserAccountRe2 '7',null  //運行的時候,因爲第二個參數是輸出的,所以傳入一個null就可以

3.索引的作用?和它的優點缺點是什麼?

索引就一種特殊的查詢表,數據庫的搜索引擎可以利用它加速對數據的檢索。它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的數據。索引可以是唯一的,創建索引允許指定單個列或者是多個列。缺點是它減慢了數據錄入的速度,同時也增加了數據庫的尺寸大小。

索引的作用:創建索引能夠大大的提高系統的性能
優點
  ①通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性
  ②大大加快數據的檢索速度,這也是創建索引的最主要原因
  ③加快表與表之間的連接,在實現數據的參考完整性方面特別有意義
  ④在使用分組和排序,子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間
  ⑤通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
缺點
  ①創建索引和維護索引需要時間,這種時間隨着數據量的增加而增加
  ②索引需要佔物理空間,除了數據表佔數據空間之外,每一個索引還要佔物理空間,如果要建立聚簇索引,需要的空間更大
  ③當對錶中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這就降低了數據的維護速度。
索引是創建在數據庫的表中的列上。因此,在創建索引的時候,要考慮哪些列上適合加索引,那些列上不適合加索引。

4. 主鍵和索引的區別?

1.主鍵時爲了標識數據庫記錄唯一性,且非空,主鍵是一個特殊索引;
2.數據表中只允許有一個主鍵,但是可以有多個索引;
3.使用主鍵數據庫會自動創建主索引,非主鍵也可以創建索引,提高查詢效率;
4.索引可以提高查詢速度,它就相當於字典的目錄,可以通過它很快查詢到想要的結果,而不需要進行全表掃描;
5. 一個表中可以有多個唯一性索引,但只能有一個主鍵 主鍵列不允許空值,而唯一性索引列允許空值

5. 什麼是內存泄漏?

一般指的堆內存泄漏。當應用程序用關鍵字new等創建對象時(實例化對象的時候),就從堆中爲它分配一塊內存(我們所使用的變量是在棧裏面分配一塊),使用完後由於某種原因程序未釋放或無法釋放,造成系統內存的浪費。導致程序運行速度減慢甚至系統崩潰等嚴重後果。

6. 維護數據庫的完整性和一致性,你喜歡用觸發器還是自寫業務邏輯?爲什麼?

首先,儘可能使用約束,如check,主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。
其次是使用觸發器,這種方法可以保證,無論什麼業務系統訪問數據庫都可以保證數據的完整新和一致性。
最後考慮的是自寫業務邏輯,但這樣做麻煩,編程複雜,效率低下。

7. 什麼是事務?

事務就是被綁定在一起作爲一個邏輯工作單元的SQL語句組,如果任何一個語句操作失敗那麼整個操作就被失敗,進而回滾到操作前狀態,或者是上個節點。爲了確保要麼執行,要麼不執行,就可以使用事務。要將一組語句作爲事務考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性。

事務:是數據庫操作的最小工作單元,是作爲單個邏輯工作單元執行的一系列操作;這些操作作爲一個整體一起向系統提交,要麼都執行、要麼都不執行;事務是一組不可再分割的操作集合(工作邏輯單元);
事務的四大特性:

1 、原子性
事務是數據庫的邏輯工作單位,事務中包含的各操作要麼都做,要麼都不做

2 、一致性
(只有一種結果,不是全寫入數據庫,就是全都沒寫入數據庫)
事 務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。因此當數據庫只包含成功事務提交的結果時,就說數據庫處於一致性狀態。如果數據庫系統 運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處於一種不正確的狀態,或者說是 不一致的狀態。

3 、隔離性
一個事務的執行不能其它事務干擾。即一個事務內部的操作及使用的數據對其它併發事務是隔離的,併發執行的各個事務之間不能互相干擾。

4 、持續性
也稱永久性,指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

8. 什麼是鎖?

在所有的DBMS中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中鎖一樣,它可以使某些數據的擁有者,在某段時間內不能使用某些數據或數據結構。當然鎖還分級別的。
這裏舉個例子,你用着筷子就不能用刀子和叉子,你只能拿一個,魚和熊掌不可兼得

9. 什麼叫視圖?

視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查,操作,視圖通常是由一個表或者多個表的行或列的子集,我們可以把某些表連接起來,合成一個新的虛擬表就是視圖。
它使得我們獲取數據更容易,相比多表查詢。

10. 視圖創建和使用語法?

1.首先判斷是否存在 View_EdsProd是視圖名

if exists (select * from sysobjects where name = 'View_EdsProd')
drop view View_EdsProd
Go
  1. 創建視圖 Tab_EdsProd是一個表名
create view View_EdsProd as select * from Tab_EdsProd where Mid>1(條件) go
  1. 使用視圖
select * from View_EdsProd

11. 遊標是什麼?

遊標是SQL 的一種數據訪問機制。可以將遊標簡單的看成是查詢的結果集的一個指針,可以根據需要在結果集上面來回滾動,瀏覽需要的數據。
在創建遊標時,最需要考慮的事情是,“是否有辦法避免使用遊標?” 因爲遊標的效率較差,如果遊標操作的數據超過1萬行,那麼就應該改寫; 如果使用了遊標,就要儘量避免在遊標循環中再進行表連接的操作。

12. 你能向我簡要敘述一下SQL Server 中使用的一些數據庫對象嗎?

表、索引、視圖、存儲過程、觸發器、用戶定義函數、數據庫關係圖、全文索引。

13. NULL是什麼意思?

NULL(空)這個值表示UNKNOWN(未知):它不表示“”(空字符串)。不能把任何值與一個 UNKNOWN值進行比較,都會生產一個NULL值。您必須使用IS NULL操作符。

14. 什麼是索引,有哪些索引,具體怎麼用?

索引是與表或視圖關聯的磁盤上結構,可以加快從表或視圖中檢索行的速度。索引包含由表或視圖中的一列或多列生成的鍵。這些鍵存儲在一個結構(B 樹)中,使 SQL Server 可以快速有效地查找與鍵值關聯的行。
索引分爲聚集索引和非聚集索引。
在數據庫系統中建立索引主要有以下作用:
(1)快速取數據;
(2)保證數據記錄的唯一性;
(3)實現表與表之間的參照完整性;
(4)在使用ORDER by、group by子句進行數據檢索時,利用索引可以減少排序和分組的時間。

15. SQL Server 裏有什麼類型的索引?

在SQL Server裏,它們有兩種形式:聚集索引和非聚集索引。(其實好像還有一個唯一,但這裏不是重點討論的這個)
聚集索引好比字典,我們按照拼音查字,因爲後面的正文就是按照拼音分佈的
按照一定規則排列的目錄稱爲"聚集索引"。
聚集索引在索引的葉級保存數據。每個表格只會有一個聚集索引。(因爲正文只能按照一種格式排列,所以只能有一個)

非聚集索引好比,查字的時候我們按照部首查字法,先找部首,再去檢字部找字,有些檢字部挨着的,但是正文不挨着,正文並不是這種方式排列的。這就是非聚集索引
非聚集索引在索引的葉級有一個行標識符。
每個表格有多個非聚集索引(這裏就因爲我們的排列與正文的排列沒有直接相同,所以我們可以有很多種)。

總結了何時使用聚集索引或非聚集索引。

動作描述                        使用聚集索引                       使用非聚集索引     
   

列經常被分組排序              應                                       應     

返回某範圍內的數據          應                                       不應        

一個或極少不同值           不應                                     不應     

小數目的不同值                應                                       不應     

大數目的不同值              不應                                      應     

頻繁更新的列                 不應                                      應     

外鍵列                            應                                        應     

主鍵列                            應                                        應     

頻繁修改索引列             不應                                       應     

16. 什麼是主鍵?

主鍵是表格裏的(一個或多個)字段,只用來定義表格裏的行;主鍵裏的值總是唯一的,非空。

17. 什麼是外鍵?

外鍵是一個用來建立兩個表格之間關係的約束。這種關係一般都涉及一個表格裏的主鍵字段與另外一個表格(可能是同一個表格)裏的一系列相連的字段。那麼這些相連的字段就是外鍵。

18. 什麼是觸發器?

觸發器是一種專用類型的存儲過程,它被捆綁到SQL Server 的表格或者視圖上。
當對指定的表進行某種特定操作(如:Insert,Delete或Update)時,觸發器產生作用。具體不明白請看第一個

19. SQL Server 有什麼不同類型的觸發器?

有INSTEAD-OF和AFTER兩種觸發器。例如,如果有一個用於TableA的INSTEAD-OF-UPDATE觸發器,同時對這個表格執行更新語句,那麼INSTEAD-OF-UPDATE觸發器裏的代碼會執行,而不是執行更新語句則不會執行操作。AFTER觸發器要在DML語句在數據庫裏使用之後才執行。這些類型的觸發器對於監視發生在數據庫表格裏的數據變化十分好用。
(INSTEAD-OF是先運行觸發器,觸發器如果不讓運行sql就不能運行,AFTER是先對錶進行操作[增刪改],然後再去運行觸發器)

20. 您如何確保一個帶有名爲Fld1字段的TableB表格裏只具有Fld1字段裏的那些值,而這些值同時在名爲TableA的表格的Fld1字段裏?

第一個答案是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格裏的字段只允許有已經在另一表格里的某個字段裏定義了的值。通常是另外一個表格的主鍵。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設置與維護,而且性能一般都很糟糕。

21. 對一個投入使用的在線事務處理表格有過多索引需要有什麼樣的性能考慮?

對一個表格的索引越多,數據庫引擎用來更新、插入或者刪除數據所需要的時間就越多,因爲在數據操控發生的時候索引也必須要維護。

22. 你可以用什麼來確保表格裏的字段只接受特定範圍裏的值?

可以使用Check約束,它在數據庫表格裏定義,用來限制輸入該列的值。
觸發器也可以被用來限制數據庫表格裏的字段能夠接受的值,但是這種辦法要求觸發器在表格裏被定義,可能會在某些情況下影響到性能。

23. 概述存儲過程及其優缺點。

存儲過程是一個預編譯的sql語句 ,編譯後可多次使用
優勢:響應時間上來說有優勢,可以給我們帶來運行效率提高的好處,且使用存儲過程的系統更加穩定
缺點:維護性較差(可移植性差(就是換數據庫SQL server換mysql等等),更改輸入的參數或者返回值繁瑣),相對於簡單sql,存儲過程並沒有什麼優勢,並且在進行調試時比較困難

24. 什麼是相關子查詢?如何使用這些查詢?

相關子查詢是一種包含子查詢的特殊類型的查詢。查詢裏包含的子查詢會請求外部查詢的值,從而形成一個類似於循環的狀況。
多表連接查詢的效率要高於相關子查詢,因爲子查詢走的是笛卡爾積
多表連接查詢可能有多條記錄,子查詢只有一條記錄,如果需要唯一的列,最好走子查詢

25. 什麼是SQL注入式攻擊?

所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。比如:攻擊者在用戶名字和密碼輸入框中輸入"‘或’1’='1"之類的內容。最後得到的SQL命令可能變成:SELECT * from Users WHERE login = ‘’ or ‘1’=‘1’ AND password = ‘’ or ‘1’=‘1’。這時,已經不能真正驗證用戶身份,所以系統會錯誤地授權給攻擊者。

26. 如何防範SQL注入式攻擊?

只要在利用表單輸入的內容構造SQL命令之前,把所有輸入內容過濾一番就可以了。過濾輸入內容可以按多種方式進行。
⑴ 對於動態構造SQL查詢的場合,可以使用下面的技術:
第一:替換單引號,即把所有單獨出現的單引號改成兩個單引號,防止攻擊者修改SQL命令的含義。
第二:刪除用戶輸入內容中的所有連字符。
第三:對於用來執行查詢的數據庫帳戶,限制其權限。
⑵ 用存儲過程來執行所有的查詢(可以把輸入的當作參數帶入存儲過程,避免直接使用sql,可先進行過濾)。
⑶ 限制表單或查詢字符串輸入的長度。
⑷ 檢查用戶輸入的合法性,確信輸入的內容只包含合法的數據。
⑸ 將用戶登錄名稱、密碼等數據加密保存。
⑹ 檢查提取數據的查詢所返回的記錄數量。

爲了減少注入式攻擊對於SQL Server數據庫的不良影響,在SQLServer數據庫專門設計了相對安全的SQL參數。在數據庫設計過程中,工程師要儘量採用這些參數來杜絕惡意的SQL注入式攻擊。
  如在SQL Server數據庫中提供了Parameters集合。這個集合提供了類型檢查和長度驗證的功能。如果管理員採用了Parameters這個集合的話,則用戶輸入的內容將被視爲字符值而不是可執行代碼。即使用戶輸入的內容中含有可執行代碼,則數據庫也會過濾掉。因爲此時數據庫只把它當作普通的字符來處理。使用Parameters集合的另外一個優點是可以強制執行類型和長度檢查,範圍以外的值將觸發異常。如果用戶輸入的值不符合指定的類型與長度約束,就會發生異常,並報告給管理員。如上面這個案例中,如果員工編號定義的數據類型爲字符串型,長度爲10個字符。而用戶輸入的內容雖然也是字符類型的數據,但是其長度達到了20個字符。則此時就會引發異常,因爲用戶輸入的內容長度超過了數據庫字段長度的限制。

設置陷阱賬號
設置兩個帳號,一個是普通管理員帳號,一個是防注入的帳號。將防注入的賬號設置的很象管理員,如 admin,以製造假象吸引軟件的檢測,而密碼是大於千字以上的中文字符,迫使軟件分析賬號的時候進入全負荷狀態甚至資源耗盡而死機。

27. 默認的系統數據庫有哪些?

1)master數據庫(主);2)tempdb數據庫(臨時);3)model 數據庫(模板);4)msdb數據庫(計劃任務);

28. 默認創建一個數據庫,會生成哪些文件?

1)主文件(.mdf),2)日誌文件(.ldf),無次要文件(.ndf)。

29. 創建數據庫時,能不能把數據文件和日誌文件分開?

可以分開,起到優化作用。把數據文件放到高速讀寫區,把日誌文件放到低速讀寫區。

30. 什麼是索引覆蓋(Index Covering)查詢?

索引覆蓋(Index Covering)查詢是指數據可以只通過索引獲取,而不用接觸表。

31. 存儲過程和觸發器的區別?

觸發器與存儲過程的主要區別在於觸發器的運行方式。存儲過程必須有用戶、應用程序或者觸發器來顯示的調用並執行,而觸發器是當特定時間出現的時候,自動執行或者激活的,與連接用數據庫中的用戶、或者應用程序無關

32. 存儲過程和函數的區別?

存儲過程是用戶定義的一系列SQL語句的集合,而函數通常是數據庫已定義的方法,具體區別如下:
1.對於存儲過程來說可以返回參數,而函數只能返回值或者表對象.
2.函數必須有返回值,存儲過程可有可無
3.存儲過程一般是作爲一個獨立的部分來執行,而函數可以作爲查詢語句的一部分來調用.

33. 聚集索引和非聚集索引區別

聚集索引,數據按索引順序存儲,中子結點存儲真實的物理數據
非聚集索引,存儲指向真正數據行的指針

34. 索引的優缺點,什麼時候使用索引,什麼時候不能使用索引?

索引最大的好處是提高查詢速度,
缺點是更新數據時效率低,因爲要同時更新索引
對數據進行頻繁查詢進建立索引,如果要頻繁更改數據不建議使用索引。

35. 數據庫的優化

1.創建適當的索引
2.對sql語句優化
使用exists或not exists代替in或not in
使用存儲過程
用union替換or(適用於索引列)
where代替having,having 檢索完所有記錄,才進行過濾
使用select top或set rowcount來限制操作的行
避免嵌套查詢
對多個字段進行等值查詢時,聯合索引

36. 數據庫的主從複製

默認異步複製,容易造成主庫數據和從庫不一致
一個數據庫爲Master,一個數據庫爲slave,通過Binlog日誌來實現
slave兩個線程,一個線程去讀master binlog日誌,寫到自己的中繼日誌
一個線程解析日誌,執行sql
master啓動一個線程,給slave傳遞binlog日誌
半同步複製
只有把master發送的binlog日誌寫到slave的中繼日誌,這時主庫才返回操作完成的反饋,性能有一定降低
並行複製
slave 多個線程去請求binlog日誌

37. long_query怎麼解決

設置參數,開啓慢日誌功能,得到耗時超過一定時間的sql
(1)slow_query_log 這句是開啓記錄慢查詢功能,slow_query_log=0關閉;slow_query_log=1開啓(這個1可以不寫)
(2)long_query_time = 1 這句是記錄超過1秒的SQL執行語句

38. varchar和char的使用場景

用來存儲字符
varchar適用字符長度經常變的
char適用字符長度固定的

39. 數據庫連接池的作用

維護一定數量的連接,減少創建連接的時間
更快的響應時間
統一的管理

40. 分庫分表,主從複製,讀寫分離

讀寫分離,讀從庫,寫主庫
spring配置兩個數據庫,通過AOP(面向切面編程),在寫或讀方法前面進行判斷得到動態切換數據源。

41. 數據庫三範式

1NF 屬性不可分
2NF 非主鍵屬性,完全依賴於主鍵屬性
3NF 非主鍵屬性無傳遞依賴

42. 數據庫中join的inner join, outer join, cross join

以A,B兩張表爲例 A left join B
選出A的所有記錄,B表中沒有的以null 代替
right join 同理
inner join
A,B的所有記錄都選出,沒有的記錄以null代替
cross join (笛卡爾積)
A中的每一條記錄和B中的每一條記錄生成一條記錄
例如A中有4條,B中有4條,cross join 就有16條記錄

43. 有哪些鎖,select時怎麼加排它鎖

樂觀鎖,悲觀鎖,排它鎖,共享鎖,更新鎖,表鎖,行級鎖。
樂觀鎖:樂觀鎖不會鎖住任何東西,也就是說,它不依賴數據庫的事務機制,樂觀鎖完全是應用系統層面的東西。
悲觀鎖:悲觀鎖是指假設併發更新衝突會發生,所以不管衝突是否真的發生,都會使用鎖機制
排它鎖: 可以防止併發事務對資源進行訪問。
共享鎖: 允許併發事務在封閉式併發控制下讀取資源。
更新鎖:是共享鎖和排他鎖的結合。
行級鎖:單獨的一行記錄加鎖
表鎖:鎖住整個表,可以同時讀,寫不行
在Select語句中加for update是給相應的行增加排他鎖。Select出來的數據別的事務不能讀取,不能修改、不能刪除。

44. 死鎖怎麼解決

找到進程號,kill 進程
產生死鎖的原因:
一是系統提供的資源數量有限,不能滿足每個進程的使用;二是多道程序運行時,進程推進順序不合理。
產生死鎖的必要條件是:
1、互斥條件;
2、不可剝奪條件(不可搶佔);
3、部分分配;
4、循環等待。
根據產生死鎖的四個必要條件,只要使其中之一不能成立,死鎖就不會出現。爲此,可以採取下列三種預防措施:
1、採用資源靜態分配策略,破壞"部分分配"條件;
2、允許進程剝奪使用其他進程佔有的資源,從而破壞"不可剝奪"條件;
3、採用資源有序分配法,破壞"環路"條件。
解除死鎖常常採用下面兩種方法:1、資源剝奪法;2、撤消進程法

45. 最左匹配原則

最左匹配原則是針對索引的
舉例來說:兩個字段(name,age)建立聯合索引,如果where age=12這樣的話,是沒有利用到索引的,這裏我們可以簡單的理解爲先是對name字段的值排序,然後對age的數據排序,如果直接查age的話,這時就沒有利用到索引了,查詢條件where name=’xxx’ and age=xx 這時的話,就利用到索引了。因爲創建複合索引的規則是首先會對複合索引的最左邊的,也就是第一個name字段的數據進行排序,在第一個字段的排序基礎上,然後再對後面第二個的age字段進行排序。其實就相當於實現了類似 order by name age這樣一種排序規則。所以:第一個name字段是絕對有序的,而第二字段就是無序的了。所以通常情況下,直接使用第二個age字段進行條件判斷是用不到索引的,當然,可能會出現上面的使用index類型的索引。這就是所謂的爲什麼要強調最左匹配原則的原因。

46. SqlServer是一種大型數據庫,他的存儲容量只受存儲介質的限制,請問它是通過什麼方式實現這種無限容量機制的。

它的所有數據都存儲在數據文件中(*.dbf),所以只要文件夠大,SQLServer的存儲容量是可以擴大的.
SQL Server 數據庫有三種類型的文件:
主要數據文件
主要數據文件是數據庫的起點,指向數據庫中文件的其它部分。每個數據庫都有一個主要數據文件。主要數據文件的推薦文件擴展名是 .mdf。
次要數據文件
次要數據文件包含除主要數據文件外的所有數據文件。有些數據庫可能沒有次要數據文件,而有些數據庫則有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。
日誌文件
日誌文件包含恢復數據庫所需的所有日誌信息。每個數據庫必須至少有一個日誌文件,但可以不止一個。日誌文件的推薦文件擴展名是 .ldf。

47. sqlserver數據庫中常用的聚合函數有哪些?

Max(),Avg(),Count(),Min(),Sum()。
中文:最大值,平均值,數據條數,最小值,總和。

48. 數據庫主鍵、外鍵、約束、索引的作用是什麼?有幾種連表查詢方式?

主鍵、外鍵及約束的作用:保證數據的完整性
索引的作用:索引是一個數據結構,用來快速訪問數據庫表格或者視圖裏的數據,加快數據庫的搜索引擎對數據的檢索效率
方式:左連接、右連接、內連接、自連接

49. 除了sqlserver存儲過程實現分頁,還有什麼實現方法?

利用select top 和select not in進行分頁
利用select top 和 select max(列)
利用Row_number()給數據行加上索引
利用臨時表及Row_number
使用Offset/Fetch Next實現分頁(鏈接)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章