Monday, December 28, 2015

Một số rút trích về phân biệt giữa NOT IN và NOT EXISTS

_in/not in: dùng trong trường hợp khi mình đã xác định được cần duyệt trên thuộc tính nào của bảng, "biến" duyệt phải có cùng thuộc tính với tập hợp các phần tử cần duyệt.
Ví dụ:

select * from sinhvien where diemtb not in ('8','9','10')
in ra danh sách sinh viên có điểm trung bình không phải là 8, 9, 10.

_exists/not exists: dùng trong kiểm tra sự tồn tại của các phần tử trong một tập hợp, các phần tử của tập hợp này không phân biệt thuộc tính.

Ví dụ:
select masv, hoten, diemtb from sinhvien where not exists ( select * from sinhvien where diemtb>10 or diemtb<0)

In ra danh sách mã sinh viên, họ tên, điểm trung bình, của các sinh viên (kiểm tra điều kiện: "nếu không tồn tại" sinh viên nào có điểm trung bình lớn hơn 10, và nhỏ hơn 0. Nếu có tồn tại thì sẽ không in ra (do sai dữ liệu))
_Phép trừ:
Dùng not in dữ liệu nhỏ đã xác định mảng đối tượng cần duyệt
Hoặc dùng except
Ví dụ và định nghĩa: Q=R-S;

Bảng Q là tập hợp các bộ trong R sau khi loại bỏ tất cả các bộ của S có trong R. Nếu như bộ nào có trong S mà không có trong R thì bỏ qua.
Điểu kiện là 2 bảng R và S là khả hợp, tức là nó phải có chung các thuộc tính. Và đơn nhiên khi Q sinh ra cũng sẽ khả hợp với R hay S;

_Phép chia:
Q=R/S;

Bảng Q là tập hợp một số bộ sao cho các bộ này nằm trong R và thỏa với tất cả các bộ trong R.

No comments:

Post a Comment