Kayıt silme Delete


Deprecated: Function create_function() is deprecated in /var/www/vhosts/digitaldunyam.net/coder.digitaldunyam.net/wp-content/plugins/codecolorer/lib/geshi.php on line 4698

Veri tabanından bir kayıtı silmek için Delete komutunu kullanırız. Delete, tablo içindeki verileri siler, burada Delete’i Drop ile karıştırılmaması gerekir.

Ör. tablom adlı tablomuz daki tüm kayıtları silelim;

1
DELETE FROM tablom

Türü hikaye olan tüm kitapları silmek için,

1
DELETE FROM tablom WHERE kitapturu='hikaye'

Kayıt güncelleme Update

Veri tabanımızda kayıtları güncelleştirmek için Update komutunu kullanırız. Uptade, insert into ile delete ‘in birleşimi gibidir. Eski kayıtı siler yenisini ekler.

Ör. Tablomuz da ki tüm kitapların fiyatını güncelleştirmek için;

1
UPDATE tablom SET kitapfiyati = 200

gibi kullanırız. Seçili bir değeri güncelleştirmek, sadece kitapno’su 5 olan kitabın fiyatını güncelleştirmek için

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno= 5

Or kullanarak iki değeri de güncelleştirebiliriz; kitapno 3 ve 5 olanları güncelleştir,

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno = 3 OR kitapno = 5

And kullanarak kitapno’su 4 olan türüde hikaye kitabın fiyatını güncelleştirmek için

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno = 4 AND kitapturu= 'Hikaye'

Veri tabanına kayıt ekleme Insert Into

Sql’de varolan veri tabanına kayıt eklemek için kullanılan kelime Insert Into. Bununla istediğimiz tabloya veri ekleyebiliriz.

Ör. Tablom isimli tablomuza kolonları belirterek urunadi Bardak, urunfiyati 15 urunno 0030 olan veri ekleyelim.

1
INSERT INTO tablom (urunadi,urunfiyati,urunno) VALUES ('Bardak',15,'0030')

Kolonları yazmadan da tablomuza veri ekleyebiliriz

1
INSERT INTO tablom VALUES ('Bardak',15,'0030')

Tablodaki sütunlarda boş değer olmasını istiyorsak

1
INSERT INTO tablom VALUES ('Bardak',NULL,'0030')

Sql’de sayısal loto yapımı

Biraz saçma gibi gelse de sql üzerinde karar yapılarını ve döngüleri kavraya bilmek için sayısal loto örneğini yazma isteği duydum. Sql’de sayısal loto yapımına atlamadan önce kullanılan komutlardan bahsedelim. Yabancısı olduğumuz Declare komutu ile işlemde kullanılacak değişkenleri tanımlamak için kullanırız.

Örneğe geçecek olursak;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE @sayisal TABLE
(
sayi INT
)
DECLARE @rastgele INT
DECLARE @sayac INT

SELECT @rastgele = 0
SELECT @sayac = 0

while (@sayac<6)
BEGIN
SELECT @rastgele = CONVERT(INT, rand() * 48) +1
IF NOT EXISTS (SELECT * FROM @sayisal WHERE sayi =@rastgele)
BEGIN
INSERT INTO @sayisal VALUES (@rastgele)
SET @sayac +=1
END
END
SELECT * FROM @sayisal

@rastgele , @sayi adında iki tane değişken tanımladık, sıfıra eşitledik. While döngüsü ile for gibi sayacı 1 arttırarak(sql’de for döngüsü olmadığı için while’ı böyle kullanıyoruz) 6 adet rastgele değer ataması için dögüyü döndürüyoruz.

select @rastgele = CONVERT(int, rand() * 48) +1 ile rastgele sayı üretip sonucun 0 gelmemesi içinde +1 ekliyoruz.

if not exists (select * from @sayisal where sayi =@rastgele) ile aynı sayı gelmemesi için şart koyuyoruz. Döngü ve şartın sonunda çıkan değeri tabloda göstermek için select * from @sayisal yazıp işlemi bitiriyoruz.

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Bir başka örnek uygulama;

Biraz daha şekillendirmek istersek, mesela 10 ile 50 arasındaki sayılardan seçip oluşturduğumuz tabloya beşer beşer ekleyebiliriz. Şöyle ki 48 yerine 40 yazıp yani 40 ile çarpıp 1 yerine 10 yazdığımızda 10 ile 50 aralığında rastgele sayılar üretilecektir. Bu üretilen sayıyı sayilar isimli tabloya insert into @sayisal satırındaki @sayisal değişkeninin yerine sayilar tablomuzu koyarak oluşturulan sayıları tablomuza ekleyebiliriz. Nası yapılır, nası edilir kodları aşağıda, inceleyin;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE @sayisal TABLE
(
sayi INT
)
DECLARE @rastgele INT
DECLARE @sayac INT

SELECT @rastgele = 0
SELECT @sayac = 0

while (@sayac<5)
BEGIN
SELECT @rastgele = CONVERT(INT, rand() * 40) +10
IF NOT EXISTS (SELECT * FROM @sayisal WHERE sayi =@rastgele)
BEGIN
INSERT INTO Sayilar VALUES (@rastgele)
SET @sayac +=1
END
END

Sayaç komutu Count

Sql veritabanın da verilerin saymak için l-kullanılan Count komutu. Kullanımı kolay örnekteki gibidir.

Ör. Hangi ülkede kaç tane müşteri olduğunu bulalım. (Northwind veritabanını kullanın)

1
2
3
SELECT Country, COUNT(Country) AS Toplam FROM Customers
GROUP BY Country
ORDER BY Toplam DESC

GROUP BY ile ülkeleri grupladık, ORDER BY kullanarak da toplamı azalan sırada sıraladık.

Inner Join – Left Join – Full Join

Tablo birleştirmek için kullandığımız Join’lerin birkaç örneği burada mevcut. Join konusu biraz kapsamlı olduğu için diğer çeşitlerinide not almak istedim.

Join yapısını hatırlayacak olursak;

1
2
3
4
SELECT kolon_adi
FROM tablo_adi
JOIN tablo_adi2
ON tablo_adi.kolon_adi=tablo_adi2.kolon_adi

gibiydi…

Inner Join : Koşulları dışlayan yani her iki tabloda eşleşenleri getiren sorgu tipi, Null yani boş olanları göstermez!

Left Join – Right Join : Left ile soldaki tablodaki tüm kayıtları getirerek sağdaki sadece eşleşenleri getirmemize sağlar. Right ile yapıldığında ise tam tersi…

Full Join : Adı üzerinde tüm değerleri getirmemizi sağlıyor. Left Join – Right Join’in bir araya getirilmiş gibi de düşünebiliriz.

Tablo birleştirme işlemi Join

Normalizasyon edilmiş veritabanın da ki bir kaç tabloyu birleştirip tek bir tabloda göstermek için Join kullanılır. Join iki tablodan bilgileri alarak tek bir sonuç verir.

Alttaki sablon örneğinde ayrı iki tablodaki değerleri birleştirip tek tabloda gösteriyor.

1
2
3
4
SELECT kolon_adi
FROM tablo_adi
JOIN tablo_adi2
ON tablo_adi.kolon_adi=tablo_adi2.kolon_adi

Ör. Northwind veritabanın da 2 ayrı tablolar üzerinden hangi ürün hangi firmadan alınıyor yazalım.

1
2
3
SELECT p.ProductID [Ürünlerno], p.ProductName [Ürünler], s.CompanyName [şirketadı]
FROM Products p
JOIN Suppliers s ON s.SupplierID = p.SupplierID

Products p ve Suppliers s tabloları kısaltarak(takma ad) yazım kolaylığı sağlamakta. Köşeli parantezler ile tablo başlıklarını değiştirdik. FROM Products p JOIN Suppliers s yazarak Products ile Suppliers tablosunu birleştirdik.

İkiden fazla tabloyu birden fazla join kullanarak yapabiliriz.

Ör.Northwind veritabanın da, çalısanlar hangi eyaletten ve hanngi bölgeden sorumludur yazalım;

1
2
3
4
5
6
7
8
SELECT e.EmployeeID,
e.FirstName,
e.LastName,
t.TerritoryDescription AS Eyalet,
r.RegionDescription AS Bolge FROM Employees e
JOIN EmployeeTerritories et ON et.EmployeeID = e.EmployeeID
JOIN Territories t ON t.TerritoryID = et.TerritoryID
JOIN Region r ON r.RegionID = t.RegionID

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)