8 Aralık 2011 / Perşembe Veri Tabanına Giriş Veri (Data), bir veya birden fazla bilgiden oluşan bir kümedir. İsim, yaş, telefon numarası gibi bilgiler birer veridir. Veri Tabanı (Database) : Temel olarak farklı tipteki verilerin saklandığı ve istenildiği zaman ulaşıldığı bir depolama ortamıdır. Depolanan verilere erişimi ve veriler üzerinde işlemler yapmayı bazı şartlar altında yaparız. Veri Tabanı Yönetim Sistemleri: Veri tabanında depolanacak olan verilerin uyacağı standartları, bu verilere nasıl erişilebileceği, verilerin disk üzerinde nasıl tutulacağını belirleyen sistemler dir. Bu sistemler aracılığıyla verilerin bütünlüğü sağlanmaktadır. Biz şu ana kadar bilgileri kaydetmedik. Programı kapatıp tekrar başlattığımız zaman bilgiler kaybolmaktadır. Tabii ki sitemizde kullanıcının gireceği bilgileri harddiskte saklamak daha sonra da onlara tekrar ulaşmak isteriz. Şimdi bunları kaydedeceğiz. Burada bir sürü veri tabanı var.aspx kullanıyorsak Access en iyisi. Sunucununda bunu desteklemesi gerekir. Kişisel bilgisayarlarda en çok kullanılan veri tabanı uygulaması “Microsoft Access” dir. Bir veri tabanını iyi bir şekilde tasarlayabilmek için varlıklar arasındaki ilişkiyi kavramak gerekir. SQL ile hazırlanan veri tabanında yer alacak bilgiler tablolar, alanlar (sütunlar) içerisinde tutulur. Tablolara kaydedilecek olan verilerin uygun veri tipleri(sayısal,metin,tarih v.s.) belirlenip, girilecek olan değerler için bazı sınırlandırmalar getirilebilir. Yine veriler arasında işkillendirmeler yapılıp , veri tabanına ilişkisel bir yapı kazandırılabilir. İlişkisel bir veri tabanında bütün veriler tablolarda tutulmaktadır. Tablolar : Verilerin saklanmasını sağlayan, sütunlar (alanlar) ve satırlardan oluşur. Her satır bir kaydı temsil etmektedir. Sütunlar ise kayıtlara ait özellikleri taşımaktadırlar. Tablo oluşturma adımları şöyledir. Başlat→Tüm Programlar→Microsoft Office→Access→Boş veri tabanı Sağ altta Dosya Adı :veritabani1.accdb (Access de oluşturulan veritabanı uzantısı .accdb dir ) Hemen onun yanındaki gözat düğmesine tıklayınca açılan pencereden Masa üstü, Yeni Klasör oluştur,Ad:emlakci, Tamam,Tamam,Oluştur 1 Tablo1→sağ tıkla→Tasarım Görünümü Gelen pencerede Tablo Adı : uye yaz→ →Tamam, Alan adı adlı sütunun altındaki kimlik yazısını silip “id” yazıyoruz. Bu sütunun yanında Veri Türü adlı sütun var. Bunun veri türü otomatik olarak verilen sayı’dır. Diğer bilgileri girmek için ilk önce o bilgilerin veri türünü belirliyoruz. Örneğin Üyenin adı, metin tabanlı bir veri iken, doğum tarihi (dt) tarih gösterimli bir veridir. Veri Türü : Veritabanı kayıtları tablolarda oluşturulurken onların yapıları hakkında fikir sahibi olabilmek için alanların bazı özelliklerinin önceden tanımlanması gerekir. Bir tablo alanına veri girişi yapılmadan önce o alanın bir tam sayı mı? Yoksa harf mi; tarih mi yoksa ondalıklı bir sayı mı olacağı tanımlanmalı ve veriler daha sonra tabloya yazılmalıdır. MS Access te veri türleri aşağıdaki gibidir. Metin : Yazılacak bilgiler harflerden veya hem harf ham sayılardan meydana geliyorsa kullanılacak veri türüdür.Bu alana boşlukta dahil olmak üzere en fazla 255 karakter bilgi yazılabilir. Bu alana yazılan bilgiler sadece sayılardan da oluşabilir, ama yazılan sayılar hesaplama işlemlerinde kullanılamazlar. Not : Uzun metin yada metin ve sayı bileşimi kullanılabilir. Genelde açıklama ya da uzun bir not yazılacaksa bu alan kullanılır. 64.000 karakterle sınırlıdır. 2 Sayı : Öğrenci numarası, öğrencinin sınıfı gibi sayısal bilgiler için kullanılır. Sayısal alanlar matematiksel hesaplamalarda kullanılabilir. Borç, alacak, öğrenci harcı gibi. Tarih/Saat : 100 ile 9999 arasındaki yıllar için tarih ve saat değerleridir. Para Birimi : Bir ile dört arasındaki ondalık basamağı olan, matematik hesaplamalarında kullanılan para birimi değerleri ve sayısal veriler. Otomatik Sayı : Tabloya yeni bir kayıt eklendiğinde, Access tarafından atanan benzersiz ardışık (birer birer artan) ya da rasgele sayılar. Otomatik sayı alanları değiştirilemez. Evet/Hayır : Yalnızca iki değerden birini içeren alanlar Evet / Hayır, Doğru / Yanlış, Açık / Kapalı gibi alanlar gibi. OLE Nesnesi : Access tablosuna bağlanmış ya da katıştırılmış bir nesne. (Microsoft Word veya Excel çalışma sayfası gibi) Köprü : Tıklandığında kullanıcıyı başka bir dosyaya, dosyadaki bir konuma veya Internet’teki (www) bir bölgeye yönlendiren bağlantı. Arama Sihirbazı : Değerleri başka tablo, sorgu ya da değerler listesindeki değerlerden seçilen bir alan yaratmamıza yardımcı olan sihirbaz. Veri Tabanı Tasarımı : 1) Öncelikle nesneler tanımlanır. Örneğin Kütüphane sistemi projesinde, Kitap, üyeler, türler, ödünç hareketleri birer nesnedir. Okul Sistemi projesinde, Öğrenciler, öğretmenler, dersler, derslikler, notlar birer nesnedir. Emlakçı sitesi projesinde, konutlar, işyerleri birer nesnedir. 2) Her nesne için bir tablo oluşturulur ve her tabloya içereceği veriyi en iyi anlatan bir isim verilir. Tablo isimlerinden tablonun hangi bilgileri içerdiği daha iyi anlaşılır ve kodlama aşamasında büyük kolaylık sağlar. Örneğin şirkette çalışanlara ait bilgilerin tutulduğu tabloya, “personel” isminin verilmesi gibi. Emlakçı projesinde, ”isyerleri” isimli tabloda satılık veya kiralık işyerlerine ait bilgiler, “konutlar” isimli tabloda satılık veya kiralık konutlara ait bilgiler, tutulur. 3 Dikkat : SQL’de, tablo adları, alanlar(sütunlar), veritabanı dosyası isimleri değişken isimleridir. Bu nedenle değişken isimlendirme kuralları burada da geçerlidir. Değişken isimleri harf ile başlar Değişken isimleri, harf, rakamlar ve “_”den oluşur Türkçe noktalı harfler kullanılmaz (İ,ı,Ü,ü,Ö,ö,Ğ,ğ,Ş,ş,Ç,ç) Komut kelimeleri değişken ismi olamaz (select,like,not,or,delete,update) Büyük küçük harf duyarlılığı yok Değişken isimlerinde boşluk olmaz 3) Nesnelerin her bir özelliği için tabloya bir alan (sütun ) eklenir. Böylelikle Alanları (tablomuzun sütunları) nı belirledikten sonra sıra geldi bu sütunların altında yer alacak satırları oluşturmaya . Bunun için soldaki isyerleri:Tablo’yu çift tıklıyoruz. Verileri sütunlara (alanlara) bilgileri giriyoruz.. Üyeler haberlerin altına yorum yapacak. Oluştur→Tablo→sağ tıkla→Tasarım görünümü → Tablo adı:yorum Önce alanları ve alanların veri türlerini belirliyoruz. 4 Sonra verileri giriyoruz. Yorumların onaylı olmasını istiyoruz. Yani bizim kontrolümüzden sonra, yorum yayınlansın. Tasarım görünümüne geçip onay adlı bir alan oluşturuyoruz. onay alanının veri türü Evet/Hayır dır ve Varsayılan değer onayı 0 dır. Yeni yorum girildiğinde Yani yorum yapılınca hemen yayımlanmaz. Diyeceğiz ki onayı 1 olanları göster. Bunu SQL veri kodlarıyla yapıyoruz. 5 9 Aralık 2011 / Cuma Bir önceki derste, Bir veri tabanı ile proje yapılırken işin en önemli aşamasının veri tabanının tasarlanması olduğu ve tablo ve alanların veri tabanında tasarımı ile tablolara kaydedilecek bilgilerin özelliklerini ve hazırlanma kurallarını görmüştük. Örnek Proje: bir işyerinde çalışan personel ve personele ait meslek, çalışılan birim ve maaş işlemlerini kapsamaktadır. Tablo Adı Tablo Alanları Personel SicilNo,Adı,Soyadı,MeslekKodu,BirimKodu,DoğumTarihi,Adres Meslekler MeslekKodu,MeslekAdı CalisilanBirim BirimKodu,BirimAdı Maaslar SicilNo,Maasayı,Maas Veritabanında meslek,çalışılan birim gibi bilgiler için kodlama yapılmalıdır. Bu hem bilgilerin daha kısa sürede yazılmasını sağlayacak hem de verilerde bütünlük ve tutarlılık sağlayacaktır. Örnek Proje, Matematik dersine ait sorular için bir soru bankası oluşturacağız. Konulara sorular girip ilişkilendireceğiz. Access açıyoruz. Konu kategorileri ve sorular konulu tablolar açıyoruz. , Konu kategorileri tablosunu sağ tıklayıp tasarım görünümünde açıyoruz. Konu adını giriyoruz. Konu kategorileri tablosuna çift tıklayıp konu başlıklarını giriyoruz. 6 Sorular tablosuna sağ tıklayıp tasarı görünümünde açıyoruz. Bilgileri girip kaydet. Sorular tablosuna çift tıklayıp değerleri gir, kaydet. Üst menüden Veritabanı Araçları→İlişkiler→Tıkla 7 Konu_kategorilerinden fareyle sürükle bırakla ilgili yer ilişkilendirilecek. Oluştur.Kaydet. 8 Konu kategorilerini çift tıklayınca konu adlarının sol taraflarında + işareti oluştuğunu görürüz ve bunlara tıklayınca ilgili konularda soruların yer aldığını görürüz. Şimdi bir veritabanındaki verileri nasıl sorgulayacağımızı görelim. Veritabanındaki Kayıtlara Erişim ve SQL SQL kullanarak veri tabanı tablolarını sorgulaya biliriz. SQL kelimesi Structured Query Language - Yapısal Sorgulama Dili - kelimelerinin baş harflerinden oluşmaktadır. SQL 1970’lerin sonlarına doğru IBM tarafından geliştirilmiştir. Web ortamında veri tabanıyla ilgili tüm tablolar bir bilgisayarda tutulur. Bu bilgisayardaki bilgilere ulaşmak isteyen kullanıcılar için yazılan programlar istemci bilgisayarlarda çalışacaktır. Istemci bilgisayarlardaki kullanıcılar veri tabanına ait tablolardaki bilgilere ulaşmak istedikleri zaman, sunucu bilgisayardaki veri tabanına bir mesaj (bir SQL cümleciği) gönderilir. Bu SQL cümleciğini alan veri tabanı, gelen SQL cümleciğinin içeriğine göre tablolara kayıt ekleme, silme, güncelleme ya da bazı kayıtları seçme gibi işlemleri yapacaktır. Eğer, veri tabanı bazı kayıtları seçiyorsa, bu seçtiği kayıtları internet-intranet üzerinden tekrar istemciye gönderecektir ve istemci bilgisayardaki programa veri tabanındaki tablo satırları ulaşmış olacaktır. Bu durumda tablomuzdaki tüm kayıtlar değil de sadece ihtiyacımız olan kayıtlar istemci bilgisayara geleceği için çok daha hızlı olacaktır. -----------------------------------------------------------------------------------------------------------------------Sorgu: Sql komutlarının bir cümle olarak yazılması sorguları oluşturur. SQL'de veritabanında nesneler yaratmak, silmek, değiştirmek için CREATE, ALTER, DROP gibi DDL kodları kullanılmaktadır. Fakat bu işlemleri kolay bir şekilde yapan veritabanı yönetim programları mevcuttur. Tablolar oluşturma, silme için o programları kullanabilirsiniz. SQL'de verileri seçmek, değiştirmek, silmek için DML kodları kullanılmaktadır. SELECT deyimi; Seçme işlemleri için kullanılan SQL komutudur. En basit haliyle SELECT deyimi; SELECT ALANLAR veya * FROM TABLOADI Select adi,soyadi from ogrenci (ogrenci tablosundaki adi ve soyadi alanlarındaki tüm verileri seçer) Select * from ogrenci (Öğrenci tablosundaki tüm verileri seçer ) Where kullanımı; Sorgular where ile filtrelenebilmektedir. Sadece istenen sonuçlar görüntülenir. Örneğin adı 'Mehmet' olanları seçmek için; Select * from ogrenci where adi='Mehmet'; sorgusu kullanılmalıdır. where yazıldıktan sonra alan adı ve = yazılır istenilen değer yazılır. filtrelenen alandaki veri türü metin ise tırnak işaretleri kullanılır, sayı ise kullanılmaz. = yerine diğer kontrol operatörleri de kullanılabilmektedir. Karşılaştırma operatörleri 9 (=, >, <, >=, <>, !=, !<, !> where komutundan sonra birden fazla koşul eklenmesi de mümkündür. AND(ve) ve OR(veya) ile koşullar birleştirilebilir. Örnek; select * from ogrenci where adi='Mehmet' or adi='Arif' (Adı Mehmet veya Arif olanları gösterir) Select * from ogrenci where adi='mehmet' and soyadi='yılmaz' (Adı Mehmet ve soyadı Yılmaz olan verileri gösterir) Between kullanımı; iki aralık koşulu vermek için where ile birlikte kullanılır. Select * from musteri where maas between 1000 and 5000 (Maaşı 1000 ile 5000 arasındakileri gösterir) Aynı şekilde Select * from musteri where maas>1000 and maas<5000 de kullanılabilir. Like kullanımı; Where ve like ile birlikte bir verinin içerisindeki karakterler aranabilir. Örneğin; select * from tablo_adi where alan_adi LIKE '%ar%' = içinde ar geçen veri select * from tablo_adi where alan_adi LIKE 'ar%' = ar ile başlayan veri select * from tablo_adi where alan_adi LIKE '%ar' = ar ile biten veri IN kullanımı; select * from ogrenci where adi in ('arif','mehmet','inci'); // adi arif, mehmet, inci olanları listele yeni alanlar oluşturma; select sayi1+sayi2 as toplam from tablom ; Order by kullanımı; Sıralama yapmak için where deyimi varsa ondan sonra kullanılır. select * from ogrenci order by adi asc select * from ogrenci order by adi desc ASC: Ascending - Artan - Küçükten büyüğe sıralama DESC: Descending - Azalan - Büyükten küçüğe sıralama Insert, Update, Delete işlemleri Insert kullanımı; Veritabanındaki bir tabloya veri ekleme işlemi için insert komutu kullanılmaktadır. Kullanımı ; Insert tablo_adi(alanlar) values('değerler'); Ogrenci isimli tabloda adi, soyadi ve sinifid alanlarına veri eklemek için gereken kod; insert ogrenci(adi,soyadi,sinifid) values('Ahmet','Çakır',3); // sinifid alanı sayı türünde olduğu için tırnak içerisinde yazılmamıştır. Update kullanımı; Tablodaki verilerde güncelleme yapmak için kullanılır. Kullanımı; Update tabloadi set alan1='deger',alan2='deger'... //bu işlem tablodaki bütün veriler üzerinde değişiklik yapar. istenilen kayıtlarda güncelleme yapmak için where deyimi kullanılmalıdır 10 Örneğin; Update ogrenci set adi='arif', soyadi='ceylan' where id=5; // idsi 5 olan kayıtta adı alanını ve soyadı alanını günceller. Delete kullanımı; Tabloda silme işlemi yapar. Delete from tabloadi şeklinde kullanılır. Örnek; Delete from ogrenci where adi='ayşe'; //Adı Ayşe olan öğrencileri siler. --------------------------------------------------------------------------------------------------------------------Örnek : Emlakci projemizde sorgulama yapacağız. Oluştur→Sorgu tasarımı→tıklayınca sorgu sayfasını otomatik açıyor →Açılan pencereyi Kapat → Sayfaya sağ tıkla→SQL göster 11 sayfaya otomatik olarak SELECT; yazısı geliyor. Biz buna eklemeler yapıyoruz. SELECT fiyati,metrekaresi from konutlar; sol üstten Çalıştır düğmesine tıklayalım Konutlar tablosundan fiyatı ve metrekareleri sütununu seçtik. 12 Banyo sayısı 1 olanları seçtireceğim. Aynı işlemleri yapıp SQL göster dedikten sonra, SELECT * from konutlar where banyosayisi='1'; Sol üstten Çalıştır, banyo sayısı 1 olanları gösterdi Örnek : Bir okuldaki sınıfları ve öğrencileri kaydedip, öğrencilerin hangi sınıfta olduğunu bileceğiz. Masa üstünde ogrenciler.mdb var, access’i kapatıp çift tıklayarak onu açıyoruz. Oluştur→Sorgu tasarımı→ Tabloyu kapat → Sayfaya sağ tıkla → SQL göster SELECT adi,soyadi from ogrenci; sol üstten çalıştır tıkla Adı Mehmet olanları seçtireceğiz. Sorgu1 sayfasının simgesinin Üstüne gelip sağ tıklayıp, SQL Göster diyoruz. Tekrar SQL sayfası açılıyor, bizim biraz önce yazdığımız kodlar duruyor. Ekleme yapıyoruz. 13 SELECT adi,soyadi from ogrenci where adi='Mehmet'; Çalıştır Sınıf id’si 3 olanları seçtirelim Sorgu→sağ tıkla→Tasarım görünümü→tıkla, tablo üstüne gelip sağ tkla→Tabloyu kaldır 14 Sorgu1→sağ tıkla→tasarım görünümü, sol üstten SQL görünüm→tık select adi,soyadi from ogrenci where sinifid=3; Üstten çalıştır→Tıkla 15