create table IMPIEGATO (MATRICOLA VARCHAR(10) NOT NULL,
COGNOME VARCHAR(10),
STIPENDIO NUMERIC(10),
DIPARTIMENTO VARCHAR(10),
CONSTRAINT IMP_PK PRIMARY KEY (MATRICOLA));


create table DIPARTIMENTO (CODICE VARCHAR(10) NOT NULL,
NOME VARCHAR(10),
SEDE varchar(10),
DIRETTORE VARCHAR(10),
CONSTRAINT DIP_PK PRIMARY KEY (CODICE),
CONSTRAINT DIP_FK FOREIGN KEY (DIRETTORE) REFERENCES IMPIEGATO(MATRICOLA));


ALTER TABLE IMPIEGATO ADD CONSTRAINT IMP_FK FOREIGN KEY (DIPARTIMENTO) REFERENCES DIPARTIMENTO(CODICE);

insert into IMPIEGATO VALUES('1111','CECI',1000,NULL);
INSERT INTO IMPIEGATO VALUES('1112','ESPOSITO',6000,NULL);
INSERT INTO DIPARTIMENTO VALUES ('01','INFORMATICA','BARI','1112');
UPDATE IMPIEGATO SET DIPARTIMENTO='01'; 
INSERT INTO IMPIEGATO VALUES('1113','MALERBA',7000,'01');


/*query 1*/


SELECT DISTINCT COGNOME, STIPENDIO
FROM IMPIEGATO, DIPARTIMENTO
WHERE DIPARTIMENTO=CODICE ABD SEDE = 'ROMA';

/*query 2*/

SELECT COGNOME 
FROM IMPIEGATO 
WHERE EXISTS (SELECT * FROM DIPARTIMENTO WHERE DIRETTORE= MATRICOLA)

/*query 3 versione 1*/

SELECT IMP1.COGNOME, IMP1.MATRICOLA
FROM IMPIEGATO IMP1
WHERE IMP1.STIPENDIO >  (SELECT IMP2.STIPENDIO 
	FROM IMPIEGATO IMP2, DIPARTIMENTO DIP 
	WHERE IMP1.DIPARTIMENTO = DIP.CODICE AND IMP2.MATRICOLA = DIP.DIRETTORE);
	
/*query 3 versione 2*/
SELECT IMP1.COGNOME, IMP1.MATRICOLA
FROM IMPIEGATO IMP1, IMPIEGATO IMP2, DIPARTIMENTO DIP 
WHERE IMP1.STIPENDIO >  IMP2.STIPENDIO AND IMP1.DIPARTIMENTO = DIP.CODICE AND IMP2.MATRICOLA = DIP.DIRETTORE;
