Khẳng định nào sau đây là đúng khi nói về thu hồi các quyền truy nhập cơ dữ liệu của người sử dụng:
Trả lời:
Đáp án đúng: A
Câu hỏi này kiểm tra kiến thức về cú pháp REVOKE trong SQL để thu hồi quyền truy cập cơ sở dữ liệu.
* **Phương án A:** `REVOKE GRANT OPTION FOR SELECT ON BRANCH FROM U1.` Câu lệnh này thu hồi quyền `GRANT OPTION` (quyền cho phép người dùng U1 cấp lại quyền SELECT trên bảng BRANCH cho người dùng khác) chứ không thu hồi quyền SELECT trực tiếp. Vì vậy, phương án này không đúng trong ngữ cảnh thu hồi toàn bộ quyền truy cập.
* **Phương án B:** `REVOKE READ ON R FROM GROUP/WORLD.` Cú pháp này không chuẩn trong SQL. `READ` không phải là một quyền chuẩn, và `GROUP/WORLD` cũng không phải là cách chỉ định người dùng hoặc nhóm người dùng hợp lệ.
* **Phương án C:** `REVOKE SELECT ON BRANCH.` Cú pháp này thiếu mệnh đề `FROM `, tức là không chỉ rõ quyền SELECT trên bảng BRANCH bị thu hồi từ người dùng nào. Do đó, đây không phải là một câu lệnh hoàn chỉnh và đúng.
* **Phương án D:** `REVOKE ON BRANCH FROM U1.` Câu lệnh này không chỉ rõ quyền nào đang bị thu hồi trên bảng BRANCH từ người dùng U1. Cần chỉ rõ quyền (ví dụ: SELECT, INSERT, UPDATE, DELETE). Do đó, câu lệnh này không đầy đủ.
Tuy nhiên, trong các phương án trên, phương án D có vẻ gần đúng nhất nếu ta hiểu ngầm là muốn thu hồi tất cả các quyền trên bảng BRANCH từ người dùng U1. Nhưng vì câu hỏi không cung cấp thêm thông tin và các phương án khác đều sai rõ ràng hơn, ta sẽ xem xét phương án này. **Nhưng vẫn cần lưu ý rằng để đúng hoàn toàn, cần chỉ rõ quyền nào đang bị thu hồi.**
Vì không có đáp án nào hoàn toàn chính xác theo cú pháp chuẩn SQL, ta sẽ chọn phương án D là phương án *ít sai* nhất, với lưu ý về sự không đầy đủ của nó. Trong thực tế, cần phải viết rõ quyền cần thu hồi.





