關聯式資料庫SQL面試排名前100道問答題

banq發表於2021-12-30
RDBMS 是迄今為止最常用的資料庫之一,因此SQL 技能在大多數工作角色中必不可少。在這篇 SQL 面試問題文章中,我將向您介紹有關 SQL(結構化查詢語言)的最常見問題。本文是您學習與 SQL、Oracle、MS SQL Server 和 MySQL 資料庫相關的所有概念的完美指南。我們的 65 大 SQL 面試問題文章是一站式資源,您可以從中提高面試準備。

讓我們開始吧!

 

Q1:SQL 和 MySQL 有什麼區別?

SQL是一種標準語言,代表了基於英語的結構化查詢語言SQL是關係型資料庫的核心,用於訪問和管理資料庫

MySQL是一個資料庫管理系統。MySQL 是一個 RDMS(關聯式資料庫管理系統),如 SQL Server、Informix 等。

 

Q2:SQL 有哪些不同的子集?

  • 資料定義語言 (DDL) – 它允許您對資料庫執行各種操作,例如 CREATE、ALTER 和 DELETE 物件。
  • 資料操作語言 (DML) – 它允許您訪問和運算元據。它可以幫助您從資料庫中插入、更新、刪除和檢索資料。
  • 資料控制語言(DCL)——它允許您控制對資料庫的訪問。示例 – 授予、撤銷訪問許可權。

 

Q3:你說的 DBMS 是什麼意思?它有哪些不同的型別?

一個 資料庫管理系統 (DBMS)是一個軟體應用程式與使用者,應用程式和資料庫本身互動,以捕獲和分析資料。資料庫是結構化的資料集合。

DBMS 允許使用者與資料庫互動。 儲存在資料庫中的資料可以修改、檢索和刪除,並且可以是任何型別,如字串、數字、影像等。

有兩種型別的 DBMS:

  • 關聯式資料庫管理系統:資料儲存在關係(表)中。示例 – MySQL。
  • 非關係型資料庫管理系統:沒有關係、元組和屬性的概念。示例 – MongoDB

 

Q4:什麼是關係型資料庫?它與 DBMS 有何不同?

關聯式資料庫管理系統 (RDBMS) 是一組應用程式和功能,允許 IT 專業人員和其他人開發、編輯、管理關聯式資料庫並與它們互動。大多數商業關聯式資料庫管理系統使用結構化查詢語言 (SQL) 來訪問以表格形式儲存的資料庫。RDBMS 是全球企業中使用最廣泛的資料庫系統。它提供了一種穩定的方式來儲存和檢索大量資料。

通常,資料庫儲存可以在其他應用程式中訪問和使用的資料集合。資料庫平臺的開發、管理和使用都由資料庫管理系統支援。

關聯式資料庫管理系統 (RDBMS) 是一種資料庫管理系統 (DBMS),它將資料儲存在連結相關資料元件的基於行的表結構中。RDBMS 包含確保資料安全性、準確性、完整性和一致性的功能。這與資料庫管理系統使用的檔案儲存不同。

以下是資料庫管理系統和關聯式資料庫管理系統之間的一些進一步區別:

允許使用系統的使用者數一個 DBMS 一次只能處理一個使用者,而一個 RDBMS 可以處理多個使用者。硬體和軟體規範與 RDBMS 相比,DBMS 需要的軟體和硬體更少。資訊量RDBMS 可以處理任意數量的資料,從微小到巨大,而 DBMS 僅限於少量。資料庫Data的結構以分層格式儲存在 DBMS 中,而 RDBMS 使用表頭作為列名和行儲存相關值。ACID 原則的實現DBMS 不使用原子性、一致性、隔離性和永續性 (ACID) 概念進行資料儲存。另一方面,RDBMS 使用 ACID 模型來組織其資料並確保一致性。分散式資料庫 DBMS 不會為分散式資料庫提供完整的支援,而 RDBMS 會。受管理DBMS 程式專注於儲存存在於計算機網路和系統硬碟中的資料庫,而 RDBMS 幫助管理其合併的資料表之間的關係。支援資料庫規範化 RDBMS 可以規範化,但 DBMS 不能規範化。

 

Q5. 什麼是自聯接?

自聯接是一種可用於連線兩個表的聯接。因此,它是一元關係。表的每一行都附加到自身以及自聯接中同一表的所有其他行。因此,自聯接主要用於組合和比較同一資料庫表中的行。

 

Q6. 什麼是 SELECT 語句?

SELECT 命令從一個或多個資料庫表或檢視中獲取零個或多個行。在大多數應用程式中,最常用的資料操作語言 (DML) 命令是 SELECT。SELECT 查詢定義了一個結果集,而不是如何計算它,因為 SQL 是一種宣告式程式語言。

 

Q7. 在 SQL 中與 SELECT 查詢一起使用的一些常用子句有哪些?

以下是一些與 SELECT 查詢結合使用的常見 SQL 子句:

WHERE子句:在 SQL 中,WHERE 子句用於根據特定條件過濾所需的記錄。ORDER BY子句:SQL 中的 ORDER BY 子句用於根據指定的欄位 (DESC) 按升序 (ASC) 或降序 (DESC) 對資料進行排序。GROUP BY子句:SQL 中的 GROUP BY 子句用於對具有相同資料的條目進行分組,並且可以與聚合方法一起使用以獲得彙總的資料庫結果。SQL 中的HAVING子句結合 GROUP BY 子句用於過濾記錄。它與 WHERE 不同,因為 WHERE 子句不能過濾聚合記錄。

 

Q8. 什麼是 UNION、MINUS 和 INTERSECT 命令?

UNION 運算子用於合併兩個表的結果,同時刪除重複條目。MINUS 運算子用於從第一個查詢而不是從第二個查詢返回行。INTERSECT 運算子用於將兩個查詢的結果合併為一行。在執行上述任一 SQL 語句之前,必須滿足某些要求——在子句中,每個 SELECT 查詢必須具有相同數量的列。列中的資料型別也必須具有可比性。在每個 SELECT 語句中,列的順序必須相同。

 

Q9. 什麼是游標?如何使用游標?

在任何變數宣告之後,宣告一個遊標。SELECT 語句必須始終與遊標定義相結合。

要啟動結果集,請將游標移到它上面。在從結果集中獲取行之前,必須執行 OPEN 語句。

要檢索並轉到結果集中的下一行,請使用 FETCH 命令。

要禁用游標,請使用 CLOSE 命令。

最後,使用 DEALLOCATE 命令刪除遊標定義並釋放與其連線的資源。

 

Q10。列出 SQL 中不同型別的關係。

資料庫中有不同型別的關係:

一對一- 這是兩個表之間的連線,其中一個表中的每條記錄對應於另一個表中的最大記錄。

一對多和多對一- 這是最常見的連線,其中一個表中的記錄連結到另一個表中的多個記錄。

多對多– 這用於定義在每一側都需要多個例項的關係。

自引用關係——當一個表必須宣告與自身的連線時,這是使用的方法。

 

Q12。什麼是 OLTP?

OLTP,或線上事務處理,允許大量的人實時執行大量的資料庫事務,通常是通過網際網路。當資料庫中的資料被更改、插入、刪除或查詢時,就會發生資料庫事務。

 

Q13. OLTP 和 OLAP 有什麼區別?

OLTP 代表線上事務處理,而 OLAP 代表線上分析處理。OLTP 是一個線上資料庫修改系統,而OLAP 是一個線上資料庫查詢響應系統。

 

Q14。如何建立與另一個表具有相同結構的空表?

建立空表:使用 INTO 運算子將一個表的記錄提取到新表中,同時將 WHERE 子句對所有條目設定為 false,可以建立具有相同結構的空表。結果,SQL 建立了一個具有重複結構的新表來接受提取的條目,但由於 WHERE 子句處於活動狀態,因此沒有任何內容儲存到新表中。

 

Q15. 什麼是PostgreSQL?

1986 年,由電腦科學教授 Michael Stonebraker 領導的團隊以 Postgres 的名義建立了 PostgreSQL。它旨在通過確保系統中的資料完整性和容錯能力來幫助開發人員開發企業級應用程式。PostgreSQL 是一個企業級、多功能、彈性、開源、物件關係型資料庫管理系統,支援可變工作負載和併發使用者。國際開發者社群一直在支援它。PostgreSQL 由於其容錯特性而在開發人員中獲得了極大的吸引力。這是一個非常可靠的資料庫管理系統,得益於其高水平的彈性、完整性和準確性,社群工作超過了 20 年。許多線上、移動、地理空間和分析應用程式使用 PostgreSQL 作為其主要資料儲存或資料倉儲。

 

Q16. 什麼是 SQL 註釋?

SQL 註釋用於闡明 SQL 語句的各個部分並防止執行 SQL 語句。註釋在許多程式語言中都非常重要。Microsoft Access 資料庫不支援註釋。因此,在 Mozilla Firefox 和 Microsoft Edge 的示例中使用了 Microsoft Access 資料庫。單行註釋:以兩個連續的連字元 (-) 開頭。多行註釋:以 /* 開頭,以 */ 結尾。

 

Q17. NVL() 函式的用途是什麼?

您可以使用 NVL 函式將空值替換為預設值。如果第一個引數為空,則該函式返回第二個引數的值。如果第一個引數不是 null,則將其保留。

這個函式用在 Oracle 中,而不是 SQL 和 MySQL 中。MySQL 有 IFNULL() 和 SQL Server 有 ISNULL() 函式,而不是 NVL() 函式。

讓我們轉到此 SQL 面試問題中的下一個問題。

 

Q18. 解釋字元操作函式?解釋它在 SQL 中的不同型別。

使用字元操作例程更改、提取和編輯字串。該函式將對輸入字串執行其操作,並在向其中提供一個或多個字元和單詞時返回結果。

SQL中的字元操作函式如下:

  • A) CONCAT(連線兩個或多個值):此函式用於將兩個或多個值連線在一起。第二個字串總是附加到第一個字串的末尾。
  • B) SUBSTR:該函式返回從給定起點到給定終點的一段字串。
  • C) LENGTH:該函式以數字形式返回字串的長度,包括空格。
  • D) INSTR:該函式計算字串中字元或單詞的精確數字位置。
  • E) LPAD:對於右對齊的值,它返回左側字元值的填充。
  • F) RPAD:對於左對齊的值,它返回右側字元值的填充。
  • G) TRIM:該函式從字串的開頭、結尾或兩端刪除所有定義的字元。它還減少了浪費的空間量。
  • H) REPLACE:該函式用指定的其他字串值替換單詞或字串(子字串)的一部分的所有例項。

 

Q20。RANK() 和 DENSE_RANK() 函式之間有什麼區別?

結果集中的 RANK() 函式定義了有序分割槽中每一行的排名。如果兩行具有相同的排名,則排名中的下一個數字將是前一個排名加上一些重複項。例如,如果我們在第 4 位有 3 條記錄,則指示的下一個級別是 7。

DENSE_RANK() 函式根據提供的列值為分割槽內的每一行分配一個不同的排名,沒有間隔。它始終表示按優先順序排列的排名。如果兩行具有相同的等級,則此函式將為它們分配相同的等級,下一個等級是下一個連續數字。例如,如果我們在第 4 級有 3 條記錄,則指示的下一個級別是 5。

 

Q22. 什麼是 UNIQUE 約束?

UNIQUE 約束可防止同一列中的相同值出現在兩條記錄中。UNIQUE 約束保證列中的每個值都是唯一的。

 

Q23. 什麼是自聯接Self-Join?

自聯接是一種可用於連線兩個表的聯接。因此,它是一元關係。表的每一行都附加到自身以及自聯接中同一表的所有其他行。因此,自聯接主要用於組合和比較同一資料庫表中的行。

 

Q24. 什麼是 SELECT 語句?

SELECT 命令從一個或多個資料庫表或檢視中獲取零個或多個行。在大多數應用程式中,最常用的資料操作語言 (DML) 命令是 SELECT。SELECT 查詢定義了一個結果集,而不是如何計算它,因為 SQL 是一種宣告式程式語言。

 

Q25. 在 SQL 中與 SELECT 查詢一起使用的一些常用子句有哪些?

以下是一些與 SELECT 查詢結合使用的常見 SQL 子句:

WHERE 子句:在 SQL 中,WHERE 子句用於根據特定條件過濾所需的記錄。ORDER BY 子句:SQL 中的 ORDER BY 子句用於根據指定的欄位 (DESC) 按升序 (ASC) 或降序 (DESC) 對資料進行排序。GROUP BY 子句:SQL 中的 GROUP BY 子句用於對具有相同資料的條目進行分組,並且可以與聚合方法一起使用以獲得彙總的資料庫結果。SQL 中的 HAVING 子句結合 GROUP BY 子句用於過濾記錄。它與 WHERE 不同,因為 WHERE 子句不能過濾聚合記錄。

 

Q26. 什麼是 UNION、MINUS 和 INTERSECT 命令?

UNION 運算子用於合併兩個表的結果,同時刪除重複條目。

MINUS 運算子用於從第一個查詢而不是從第二個查詢返回行。

INTERSECT 運算子用於將兩個查詢的結果合併為一行。在執行上述任一 SQL 語句之前,必須滿足某些要求——

在子句中,每個 SELECT 查詢必須具有相同數量的列。

列中的資料型別也必須具有可比性。

在每個 SELECT 語句中,列的順序必須相同。

 

Q27. 什麼是Cursor游標?如何使用游標?

在任何變數宣告之後,宣告一個遊標。SELECT 語句必須始終與Cursor遊標定義相結合。

要啟動結果集,請將游標移到它上面。在從結果集中獲取行之前,必須執行 OPEN 語句。

要檢索並轉到結果集中的下一行,請使用 FETCH 命令。

要禁用游標,請使用 CLOSE 命令。

最後,使用 DEALLOCATE 命令刪除遊標定義並釋放與其連線的資源。

 

Q28. 列出 SQL 中不同型別的關係。

資料庫中有不同型別的關係:一對一 - 這是兩個表之間的連線,其中一個表中的每條記錄對應於另一個表中的最大記錄。一對多和多對一 - 這是最常見的連線,其中一個表中的記錄連結到另一個表中的多個記錄。多對多 – 這用於定義在每一側都需要多個例項的關係。自引用關係——當一個表必須宣告與自身的連線時,這是使用的方法。

 

Q29. 什麼是 SQL 示例?

SQL 是一種資料庫查詢語言,允許您編輯、刪除和請求資料庫中的資料。以下語句是 SQL 語句的幾個示例:

  • Select
  • 插入
  • 更新
  • 刪除
  • 建立資料庫
  • 更改資料庫

 

Q30. 什麼是基本的 SQL 技能?

SQL 技能可幫助資料分析師從關聯式資料庫中建立、維護和檢索資料,將資料分為列和行。它還使使用者能夠有效地檢索、更新、操作、插入和更改資料。

SQL 專家應該具備的最基本的能力是:

  1. 資料庫管理
  2. 構建資料庫
  3. 建立 SQL 子句和語句
  4. SQL 系統技能,如 MYSQL、PostgreSQL
  5. PHP 專業知識很有用。
  6. 分析 SQL 資料
  7. 使用 WAMP 和 SQL 建立資料庫
  8. OLAP 技能

 

Q35. NoSQL 與 SQL

綜上所述,SQL 和 NoSQL 的五個主要區別如下:

關聯式資料庫是 SQL,而非關聯式資料庫是 NoSQL。

SQL 資料庫具有指定的架構並採用結構化查詢語言。對於非結構化資料,NoSQL 資料庫使用動態模式。

SQL 資料庫垂直擴充套件,但 NoSQL 資料庫水平擴充套件。

NoSQL 資料庫是文件、鍵值、圖形或寬列儲存,而 SQL 資料庫是基於表的。

SQL 資料庫擅長處理多行事務,而 NoSQL 擅長處理文件和 JSON 等非結構化資料。

 

Q40。什麼是資料庫黑盒測試?

黑盒測試是一種軟體測試方法,它涉及在不知道內部程式碼結構、實現細節或內部路由的情況下測試軟體應用程式的功能。黑盒測試是一種軟體測試,專注於軟體應用程式的輸入和輸出,完全由軟體需求和規範驅動。行為測試是它的另一個名稱。Q41。有哪些不同型別的 SQL 沙箱?

資料庫培訓

SQL Sandbox 是 SQL Server 中的一個安全環境,可以在其中執行不受信任的程式。共有三種不同型別的 SQL 沙箱:

安全訪問沙盒:在這種環境中,使用者可以執行 SQL 活動,如構建儲存過程、觸發器等,但他們無法訪問記憶體或建立檔案。

外部訪問沙箱:使用者可以訪問檔案而不能改變記憶體分配。

不安全訪問沙箱:這包含允許使用者訪問記憶體的不可信程式碼。

 

Q45. SQL 中的聯接Join是什麼?

JOIN 子句用於根據它們之間的相關列組合來自兩個或多個表的行。它用於合併兩個表或從那裡檢索資料。有 4 種型別的連線,您可以參考以下內容:

關聯式資料庫SQL面試排名前100道問答題

  • 內連線:SQL中的內連線是最常見的連線型別。它用於返回滿足連線條件的多個表中的所有行。

  • 左聯接: SQL 中的左聯接用於返回左表中的所有行,但僅返回右表中滿足聯接條件的匹配行。
  • 右聯接: SQL 中的右聯接用於返回右表中的所有行,但僅返回左表中滿足聯接條件的匹配行。
  • 全聯接:全聯接 在任何表中存在匹配時返回所有記錄。因此,它返回左側表中的所有行和右側表中的所有行。

 

Q46. SQL 中的 CHAR 和 VARCHAR2 資料型別有什麼區別?

Char 和 Varchar2 都用於字元資料型別,但 varchar2 用於可變長度的字串,而 Char 用於固定長度的字串。例如,char(10) 只能儲存 10 個字元,並且不能儲存任何其他長度的字串,而 varchar2(10) 可以儲存任何長度,即在這個變數中 6,8,2。

 

Q47. 什麼是主鍵?

關聯式資料庫SQL面試排名前100道問答題

SQL主鍵是一列(或列的集合)或一組列的唯一標識表中的每一行。

  • 唯一標識表中的單行
  • 不允許空值

示例 - 在 Student 表中,Stu_ID 是主鍵。

 

Q48. 什麼是約束?

SQL中的約束用於指定表的資料型別的限制。它可以在建立或更改表語句時指定。約束的樣本是:

  • 非空
  • 檢視
  • 預設
  • 獨特的
  • 首要的關鍵
  • 外來鍵

 

Q50。什麼是唯一鍵?

  • 唯一標識表中的單行。
  • 每個表允許多個值。
  • 允許空值。

 

Q51。SQL中的外來鍵是什麼?

  • 外來鍵通過強制兩個表中的資料之間的連結來保持參照完整性。
  • 子表中的外來鍵引用父表中的主鍵。
  • 該外來鍵約束防止行動將破壞孩子和父表之間的連結。

 

Q52。你說的資料完整性是什麼意思?

資料完整性定義了儲存在資料庫中的資料的準確性和一致性。它還定義了完整性約束,以便在資料輸入應用程式或資料庫時對資料實施業務規則。

 

Q53. SQL中的聚集clustered索引和非聚集索引有什麼區別?

SQL中聚集索引和非聚集索引的區別是:

  1. 聚集索引用於從資料庫中輕鬆檢索資料並且速度更快,而從非聚集索引讀取相對較慢。
  2. 聚集索引改變了記錄在資料庫中的儲存方式,因為它通過設定為聚集索引的列對行進行排序,而在非聚集索引中,它不會改變它的儲存方式,但它會在一個單獨的物件中建立一個單獨的物件搜尋後指向原始錶行的表。
  3. 一張表只能有一個聚集索引,而它可以有多個非聚集索引。

 

Q54. 寫一個 SQL 查詢來顯示當前日期?

在 SQL 中,有一個名為GetDate()的內建函式,它有助於返回當前時間戳/日期。

 

Q55. 你對查詢優化的理解是什麼?

確定具有最低估計成本的評估查詢計劃的階段稱為查詢優化。

查詢優化的優點如下:

  • 輸出提供更快
  • 可以在更短的時間內執行更多的查詢
  • 降低時間和空間複雜度

 

Q56. 非規範化是什麼意思?

非規範化是指一種用於從資料庫的較高到較低形式訪問資料的技術。它可以幫助資料庫管理員提高整個基礎架構的效能,因為它在表中引入了冗餘。它通過合併將來自不同表的資料合併到單個表中的資料庫查詢來將冗餘資料新增到表中。

 

Q57. 什麼是實體和關係?

實體:現實世界中的人、地點或事物,其資料可以儲存在資料庫中。表儲存表示一種實體的資料。例如 – 銀行資料庫有一個客戶表來儲存客戶資訊。客戶表將此資訊儲存為每個客戶的一組屬性(表中的列)。

關係:相互關聯的實體之間的關係或連結。例如 – 客戶名稱與客戶帳號和聯絡資訊相關,它們可能在同一個表中。單獨的表(例如,客戶到帳戶)之間也可能存在關係。

讓我們轉到此 SQL 面試問題中的下一個問題。

 

Q58. 什麼是索引?

索引是指允許更快地從表中檢索記錄的效能調整方法。索引為每個值建立一個條目,因此檢索資料會更快。

 

Q59 . 解釋 SQL 中不同型別的索引。

SQL中的索引分為三種型別

唯一索引:

如果列是唯一索引的,則此索引不允許欄位具有重複值。如果定義了主鍵,則可以自動應用唯一索引。

聚集索引:

該索引對錶的物理順序進行重新排序,並根據鍵值進行搜尋。每個表只能有一個聚集索引。

非聚集索引:

非聚集索引不會改變表的物理順序並維護資料的邏輯順序。每個表可以有許多非聚集索引。

 

Q60。什麼是歸一化,它的優點是什麼?

SQL中的規範化是組織資料以避免重複和冗餘的過程。一些優點是:

  • 更好的資料庫組織
  • 具有較小行的更多表
  • 高效的資料訪問
  • 更大的查詢靈活性
  • 快速查詢資料
  • 更容易實施安全
  • 允許輕鬆修改
  • 減少冗餘和重複資料
  • 更緊湊的資料庫
  • 確保修改後資料一致

 

Q62. 解釋不同型別的歸一化。

有許多連續的標準化級別。這些被稱為正規化。每個連續的正規化都依賴於前一個正規化。前三個正規化通常就足夠了。

在資料庫表中使用正規化來刪除或減少重複。以下是多種形式:

第一正規化:當關系中的每個屬性都是單值屬性時,稱其為第一正規化。當關系具有複合或多值屬性時,第一正規化被破壞。

第二正規化:

如果關係滿足第一正規化的要求並且不包含任何部分依賴關係,則該關係是第二正規化。在 2NF 中,關係沒有部分依賴,這意味著它沒有依賴於任何表候選鍵的任何合適子集的非主要屬性。通常,可以通過設定單列主鍵來解決問題。

第三正規化:如果一個關係滿足第二正規化的要求,並且不存在傳遞依賴,則稱其為第三正規化。

 

Q63. 什麼是 OLTP?

OLTP,或線上事務處理,允許大量的人實時執行大量的資料庫事務,通常是通過網際網路。當資料庫中的資料被更改、插入、刪除或查詢時,就會發生資料庫事務。

OLTP 和 OLAP 有什麼區別?

OLTP 代表線上事務處理,而 OLAP 代表線上分析處理。OLTP 是一個線上資料庫修改系統,而OLAP 是一個線上資料庫查詢響應系統。

 

Q65. 什麼是PostgreSQL?

1986 年,由電腦科學教授 Michael Stonebraker 領導的團隊以 Postgres 的名義建立了 PostgreSQL。它旨在通過確保系統中的資料完整性和容錯能力來幫助開發人員開發企業級應用程式。PostgreSQL 是一個企業級、多功能、彈性、開源、物件關係型資料庫管理系統,支援可變工作負載和併發使用者。國際開發者社群一直在支援它。PostgreSQL 由於其容錯特性而在開發人員中獲得了極大的吸引力。這是一個非常可靠的資料庫管理系統,得益於其高水平的彈性、完整性和準確性,社群工作超過了 20 年。許多線上、移動、地理空間和分析應用程式使用 PostgreSQL 作為其主要資料儲存或資料倉儲。

 

Q66. 什麼是 SQL 註釋?

SQL 註釋用於闡明 SQL 語句的各個部分並防止執行 SQL 語句。註釋在許多程式語言中都非常重要。Microsoft Access 資料庫不支援註釋。因此,在 Mozilla Firefox 和 Microsoft Edge 的示例中使用了 Microsoft Access 資料庫。單行註釋:以兩個連續的連字元 (-) 開頭。多行註釋:以 /* 開頭,以 */ 結尾。

讓我們轉到此 SQL 面試問題中的下一個問題。

 

Q67. RANK() 和 DENSE_RANK() 函式之間有什麼區別?

結果集中的 RANK() 函式定義了有序分割槽中每一行的排名。如果兩行具有相同的排名,則排名中的下一個數字將是前一個排名加上一些重複項。例如,如果我們在第 4 位有 3 條記錄,則指示的下一個級別是 7。

DENSE_RANK() 函式根據提供的列值為分割槽內的每一行分配一個不同的排名,沒有間隔。它始終表示按優先順序排列的排名。如果兩行具有相同的等級,則此函式將為它們分配相同的等級,下一個等級是下一個連續數字。例如,如果我們在第 4 級有 3 條記錄,則指示的下一個級別是 5。

 

Q68. 什麼是 SQL 注入?

SQL 注入是網站和 Web 應用程式程式碼中的一種缺陷,允許攻擊者控制後端程式並訪問、檢索和刪除儲存在資料庫中的敏感資料。在這種方法中,惡意 SQL 語句被輸入到資料庫輸入欄位中,一旦執行,資料庫就會暴露給攻擊者。通過利用資料驅動的應用程式,該策略被廣泛用於訪問敏感資料並在資料庫上執行管理任務。SQLi 攻擊是它的另一個名稱。

下面是一些 SQL 注入的例子:

  • 訪問祕密資料以更改 SQL 查詢以獲得所需的結果。
  • UNION 攻擊旨在從多個資料庫表中竊取資料。
  • 檢查資料庫以獲取有關資料庫版本和結構的資訊

 

Q69. SQL 中有多少聚合函式可用?

SQL 聚合函式提供有關資料庫資料的資訊。例如,AVG 返回資料庫列值的平均值。

SQL 提供了七 (7) 個聚合函式,如下所示:

AVG():返回指定列的平均值。COUNT():返回錶行數,包括空值行。MAX():返回組中的最大值。MIN():返回組中的最小值。SUM():返回指定列的總和值(非空)。FIRST():返回表示式的第一個值。LAST():返回表示式的最後一個值。

 

Q70。使用 ORDER BY 子句的預設資料排序是什麼?怎麼可能改?

MySQL 中的 ORDER BY 子句可以在沒有 ASC 或 DESC 修飾符的情況下使用。當 ORDER BY 子句中沒有此屬性時,排序順序預設為 ASC 或升序。

 

Q71。我們如何使用 DISTINCT 語句?它的用途是什麼?

SQL DISTINCT 關鍵字與 SELECT 查詢結合使用以刪除所有重複記錄並僅返回唯一記錄。有時一個表可能有多個重複的記錄。SQL 中的 DISTINCT 子句用於從 SELECT 語句的結果集中消除重複項。

 

Q72. COALESCE 函式的語法和用途是什麼?

從一系列表示式中,COALESCE 函式返回第一個非 NULL 值。表示式按照它們提供的順序進行計算,函式的結果是第一個非空值。只有當所有輸入都為空時,COALESCE 方法才返回 NULL。

COALESCE 函式的語法是 COALESCE (exp1, exp2, .... expn)

 

Q73. 資料庫中的 ACID 屬性是什麼?

ACID 代表原子性、一致性、隔離性、永續性。它用於確保在資料庫系統中可靠地處理資料事務。

  • 原子性: 原子性是指完全完成或失敗的事務,其中事務是指資料的單個邏輯操作。這意味著如果任何事務的一部分失敗,則整個事務失敗並且資料庫狀態保持不變。
  • 一致性: 一致性確保資料必須滿足所有驗證規則。簡而言之,您可以說您的事務永遠不會在未完成其狀態的情況下離開資料庫。
  • 隔離:隔離 的主要目標是併發控制。
  • 永續性: 永續性意味著如果事務已經提交,它將發生介於兩者之間的任何事情,例如斷電、崩潰或任何型別的錯誤。

 

Q74. SQL中的“觸發器”是什麼意思?

SQL 中的觸發器是一種特殊型別的儲存過程,它被定義為就地或在資料修改後自動執行。它允許您在對特定表執行插入、更新或任何其他查詢時執行一批程式碼。

 

Q75. SQL 中有哪些不同的運算子?

SQL 中有三個可用的運算子,即:

  1. 算術運算子
  2. 邏輯運算子
  3. 比較運算子

 

Q76. NULL 值是否與零或空格相同?

NULL 值與零或空格的值完全不同。NULL 值表示不可用、未知、已分配或不適用的值,而零是數字,空格是字元。

 

Q77. 交叉連線和自然連線有什麼區別?

交叉聯接產生兩個表的交叉積或笛卡爾積,而自然聯接基於兩個表中具有相同名稱和資料型別的所有列。

 

Q78. SQL中的子查詢是什麼?

子查詢是另一個查詢中的查詢,其中定義了一個查詢以從資料庫中檢索資料或資訊。在子查詢中,外部查詢稱為主查詢,而內部查詢稱為子查詢。子查詢總是首先執行,子查詢的結果傳遞給主查詢。它可以巢狀在 SELECT、UPDATE 或任何其他查詢中。子查詢還可以使用任何比較運算子,例如 >、< 或 =。

 

Q79. 子查詢有哪些不同型別?

有兩種型別的子查詢,即相關和非相關。

相關子查詢:這些查詢從外部查詢中引用的表中選擇資料。它不被視為獨立查詢,因為它引用另一個表並引用表中的列。

Non-Correlated subquery:這個查詢是一個獨立的查詢,其中子查詢的輸出被替換在主查詢中。

讓我們轉到此 SQL 面試問題中的下一個問題。

 

Q80。列出獲取表中記錄數的方法?

在 SQL中計算表中的記錄數,可以使用以下命令:

SELECT * FROM table1 SELECT COUNT(*) FROM table1 從 sysindexes 中選擇行 WHERE id = OBJECT_ID(table1) AND indid < 2

 

Q83. SQL 中的組函式需要什麼?

組函式處理一組行併為每組返回一個結果。一些常用的組函式是:AVG、COUNT、MAX、MIN、SUM、VARIANCE。

 

Q84. 什麼是關係,它們是什麼?

關係或連結是相互關聯的實體之間的關係。關係被定義為資料庫中表之間的連線。有多種關係,即:

  • 一對一的關係。
  • 一對多關係。
  • 多對一關係。
  • 自引用關係。

 

Q85. 如何在插入資料時在列中插入 NULL 值?

SQL 中的 NULL 值可以通過以下方式插入:

  • 通過從列列表中省略列隱式。
  • 通過在 VALUES 子句中明確指定 NULL 關鍵字

 

Q86. “BETWEEN”和“IN”條件運算子之間的主要區別是什麼?

BETWEEN 運算子用於根據行中的值範圍顯示行,而 IN 條件運算子用於檢查特定值集中包含的值。

示例:

SELECT * FROM Students where ROLL_NO BETWEEN 10 AND 50; SELECT * FROM student where ROLL_NO IN (8,15,25);

 

Q87. 為什麼要使用 SQL 函式?

SQL 函式用於以下目的:

  • 對資料進行一些計算
  • 修改單個資料項
  • 操作輸出
  • 格式化日期和數字
  • 轉換資料型別

 

Q88. MERGE 語句需要什麼?

此語句允許有條件地更新或將資料插入到表中。如果行存在則執行 UPDATE,如果行不存在則執行 INSERT。

 

Q89. 遞迴儲存過程是什麼意思?

遞迴儲存過程是指在達到某個邊界條件之前自行呼叫的儲存過程。這個遞迴函式或過程幫助程式設計師使用相同的程式碼集 n 次。

 

Q90. SQL 中的 CLAUSE 是什麼?

SQL 子句通過向查詢提供條件來幫助限制結果集。子句有助於從整個記錄集中過濾行。

例如——WHERE、HAVING 子句。

 

Q91. “HAVING”和“WHERE”有什麼區別?

HAVING 子句只能與 SELECT 語句一起使用。它通常用在 GROUP BY 子句中,每當不使用 GROUP BY 時,HAVING 的行為就像 WHERE 子句。Have Clause 僅與查詢中的 GROUP BY 函式一起使用,而 WHERE Clause 應用於查詢中的 GROUP BY 函式的一部分之前的每一行。

 

Q92. 列出可以執行動態 SQL 的方式?

以下是可以執行動態 SQL 的方式:

  • 寫一個帶引數的查詢。
  • 使用 EXEC。
  • 使用 sp_executesql。

 

Q93. 不同級別的約束是什麼?

約束是用於強制執行資料實體和一致性的列的表示。約束有兩個級別,即:

  • 列級約束
  • 表級約束

 

Q94. 如何從兩個表中獲取公共記錄?

您可以使用 INTERSECT 從兩個表中獲取公共記錄。例如:

從學生中選擇學生 ID。<strong>INTERSECT </strong> 從考試中選擇 StudentID

 

Q95. 列出一些 SQL 中的大小寫操作函式?

SQL中有3個case操作函式,分別是:

  • LOWER:此函式以小寫形式返回字串。它接受一個字串作為引數並通過將其轉換為小寫來返回它。句法:

LOWER('字串')

  • UPPER:此函式以大寫形式返回字串。它接受一個字串作為引數並通過將其轉換為大寫來返回它。句法:

UPPER('字串')

  • INITCAP:該函式返回第一個字母大寫,其餘字母小寫的字串。句法:

INITCAP('字串')

Q96. SQL 中有哪些不同的集合運算子?

一些可用的集合運算子是 – Union、Intersect 或 Minus 運算子。

 

Q97. 什麼是 ALIAS 命令?

SQL中的ALIAS 命令是可以賦予​​任何表或列的名稱。此別名可以在 WHERE 子句中引用以標識特定表或列。

例如-

選擇 emp.empID, dept.Result from emp emp,department as dept where emp.empID=dept.empID

在上面的例子中,emp 指的是employee 表的別名,dept 指的是department 表的別名。

 

Q98. 什麼是聚合aggregate 函式和標量scalar 函式?

聚合函式用於評估數學計算並返回單個值。這些計算是根據表中的列完成的。例如- max(),count() 是根據數字計算的。

標量函式根據輸入值返回單個值。例如 – UCASE(), NOW() 是針對字串計算的。

 

Q99. 如何從表中獲取替代記錄?

您可以獲取備用記錄,即奇數和偶數行號。例如 - 要顯示偶數,請使用以下命令:

Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=0

現在,要顯示奇數:

Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=1

 

Q100。命名查詢中用於模式匹配的運算子?

LIKE 運算子用於模式匹配,它可以用作 -。

  1. % – 它匹配零個或多個字元。

例如-從學生中選擇*,其中學生名像“a%”

_(下劃線)——它正好匹配一個字元。例如- select * from student where studentname like 'abc_'

 

Q103。 SQL 和 PL/SQL 之間的主要區別是什麼?

SQL 是一種查詢語言,允許您發出單個查詢或執行單個插入/更新/刪除,而 PL/SQL 是 Oracle 的“儲存過程語言”SQL,它允許您編寫完整的程式(迴圈、變數等)。完成選擇/插入/更新/刪除等多項操作。

 

Q104。什麼是檢視?

檢視是一個虛擬表,它由表中包含的資料子集組成。由於不存在檢視,因此儲存空間較小。檢視可以將一個或多個表的資料組合起來,這取決於關係。

 

Q105。檢視有什麼用?

檢視是指基於表或其他檢視的邏輯快照。使用它的原因如下:

  • 限制對資料的訪問。
  • 使複雜的查詢變得簡單。
  • 確保資料獨立。
  • 提供相同資料的不同檢視。

 

Q106。什麼是儲存過程?

儲存過程是一個由許多 SQL 語句組成的函式,用於訪問資料庫系統。多條 SQL 語句被合併到一個儲存過程中,並在需要時隨時隨地執行它們,從而節省時間並避免一次又一次地編寫程式碼。

 

Q107。列出儲存過程的一些優點和缺點?

優點

儲存過程可以用作模組化程式設計,這意味著建立一次,在需要時多次儲存和呼叫。這支援更快的執行。它還可以減少網路流量併為資料提供更好的安全性。

缺點

儲存過程的唯一缺點是它只能在資料庫中執行,並且在資料庫伺服器中使用更多的記憶體。

 

Q108。列出所有型別的使用者定義函式?

使用者定義函式分為三種型別,分別是:

  • 標量函式
  • 內聯表值函式
  • 多語句值函式

標量返回單位,變體定義返回子句。其他兩種型別定義的函式返回表。

 

Q109. 你說的整理是什麼意思?

整理被定義為一組規則,用於確定如何對資料進行排序和比較。使用定義正確字元序列的規則以及指定區分大小寫、字元寬度等的選項對字元資料進行排序。

 

Q110。有哪些不同型別的校對敏感度?

以下是不同型別的整理敏感度:

  • 區分大小寫:A 和 a 以及 B 和 b。
  • 假名敏感度:日語假名字元。
  • 寬度敏感度:單位元組字元和雙位元組字元。
  • 口音敏感度。

 

Q111。什麼是區域性變數和全域性變數?

區域性變數:

這些變數可以使用或僅存在於函式內部。這些變數不會被任何其他函式使用或引用。

全域性變數:

這些變數是可以在整個程式中訪問的變數。無論何時呼叫該函式,都無法建立全域性變數。

 

Q112。什麼是 SQL 中的自動增量?

Autoincrement 關鍵字允許使用者建立一個唯一的數字,以便在表中插入新記錄時生成。每當在 SQL 中使用 PRIMARY KEY 時,通常都需要此關鍵字。

AUTO INCREMENT 關鍵字可以在 Oracle 中使用,IDENTITY 關鍵字可以在 SQL SERVER 中使用。

 

Q113。什麼是資料倉儲?

資料倉儲是指資料的中央儲存庫,其中資料是從多個資訊源組裝而成的。這些資料經過整合、轉換,可用於挖掘和線上處理。倉庫資料還有一個稱為資料集市的資料子集。

相關文章