K ıSıT -V ıEW -S EQUENCE U NıON -I NTERSECTıON -E XCEPT E XıSTS -I N İbrahim Onur Sığırcı
İ LIŞKI T ABLOLARı idfnamelnamebdate AhmetDemir MehmetBakır AyşeTunç FatmaGümüş AliTaş1995 codename BLM1551Bilgisayar Bilimleri - 1 BLM1541Olasılık ve İstatistik BLM2501Assembly Dili BLM3561İşletim Sistemleri BLM4581Veri İletişimi student course codeid BLM BLM BLM BLM BLM BLM BLM BLM BLM take
CREATE TABLE team ( tnumber numeric(2), tname varchar(15) ); Ö RNEK İ LIŞKI T ABLOSU employee team team_employee FNAME* VARCHAR(15) MINIT VARCHAR(1) LNAME* VARCHAR(15) SSN* CHAR(9) BDATE DATE ADDRESS VARCHAR(50) SEX CHAR(1) SALARY NUMERIC SUPERSSN CHAR(9) DNO NUMERIC TNUMBER* NUMERIC(2) TNAME VARCHAR(15) TNO NUMERIC(2) ESSN CHAR(9) PLAY_TIME NUMERIC(2) CREATE TABLE team_employee ( tno numeric(2), essn char(9) play_time numeric(2) );
CREATE TABLE team ( tnumber numeric(2), tname varchar(15) CONSTRAINT pk_team PRIMARY KEY (tnumber) ); C ONSTRAıNT (S ıNıRLAMA ) team team_employee TNUMBER* NUMERIC(2) TNAME VARCHAR(15) TNO NUMERIC(2) ESSN CHAR(9) PLAY_TIME NUMERIC(2) CREATE TABLE team_employee ( tno numeric(2), essn char(9), play_time numeric(2), CONSTRAINT pk_team_employee PRIMARY KEY (tno, essn), CONSTRAINT fk_team FOREIGN KEY (tno) REFERENCES team (tnumber) ON DELETE CASCADE, CONSTRAINT fk_emp FOREIGN KEY (essn) REFERENCES employee (ssn) ON DELETE CASCADE, CONSTRAINT play_time_ck CHECK (play_time>13) );
C ONSTRAıNT (S ıNıRLAMA ) CONSTRAINT isim PRIMARY KEY (sütunlar) CONSTRAINT isim FOREIGN KEY (sütun) REFERENCES tablo (sütunun bu tablodaki adı) CONSTRAINT isim FOREIGN KEY (sütun) REFERENCES tablo (sütunun bu tablodaki adı) ON DELETE CASCADE CONSTRAINT isim CHECK (şart) ALTER TABLE tablo DROP CONSTRAINT isim
V ıEW Sorgu sonucunda oluşan sanal tabloların belli bir isimle saklanmasını ifade eder. SELECT sütunlar FROM tablolar WHERE şart CREATE VIEW view_ismi AS
Ö RNEK SELECT fname, salary FROM employee WHERE salary BETWEEN AND * Maaşı ile arasında olan çalışanların isimlerini ve maaşlarını gösteren bir view yazınız. CREATE VIEW maas_araligi AS NOT: employee tablosundan bu view’ı etkileyen bir bilgi sildiğimizde view otomatik olarak güncellenir.
Ö RNEK SELECT fname, lname, sex FROM employee e, department d WHERE e.dno = d.dnumber AND d.dname=‘Sales’ * «Sales» departmanında çalışanların ad, soyad ve cinsiyetlerini gösteren bir view yazınız. CREATE VIEW sales_calisanlari AS NOT: View aşağıdaki gibi gösterilir. SELECT * FROM sales_calisanlari
S EQUENCE Belirli şartlarda nümerik diziler oluşturmaya yarar. CREATE SEQUENCE isim [ INCREMENT BY #] [ START WITH #] [ MAXVALUE # | NOMAXVALUE ] [ MINVALUE # | NOMINVALUE ] [ CYCLE | NO CYCLE ] [ CACHE #] CREATE SEQUENCE seq INCREMENT BY 2 START WITH 5 MAXVALUE 21 NO CYCLE 5, 7, 9, 11, 13, 15, 17, 19, 21
S EQUENCE Sequence hakkında bilgi almak için; SELECT * FROM sequence_ismi INSERT INTO team VALUES ( nextval(‘seq’), ‘Bizim Takım’)
I NTERSECT / U NıON / E XCEPT 1. Sorgu ( INTERSECT / UNION / EXCEPT ) 2. Sorgu * «OperatingSystems» isimli projede çalışanların ve «Software» departmanında çalışanların ad, soyad bilgilerini bulunuz. SELECT fname, lname FROM employee e, project p, works_on w WHERE e.ssn = w.essn AND p.pnumber=w.pno AND p.pname = ‘OperatingSystems’ SELECT fname, lname FROM employee e, department d WHERE e.dno = d.dnumber AND d.dname = ‘Software’ INTERSECT
Ö RNEK * «OperatingSystems» isimli projede çalışanların veya «Software» departmanında çalışanların ad, soyad bilgilerini bulunuz. SELECT fname, lname FROM employee e, project p, works_on w WHERE e.ssn = w.essn AND p.pnumber=w.pno AND p.pname = ‘OperatingSystems’ SELECT fname, lname FROM employee e, department d WHERE e.dno = d.dnumber AND d.dname = ‘Software’ UNION
Ö RNEK * «OperatingSystems» isimli projede çalışanların ama «Software» departmanında çalışmayanların ad, soyad bilgilerini bulunuz. SELECT fname, lname FROM employee e, project p, works_on w WHERE e.ssn = w.essn AND p.pnumber=w.pno AND p.pname = ‘OperatingSystems’ SELECT fname, lname FROM employee e, department d WHERE e.dno = d.dnumber AND d.dname = ‘Software’ EXCEPT
Ö RNEK – E XıSTS / N OT E XıSTS * Herhangi bir departmanın yöneticisi olmayan ve herhangi bir kişinin amiri olmayan (hiyerarşinin en altındaki) çalışanların ad, soyadlarını bulunuz. SELECT fname, lname FROM employee e WHERE NOT EXISTS ( SELECT null FROM deparment d WHERE d.mgrssn = e.ssn ) AND NOT EXISTS ( SELECT null FROM employee e2 WHERE e2.superssn = e.ssn )
Ö RNEK – I N * İsmi «John» olan çalışanların çalıştıkları departmanların isimlerini IN kullanarak bulunuz. SELECT dname FROM department WHERE dnumber IN ( SELECT dno FROM employee WHERE fname = ‘John’ )
Ö RNEK – F ONKSIYONLAR * «Sales» departmanında kaç kişinin çalıştığını, toplam maaşlarını, en yüksek maaşı, en düşük maaşı ve ortalama maaşı bulunuz. SELECT count(*), sum(salary), max(salary), min(salary), avg(salary) FROM department d, employee e WHERE d.dnumber = e.dno AND d.dname = ‘Sales’