İlginizi Çekebilir
  1. Ana Sayfa
  2. SQL

SQL Server INFORMATION_SCHEMA

SQL Server INFORMATION_SCHEMA
+ - 0

SQL Server INFORMATION_SCHEMA

Merhabalar bu dersimizde SQL Server INFORMATION_SCHEMA konusuna bakacağız. Tablolarımızı oluştururken kolon adı, veri tipi ve boş olup olamayacağını belirliyoruz. Son olarak tablomuzun adını yazıp kayıt ediyoruz. Ancak bu kolonların bilgileri sandığımızdan daha fazla… Yani arka planda bu kolonlar hakkında çok fazla bilgi tutuluyor. Şimdi bu arka planda tutulan bilgilerin neler olduklarına bakacağız.

Bütün bu bilgileri SQL Server’in kendi özel tablosu olan INFORMATION_SCHEMA’dan alacağız. INFORMATION_SCHEMA bilgi şeması anlamına gelir.

 

SQL Server INFORMATION_SCHEMA

Daha önce bu konuya değindiğim SQL Tablo Kolon Bilgilerini Almak dersime ulaşabilirsiniz.

Bunun için özel bir sorgumuz var.

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'PERSONEL_TANIMLARI'

sql-INFORMATION_SCHEMA

Yukarıdaki görselde gördüğünüz gibi bilgileri elde edebiliyoruz. Gelin biraz daha inceleyelim. Burada bir sürü bilgi var ancak ben en çok işimize yarayanları ya da bilmemiz gerekenleri vereceğim.

  • TABLE CATALOG =  Tablonun hangi Database’de olduğunu gösterir.
  • TABLE NAME = Tablonun adı
  • COLUMN NAME = Kolonun adı
  • ORDINAL POSITION = Kolonun tablodaki sırası. (Select yaptığınızda soldan kaçıncı sırada göründüğü)
  • COLUMN DEFAULT =  Varsayılan değeri (Tablo oluştururken ayarlanabilir. İnsert işleminde boş gönderilirse bu varsayılan değer aktif olur.)
  • IS NULLABLE = Boş geçilebilir mi?
  • DATA TYPE = Veri Tipi
  • CHARACTER MAXIMUM LENGTH = Girilecek verinin maksimum uzunluğu
  • CHARACTER SET NAME = Verilen string türünde ise hangi kodlamada olacak. Varsyılan UNICODE’dir.
  • COLLATION NAME = Karşılaştırma Adı. SQL büyük küçük harf duyarlılığı (Büyük Harf Küçük Harf karşılaştırması…)

 

COLLATION NAME: 

Arkadaşlar burada COLLATION NAME çok önemlidir.  Turkish_CI_AS ve Turkish_CS_AS olarak Türkçe karakter destekli  DATABASE tanımlarız. Bunların en farkı büyük küçük harf karşılaştırmadır.

  • Turkish_CI_AS = Büyük küçük harf karşılaştırması yapılmaz. A=a şeklinde işlem yapar.
  • Turkish_CS_AS =Büyük küçük harf karşılaştırması yapılır. A=a değildir.

Mesela bir tablonuzdaki bir kolonda, aa, AA, aA, Aa şeklinde dört farklı satır olsun ve bu kolon üzerinden bir select çalıştırmak istiyorsunuz. Bu sorgunun Where kısmında kolon = ‘aa’ yazdığınızda, eğer database tanımlanırken;

Turkish_CI_AS  seçilmiş ise,  dört satırda gelir. Yani aa = aa, AA, aA, Aa dır.

Turkish_CS_AS seçilmiş ise, sadece bir satır gelir. Yani aa = aa ‘dır.

Bu DataBase ilk tanımlanırken belirlenir. Sonradan değiştirilmesi mümkün değildir.

 

Yukarıdaki sorguya benzer bir şekilde başka bir sorgu da yazabiliriz.

Aşağıdaki sorgularımızda daha farklı veriler elde edebiliyoruz ancak en gerekli bilgiler yine aynı.

SYS.COLUMNS

SELECT * FROM 
sys.columns 
WHERE object_id = OBJECT_ID('dbo.DUYURULAR')

Procedure sp_columns

EXEC sp_columns 'DUYURULAR'

 

Yukarıdaki sorgumuzda INFORMATION_SCHEMA ‘dan sonra Columns yazdığını görmüşsünüzdür. Bu bizim kolon bilgileri almak istediğimizi belirtiyor. Burada bir çok farklı nokta için bilgi alabiliriz. Aşağıdaki listede bunları görebilirsiniz.

Bu listedeki konuları ayrı dersler olarak işleyeceğimden dolayı burada açıklamalarını vermiyorum.


SQL Server INFORMATION_SCHEMA dersimiz de  bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.

Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.

Buradan C# Eğitim Setimde yayınladığım Github projeme ulaşabilirsiniz.

Sağlıcakla ve Takipte Kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)