SQL面試題



親愛的讀者,這些SQL面試題專為幫助您熟悉面試中可能遇到的關於SQL的問題而設計。根據我的經驗,優秀的採訪者在面試過程中很少會預先計劃好要問哪些具體問題,通常問題會從該主題的一些基本概念開始,然後根據進一步的討論以及您的回答繼續下去。

SQL或結構化查詢語言是一種語言;這種語言與關係資料庫通訊,從而提供操作和建立資料庫的方法。MySQL和Microsoft的SQL Server都是使用SQL作為其標準關係資料庫語言的關係資料庫管理系統。

PL/SQL是SQL的一種方言,它在SQL中添加了程式語言的過程特性。它是由Oracle公司在90年代初期開發的,以增強SQL的功能。

以下是SQL中各種DDL或資料定義語言命令:

  • CREATE −它建立一個新的表、表的檢視或資料庫中的其他物件。

  • ALTER −它修改現有的資料庫物件,例如表。

  • DROP −它刪除整個表、表的檢視或資料庫中的其他物件。

以下是SQL中各種DML或資料操作語言命令:

  • SELECT −它從一個或多個表中檢索某些記錄。

  • INSERT −它建立記錄。

  • UPDATE −它修改記錄。

  • DELETE −它刪除記錄。

以下是SQL中各種DCL或資料控制語言命令:

  • GRANT −它賦予使用者許可權。

  • REVOKE −它收回已授予使用者的許可權。

可以。列別名可以在ORDER BY子句中使用。

NULL值與零或空格不同。NULL值是一個“不可用、未分配、未知或不適用”的值。而零是一個數字,空格是一個字元。

正確。

查詢結果顯示所有行,包括重複行。要消除結果中的重複行,在SELECT子句中使用DISTINCT關鍵字。

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

在這種情況下,使用LIKE條件運算子來選擇與字元模式匹配的行。這也被稱為“萬用字元”搜尋。

預設排序順序是升序。可以使用DESC關鍵字在ORDER BY子句中列名之後更改它。

SQL函式具有以下用途:

  • 對資料進行計算

  • 修改單個數據項

  • 操作輸出

  • 格式化日期和數字

  • 轉換資料型別

LOWER、UPPER、INITCAP

MOD函式返回除法運算中的餘數。

NVL函式將NULL值轉換為實際值。

NVL(exp1, exp2)函式將源表示式(或值)exp1轉換為目標表達式(或值)exp2,如果exp1包含NULL。返回值與exp1的資料型別相同。

NVL2(exp1, exp2, exp3)函式檢查第一個表示式exp1,如果它不是null,則返回第二個表示式exp2。如果第一個表示式exp1為null,則返回第三個表示式exp3。

NULLIF函式比較兩個表示式。如果它們相等,則函式返回null。如果它們不相等,則返回第一個表示式。

COALESCE函式的表示式為COALESCE(exp1, exp2, … expn)

它返回引數列表中給定的第一個非空表示式。

有兩種方法可以在SQL語句中實現條件處理或IF-THEN-ELSE邏輯。

  • 使用CASE表示式

  • 使用DECODE函式

結果將是兩個表的笛卡爾積,共有20 x 10 = 200行。

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

SQL 中的組函式作用於行集,併為每個組返回一個結果。組函式的示例包括 AVG、COUNT、MAX、MIN、STDDEV、SUM、VARIANCE。

預設情況下,組函式考慮所有值,包括重複值。(This sentence contradicts p2. Consider clarifying in the source document.)

正確。

正確。

錯誤。COUNT(*) 返回表中的行數。

它沒有 GROUP BY 子句。subject_code 應該在 GROUP BY 子句中。

   SELECT subject_code, count(name)
   FROM students
   GROUP BY subject_code;

不能使用 WHERE 子句來限制分組。應該使用 HAVING 子句。

   SELECT subject_code, AVG (marks)
   FROM students
   HAVING AVG(marks) > 75
   GROUP BY subject_code;

錯誤。組函式可以巢狀到兩層深度。

子查詢是嵌入另一個 SELECT 語句的子句中的 SELECT 語句。當內部查詢(或子查詢)返回外部查詢使用的值時,它就會被使用。它在使用取決於同一表中包含的一些資料的條件選擇表中某些行時非常有用。

錯誤。單行子查詢只從內部 SELECT 語句返回一行。

正確。

正確。

這裡,單行運算子 = 與多行子查詢一起使用。

IN、ANY、ALL。

DML 語句用於向表中新增新行、更新或修改現有行中的資料或從表中刪除現有行。

INSERT INTO 語句。

正確。

可以透過以下方法之一將空值插入表中:

  • 透過從列列表中省略列來隱式插入。
  • 透過在 VALUES 子句中指定 NULL 關鍵字來顯式插入。

錯誤。INSERT 語句允許透過複製現有表中的行來向表中新增行。

INSERT 語句可用於透過從另一個表複製來向表中新增行。在這種情況下,子查詢用於代替 VALUES 子句。

表中的所有行都將被修改。

可以。在 UPDATE 語句中使用子查詢允許你根據另一個表中的值更新表中的行。

錯誤。DELETE 語句用於從表中刪除現有行。

表中的所有行都將被刪除。

可以,子查詢可用於根據另一個表中的值從表中刪除行。

正確。

正確。

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

正確。

VARCHAR2 表示可變長度字元資料,而 CHAR 表示固定長度字元資料。

錯誤。DROP TABLE 語句不能回滾。

ALTER TABLE 語句。

檢視是基於表或其他檢視的邏輯快照。它用於:

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

正確。

下一步是什麼?

接下來,你可以回顧一下你以前完成的作業,確保你能自信地談論它們。如果你剛畢業,面試官不會期望你能回答非常複雜的問題,而是要確保你的基礎概念非常紮實。

其次,如果你無法回答幾個問題,其實並不重要,重要的是,無論你回答了什麼,你都必須自信地回答。所以在面試中要自信。Tutorialspoint 祝你找到一位好面試官,並祝你未來的努力一切順利!乾杯 :-)

sql_questions_answers.htm
廣告