BPR255 Veri Tabanı Yönetim Sistemleri II

advertisement
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
Bu Derste Öğrenecekleriniz:
1- Tabloya Veri (Yeni Kayıt) Ekleme
2- Kayıt Silme
3- Kayıt Güncelleme
Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu
tabloya göre yapacağız.
CREATE TABLE ÖĞRENCİLER
(
NUMARA
INT
ADI
VARCHAR(25)
SOYADI
VARCHAR(25)
BÖLÜM
CHAR(4)
TELEFON
CİNSİYET
MEMLEKET
CHAR(16)
VARCHAR(5)
VARCHAR(20)
PRIMARY KEY
REFERENCES BÖLÜMLER([BÖLÜM KODU])
ON DELETE CASCADE ON UPDATE CASCADE
CHECK(CİNSİYET IN('BAY', 'BAYAN'))
DEFAULT 'BARTIN'
,
NOT NULL,
NOT NULL,
NOT NULL,
NULL
,
NOT NULL,
NULL
)
Tabloya Veri ( Yeni Kayıt) Ekleme
Yukarıdaki gibi tanımlanmış tablomuzu düşünelim. Görüldüğü gibi tabloda NUMARA, ADI, SOYADI,
BÖLÜM, TELEFON, CİNSİYET ve MEMLEKET alanları var. Tabloya dikkat edilirse, alanlardan bazıları
zorunlu, bazıları değil.
Bu tabloya veri girişi yapmak için en kolay yol aşağıdaki gibi olacaktır:
INSERT INTO ÖĞRENCİLER
VALUES(100, 'ALİ', 'KARA', 'BPR1', '0378-227-27-27', 'BAY', 'BARTIN')
Yukarıdaki kod ile öğrenciler tablosunun tüm alanlarına sırasını bozmadan verilen bilgiler girilecek
demektir.
NOT: BÖLÜM alanı bölümler tablosundan referans alındığı için bölüm alanı için bölümler tablosunda olan
bölümlerden girmek zorundayız. Yani öğrenciler tablosunda bölüm alanı için bölümler tablosunda olmayan bir
bölüm kodu giremeyeceğiz.
Alan belirtmeksizin tüm alanlara veri girişi yapılacaksa aşağıdaki kural geçerli olacaktır.
INSERT [INTO] tablo_adı
VALUES(veri1, veri2, [,...n])
Yukarıdaki tablomuza tekrar dönecek olursak; bazı alanların boş bırakılabilir (NULL) olduğundan
bahsetmiştik. Boş bırakılabilir alanlara veri girişi yapmak istemezsek bunun için iki seçeneğimiz var;
i.
ii.
Veri girişi yaparken boş bırakılabilir alanlara NULL yazma,
Sadece veri gireceğimiz alanları belirterek veri girişi yapma.
1
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
I. Veri girişi yaparken boş bırakılabilir alanlara NULL yazma:
INSERT INTO ÖĞRENCİLER
VALUES(101, 'VELİ', 'SARI', 'BPR2', NULL, 'BAY', NULL)
Bu kod ile öğrenciler tablosuna yeni bir kayıt girilmiş oluyor, fakat telefon ve memleket alanı boş
bırakılıyor. Bu durumda veri tablosu aşağıdaki gibi olacaktır.
Dikkat edilirse telefon ve şehir alanlarına veri yerine NULL yazılmış. Yani bu alanlar veri tabanında boş
bırakılacak, dolayısıyla yer tutmayacaklar.
Yine ilk başa, tablomuzu tanımladığımız alana dönecek olursak; tablomuzu tanımlarken şehir alanı için
aslında bir varsayılan değer ayarlamıştık. Eğer her hangi bir alanın varsayılan değeri tabloya girsin
istiyorsak bu alanlara DEFAULT yazmamız gerekir.
INSERT INTO ÖĞRENCİLER
VALUES(102, 'AYŞE', 'KIRMIZI', 'BPR1', NULL, 'BAYAN', DEFAULT)
Bu komut çalıştırıldıktan sonra veri tablomuzun hali aşağıdaki gibi olacaktır:
Burada telefon boş bırakılmış, şehir alanı ise bu alan için tanımladığımız varsayılan değer olmuştur.
II. Sadece veri gireceğimiz alanları belirterek veri girişi yapma:
Bu durumda aşağıdaki kurala göre kod yazmamız gerekecektir.
INSERT [INTO] tablo_adı (alan1, alan2, [,...n])
VALUES(veri1, veri2, [,...n])
Aşağıdaki örneği kontrol ediniz;
INSERT INTO ÖĞRENCİLER(NUMARA, ADI, SOYADI, BÖLÜM, CİNSİYET)
VALUES(103, 'İPEK', 'YEŞİL', 'BPR2', 'BAYAN')
Burada dikkat edilirse öğrenciler tablosuna direk olarak veri girişi yapılacak alanlar belirtilmiş ve her alanın
sırasına göre verisi girilmiştir. Böylece boş bırakılabilecek alanlar seçilmemiş, dolayısıyla verileri de
girilmemiş oluyor. Bu kayıt eklenirken dikkat edilirse normalde şehir alanı belirtilmemiş, fakat şehir alanı
için varsayılan (default) değer olduğu için tabloya varsayılan değer girmiştir. Böylece veri tablomuzun son
hali aşağıdaki gibi olacaktır.
2
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
NOT: SQL’de varsayılan (DEFAULT) değeri olan alanlar için herhangi bir veri belirtilmezse; o kayıt için o alanların
varsayılan değerleri geçerli olacaktır.
Veri girilecek alanları belirterek tabloya veri girilirken bilinmesi gereken bir diğer husus ise; alanlar hangi
sırada yazılmış ise veriler de o sırada girilmelidir.
INSERT INTO ÖĞRENCİLER(ADI,SOYADI,MEMLEKET,CİNSİYET,NUMARA,TELEFON,BÖLÜM)
VALUES('AHMET', 'MAVİ','İSTANBUL' ,'BAY', 104, '0212-212-12-12', 'BPR1')
Bu durumda verilerin tablodaki sırası değil de, hangi alana hangi kayıt girecekse karşılıklı olarak yazılmıştır,
fakat kayıtlar tabloya gireceği zaman otomatik olarak yine olması gerekeceği gibi tabloya girecektir. Bu
komuttan sonra veri tablomuz aşağıdaki gibi olacaktır.
Normalde boş bırakılamayan alanlara veri girilmek zorunluluğu vardır, dolayısıyla alan belirterek veri
girişi yapılan durumlarda NOT NULL olan alanların yazılması gerekiyor. Fakat IDENTITY olan alanlar
tabloda boş bırakılamamasına rağmen veri girişi yapılırken her hangi bir veri yazılmak zorunda
değildir. Çünkü zaten IDENTITY olan alanlar otomatik olarak üretilen sayılardan oluşuyor. Aşağıdaki
siparişler tablosunu kontrol ediniz.
CREATE TABLE SİPARİŞLER
(
[SİPARİŞ NO] INT IDENTITY(100,1)
[ÜRÜN ADI]
VARCHAR(50)
MİKTAR
INT
FİYAT
SMALLMONEY
AÇIKLAMA
VARCHAR(50)
)
PRIMARY KEY
,
NOT NULL,
NOT NULL,
NOT NULL,
NULL
Tabloda “sipariş no” PRIMARY KEY olmasına rağmen (primary key boş bırakılamaz) IDENTITY olduğu
için veri girişlerinde “sipariş no” alanı için veri belirtilmiyor, çünkü zaten IDENTITY olan alanlar
otomatik olarak üretilirler. Aşağıdaki örnek koda dikkat edin.
INSERT INTO SİPARİŞLER
VALUES('KLAVYE',2, 10, NULL )
Bu durumda sipariş no otomatik olarak üretilecektir. Açıklama alanı ise NULL olarak belirtildiği için
boş olacaktır. Bu komut çalıştırıldıktan sonra siparişler veri tablosu aşağıdaki gibi olacaktır.
3
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
Sipariş no otomatik olarak üretilebilmesine rağmen istersek kendimiz de belirtebiliriz. Fakat bunun
için insert komutundan önce IDENTITY_INSERT parametresini ON yapmamız gerekmektedir.
Aşağıdaki kodu inceleyin.
SET IDENTITY_INSERT SİPARİŞLER ON
INSERT INTO SİPARİŞLER ([SİPARİŞ NO], [ÜRÜN ADI], MİKTAR, FİYAT, AÇIKLAMA)
VALUES(150,'IPHONE-4S2',1, 1750, 'HEDİYE PAKETİ OLACAK')
IDENTITY_INSERT parametresini ON yapılmış ise IDENTITY alanlar otomatik sayı üretemeyecektir.
Tekrar üretebilmeleri için IDENTITY_INSERT parametresini OFF yapmamız gerekmektedir.
SET IDENTITY_INSERT SİPARİŞLER OFF
IDENTITY_INSERT parametresi her tablo için ayrı ayrı ayarlanır.
Tablodan Veri (Kayıt) Silme
Bir tabladan tüm kayıtları silmek için aşağıdaki kod kullanılabilir.
DELETE [FROM] tablo_adı
Bu kod belirtilen tablodan koşulsuz olarak tüm kayıtları silecektir. Fakat tipik olarak bir tablodan
belirtilerek kayıt silinir. Bunun için koşul ifadeleri kullanılır. Koşul ifadesi kullanılarak bir tablodan kayıt
silinecekse aşağıdaki kod kullanılır.
DELETE [FROM] tablo_adı
WHERE koşul_ifadesi
Aşağıdaki örnekleri kontrol ediniz. Bu kod ile şartsız koşulsuz öğrenciler tablosundaki tüm kayıtlar
silinecektir.
DELETE FROM ÖĞRENCİLER
NOT: Koşulsuz silme genelde yanlışlıkla yapılmaktadır. Ancak tablodaki tüm kayıtları silmek için kullanılabilir. Ancak
tablonun içindeki kayıtların tamamı silinmek istendiğinde otomatik artan (IDENTITY) alanların tekrar en baştan
başlaması için DELETE yerine TRUNCATE TABLE kullanılmalıdır.
Bir tablodan tüm kayıtları temizlemek istendiğinde aşağıdaki komut kullanılır.
TRUNCATE TABLE tablo_adı
Bu komut öğrenciler tablodaki tüm kayıtları silecektir.
TRUNCATE TABLE ÖĞRENCİLER
4
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
Bir koşula bağlı olarak kayıt silmek istersek aşağıdaki gibi kod yazmamız gerekecektir.
DELETE FROM ÖĞRENCİLER
WHERE ADI='ALİ'
Burada da adı ali olan kayıtlar öğrenciler tablosundan silinecektir.
Aşağıdaki örnekte de numarası 100 olan veya adı Ali olan kayıtlar öğrenciler tablosundan silinecektir.
Birden fazla koşul aranınca koşullar arasına AND, OR ifadeleri konulabilir. Bunlara birleşik koşul ifadeleri
denilir. Koşul ifadeleri daha sonra ayrıntılı olarak işlenecektir.
DELETE FROM ÖĞRENCİLER
WHERE NUMARA = 100 OR ADI = 'ALİ'
Burada numarası 100 veya adı ALİ olan öğrenciler silinecektir.
DELETE FROM ÖĞRENCİLER
WHERE ADI = 'ALİ' AND SOYADI = 'KARA'
Burada da adı ALİ ve soyadı KARA olan öğrenciler silinecektir.
DELETE FROM ÖĞRENCİLER
WHERE MEMLEKET LIKE '%ŞEHİR'
Burada da memleket alanı “ŞEHİR” ile biten (KIRŞEHİR, NEVŞEHİR, ESKİŞEHİR gibi…) kayıtlar tablodan
silinecektir.
NOT: Kendisine referans edilmiş bir kayıt silindiği zaman eğer kendisine referans edilen alan ON DELETE CASCADE
olarak işaretlenmiş ise o referans alınan alanın tüm referans kayıtları da otomatik olarak silnecektir.
DELETE FROM BÖLÜMLER
WHERE BÖLÜM_KODU LIKE 'BPR1'
Örneğin öğrenciler tablosunda bölüm alanı BPR1 olan bütün kayıtlar silinecektir.
Tablodan Veri (Kayıt) Güncelleme
En basit güncelleme için aşağıdaki kod yazılabilir. Bu kod koşulsuz olarak tablodaki tüm isimleri CEMİL
olarak değiştirecektir.
UPDATE ÖĞRENCİLER
SET ADI = 'CEMİL'
Genelde güncellemeler bir koşula bağlı olarak yapılır. Koşul ifadeleri WHERE anahtar sözcüğü ile beraber
kullanılır.
UPDATE ÖĞRENCİLER
SET ADI = 'CEMİL'
WHERE NUMARA = 100
Burada numarası 100 olan öğrencinin adı CEMİL olarak değiştirilecektir.
5
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
UPDATE ÖĞRENCİLER
SET ADI = 'SALİH', SOYADI = 'SİYAH'
WHERE NUMARA = 100
Aynı anda birden fazla alan beraber güncellenebilir. Yukarıdaki örnekte adı ve soyadı alanları beraber
güncellenmiştir.
Kayıt silmede yaptığımız gibi güncelleme işlemlerinde de birleşik koşul ifadeleri kullanılabilir.
UPDATE ÖĞRENCİLER
SET ADI = 'SALİH', SOYADI = 'SİYAH'
WHERE NUMARA = 100 OR NUMARA > 105
Burada numarası 100 olan veya 105’ten büyük olan öğrencilerin adları SALİH soyadları da SİYAH olarak
güncellenecektir.
Tablodaki boş bırakılabilir bir alanı daha önce doldurmuş fakat sonra boş bırakmak istersek aşağıdaki kodu
yazabiliriz.
UPDATE ÖĞRENCİLER
SET TELEFON = NULL
WHERE NUMARA = 105
Numarası 105 olan öğrencinin telefonu tablodan silinecektir.
Varsayılan değeri olan bir alanı varsayılan değere getirmek için de aşağıdaki kod kullanılır.
UPDATE ÖĞRENCİLER
SET MEMLEKET = DEFAULT
WHERE NUMARA = 105
Numarası 105 olan öğrencinin şehri memleket alanı için varsayılan değer olarak değiştirilecektir.
NOT: Kendisinden referans alınmış bir alandaki herhangi bir kayıt güncellendiği zaman, eğer kendisinden referans
almış olan alan ON UPDATE CASCADE olarak işaretlenmiş ise o referans alınan alanın tüm referans kayıtları da
otomatik olarak güncellenecektir.
UPDATE BÖLÜMLER
SET BÖLÜM_KODU = 'BMP1'
WHERE BÖLÜM_KODU = 'BPR1'
Yukarıdaki kod çalıştırıldıktan sonra bölümler tablosundaki bölüm kodu alandaki BPR1 kaydı BMP1 olarak
değiştirildikten sonra kendisinden referans almış olan öğrenciler tablosunda bölüm alanı BPR1 olan tüm
kayıtlar da otomatik olarak BMP1 olarak güncellenecektir.
6
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
6. Hafta Tabloya Veri Ekleme/Silme/Güncelleme
Komutları
BPR255 Veritabanı
Yönetim Sistemleri-II
Dikkat edilirse bölümler tablosundaki güncellemeden sonra öğrenciler tablosundaki bölüm alanlarındaki
kayıtlar da otomatik olarak güncellenmiştir.
Sonuç olarak;
Tabloya kayıt girmek için;
INSERT [INTO] tablo_adı
VALUES(veri1, veri2, [,...n])
Veya
INSERT [INTO] tablo_adı (alan1, alan2, [,...n])
VALUES(veri1, veri2, [,...n])
Tablodan kayıt silmek için;
DELETE [FROM] tablo_adı
[WHERE {koşul_ifadesi}]
Tablodaki tüm kayıtları temizlemek için;
TRUNCATE TABLE tablo_adı
Kayıt güncellemek için;
UPDATE tablo_adı
SET alan1 = değer1, alan2 = değer2, [,…n]
[WHERE {koşul_ifadesi}]
komutları kullanılır.
7
Bartın MYO – Bilgisayar Programcılığı
| Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi
Download