Câu hỏi phỏng vấn cho lập trình viên SQL: Các câu hỏi thường gặp trong phỏng vấn SQL - Phần 4

 

Giải thích cách tạo chức năng (function) và thủ tục (procedure) trong SQL và lợi ích của việc sử dụng chúng.

Trả lời: Chức năng (function) và thủ tục (procedure) trong SQL là các khối mã lệnh đã được đặt tên và có thể được gọi từ câu lệnh truy vấn khác hoặc từ ứng dụng.

  • Chức năng (function): Trả về một giá trị và thường dùng để tính toán và trả về kết quả.
  • Thủ tục (procedure): Không trả về giá trị và thường dùng để thực hiện các tác vụ xử lý dữ liệu hoặc lưu trữ.

Lợi ích của việc sử dụng chức năng và thủ tục bao gồm:

  • Giảm lặp lại mã lệnh, dễ dàng bảo trì và quản lý mã lệnh.
  • Tăng tính tái sử dụng, cho phép tái sử dụng mã lệnh trong nhiều nơi.
  • Cải thiện hiệu suất, vì các chức năng và thủ tục thường được biên dịch một lần và sử dụng lại nhiều lần.

 

Cách sử dụng các câu lệnh truy vấn RECURSIVE và COMMON TABLE EXPRESSION (CTE) trong SQL.

Trả lời: Câu lệnh truy vấn RECURSIVE và COMMON TABLE EXPRESSION (CTE) được sử dụng để xử lý các truy vấn đệ quy và dùng chung một phần của câu lệnh trong SQL.

  • RECURSIVE: Cho phép thực hiện truy vấn đệ quy trong cơ sở dữ liệu.
  • CTE: Là một tạm thời, giúp tách câu truy vấn thành các phần nhỏ hơn để dễ dàng quản lý và tái sử dụng.
WITH RECURSIVE RecursiveCTE (ID, ParentID, Level) AS (
  SELECT ID, ParentID, 0 AS Level FROM Categories WHERE ParentID IS NULL
  UNION ALL
  SELECT C.ID, C.ParentID, Level + 1 FROM Categories C
  INNER JOIN RecursiveCTE RC ON C.ParentID = RC.ID
)
SELECT * FROM RecursiveCTE;

 

Làm thế nào để xử lý các trường hợp dữ liệu trùng lặp và dữ liệu không hợp lệ trong SQL

Trả lời: Để xử lý các trường hợp dữ liệu trùng lặp và không hợp lệ trong SQL, chúng ta có thể sử dụng các câu lệnh như DISTINCT, GROUP BY, HAVING, và các ràng buộc UNIQUE để đảm bảo tính duy nhất của dữ liệu. Ngoài ra, có thể sử dụng các câu lệnh UPDATE hoặc DELETE để loại bỏ các bản ghi không hợp lệ hoặc trùng lặp.

 

Các kiểu dữ liệu đặc biệt như XML, GEOGRAPHY, và GEOMETRY trong SQL Server

Các kiểu dữ liệu đặc biệt như XML, GEOGRAPHY, và GEOMETRY trong SQL Server được sử dụng để lưu trữ và làm việc với dữ liệu đặc thù và phức tạp. Dưới đây là mô tả về từng kiểu dữ liệu này:

XML:

  • Kiểu dữ liệu XML trong SQL Server cho phép lưu trữ và xử lý dữ liệu dưới dạng ngôn ngữ đánh dấu mở rộng (Extensible Markup Language).
  • Dữ liệu XML có thể chứa cấu trúc phong phú, giúp lưu trữ thông tin có hệ thống và linh hoạt.
  • SQL Server cung cấp các hàm và phương thức xử lý XML, cho phép truy xuất, tạo mới, và biến đổi dữ liệu XM

GEOGRAPHY GEOMETRY:

  • Kiểu dữ liệu GEOGRAPHY và GEOMETRY trong SQL Server được sử dụng để lưu trữ thông tin địa lý và hình học.
  • GEOGRAPHY được sử dụng để biểu diễn các đối tượng địa lý như điểm, đường, vùng, và hình dạng đa giác trên dựa trên hình cầu đất.
  • GEOMETRY được sử dụng để biểu diễn các đối tượng hình học như điểm, đường, vùng, và hình dạng đa giác trên không gian phẳng.

Cả hai kiểu dữ liệu này hỗ trợ các phép toán và hàm đặc biệt cho truy vấn và phân tích dữ liệu địa lý và hình học.

 

Giải thích các hàm và chức năng dành cho xử lý dữ liệu ngày tháng và thời gian trong SQL

Các hàm và chức năng dành cho xử lý dữ liệu ngày tháng và thời gian trong SQL được sử dụng để thao tác và thực hiện các tác vụ liên quan đến ngày tháng và thời gian trong cơ sở dữ liệu. Dưới đây là mô tả chi tiết của một số hàm và chức năng phổ biến:

DATEPART(): Hàm này được sử dụng để trích xuất một thành phần cụ thể (ví dụ: ngày, tháng, năm, giờ, phút, giây) từ một giá trị ngày tháng hoặc thời gian.

SELECT DATEPART(YEAR, '2023-07-19'); -- Kết quả: 2023

DATEDIFF(): Hàm này tính toán khoảng thời gian giữa hai giá trị ngày tháng hoặc thời gian.

SELECT DATEDIFF(DAY, '2023-07-01', '2023-07-19'); -- Kết quả: 18 (số ngày giữa hai ngày)

DATEADD(): Hàm này được sử dụng để thêm một số ngày, tháng, năm hoặc thời gian vào một giá trị ngày tháng hoặc thời gian.

SELECT DATEADD(DAY, 7, '2023-07-19'); -- Kết quả: '2023-07-26' (thêm 7 ngày)

GETDATE(): Hàm này trả về giá trị ngày và giờ hiện tại của hệ thống.

SELECT GETDATE(); -- Kết quả: '2023-07-19 12:34:56.789'

CONVERT(): Hàm này được sử dụng để chuyển đổi giá trị ngày tháng hoặc thời gian từ một định dạng sang định dạng khác.

SELECT CONVERT(VARCHAR, '2023-07-19', 103); -- Kết quả: '19/07/2023'

FORMAT(): Hàm này được sử dụng để định dạng lại giá trị ngày tháng hoặc thời gian theo một mẫu định trước.

SELECT FORMAT('2023-07-19', 'dd/MM/yyyy'); -- Kết quả: '19/07/2023'