Bir veri tabanı hazırlamak için öncelikle hazırlayacağımız veri tabanın hizmet edeceği iş kolundaki ihtiyaçların neler olduğu belirlenmelidir. Çalışmanın sonunda elde edilen bulgular bir rapor haline getirilir.
Raporlanmış olan bulgular kullanılarak varlık bağıntı çizenekleri oluşturulur. Varlık bağıntı çizenekleri oluşturulurken veri tabanının nasıl bir yapıya sahip olacağı, verilerin hangi düzende saklanacağı tabloların hangi kayıtları içereceği ve bu kayıtlar arasında nasıl ilişkiler kurulacağı taslak bir çalışma olarak yapılır.
Varlık bağıntı çizeneği ile ilgili çalışmalar tamamlandıktan sonra elde edilen yapı liste haline dönüştürülerek veri tabanı kodlanmaya hazır hale getirilir. Listeleme işleminde tablolar arası işlemler Primary Key ve Foreign Key olacak sütunlar belirlenir.
Veri tabanı oluşturmak için kullanılacak arayüz ile veri tabanı kodlanmaya başlanır.
create database veritabaniadi
-- Veritabanı oluşturulur.
create table tabloadi(SutunAdi int Primary key not null,SutunAdi nvarchar(50) foreign key null)
-- Tablolar oluşturulur.
alter table ........
-- Kodları ile oluşturulmuş olan tablolar üzerinde sütun ekleme silme ve düzenleme işlemleri yapılır.
alter table tabloadi add kolonadi -- Tabloya yeni kolon ekler.
alter table tabloadi alter column kolonadi nchar not null -- Tablodaki kolonun özelliklerini değiştirir.(veri tipi,null)
alter table tabloadi drop column kolonadi -- Tabloadaki kolonu siler.
insert into tabloadi (KolonAdlari) values(kolonlara girilecek değerler)
-- Tablo içerisine veri girişi yapmak için kullanılır.
Veri girişleri tamamlandıktan sonra ihtiyaç duyulması halinde “update” komutu ile veriler düzenlenir, “delete” komutu ile veriler silinebilir. Veri girişlerinde sayısal olan veriler tırnak içerisinde yazılmazken olmayan veri tipleri yazılır “date” veri tipi de tek tırnak içerisinde yazılmalıdır.
Tablolara veri girişi yapılırken tablolar arasındaki ilişkiler göz önünde bulundurularak önce PRIMARY KEY rolündeki tabloya veri girişi yapılır sonra FOREIGN KEY rolündeki tabloya veri girişi yapılır. Veri silme işleminde ise tam tersi bir yol izlenir.
Listeleme komutları “select, from, where, order by, max, min, sum, avg, groupby, dateby, date, Top (x), top(x) with ties, count, distinct, left, right, substring, datepart (day, week, month, year, weekday, quarter), datediff(day, week, month, year) Aggregate fonksiyonlar (sum, max, min, avg, vb.) ile birlikte listelenmek isteniyorsa muhakkak group by kullanmalıdır.
-- DERSDE YAZDIKLARIMIZ
select * from [Satis Detaylari]
--Tablodaki;
--En düşük fiyat --ürün bazlı
select min(Birimfiyati) from [Satis Detaylari]
select UrunId, min(birimfiyati) from [Satis Detaylari] group by UrunID
--satış detayları tablosundaki ürünlerin en düşük fiyatlı olanların kaçar adet olduğunu listeleyin.
select Miktar, min(BirimFiyati) from [Satis Detaylari] group by Miktar
--En yüksek fiyat --satışID bazlı
select max(BirimFiyati) from [Satis Detaylari]
select * from [Satis Detaylari]
select SatisId, max(birimfiyati) from [Satis Detaylari] group by SatisID
--ortalama fiyat --ürün bazlı
select avg(birimfiyati) from [Satis Detaylari]
select UrunId, avg(birimfiyati) from [Satis Detaylari] group by UrunID
--toplam tutar --satisID bazlı
select sum(BirimFiyati*miktar) from [Satis Detaylari]
select SatisId, sum(birimfiyati*miktar) from [Satis Detaylari] group by SatisID
--count: Tablonun belirtilen sütunundaki veri sayısını döndürür. Değer değil sonuç döndürür. NULL değerleri saymaz.
select * from Musteriler
select count(*) from Musteriler
select count(MusteriAdi) from Musteriler
select count(bolge) from Musteriler
select distinct(urunId) from [Satis Detaylari]
--distinct: sütundaki farklı kayıtları listeler, Tekrar edenleri 1 kez listeler.
--kaç farklı müşteriye satış yapıldığını listele:
select * from Satislar
select distinct(MusteriID) from Satislar
--left, right, substring
--Müşteri adının soldan 2, şirket adının sağdan 3, ünvanın ise 4,5,6 karakterlerini listele
select * from Musteriler
select left(musteriadi,2), right(sirketadi, 3), substring(musteriunvani, 4,3) from Musteriler
--Personelin işe giriş ayı, yılı, günü bilgilerini listele
select Adi, Soyadi, datepart(month, IseBaslamaTarihi) from Personeller
select Adi, Soyadi, datepart(year, IseBaslamaTarihi) from Personeller
select Adi, Soyadi, datepart(day, IseBaslamaTarihi) from Personeller
--datepart: day, week, weekday, month , year, quarter
--datediff: iki tarih arasındaki fark (year, month, week, day)
--personelin yaş bilgisi
select getdate()
--getdate sistem tarihini alır
select Adi, Soyadi, DATEDIFF(year, DogumTarihi, getdate()) from Personeller
--Top(x) : Üstten istenilen (x) sayıdaki satırı döndürür.
--Top(x) with ties x. satırdaki değerler aynı değeri içeren satırları da döndürür.
select * from [Satis Detaylari] order by Miktar
--En az satıla on ürünü listele
select top 10 * from [Satis Detaylari] order by Miktar
select top 10 with ties * from [Satis Detaylari] order by Miktar
update tabloadi set kolonadi = yenideger where kosul
-- Update: Tablodaki verileri günceller. where ile koşul belirtilmezse sütunun tamamını günceller.(Örneğin OgrenciNo koşul olursa 240155123 yazılabilir)
-- Örnek:
update Dersler set DersAdi='Görsel Programlama' where DersKodu='BGT105'
--Update: Tablodaki verileri günceller. where ile koşul belirtilmezse sütunun tamamını günceller.
delete tabloadi where MusteriID='15' -- Anahtar değeri 15 olan satırı siler. (Örneğin MusteriID 15 olan satırı siler)
-- Örnek:
delete Dersler where DersKodu='ITP142' -- Ders kodu ITP142 olan satırı siler.
delete tabloadi --Belirtilen tablodaki tüm satırları siler.
drop table tabloadi --Belirtilen tabloyu siler.
delete from iadeler -- iadeler tablosundaki tüm satırlar silinir
delete from iadeler where Miktar = 5 -- Miktar değeri 5 olan satırlar silinir