12/08/2018, 15:07

50 câu Q&A thường gặp về SQL dành cho Tester - Phần 2

Tiếp nối phần 1 chúng ta cùng xem xét tiếp những câu Q&A còn lại trong danh sách 50 câu hỏi về SQL phổ biến nhất khi phỏng vấn Testers. Đây là những câu hỏi kèm theo câu trả lời phổ biến và hữu ích nhất sẽ giúp bạn tự tin tham gia một cuộc phỏng vấn. Q#28. Định nghĩa UNION, MINUS, UNION ALL, ...

Tiếp nối phần 1 chúng ta cùng xem xét tiếp những câu Q&A còn lại trong danh sách 50 câu hỏi về SQL phổ biến nhất khi phỏng vấn Testers. Đây là những câu hỏi kèm theo câu trả lời phổ biến và hữu ích nhất sẽ giúp bạn tự tin tham gia một cuộc phỏng vấn.

Q#28. Định nghĩa UNION, MINUS, UNION ALL, INTERSECT ? Trả lời: 1. UNION - UNION ALL Nếu bạn cần viết hai hay nhiều câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION. Mệnh đề/Toán tử UNION kết hợp kết quả của các câu lệnh SELECT mà không trả về bất cứ bản sao nào của bản ghi (mỗi bản ghi là duy nhất) Để sử dụng UNION, cần tuân thủ nguyên tắc:

  • Số lượng colums trong tất cả các lệnh SELECT phải bằng nhau
  • Mỗi column tương ứng vị trí phải có cùng kiểu dữ liệu và độ dài Cú pháp cơ bản của mệnh đề UNION trong SQL như sau:
SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

UNION/UNION ALL

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

Theo mặc định thì UNION sẽ loại bỏ các kết quả trùng lặp của các câu SELECT nên chúng ta có các lựa chọn sau:

  • Nếu chọn UNION DISTINCT thì nó sẽ loại bỏ các kết quả trùng.
  • Nếu chọn UNION ALL thì nó giữ lại các kết quả trùng.
  • Nếu không chọn gì thì mặc định nó sẽ lấy UNION DISTINCT

2. MINUS Toán tử MINUS chỉ tồn tại trong Hệ quản trị dữ liệu Oracle, trong SQL nó tương đương với toán tử EXCEPT. Toán tử này được sử dụng để kết hợp 2 câu lệnh SELECT, nó trả về tất cả các bản ghi chỉ thuộc vào bảng của câu truy vấn SELECT đầu tiên, những bản ghi giao nhau và những bản ghi của câu truy vấn SELECT thứ 2 thì không được lấy vào kết quả. Các qui tắc áp dụng cho toán tử UNION cũng áp dụng cho toán tử EXCEPT. MySQL không hỗ trợ toán tử EXCEPT.

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

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

MINUS/EXCEPT

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

3. INTERSECT Mệnh đề/Toán tử INTERSECT trong SQL được sử dụng để kết hợp hai lệnh SELECT, lấy ra nhữngbản ghi nào mà nó hiện diện ở trong cả 2 bảng (có trong bảng này và cũng có trong bảng kia) Các qui tắc áp dụng cho toán tử UNION cũng áp dụng cho toán tử INTERSECT. Trong MySQL không hỗ trợ toán tử INTERSECT. Cú pháp cơ bản của INTERSECT trong SQL như sau:

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

INTERSECT

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

Q#29. Transaction là gì? Trả lời: Transaction là đơn vị hoặc dãy công việc (operation) được thực hiện theo một thứ tự logic và hợp lý, có thể được thao tác bởi người dùng hoặc bởi một Database program. Đây là một tiến trình xử lý để thực hiện một chức năng theo ý muốn của người dùng, được xác định điểm đầu và điểm cuối, được chia nhỏ thành các operation độc lập, tiến trình được thực thi một cách tuần tự các operation đó, chúng chỉ có thể cùng nhau thành công, hoặc cùng nhau thất bại. Nếu việc thực thi một operation nào đó bị fail (hỏng) đồng nghĩa với việc dữ liệu phải rollback (trở lại) trạng thái ban đầu. Ví dụ, nếu bạn đang tạo một bản ghi hoặc cập nhật một bản ghi hoặc xóa một bản ghi từ một bảng, thì bạn đang thực hiện transaction trên bảng đó. Thực tế, bạn sẽ tập hợp nhiều truy vấn SQL vào trong một nhóm và sẽ thực thi tất cả truy vấn này cùng với nhau như là một phần của một transaction. Cú pháp khai báo một transaction:

BEGIN TRAN
   -- lệnh 1
   -- lệnh 2
   -- ...
COMMIT

Q#30. UNIQUE và PRIMARY KEY constraints khác nhau như thế nào? Trả lời: Cả 2 ràng buộc đều để ngăn chặn việc tồn tại những giá trị trùng nhau trong cùng một cột được quy định. Tuy nhiên có sự khác nhau như dưới đây: PRIMARY KEY:

  • Trong 1 bảng chỉ có duy nhất một và chỉ một khóa chính
  • Không thể chấp nhận giá trị NULL

UNIQUE:

  • Trong 1 bảng có thể không có, hoặc có (một hoặc nhiều) trường UNIQUE.
  • Có thể có giá trị NULL

Q#31. Composite primary key là gì? Trả lời:
Khi PRIMARY KEY không phải chỉ có 1 trường mà bao gồm nhiều trường của bảng thì được gọi là một Composite Pimary Key.

Q#32. Index là gì ? Trả lời: Index (Chỉ mục) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thực hiện các truy vấn. Index có thể được tạo ra trên một hoặc nhiều cột của một bảng. Các Index cũng có thể là duy nhất, tương tự như UNIQUE. Hiểu đơn giản, một Index là một con trỏ tới dữ liệu trong một bảng. Nó tương tự như chỉ mục trong

0