20 câu hỏi phỏng vấn SQL - Level Intern phần 4 ( từ câu 16 đến 20 )
16. Mô tả sự khác biệt giữa kiểu dữ liệu CHAR và VARCHAR.
CHAR và VARCHAR 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áoCHAR( 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áoVARCHAR( 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ệnWHERE
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ệnhCREATE 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ạoINDEX
.
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.
- 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ụngWHERE
, lệnhUPDATE
có thể ảnh hưởng đến toàn bộ bảng. - 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 đó.