低難度

  1. 問題:如何創建一個簡單的表?
  • 答案:使用 CREATE TABLE 語句。
  • 代碼示例:
CREATE TABLE Employees (
     EmployeeID INT PRIMARY KEY,
     FirstName NVARCHAR(50),
     LastName NVARCHAR(50),
     BirthDate DATE
 );

-- 創建一個名為Employees的表,包含EmployeeID、FirstName、LastName和BirthDate列。

  1. 問題:如何插入一條記錄到表中?
  • 答案:使用 INSERT INTO 語句。
  • 代碼示例:
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate)
 VALUES (1, 'John', 'Doe', '1980-01-01');

-- 向Employees表中插入一條記錄。

  1. 問題:如何查詢表中的所有記錄?
  • 答案:使用 SELECT * FROM 語句。
  • 代碼示例:
SELECT * FROM Employees;

-- 查詢Employees表中的所有記錄。

  1. 問題:如何更新表中的記錄?
  • 答案:使用 UPDATE 語句。
  • 代碼示例:
UPDATE Employees
 SET FirstName = 'Jane'
 WHERE EmployeeID = 1;

-- 更新Employees表中EmployeeID為1的記錄,將FirstName改為Jane。

  1. 問題:如何刪除表中的記錄?
  • 答案:使用 DELETE 語句。
  • 代碼示例: sql DELETE FROM Employees WHERE EmployeeID = 1; -- 刪除Employees表中EmployeeID為1的記錄。

中難度

  1. 問題:如何創建一個帶有外鍵的表?
  • 答案:使用 FOREIGN KEY 約束。
  • 代碼示例:
CREATE TABLE Departments (
     DepartmentID INT PRIMARY KEY,
     DepartmentName NVARCHAR(50)
 );

 CREATE TABLE Employees (
     EmployeeID INT PRIMARY KEY,
     FirstName NVARCHAR(50),
     LastName NVARCHAR(50),
     BirthDate DATE,
     DepartmentID INT,
     FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
 );

-- 創建一個Departments表和一個帶有外鍵的Employees表。

  1. 問題:如何使用 JOIN 查詢多個表?
  • 答案:使用 INNER JOIN 語句。
  • 代碼示例:
SELECT e.FirstName, e.LastName, d.DepartmentName
 FROM Employees e
 INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

-- 使用INNER JOIN查詢Employees和Departments表中的數據。

  1. 問題:如何創建一個視圖?
  • 答案:使用 CREATE VIEW 語句。
  • 代碼示例:
CREATE VIEW EmployeeDetails AS
 SELECT e.FirstName, e.LastName, d.DepartmentName
 FROM Employees e
 INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

-- 創建一個名為EmployeeDetails的視圖。

  1. 問題:如何創建一個存儲過程?
  • 答案:使用 CREATE PROCEDURE 語句。
  • 代碼示例:
CREATE PROCEDURE GetEmployeeByID
     @EmployeeID INT
 AS
 BEGIN
     SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;
 END;

-- 創建一個名為GetEmployeeByID的存儲過程。

  1. 問題:如何創建一個觸發器?
  • 答案:使用 CREATE TRIGGER 語句。
  • 代碼示例: sql CREATE TRIGGER trgAfterInsert ON Employees AFTER INSERT AS BEGIN PRINT 'A new record has been inserted into Employees table'; END; -- 創建一個在Employees表插入記錄後觸發的觸發器。

高難度

  1. 問題:如何創建一個帶有遞歸查詢的CTE(公用表表達式)?
  • 答案:使用 WITH 語句。
  • 代碼示例:
WITH EmployeeHierarchy AS (
      SELECT EmployeeID, FirstName, LastName, ManagerID
      FROM Employees
      WHERE ManagerID IS NULL
      UNION ALL
      SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID
      FROM Employees e
      INNER JOIN EmployeeHierarchy eh ON e.ManagerID = eh.EmployeeID
  )
  SELECT * FROM EmployeeHierarchy;

-- 使用CTE創建一個遞歸查詢來獲取員工層級結構。

  1. 問題:如何使用窗口函數計算每個部門的員工數量?
  • 答案:使用 OVER 子句。
  • 代碼示例:
SELECT DepartmentID, FirstName, LastName,
         COUNT(*) OVER (PARTITION BY DepartmentID) AS DepartmentEmployeeCount
  FROM Employees;

-- 使用窗口函數計算每個部門的員工數量。

  1. 問題:如何處理SQL Server中的死鎖?
  • 答案:使用 TRY...CATCH 塊。
  • 代碼示例:
BEGIN TRY
      BEGIN TRANSACTION;
      -- 你的SQL操作
      COMMIT TRANSACTION;
  END TRY
  BEGIN CATCH
      IF @@TRANCOUNT > 0
          ROLLBACK TRANSACTION;
      -- 錯誤處理代碼
  END CATCH;

-- 使用TRY...CATCH塊處理死鎖。

  1. 問題:如何創建一個帶有索引的表?
  • 答案:使用 CREATE INDEX 語句。
  • 代碼示例:
CREATE TABLE Employees (
      EmployeeID INT PRIMARY KEY,
      FirstName NVARCHAR(50),
      LastName NVARCHAR(50),
      BirthDate DATE
  );

  CREATE INDEX idx_LastName ON Employees (LastName);

-- 創建一個帶有索引的Employees表。

  1. 問題:如何使用事務管理併發?
  • 答案:使用 BEGIN TRANSACTIONCOMMIT 語句。
  • 代碼示例: sql BEGIN TRANSACTION; -- 你的SQL操作 COMMIT; `-- 使用事務管理併發。

.NET全棧經典面試題庫

內容涵蓋以下內容

  • ASP.NET MVC應用場景面試題
  • WinForm應用場景面試題
  • jQuery應用場景面試題
  • 3、SQLServer面試題
  • ASP.NET應用場景面試題
  • C#基礎面試題及其答案
  • ASP.NET WebAPI應用場景面試題
  • MySQL面試題
  • SQL Server應用場景面試題

下載鏈接1:

【下載傳送門1】

下載鏈接2:

【下載傳送門2】