Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
Yayınlayanİbrahi̇m Ece Değiştirilmiş 8 yıl önce
1
Veri Tabanı Yönetimi Dersi 4. Laboratuvarı Constraint-View-Sequence Union-Intersection-Except Exısts-In Arş. Gör. Pınar CİHAN
2
Primary Key Constraint PRIMARY KEY tablomuzdaki ilgili alanda benzersiz kayıtların tutulmasını istediğimiz durumlarda kullanılır. Bir tablo sadece bir primary key içerdiğinde nasıl oluşturulduğunu görmüştük: id int NOT NULL, PRIMARY KEY (id) PK düşürme: ALTER TABLE tabloadi DROP CONSTRAINT tabloadi_pkey; Bir tabloda sadece bir primary key bulunur ama bununla birlikte tabloda birden fazla kolon için bileşik anahtar yani composite key oluşturulabilir: CONSTRAINT isim PRIMARY KEY (sütunlar) PK düşürme: ALTER TABLE tabloadi DROP CONSTRAINT isim
3
Foreign Key Constraint Temel olarak FOREIGN KEY yardımcı index oluşturmak için kullanılır. Bir tabloda "id" alanına PRIMARY KEY uygulayabiliriz. Ancak aynı tablodaki başka bir alan farklı bir tablodaki kayda bağlı çalışabilir. Bu iki tablo arasında bir bağ kurmak gerektiği durumlarda FOREIGN KEY devreye giriyor. FOREIGN KEY tanımlaması yapılırken hangi tablodaki hangi alanla ilişkili olduğunu REFERENCES ifadesinden sonra yazmak gerekir. CONSTRAINT isim FOREIGN KEY (sütun) REFERENCES tablo (sütunun bu tablodaki adı)
4
On Delete Cascade/On Update Cascade Constraint ON DELETE CASCADE : Referans edilen tablodaki(employee) kayıt yada kayıtların silinmesi durumunda referans alan(team_employee) tabloda ilişkili kayıtların da silinmesi. Örneğin employee’den bir satır silinince, team_employee tablosunda karşılık gelen satırların da silinmesi. CONSTRAINT isim FOREIGN KEY (sütun) REFERENCES tablo (sütunun bu tablodaki adı) ON DELETE CASCADE ON UPDATE CASCADE : Referans edilen tablodaki kayıt yada kayıtların guncellenmesi durumunda referans alan tabloda ilişkili kayıtların da güncellenmesi CONSTRAINT isim FOREIGN KEY (sütun) REFERENCES tablo (sütunun bu tablodaki adı) ON UPDATE CASCADE
5
Check Constraint "Check Constraint" verinin doğruluğunu ve bütünlüğünü korumak üzere kullanılan bir kısıttır. Check constraint eklenmiş bir kolona yeni bilgi eklenirken veya bilgi güncellenirken, veri yazılmış olan kurallara göre kontrol edilir ve kurala uymuyorsa bir hata verilir ve veri kaydedilmez. CONSTRAINT isim CHECK (şart)
6
Örnek İlişki Tablosu 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) employee team team_employee
7
Team tablosu ve Employee tablolarının ilişki tablosu olan Team_employee tablosunu aşağıdaki özelliklere sahip olacak şekilde yaratınız: Team tablosu: Create table team(tnumber numeric(2), tname varchar(15), constraint pk_team primary key (tnumber)) Team_employee Tablosu: Nitelikler: Tno (numeric(2)), essn (char(9)), play_time (numeric (2)) 1. Tno ve essn birlikte belirleyici nitelik (primary key) olmalıdır. CREATE TABLE team_employee ( tno numeric(2), essn char(9), play_time numeric(2), CONSTRAINT pk_team_emp PRIMARY KEY (tno, essn), 2. Tno Team tablosundaki tnumber ’i referans almalıdır ve Team tablosundan bir satır silindiğinde bu satıra ait tno’lu satırlar da silinmelidir. CONSTRAINT fk_team FOREIGN KEY (tno) REFERENCES team(tnumber) ON DELETE CASCADE, 3. Essn Employee tablosundaki ssn’yi referans almalıdır ve Employee tablosundan bir satır silindiğinde bu satıra ait ssn’li satırlar da silinmelidir. CONSTRAINT fk_emp FOREIGN KEY (essn) REFERENCES employee(ssn) ON DELETE CASCADE, 4. Play_time alanının 12’den çok olması engellenmelidir. (bir çalışan bir takımda 12 haftadan uzun süre oynayamaz!) CONSTRAINT play_time_ck CHECK (play_time<13) );
8
View View, sorgu sonucunda oluşan sanal tablolardır. VT’de fiziksel olarak bulunmazlar, sorgu olarak saklanırlar. View’lerin sorgularında adı geçen tabloların içeriği değiştirildiğinde View’lerin ürettiği sonuç da otomatik olarak değişir. Syntax’ı aşağıdaki gibidir: SELECT sütunlar FROM tablolar WHERE şart CREATE VIEW view_ismi AS
9
Örnek 1 Maaşı 20000 ile 40000 arasında olan çalışanların isimlerini ve maaşlarını gösteren bir view yazınız. SELECT fname, salary FROM employee WHERE salary BETWEEN 20000 AND 40000 CREATE VIEW maas_araligi AS NOT: Örneğin maaşı 30000 olan çalışanları employee tablosundan silersek, ilgili çalışanlar bu view’den de silinir.
10
Örnek 2 ‘ Sales’ departmanında çalışanların ad, soyad ve cinsiyetlerini gösteren bir view yazınız. SELECT fname, lname, sex FROM employee e, department d WHERE e.dno = d.dnumber AND d.dname=‘Sales’ CREATE VIEW sales_calisanlari AS NOT: View aşağıdaki gibi gösterilir. SELECT * FROM sales_calisanlari
11
Sequence Sequence, belli bir sırada numeric değer üretilmesini sağlatan VT nesnesidir. Genelde primary key’ler gibi eşsiz (unique) olan alanların değerlerinin otomatik arttırılması için kullanılır. Syntax’ı aşağıdaki gibidir: CREATE SEQUENCE isim [ INCREMENT BY #] [ START WITH #] [ MAXVALUE # | NOMAXVALUE ] [ MINVALUE # | NOMINVALUE ] [ CYCLE | NO CYCLE ] [ CACHE #] CREATE SEQUENCE seq INCREMENT BY 3 START WITH 2 MAXVALUE 33 NO CYCLE 5, 7, 9, 11, 13, 15, 17, 19, 21 önceden yaratılmış bir sequence hakkında bilgi almak için: Select * from sequence_name
12
Örnek 9’dan başlayıp 99’a kadar birer birer artan bir «sequence» oluşturun. Bu sequence’i «TEAM» tablosunun ‘tnumber’ larının numaralandırılması için kullanın. A.CREATE SEQUENCE seq_tnumber MINVALUE 9 MAXVALUE 99 INCREMENT BY 1; B.INSERT INTO team VALUES(nextval('seq_tnumber'), 'Yiğitler'); INSERT INTO team VALUES(nextval('seq_tnumber'), ‘Kediler');
13
Intersect ‘OperatingSystems’ isimli projede çalışanların ve ‘Software’ departmanında çalışanların ad, soyad bilgilerini bulunuz. (UNION / INTERSECT / EXCEPT) SELECT fname, lname FROM employee e, project p, works_on wo WHERE pname = 'OperatingSystems' AND p.pnumber = wo.pno AND wo.essn = e.ssn SELECT fname, lname FROM employee e, department d WHERE dname = 'Software' AND e.dno = d.dnumber; INTERSECT
14
Union ‘OperatingSystems’ isimli projede çalışanların veya ‘Software’ departmanında çalışanların ad, soyad bilgilerini bulunuz. (UNION ? / INTERSECT ? / EXCEPT ?) 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
15
Except “OperatingSystems” isimli projede çalışanların ve “Software” departmanında çalışmayanların ad, soyad bilgilerini bulunuz. (UNION ? / INTERSECT ? / EXCEPT ?) 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
16
NOT EXISTS 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 )
17
IN İsmi ‘John’ olan işçilerin çalıştıkları departmanların isimlerini ‘IN’ kullanarak bulunuz. SELECT dname FROM department WHERE dnumber IN ( SELECT dno FROM employee WHERE fname = ‘John’ )
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.