Inner Join ve Outer Join


1- Inner Join
Tablo birleştirmek için kullanılan bir yöntemdir. Her iki tabloda da eşleşen ortak alanların olması gerekmektedir.
Birleştirme işlemi sadece iki tablo için kısıtlı olmamakla beraber, en fazla 256 adet tabloyu JOIN işlemine tabi tutabiliriz.
SELECT KullaniciAdi, KullaniciSoyAdi, ArkadasAd, ArkadasSoyad

FROM Kullanici K

JOIN Arkadas A

ON K.KullaniciID=A.KullaniciID
2- Outer Join

Inner Join, iki veya daha fazla tablodaki ilişlili bulunan satırları listelerken Outer Join, tabloda ilişkili olmayan satırları da gösterir.

Yani tablodaki tüm satırlar gösterilecektir. Ancak, ilişkisi olmayan satırlarda değer NULL olarak gösterilir.

Kullanışlarına göre Join tipi farklılık gösterir. 3 tip Join tipi vardır. 

A) LEFT OUTER JOIN: Bu kelimenin solundaki tablo belirleyici tablodur ve bu kullanım, bir ilişkisi bulunsun veya bulunmasın birinci tablodaki bütün satırları listeler. İkinci tabloda ise ilişkili satırlar listelenir. Eğer bir ilişki yoksa sağdaki tablo verileri NULL olarak gösterilecektir.



SELECT KullaniciAdi,ArkadasID
FROM Kullanici K LEFT JOIN Arkadas A
ON K.KullaniciID = A.ArkadasID




B) RIGHT OUTER JOIN: Bu kelimenin sağındaki tablo belirleyicic tablodur ve bu kullanım bir ilişkiye ait olsun veya olmasın ikinci tablodaki bütün satırları gösterir. Birinci tabloda ise ilişkili satırlar listelenir. Eğer bir ilişki yoksa soldaki tablo verileri NULL olarak gösterilecektir.

SELECT KullaniciAdi, KullaniciSoyAdi, ArkadasAd, ArkadasSoyad
FROM Kullanici K RIGHT JOIN Arkadas A
ON K.KullaniciID=A.KullaniciID


C) FULL OUTER JOIN: Left ve Right Outer Join’de karşılıklı olarak eşit satırı olmayan satırlar da listelenir. FULL OUTER JOIN, LEFT ve RIGHT OUTER JOIN’in birleşim kümesidir.

SELECT KUllaniciAdi, KullaniciSoyAdi, ArkadasAd, ArkadasSoyad
FROM Kullanici K FULL JOIN Arkadas A
ON K.KullaniciID=A.KullaniciID



By mert

SQL’ de Where Komutu

Where komutu ile yazacağımız kodda koşul sağlarız. Örneğin günlük kullanıcı bilgilerinin tutulduğu 100.000 kayıttan oluşan Kullanıcı tablosundaki sadece son 3 gün içerisinde üye olan kullanıcıları görmemizi sağlar.

SELECT 
KullaniciID, KullaniciAdi, KullaniciSoyAdi 
FROM Kullanici
WHERE KullaniciAdi='Mert'
komutu adı ‘Mert’ olan kullanıcıların kullanıcı numarasını, adını ve soyadını getirir.
Örnek:
Operatörler (İşleçler)
Aşağıdaki operatörleri WHERE ifadesi ilebirlikte sınanmasını istediğiniz koşulları oluştururken kullanabilirsiniz.


Operatör      İfade
=             Eşittir
<>            Eşit değildir, farklı
>             Büyük
<             Küçük
>=            Büyük veya Eşit
<=            Büyük veya Küçük
BETWEEN       Arasında
LIKE          Metin Arama



LIKE İfadesi
LIKE kelimesi sütundaki değerlerin, joker karakterler kullanılarak oluşturduğumuz bir arama koşulu ile karşılaştırılmasını sağlar.



Joker Karakter     Anlamı
%                  Herhangi uzunlukta karakter
_                  Herhangi tek karakter
[]                 Belirtilen aralıkta herhangi bir karakter
[^]                Belirtilen aralıkta olmayan herhangi bir karakter
By mert

SQL’de SELECT Komutu

Veri tabanındaki kayıtları sorgulamak, seçmek için SELECT komutu kullanılır.
SELECT * FROM Kullanici
komutunu girdiğimizde, bize “Kullanici” tablosundaki alanları gösterecektir.

Ekran Görüntüsü:


SELECT KullaniciID, KullaniciAdi, KullaniciSoyAdi FROM Kullanici
komutunu girdiğimizde, bize “Kullanici” tablosundaki Kullanıcı numarası, adı ve soyadı alanlarını gösterecektir.

Örnek:
SELECT KullaniciID, KullaniciAdi, * FROM Kullanici
bu komutu girdiğimizde ise bize “Kullanici” tablosundaki Kullanıcı numarasını, adını ve tekrar en baştan başlayarak tüm alanları gösterecektir.

Yani şu şekilde:
Gördüğünüz gibi sırası ile kullanıcı numarası, kullanıcı adı ve tekrar en baştan başlayarak tüm alanları listelemiştir.


By mert

SQL Server Veri Tipleri

SQL Serverda data tipleri 7 kategoriye ayrılabilirler:


  1. Exact Numeric: Sayıları, varsa ondalık kısımlarıyla birlikte depolayan veri tipleri.
  2. Apprpximate Numeric: Exact Numeric tipinin tutamadığı uzunluktaki ondalık sayıları tutan veri tipleri.
  3. Monetary: Parasal birimleri tutmak için kullanılan veri tipleri.
  4. Date and Time: Tarihsel değerlerin tutulduğu veri tipleri.
  5. Cahracter: Uzunluğuna göre karakterleri depolayan veri tipleri (kelimeler.. gibi)
  6. Binary: Binary tipli verileri tutmak için kullanılan veri tipleri (resim, mp3… gibi)
  7. Special Purpose: Özelleştirilmesi gereken karmaşık veri tiplerini tutmak için tasarlanmış veri tipleridir.
1. Exact Numeric Data Tipleri
Bu veri tipleriyle tam sayılar veya ondalık sayılar tutulabilirler. Bu veri tipleriyle matematik işlemleri de yapılabilir. Kapladıkları alana göre ve kapasitelerine göre 6’ya ayrılırlar:

Bigint: 8 Bayt yer kalar. (int: Integer(tamsayının kısaltması) Adından beli olduğu üzere tam sayıları tutar. tutabileceği aralık -263 ile 263- 1 arasıdır. (Pek kullanılmaz)

Int: 4 Bayt yer kaplar. Yine belirli aralıktaki tam sayıları tutarlar. Aralık -231 ile 231 – 1 dir. En çok kullanılan veri tiplerinden biridir. Bizim için sadece bir tane olması gereken değerlere (ID lere) verilebilir.

Smallint: 2 Bayt yer kaplar. -215 ile 215 – 1 arasındaki değerleri tutar. (-32768 ile 32767 arası)

Tinyint: 1 bayt yer kaplar. 0’dan 255’e kadar olan sayıları tutarlar.

Decimal(p,s): Decimal ondalık veya tam bütün sayıları tutar ama kapladığı alan bakımından ondalık sayı için kullanılır.

Numeric(p,s): İşlev ve özellik bakımından decimal ile aynıdır. (Pek kullanılmaz)

2. Aproximate Numeric Data Tipleri
Bu veri tiplerinde amaç Decimal in tutamadığı büyüklükteki değerleri tutmaktır. 

Float(n): -1,79E + 308’den 1,79E + 308’e kadar olan değerleri alabilir. Kapladığı alan içine aldığı “n” değerine göre değişir. (1<=n<=53 olmalı)

Real: Eski versiyonlarda kullanıldığı için bu versiyonda da kullanılmış. Bu da -3,40 + 38’den 3,40 +38’e kadar olan küsürlü verileri tutar. 4 bayt yer tutar.

3. Monetary Data Tipleri
Para yerine kullanılan değişkenlerdir.

Money: -922 337 203 685 47,.5808’den 922 337 203 685 477, 5807’ye kadar paraları tutabilir. 8 bayt yer kaplar.

Smallmoney: 214 748,3648’den 214 748,3647’e kadar olan sayıları tutabilir. 4 bayt yer kaplar.

4. Date and Time Data Tipleri
Tarih ve zamanı tutmak için kullanılan veri tipleri

Datetime: 1 Ocak 1753’ten 31 Aralık 9999’a kadar olan tarih aralığını tutabilir. 8 bayt yer kaplar.

Smalldatetime: 1 Ocak 1900’den 6 Haziran 2079’a kadar olan tarih aralığını tutabilir. 4 bayt yer kaplar.

5. Character Data Tipleri
Karakter data tipleri en çok kullanılan data tipleridir. Harflerin yerine kullanılır. Parametre alırlar. Aldıkları parametreler içerdikleri karakter sayısıdır. İsimlerinde genelde “char” kelimesi vardır. bunun başına “n” veya “var” ön ekleri getirilerek diğer data tipleri oluşturulmuştur. 

Önce “n” varsa veri tipinin başında bu unicode karakterler içeriyor demekdir. Yani her dilde görüntülenebilir. Başında “n” olanlar olmayanlarına göre 2 kat daha fazla yer tutarlar.

Başında “var” olanlar ise içine aldıkları parametreye kadar genişletilebilirler. Örneğin varchar(5) direk olarak 5 baytlık yer ayırmaz, içine 3 harf yazarsak 3 bayt, 2 harf yazarsak 2 bayt yer ayırır. Bu neden böyle; veri tipi varchar(5) değilde char(5) olsaydı içine tek bir karakter bile yazsak direk 5 baytlık alanı işgal edecekti.

Char(n): En fazla 8000 karakter alabilir. Dolayısıyla maksimum 8000 bayt yer kaplar. Bu veri tipi içine girilecek olan karakter sayısı kesin belli olduğu zaman kullanılır. 

Nchar(n): En fazla 4000 karakter alır. 2 ile 8000 bayt arası yer tutar. (Unicode karakterler yüzünden)

Varchar(n): En fazla 8000 karakter içerir. 8000 bayta kadar yer tutabilir. Bu veri tipini gireceğimiz değerin uzunluğu kesin belli olmadığında kullanabiliriz. Örnek: Şehir isimleri..

Varchar(max): 2 GB’a kadar karakter alabilir. 1 073 741 824 karakter alabilir.

Nvarchar(max): 2 GB’a kadar kadar karakter alabilir. 536 870 912 karakter alabilir. (Unicode karakterleri yüzünden)

Text: Varchat(max)ın anısı.

Ntext: nvarchar(max)ın aynısı. Bu text ve ntext çok fazla kullanılmıyor. Onların yerine varchar, char.. kullanılıyor..

6. Binary Data Tipleri
Bu data tiplerini anlatmanın bence en kolay yolu bunları depoya benzetmektir. İçine tutabileceği kadar ne koyarsanız tutar. Örneğin mp3, resim, word belgesi.. gibi. Bunlarda parametre alıyor ve yukarıdaki “var” olayı bunlarda da var. (Alanı direk ayırmayıp, biz değer girdikçe artan olay) 

Binary(n): 8000 bayta kadar veri tutabilir.

Varbinary(n): 8000 bayta kadar veri tutabilir.

Varbinary(max): 2GB’a kadar veri tutabilir.

Image: 2GB’a kadar veri tutabilir. (image=varbinary(max))

7. Specialized Data Tipleri

Bit: 0 veya 1 tam sayı değeri alan değişkenlerdir. Yani geriye true veya false bir değer döndürür. Örneğin cinsiyette, evli-bekar, evet-hayır, var-yok gibi şekillerde kullanılabilir.

Sql_variant: bu gireceğimiz değerin çeşidini bilmediğimiz sütunlarda kullanabileceğimiz bir veri tipidir. Yani resim, string, sayı, table ne olduğunu bilmediğim şeyler yerine kullanabilirim. (8000 bayta kadar)

Uniqueidntifier: 16 Bayt yer kaplar. Global tek değişkenlerdir.(GUID, Globally Unique Identifier).
By mert

SQL Server’ın System Veritabanları

SQL Server ilk yüklendiği zaman Master, Model, Msdb ve Tempdb olmak üzere dört adet veri tabanı sistemi içerir.

Master Veritabanı
SQL Server’ın her sürümü master veritabanına sahiptir. Bu veritabanı, sistemin bütününü izlemeyi sağlayan, özel tablolar (sistem tabloları) kümesini içine alır. Örneğin, server üzerinde yeni bir veritabanı oluşturduğumuzda, girdiğimiz kayıt master veritabanındaki sysdatabases’da yer alır. Server’ı tanımlayan her şey master veritabanında saklandığından dolayı, sistem için bu veritabanı önemlidir ve silinemez.


Model Veritabanı
Oluşturacağımız herhangi bir yeni veritabanı için, model veritabanı bir şablonu oluşturur. Yani istersek yeni oluşturacağımız veritabanlarının nasıl olacağını, model veritabanında değişiklik yaparak belirleyebiliriz. Örneğin, oluşturduğumuz her veritabanının içeriğinde yer almasını istediğimiz bir denetim tabloları kümesi ekleyebiliriz. Ayrıca, sistem üzerinde oluşturulan her yeni veritabanına kopyalanan birkaç kullanıcı grubu oluşturabiliriz. Model veritabanı diğer veritabanları için şablon olduğundan gerekli bir veritabanıdır ve sistemde kalmalıdır.


MsDB Veritabanı
MsDB, SQL Agent işlem sürecinin herhangi bir sistem görevini sakladığı yerdir. Veritabanı üzerinde geceleri yedekleme işleminin çalışmasına dair bir görev zamanlayıcı oluştursaydınız, bununla ilgili kayıt MsDB’de yer alır. Stored Procedure’un ilk çalışması (Time Execution) ile ilgili kayıt da, aynı şekilde MsDB’de bulunur.


TempDB Veritabanı
TempDB veritabanı, server’ımız için anahtar çalışma alanlarından biridir. Karmaşık ya da geniş bir sorgulama yaptığımızda, SQL Servır’ın geçici tablolar oluşturması gerekirse, bu işlemi TempDB yolu ile geçekleştir. Aynı zamanda, geçici bir tablo oluşturduğunuzda da, üzerinde çalıştığımız veritabanında olşturduğumuzu zannetmesek de, aslında TempDB veritabanında oluşturulur. Verinin geçici olarak saklanması gerektiği zaman da, TempDBve veri tabanında saklıdır.

By mert

Wisdom | Knowledge | Information | Data

Karışık bir konu. Ya da bana göre öyle bilmiyorum ama anladığım kadarıyla anlatmaya çalışacağım. 🙂


Data        –     Veri

Information –     Enformasyon, Mâlûmat

Knowledge   –     Bilgi


Wisdom      –
    İlim, İrfan (Bilgelik)




Yukarıdaki kelimeler sırayla verdim. Bu sırada verinin işlenmesi ve işlendikçe daha değerli sonuçlara erişilmesi söz konusudur.


Wisdom          Knowledge            Information           Data
******           *****                  ****                **


Yukarıdaki değer sırasına bakacak olursak verinin işlendikçe daha değerli olduğunu görüyoruz.




Buna göre; 


Wisdom, Knowledge; knowledge, information;
information, data

Yani,

İrfan, bilgiden; bilgi, mâlûmattan; mâlûmat ise
veriden işlenerek oluşur.


Eğer bir örnek verecek olursak~


Bir araba düşünelim;

Arabanın hızı = [Veri] Data

Bu hızın ne anlama geldiği yani tehlikeli bir hız
veya varılacak yere geç kalmaya sebep olacak bir hız oluşu = [Enformasyon, Mâlûmat] Information

Bu hızın duruma göre arttırılması, azaltılması = [Bilgi] Knowledge

Şöförlük bilgisi, tecrübesi = [İrfan, Bilgelik] Wisdom




Anladığım kadarı ile size aktarmaya çalıştım. Umarım yararlı olmuştur 🙂


By mert

Dr. Codd’un 12 kuralı

 

Bildiğiniz gibi Dr. E.F.Codd ilişkisel veri tabanının yaratıcısıdır. Peki, ilişkisel veri tabanını yaratırken Codd’un koymuş olduğu 12 kural neydi?

Şimdi bu kurallara bir göz atalım.

 Information Rule: İkişlisel veri tabanındaki bütün bilgiler tablo ve sütun isimlerini kapsayacak şekilde tablo içindeki değerler olarak açıkça gösterilirler.

Guranteed Access: İlişlisel veri tabanındaki her bir değer, tablo ismi, primary key ve sütun isimlerinin kombinasyonu ile erişebilir olmalıdır.

Sistematic Null Value Support: DBMS sıfır değerler (bilinmeyen veya işlenmeyen) için sistematik olarak destek sağlamalıdır.

Active Online Relational Catalog: Veri tabanı ve onun içeriğinin tanımı logical, yani mantıksal düzeyde tablolar şekilde gösterilir ve bu sayede veri tabanı dili kullanılarak sorgulanabilir.

Comprehensive Data Sublanguage: İyi tanımlı syntax ı olan bir dille desteklenmelidir. Bu dil, veri tanımını, maniplasyonu, bütünlük kurallarını, yetkilendirmeyi ve transactionları desteklemelidir.

View Updating Rule: Bİlgiler sistem içerisinden güncellenebilmelidir.

Set-Level Insertion, Update, Deletion: Sistem erişimle birlikte ekleme, güncelleme ve silme işlemlerini de set-level olarak (kümesel düzeyde) yapabilmelidir.

Pysical Data Independence: Uygulamalar ve hoc programlar fiziki erişim metodları veya saklama yapıları kullanıldığında mantıksal olarak etkilenmezler.

Logical Data Independence: Uygulama programları veya ad hoc programlar tablo yapısı değiştirildiği zaman mantıksal olarak etkilenmezler.

Integrity Independence: Veritabanı dili bütünsellik kurallarının tanımlayabilme kapasitesine sahip olmalıdır. Online katalog da tanımlı ve by-pass edilemez olmalıdır.

Distrubution Independence: Uygulama programları ve ad hoc programlar veri dağıtımı yapıldığında etkilenmemelidir.

Nonsubversion: Bütünsellik kuralları bir alt düzey dil (lower-level language) kullanıldığı zaman by-pass edilememelidir.

By mert

Oracle

Büyük çözümler için en iyi çözümlerden biridir.

Avantajları
1Büyük şirketler ve holdinglerin kuşkusuz en iyi çözüm.

2  2.  Performans: Oracle10g ile beraber neredeyse en iyi çözüm.

   3.  Bakım durumlarında bile kapatılmıyor.

   4.  Şifreleme: Şifreleme direk olarak veritabanı seviyesinde yapılıyor bu da hızı arttırıyor.

   5.  Yedekleme ve Geri Yükleme: Yedekleme işlemini kendi içinde yapabiliyor ve istenilen bir tarihe veritabanını otomatikman geri döndürebiliyor.

Dezavantajları
 1. Deneyimli Yönetici ihtiyacı (Oracle konusunda deneyimli olmayan ve yüksek sistem bilgisine sahip olmayan bir yönetici sistemi yönetemez.)

 2. Açıklar: Yanlış ayar yapılırsa ciddi güvenlik açıkları olabilir.
 3. “Windows ile kullanıldığında ciddi güvenlik açıkları olabilir” gibi kötü bir üne sahiptir.
By mert

MySQL

En popüler veritabanı yönetim sistemlerindendir. Açık kaynak kodlu olmasından dolayı geniş kullanıcı kitleleri tarafından tercih edilir. MySQL kullanıma sunulmadan önce “Battle Testing” denilen ve aylar süren bir aşamadan geçtiğinden dolayı güvenlik ve performans açısından iyi yol almıştır. 


Çoklu depolama motor mimarisi nedeniyle özellikle yönetim açısından iyi yol almıştır. 


MySQL yirmiden fazla platform ve işletim sistemi tarafından desteklenmektedir.


Avantajları

1.  Esneklik ve çok kullanıcı desteği (Web üzerinden MySQL verilerini birden çok kullanıcı yönetebilir, MySQL sayesinde kişiler verilere internet üzerinden kullanıcı ya da yönetici arabirimlerini kullanarak yetkilendirmeleri çerçevesinde ulaşırlar.)

2.  Hız (Oldukça hızlı ve kararlı bir yapısı vardır.)

3.  Fiyat (Kişisel kullanımda GPL (General Public Licance)lisansı nedeniyle bedavadır. Ticari kullanım ise birçok çözüme göre daha uygundur.)

4.  Kullanım kolaylığı

5.  Platform bağımsızlığı (Herhangi bir platform sınırlaması yoktur; Windows, MacOS, Linux ve pek çok Unix türeviyle sorunsuz çalışır.)

6.  Sınırları yüksektir. (50 Milyon sütun ve üstüne destek veren MySQL varsayılan tablo boyutu olarak 4 GB limite sahiptir.)

7.  MySQL topluluğu (Açık kaynaklı olmasının da yardımıyla geniş bir topluluğa ve kullanıcı kitlesine sahiptir.)

    Dezavantajları

    1.    Hiç kullanılmayacak olan kodların da kullanılıyor olması.

    2.    MySQL ticari veritabanı sistemlerinde bulunan gelişmiş özelliklere sahip değildir.

    3.    Çalıştığı sunucuda işlem yüküyle ters orantılı bir hıza sahiptir.
    By mert

    PostgreSQL

    Berkeley Üniversitesi Bilgisayar Bilimi Bölümü tarafından geliştirilen, nesne ilişkişi veritabanı sistemidir.

    Avantajları


    1. Lisans Kolaylığı (PostgreSQL ile ilişkilendirilmiş ek lisans maliyetleri ortadan kalkıyor.)


    2. Güvenilirlik ve Kararlılık: (Veritabanı Kullanıcıları tarafından en güvenilir veritabanı olarak kabul edilir. Pekçok sistem yöneticisi tarafında “Her zaman Çalışır” yorumu yapılır.)

      3.  Açık kaynak kodu ve gelişime açıklık

        4.  Büyük ölçekli çözümler için idealdir.


        Dezavantajları


        1.  Hakkında düzenli bilgiye ulaşmak zor.



        2.  PostgreSQL desteği özellikle ucuz hosting yapan şirketler tarafından verilmiyor.


        3.  Windows ile sorunları olduğu iddia ediliyor. 

          By mert