Nhảy tới nội dung

20 câu hỏi phỏng vấn SQL - Level Intern phần 4 ( từ câu 16 đến 20 )

· 8 phút để đọc
Phạm Quyết Thắng
Fullstack developer

16. Mô tả sự khác biệt giữa kiểu dữ liệu CHAR và VARCHAR.

CHARVARCHAR là hai kiểu dữ liệu chuỗi ký tự trong cơ sở dữ liệu, nhưng có sự khác biệt về cách chúng lưu trữ và xử lý dữ liệu.

CHAR (Character Fixed):

  • Kiểu lưu trữ: CHAR lưu trữ chuỗi ký tự với chiều dài cố định. Nếu bạn khai báo CHAR( n), mỗi giá trị chuỗi sẽ chiếm đủ n ký tự, với không gian dư thừa được điền đầy bằng các ký tự khoảng trắng.
  • Ví dụ: Nếu CHAR(5) được sử dụng để lưu trữ chuỗi "ABC," nó sẽ chiếm đủ 5 ký tự, ví dụ: "ABC ".
  • Sử dụng: Thích hợp khi chiều dài của dữ liệu là cố định và không thay đổi nhiều.

VARCHAR (Variable Character):

  • Kiểu lưu trữ: VARCHAR lưu trữ chuỗi ký tự với chiều dài có thể thay đổi. Nếu bạn khai báo VARCHAR( n), mỗi giá trị chuỗi chỉ chiếm đủ bộ nhớ để lưu trữ n ký tự thực sự, không có không gian dư thừa.
  • Ví dụ: Nếu VARCHAR(5) được sử dụng để lưu trữ chuỗi "ABC," nó sẽ chỉ chiếm đủ 3 ký tự.
  • Sử dụng: Thích hợp khi chiều dài của dữ liệu có thể thay đổi và bạn muốn tiết kiệm không gian lưu trữ.

Lựa chọn giữa CHAR và VARCHAR:

  • Sử dụng CHAR khi chiều dài của dữ liệu là cố định và bạn muốn sự đồng đều trong việc lưu trữ dữ liệu.
  • Sử dụng VARCHAR khi chiều dài của dữ liệu có thể thay đổi và bạn muốn tiết kiệm không gian lưu trữ.
  • VARCHAR thường được ưa chuộng hơn trong nhiều trường hợp do tiết kiệm không gian lưu trữ so với CHAR.

17. INDEX trong cơ sở dữ liệu là gì và tại sao nó quan trọng?

INDEX trong cơ sở dữ liệu là một cấu trúc dữ liệu đặc biệt được tạo để tăng tốc quá trình truy xuất dữ liệu từ bảng. INDEX giúp cơ sở dữ liệu nhanh chóng định vị và truy xuất dữ liệu, giảm độ phức tạp của các truy vấn và tăng hiệu suất truy cập dữ liệu.

Tính quan trọng của INDEX:

  • Tăng tốc truy xuất dữ liệu: INDEX giúp giảm thời gian tìm kiếm và truy xuất dữ liệu bằng cách tạo ra một cấu trúc dữ liệu được sắp xếp, giúp hệ thống có thể nhanh chóng xác định vị và truy xuất dữ liệu theo giá trị của cột INDEX.

  • Giảm độ phức tạp của các truy vấn: Khi một truy vấn tìm kiếm hoặc sắp xếp dựa trên một cột có INDEX, độ phức tạp của truy vấn giảm đáng kể, vì nó không cần phải duyệt qua toàn bộ bảng mà chỉ cần tập trung vào các giá trị trong INDEX.

  • Hỗ trợ sắp xếp và nối cột: INDEX làm cho các hoạt động sắp xếp và nối cột trở nên hiệu quả hơn bằng cách tạo ra một cấu trúc sắp xếp trước đó.

  • Tối ưu hóa hiệu suất của WHERE clause: INDEX tối ưu hóa hiệu suất của các truy vấn SELECT với điều kiện WHERE bằng cách giảm thiểu số lượng dòng cần phải duyệt qua.

Sử dụng INDEX:

  • Bạn có thể tạo INDEX cho một hoặc nhiều cột trong bảng sử dụng câu lệnh CREATE INDEX.
  • Sử dụng INDEX trên các cột mà bạn thường xuyên thực hiện các truy vấn tìm kiếm, sắp xếp hoặc nối cột.
  • Tuy nhiên, việc sử dụng quá nhiều INDEX có thể làm tăng kích thước cơ sở dữ liệu và có thể ảnh hưởng đến hiệu suất của các hoạt động cập nhật (INSERT, UPDATE, DELETE). Do đó, cần cân nhắc và kiểm soát về mặt chiến lược khi tạo INDEX.

18. Làm cách nào để thêm bản ghi mới vào bảng?

Để thêm một bản ghi mới vào bảng trong cơ sở dữ liệu, bạn sử dụng lệnh SQL INSERT INTO. Dưới đây là cú pháp cơ bản của lệnh INSERT INTO:

INSERT INTO tên_bảng (cột1, cột2, cột3, ...)
VALUES (giá_trị1, giá_trị2, giá_trị3, ...);
  • tên_bảng: Tên của bảng bạn muốn thêm bản ghi vào.
  • cột1, cột2, cột3, ...: Các cột mà bạn muốn cung cấp giá trị cho.
  • giá_trị1, giá_trị2, giá_trị3, ...: Giá trị tương ứng mà bạn muốn thêm vào các cột. Ví dụ:

Để thêm một nhân viên mới vào bảng "employees" với thông tin cơ bản:

INSERT INTO employees (employee_id, employee_name, department_id, salary)
VALUES (101, 'John Doe', 3, 50000);

Trong ví dụ này, một bản ghi mới được thêm vào bảng "employees" với các giá trị cho các cột "employee_id," "employee_name," "department_id," và "salary."

Lưu ý rằng nếu bảng có các cột được đặt là tự động tăng (auto-increment), bạn có thể bỏ qua cột đó trong danh sách cột và giá trị sẽ được tự động tăng. Chẳng hạn, nếu "employee_id" là tự động tăng, bạn có thể viết:

INSERT INTO employees (employee_name, department_id, salary)
VALUES ('Jane Smith', 2, 60000);

Trong trường hợp này, "employee_id" sẽ được tự động tăng lên một giá trị mới.

19. Giải thích mục đích của mệnh đề LIMIT trong SQL.

LIMIT là một mệnh đề trong SQL được sử dụng để giới hạn số lượng dòng kết quả trả về từ một câu truy vấn. Mục tiêu chính của LIMIT là hạn chế kích thước của tập kết quả, giúp tối ưu hóa hiệu suất và giảm bớt tải lên bộ nhớ khi truy xuất dữ liệu từ cơ sở dữ liệu.

Cú pháp cơ bản của LIMIT như sau:

SELECT cột1, cột2, ...
FROM tên_bảng
WHERE điều_kiện
LIMIT số_lượng_dòng;
  • SELECT: Xác định các cột bạn muốn lấy từ bảng.
  • FROM: Xác định bảng từ đó bạn muốn lấy dữ liệu.
  • WHERE (tùy chọn): Xác định điều kiện để lọc dữ liệu.
  • LIMIT: Xác định số lượng dòng tối đa bạn muốn trả về. Ví dụ:
-- Lấy 5 nhân viên từ bảng "employees" có mức lương cao nhất
SELECT employee_id, employee_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;

Trong ví dụ này, câu truy vấn sẽ trả về 5 nhân viên có mức lương cao nhất từ bảng "employees," được sắp xếp theo giảm dần của mức lương.

LIMIT thường được sử dụng khi bạn quan tâm đến một số lượng nhất định của dữ liệu thay vì toàn bộ tập kết quả. Điều này có thể hữu ích để giảm tải cho cả truy xuất và hiển thị dữ liệu, đặc biệt là khi có nhiều dòng dữ liệu trong bảng.

20. Làm cách nào để cập nhật dữ liệu trong bảng bằng SQL?

Để cập nhật dữ liệu trong một bảng sử dụng SQL, bạn sử dụng lệnh UPDATE. Lệnh UPDATE cho phép bạn thay đổi giá trị của một hoặc nhiều cột trong các bản ghi có điều kiện nhất định.

Cú pháp cơ bản của lệnh UPDATE như sau:

UPDATE tên_bảng
SET cột1 = giá_trị1, cột2 = giá_trị2, ...
WHERE điều_kiện;
  • tên_bảng: Tên của bảng bạn muốn cập nhật dữ liệu.
  • cột1, cột2, ...: Các cột bạn muốn cập nhật.
  • giá_trị1, giá_trị2, ...: Giá trị mới mà bạn muốn đặt cho các cột.
  • WHERE: Điều kiện xác định các bản ghi cần phải cập nhật. Ví dụ:
-- Cập nhật mức lương của nhân viên có mã số 101
UPDATE employees
SET salary = 55000
WHERE employee_id = 101;

Trong ví dụ này, lệnh UPDATE sẽ thay đổi mức lương của nhân viên có mã số 101 thành 55000.

Lưu ý rằng bạn có thể sử dụng nhiều điều kiện trong phần WHERE để xác định chính xác bản ghi cần cập nhật.

Chú ý quan trọng:
  1. Luôn sử dụng mệnh đề WHERE để xác định rõ bản ghi cần cập nhật. Nếu bạn quên sử dụng WHERE, lệnh UPDATE có thể ảnh hưởng đến toàn bộ bảng.
  2. Hãy chắc chắn rằng giá trị bạn đặt cho các cột mới là hợp lệ và phù hợp với kiểu dữ liệu của cột đó.