Πράξεις συνόλων

Μπορούμε να χρησιμοποιήσουμε πράξεις συνόλων στην SQL όπως ένωση (UNION), τομή (INTERSECT) και αφαίρεση (EXCEPT) αφού κάθε στήλη ενός πίνακα μπορεί να θεωρηθεί ως ένα σύνολο ομοειδών (ίδιου τύπου) τιμών.

Παραδείγματα

Έστω οι δύο παρακάτω πίνακες table_a και table_b

table_atable_b
A_IDA1A2W
1 1 2 5
2 4 2 6
3 2 3 3
4 1 4 1
B_IDB1B2W
1 5 2 2
2 3 1 5
3 1 3 1
4 4 5 7

UNION

Η UNION (ένωση) ενώνει δύο σύνολα με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.

SELECT A1,A2 
		FROM table_a 
		UNION 
		SELECT B1,B2 
		FROM table_b;
		
A1A2
1 2
4 2
2 3
1 4
5 2
3 1
1 3
4 5

INTERSECT

Η INTERSECT (τομή) επιστρέφει την τομή δύο συνόλων με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.

SELECT W 
		FROM table_a 
		INTERSECT 
		SELECT W 
		FROM table_b;
		
W
5
1

Για την MySQL χρειάζεται άλλο ισοδύναμο ερώτημα

SELECT W
		FROM table_a INNER JOIN table_b
		USING (W);
		
W
5
1

ή

SELECT A1, A2
		FROM table_a INNER JOIN table_b
		ON A1=B1 AND A2=B2;
		

EXCEPT

Η EXCEPT (μείον ή MINUS) επιστρέφει τη διαφορά μεταξύ δύο συνόλων με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.

SELECT W 
		FROM table_a 
		EXCEPT 
		SELECT W 
		FROM table_b;
		
W
6
3

Για την MySQL χρειάζεται άλλο ισοδύναμο ερώτημα

SELECT DISTINCT * 
		FROM table_a 
		WHERE NOT EXISTS 
		(SELECT * FROM table_b);