-- set of numbers is a table
-- create one set with 3 elements

CREATE TABLE myset1 (element NUMBER);

INSERT INTO myset1 VALUES (1);
INSERT INTO myset1 VALUES (2);
INSERT INTO myset1 VALUES (3);

commit;

-- check if 1 is an element

SELECT 'TRUE' BOOL FROM dual
WHERE 1 IN 
(SELECT element FROM myset1);

-- create second set with 3 elements

CREATE TABLE myset2 (element NUMBER);

INSERT INTO myset2 VALUES (1);
INSERT INTO myset2 VALUES (5);
INSERT INTO myset2 VALUES (6);

commit;

-- union sets

SELECT element FROM myset1
UNION
SELECT element FROM myset2;

-- intersection

SELECT element FROM myset1
INTERSECT
SELECT element FROM myset2;

-- difference

SELECT element FROM myset1
minus
SELECT element FROM myset2;

-- subset

-- change myset2 to only have 1 as element

DELETE FROM myset2 WHERE NOT element = 1;

commit;

-- check if myset2 subset of myset1

SELECT 'TRUE' BOOL FROM dual
WHERE 0 =  (SELECT COUNT(*) FROM 
(SELECT element FROM myset2
minus
SELECT element FROM myset1));

-- equality

-- change myset1 to only have 1 as element

DELETE FROM myset1 WHERE NOT element = 1;

commit;

 -- check if myset2 subset of myset1 and
 -- check if myset1 subset of myset2 and

SELECT 'TRUE' BOOL FROM dual
WHERE 
0 =  (SELECT COUNT(*) FROM 
(SELECT element FROM myset2
minus
SELECT element FROM myset1)) AND
0 =
(SELECT COUNT(*) FROM 
(SELECT element FROM myset1
minus
SELECT element FROM myset2));