Upload
duonglien
View
228
Download
1
Embed Size (px)
Citation preview
Veri Tabanı-I 7.Hafta
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
1
TABLOYA
Ekleme(insert),
Silme(Delete),
Güncelleme(Update)
TABLODA EKLEME - SİLME - GÜNCELLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
2
INSERT
INSERT INTO Tablo [(Kolon Listesi)] VALUES (Değerler Listesi)
DELETE
DELETE FROM Tablo WHERE Koşullar
UPDATE
UPDATE Tablo SET Kolon1=Değer1, Kolon2=Değer2… WHERE Koşullar
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
3
INSERT INTO Tablo ( Kolon Listesi ) VALUES (Değerler Listesi)
Bir tabloya (ilişkiye) bir veya daha fazla satır eklemede kullanılır.
Kolon listesi zorunlu değil. Belirtilmemişse TABLO’daki tüm kolonlar CREATE TABLE
komutundaki sırada kabul edilir.
Kolon için DEFAULT belirtilmemişse ve boş bırakılacaksa, değerler listesinde NULL
belirtilmelidir.
Değerler Listesi sayısı, Kolon Listesi sayısına eşit olmalıdır.
Değerler Listesi’ndeki verinin yeri, ilgili kolonun yerine uygun olmalıdır.
Değerler Listesi’ndeki verinin türü, ilgili kolonun veri türünde olmalıdır.
Foreign key olan tabloya kayıt primary key olan tablodaki ilişkili alana bağlı veriye
uygun olarak girilebilir.
Hesaplanmış alanlara ve identity alanlara veri girilmez
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
4
INSERT INTO ogrenci (numara , adsoy , dogumtarihi) VALUES ('1013160101' , 'Arda Koç' , '1990-12-18') Veya INSERT INTO ogrenci VALUES ('1013160101' , 'Arda Koç' , '1990-12-18')
Var olan yeni_ogrenci tablosuna ogrenci tablosundaki bilgileri aktarır. Her iki tablonun da aynı yapıda olması gerekir INSERT INTO ogrenci_yeni SELECT * FROM ogrenci INSERT INTO ogrenci_yeni (numara , adsoy , dogumtarihi) ( SELECT numara , adsoy , dogumtarihi FROM ogrenci WHERE numara <100)
Yeni ogrenci_yeni TABLOSU oluşturur ve ogrenci tablosundan numara ve adsoy bilgilerini aktarır SELECT numara, adsoy INTO ogrenci_yeni FROM ogrenci
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
5
CREATE TABLE URUNLER ( urun_no int primary key , urun_adi varchar(15), fiyati money );
CREATE TABLE MUSTERI ( musterino int primary key , ad varchar(25), soyad varchar(25) );
create table SATIS ( musterino int FOREIGN KEY REFERENCES MUSTERI ON DELETE CASCADE ON UPDATE CASCADE , urun_no int FOREIGN KEY REFERENCES URUNLER ON DELETE CASCADE ON UPDATE CASCADE , satis_miktari real, satis_fiyati money, satis_tarihi DateTime Default(GetDate()) )
INSERT INTO URUNLER (urun_no , urun_adi , fiyati) VALUES (1 , ‘Kalem' , 1.75)
INSERT INTO MUSTERI(musterino, ad , soyad) VALUES (101 , ‘Ali’ , ’Can’ )
INSERT INTO SATIS( musterino, urun_no, satis_miktari, satis_fiyati) VALUES (101 , 1 ,5 , 1.85 )
INSERT INTO SATIS( musterino, urun_no, satis_miktari, satis_fiyati) VALUES (101 , 8 ,5 , 1.85 )
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
6
Create table ornek ( x int , y int, z AS (x*y)/2 ) INSERT INTO ornek (x , y) VALUES ( 8,5 ) Select * from ornek
Create table ornek1 ( x int default (10) , y int , z AS (x*y)/2 ) INSERT INTO ornek (x , y) VALUES ( 8,5 )
INSERT INTO ornek ( y) VALUES ( 8 )
INSERT INTO ornek (x , y, z) VALUES ( 8,5,13 ) -- yanlış
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
7
CREATE TABLE musteri ( musteri_id uniqueidentifier NOT NULL DEFAULT newid(), ad nvarchar(20), soy nvarchar(20) ) insert into musteri (ad , soy) VALUES('Ali', ‘Can') insert into musteri (musteri_id , ad, soy) VALUES ( NEWID() , ‘Fatma‘ , ‘Kara')
EKLEME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
8
CREATE TABLE satis
(
satisID int NOT NULL,
musteriID int NOT NULL,
satistarihi smalldatetime NOT NULL ,
sonodemetarihi smalldatetime NOT NULL,
CONSTRAINT kisit1 CHECK (DATEDIFF(day, satistarihi, sonodemetarihi ) <= 90)
)
-- Not: datediff (gun, ilk, son) → gun = ilk - son ; gün alarak farkı bulur
-- satış tarihi ile son ödeme tarihi arasındaki fark en çok 90 gün olabilir
-- izin vermez yanlış fark 90 günden büyük insert into satis (satisID, musteriID,satistarihi,sonodemetarihi) VALUES(1,101,'2011-01-01','2011-4-3') -- izin vermez yanlış fark 90 günden büyük insert into satis (satisID, musteriID,satistarihi,sonodemetarihi) VALUES(1,101,'2011-01-01','2011-4-2') -- doğru fark 90 güne eşit veya küçük insert into satis (satisID, musteriID,satistarihi,sonodemetarihi) VALUES(1,101,'2011-01-01','2011-4-1')
SİLME (DELETE)
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
9
Tablodaki kayıt silinir.
Tablonun yapısında bir değişiklik olmaz
WHERE ile koşul konmaz ise tüm kayıtlar silinir
WHERE ile koşul olursa sadece koşula uyan kayıtlar silinir
Kendisine bağlı bir Foreign Key (FK) olan primary Key (PK) tablo silinemez. Önce
FK tablosundaki kayıt silinmeli , daha sonra PK tablo silinir.
DELETE
DELETE FROM Tablo WHERE Koşullar
SİLME
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
10
DELETE FROM ogrenci WHERE numara is null
DELETE FROM ogrenci WHERE vize>=0 and vize <=45
DELETE FROM ogrenci WHERE vize>=0 and vize <=45
GÜNCELLEME – UPDATE (DEĞİŞTİRME)
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
11
WHERE ile koşul olmaz ise tüm kayıtlar aynı şekilde güncellenir ( DİKKAT)
WHERE ile koşul konursa sadece koşula uyan kayıtlar güncellenir
UPDATE Tablo SET
Kolon1 = Değer1 ,
Kolon2 = Değer2 ,
…
WHERE Koşullar
GÜNCELLEME – UPDATE (DEĞİŞTİRME)
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
12
UPDATE stok SET fiyat= (fiyat*1.1)
--Stoktaki bütün mallara %10 zam yapılmıştır
UPDATE stok SET fiyat= (fiyat* 0.8 )
WHERE 20> ( DATEDIFF(day, GetDate() , sonkullanma_tarihi ) )
--Stoktaki bütün mallarda son kullanma tarihine 20 günden az olanmallara %20 indirim yapılmıştır
UPDATE musteri SET
adi=‘Fatma’ ,
soyad =‘Kara’ ,
ili=‘BURDUR’ ,
musterino=101
WHERE musterino=1
--musterino 1 olan kaydın adını, soyadını, ilini ve musterino sunu değiştirir
GÜNCELLEME – UPDATE (DEĞİŞTİRME)
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
13
UPDATE stok SET fiyat= (fiyat* 0.9 ) WHERE sno NOT in ( select sno from satis)
--Stoktaki hiç satılmayan mallarda %10 indirim yapılmıştır
UPDATE stok SET fiyat= (fiyat* 1.1 ) WHERE sno in ( select sno from satis)
--Stoktaki satılan mallarda %10 zam yapılmıştır
Soru ve Önerileriniz …
13
.04
.20
11
M
uh
amm
er İL
KU
ÇA
R, M
AK
Ü-2
01
1 B
UR
DU
R
14
?