Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veri Tabanı I.

Benzer bir sunumlar


... konulu sunumlar: "Veri Tabanı I."— Sunum transkripti:

1 Veri Tabanı I

2 Veri Tabanı Nedir ? Bir kişiye veya ürüne ait detaylı verilerin bir düzen çerçevesinde saklandığı ortamlar “Veri tabanı” olarak adlandırılır. Veri tabanı ile verilerinizi kaydedebilir, silebilir, güncelleyebilir, yeni veriler ekleyip mevcut verileriniz üzerinde sorgulamalar yapabilirsiniz.

3 Veri Tabanı Tabloları

4

5 İlişkisel Veri Tabanı İlişkisel veri tabanı, birbirinden farkı tablolara yerleştirilmiş olan verilerin birbirleri ile belirli alanlara göre ilişkilendirilerek düzenlenen veri tabanlarıdır. İlişkisel veri tabanı günümüzde en yaygın olarak kullanılan veri tabanı türüdür İlişkisel veri tabanları birden fazla tablodan oluşabilir. Tablolar ise satır ve sütunlardan oluşur. Tablolarda satır ve sütunların kesiştiği noktaya ise “hücre” adı verilir. Tablo içerisindeki satırlar tablonun kayıtlarını oluşturur.

6

7 Anahtar Kısıtlamaları
Bütünlük kısıtlamalarının sağlanmasında anahtar kısıtlamaları önemli bir role sahiptir. Herhangi bir tablodaki her bir satır için kullanılan anahtarın tek olması gerekmektedir. Aksi takdirde kayıtlar arasında tutarsızlıklar meydana gelebilmektedir.

8 Birincil anahtar(Primary key) kısıtlamaları:
Bir tablonun birincil anahtarı, tabloda depoladığınız her satırı benzersiz şekilde tanımlayan bir veya daha çok alandan oluşur. Genellikle, birincil anahtar olarak işlev gören bir kimlik numarası, seri numarası, okul no veya kod gibi benzersiz bir tanımlayıcı vardır. Günlük hayatımızda da, TC Kimlik Numaramız, illerin plaka (06-Ankara,34-İstanbul, 35-İzmir gibi), telefon kod numaraları(312-Ankara,242-Antalya gibi) ve posta kod numaraları bağlı bulundukları ülkelerde benzersiz numaralardır birincil anahtarları başlarındaki sayısal ifadelerdir. Birincil anahtarlar hiçbir zaman NULL(boş) veya birbiri ile ayni olan değerleri içeremez.

9 Yabancı anahtar(Foreign key) kısıtlamaları

10 Veri Kısıtlamaları

11 MYSQL MySql’de PHP gibi açık kaynak kodlu olup ücretsiz temin edilebilmektedir. Bu nedenle çokça tercih edilmektedir. MySQL’de herhangi bir komut vermek için, komutu girdikten sonra noktalı virgül (;) konulur. create database veritabanı_adı; komut ile bir veritabanı oluşturulur. Mysql’deki veritabanlarını görüntülemek için SHOW DATABASES; komutu çalıştırılır.

12 Bir veritabanını silmek için DROP DATABASE veritabanı_adı; kullanılır.
Herhangi bir veritabanında işlem yapabilmek için önce o veritabanının içine girmemiz gerekmektedir. Bu işlem için use veritabanı_adı; kullanılır. Bir veritabanında bulunan tabloları görüntülemek için show tables; komutu kullanılır. Tabloları görüntülemek için öncelikle use komutu ile o veritabanın içine girilmelidir. DESCRIBE tabloadı; komutu ile seçilen veritabanındaki alan adlarını ve alan tiplerini görebiliriz.

13

14 PHPMyAdmin Bu program ile Mysql ile istenilen tüm işlemleri herhangi bir kod yazmadan yapmak mümkündür.

15 Yukarıdaki tabloyu SQL sorgusu ile de oluşturabiliriz. Fakat PHPMyAdmin ve benzeri programlarla oluşturmak çok daha kolay.

16

17

18

19

20

21 Temel SQL Sorgulamaları
Select Komutu: Tablo içerisinde listelenecek field’leri göstereceğimiz kısımdır. From Komutu: Hangi tabloda listeleme yapacağımızı belirteceğimiz kısımdır. En basit SQL sorgusudur. Tablodaki tüm alanları getirir. Sadece ad,soyad,maas alanlarını getirir.

22 ORDER BY: Listelenecek bilgilerin belli bir alan adına göre artan ya da azalan olarak listelemesi için bu sözcük kullanılır. Artan sırada listelemek için ORDER BY ile birlikte ASC, azalan sırada listelemek için DESC kullanılır.

23 KOŞULA BAĞLI OLARAK LİSTELEME (WHERE)

24 Personel tablomuza 3 tane yeni alan ekliyoruz
Personel tablomuza 3 tane yeni alan ekliyoruz. Bunlar bölüm adı, bölüm numarası, cinsiyet.

25 Bölümü satış ya da muhasebe olan erkek personeli listeleyen SQL
sorgusunu yazalım. Maaşı arasında olan personellerin ad,soyad ve maaşını buldurun.

26 İşletmede çalışan tüm personelin maaşları toplamı ne kadardır?
Muhasebe bölümünde çalışan tüm personelin maaşları toplamı ne kadardır? Tüm personelin ortalama maaşı ne kadardır? İşletmede ödenen en yüksek maaş ne kadardır? Muhasebe bölümünde ödenen en yüksek maaş ne kadardır?

27 İşletmede toplam kaç çalışan vardır?
İşletmede maaşı 1500 ‘den fazla olan toplam kaç çalışan vardır? İşletmede çalışanların ortalama maaşları ne kadardır? Her bölümdeki ortalama maaş ne kadardır?

28 HAVING SÖZCÜĞÜ HAVING sözcüğü SELECT komutunda GROUP BY sözcükleri olduğu zaman kullanılır. HAVING sözcüğünü izleyen ifade içinde, SUM, COUNT(*), AVG, MAX ya da MIN gibi kümeleme fonksiyonlarından en az biri bulunmalıdır. Where sözcüğü bir tablonun tek tek satırları üzerinde işlem yapan koşullar için geçerli iken, HAVING sözcüğü sadece, gruplanmış veriler üzerindeki işlemlerde geçerlidir. Ortalama maaşı 1500’den fazla olan bölümlerdeki ortalama maaş ne kadardır?

29 Tablo Satırlarında Güncelleme Yapma (UPDATE) İşlemi
Sene sonunda tüm personelin maaşlarında %15 artış olduğuna göre, tüm personelin maaşlarındaki güncellemeyi tabloya uygulayınız. Sicil numarası 2718 olan personel yılın elemanı seçilmiş olup maaşına %10 oranında zam yapılacak ve çalıştığı bölüm satış olarak değiştirilecek .

30 Tablo Satırlarından Veri Silme (DELETE) İşlemi
Sicil numarası 2742 olan personel işten ayrılmıştır. Bu personeli personel tablosundan Silen SQL komutunu yazınız. Sicil numarası 2718 olan personelin bolumkodunu 2 olarak güncelleyiniz.

31 dogumyeri ve email olmak üzere 2 yeni alan ekliyoruz
dogumyeri ve olmak üzere 2 yeni alan ekliyoruz.Tablomuzun son hali aşağıda.

32 Kayıt Arama (LIKE) İşlemi
Personel tablosunda adı m harfi ile başlayan personele ait bilgileri listeleyen SQL sorgusunu yazın. Personel tablosunda soyadı a harfi ile biten personele ait bilgileri listeleyen SQL sorgusunu yazın. Personel tablosunda mail adresi içinde hotmail ifadesi geçen personele ait bilgileri listeleyen SQL sorgusunu yazın.

33 IN Kullanımı Personel tablosunda adı ‘Melih’, ’Ahmet’ veya ‘Berrin’ olan çalışanlara ait bilgileri listeleyen SQL sorgusunu yazın.

34 Tekrarlayan Kayıtları Engelleme
Tablolarda bir sütunda tekrarlayan kayıtlar olabilir. Sorgularda bir sütundaki aynı değere sahip kayıtlardan sadece bir tanesinin gösterilmesini isterseniz DISTINCT deyimini kullanmak yeterlidir.

35

36 Sonuç Adedini Belirleme (Limit)
Bu işleç sorgu gerçekleştiğinde en fazla kaç tane sonucun döndürüleceğini belirlememizi sağlar. İlk 2 kaydı atla, sonraki 3 kaydı getir anlamındaki sorgu

37 Rastgele Bir Kayıt Seçme(RAND)
Bazı web sayfalarında kullanıcılara rastgele bazı veriler sunulur. Bunun için RAND deyimi kullanılır. Bu deyim ORDER BY işleci ile birlikte kullanılır. Belli miktarda veri çekilebilmesi için RAND( ) deyimi kullanıldığında LIMIT sınırlaması yapılması uygun olacaktır.

38 sehir alanına memleket takma ismi veriliyor.
Takma İsimler (Alias) Eğer bir isime takma isim verilmek istenirse sütun isminden hemen sonra AS deyimi kullanılarak yeni isim verilebilir. Bu işlem sırasında tablo yapısı değiştirilmez. sehir alanına memleket takma ismi veriliyor.

39 Sql’de matematiksel ifade kullanma
Veritabanı programını sadece veri çekmek için değil, bir hesap makinesi olarak da kullanabiliriz. SQL’de herhangi bir argüman yazdırmak için SELECT kalıbı kullanılır.

40 Join İşlemleri İlişkisel veri tabanlarının gücü veri tabanlarının birden fazla tablodan oluşmasına olanak vermelerinden, böylece hem verilerin sağlığını korumak hem de yazılımcıların işini kolaylaştırmalarından kaynaklanır.

41 INNER JOIN Inner Join, sadece iki tabloda da var olan verileri esas alır; eğer bir tabloda karşılık yoksa, o kaydı hiç ekrana getirmez. iller Tablosu havadurumuTablosu

42 Select iller.ilad,havadurumu.durum
From iller,havadurumu Where iller.ilno=havadurumu.ilno Veya SELECT iller.ilad, havadurumu.durum FROM iller INNER JOIN havadurumu ON iller.ilno=havadurumu.ilno

43 Left Join Inner Join'e oldukça benzese de bu bağlama türünün bir farkı vardır. Inner Join sadece iki tabloda da var olan verileri esas alır; eğer bir tabloda karşılık yoksa, o kaydı hiç ekrana getirmez. Ancak LEFT veya RIGHT join 'de istediğiniz yandaki (Left veya Right) tüm veriler ekrana gelir. Eğer bir sorgu da Left JOIN kullanırsanız,( tabloSOL.alan1 = tabloSAG.alan2  ), sol taraftaki tabloda bulunan (tabloSOL) tüm veriler, sağdaki tabloda olup olmadığına bakılmaksınız ekrana yazılacaktır. Karşılığı bulunanlarda gerekli veri ekranda yazacak olmayanlarda ise <NULL> yazacaktır. 

44

45 Right Join Eğer bir sorgu da Right JOIN kullanırsanız,( tabloSOL.alan1 = tabloSAG.alan2  ), sağ taraftaki tabloda bulunan (tabloSAG) tüm veriler, soldaki tabloda olup olmadığına bakılmaksınız ekrana yazılacaktır. RIGHT joinde sağdaki tablodaki tüm değerler listelenirken soldaki tablodaki değerlerden karşılığı olanlar yazılır, karşılığı olmayanlar yerine NULL yazılır.

46

47 kitap tablosu kitap_bilgi tablosu

48 500 sayfanın üzerinde kaç kitap olduğunu bulan sorguyu yazın.
Kaç farklı yayınevi olduğunu bulan sorguyu yazın. Seçkin isimli yayınevi tarafından çıkan kitapların adını ve yazarını gösteren SQL sorgusunu yazın.

49 Yayınevlerinin isimlerini listeleyen SQL sorgusunu yazalım.
Kitapların adını, yazarını ve basım yılını; basım yılına göre artan sırada listeleyen SQL sorgusunu yazalım. Kitabın adının içinde ’p’ harfi geçen kitapları listeleyen SQL sorgusunu yazalım.

50 kitap tablosunda rastgele 3 kaydı getiren SQL sorgusunu yazalım.
2012 yılında basılan kitapların isimlerini ve basım yılını listeleyen SQL sorgusunu yazın.

51 personel tablosu bolum tablosu

52 118 sicil numaralı Ayşen Taşçı isimli 20. 04
118 sicil numaralı Ayşen Taşçı isimli Sivas doğumlu bir kişi 1800 TL maaşla 1 numaralı bölümde işe başlamıştır. Bu kişiyi personel tablosuna ekleyen sorguyu yazın. Insert into personel (sicil,ad,soyad,dog_tar,dog_yer,cinsiyet,maas,bol_no) Values (118,'Ayşen','Taşçı',' ','Sivas','K',1800,1) Doğum yeri Gaziantep olan erkek personeli sicil numarasına göre azalan sırada listeleyen sorguyu yazın. Select * From personel Where dog_yer='Gaziantep' And cinsiyet='E' Order By sicil DESC

53 2000 TL’den daha fazla maaş alan personelin adını,soyadını, bölüm adını ve maaşını listeleyen SQL sorgusunu yazın. Select ad,soyad,maas,bolum_ad From personel Inner Join bolum ON personel.bol_no=bolum.bolum_no Where maas>2000 Herbir bölümdeki ortalama maaşı tek sql kullanarak bulan sorguyu yazın. Select bol_no,AVG(maas) From personel Group By bol_no

54 Gaziantep ya da Edirne doğumlu kaç kişi olduğunu bulan SQL sorgusunu yazın.
SELECT Count(*) From personel Where dog_yer='Gaziantep' OR dog_yer='Edirne'; 2 numaralı bölümde çalışanların maaşına 150 TL zam yapan SQL sorgusunu yazın. Update personel SET maas=maas+150 Where bol_no=2

55 Bu işyerinde 3 numaralı bölümde çalışanlara toplam ne kadar maaş ödenmektedir?
Select SUM(maas) From personel Where bol_no=3 İşyerinde çalışan 1 tane kadın personeli rastgele seçen sorguyu yazın. SELECT * FROM personel WHERE cinsiyet = 'K' ORDER BY Rand( ) LIMIT 1

56 Satış bölümünde çalışan Erkek personeli maaşa göre artan sırada listeleyen sorguyu yazın.
SELECT * FROM bolum INNER JOIN personel ON bolum.bolum_no = personel.bol_no WHERE cinsiyet = 'E' AND bolum_ad = 'Satış' ORDER BY maas

57 personel tablosu bolum tablosu

58 Null olan kayıtları bulmak
Mail adresi olmayan personeli listeleyen SQL sorgusunu yazın. Mail adresi olmayan kaç personel olduğunu listeleyen SQL sorgusunu yazın. İşveren çalışanlarına %15 ikramiye vereceğine göre işverenin ikramiye için ödeyeceği toplam paranın ne kadar olduğunu bulan SQL sorgusunu yazın.

59 Her bir gruptaki maksimum ücret ne kadardır?

60 Karakter Katarı Fonksiyonları


"Veri Tabanı I." indir ppt

Benzer bir sunumlar


Google Reklamları