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'
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.
- CHECK_CONSTRAINTS
- COLUMN_DOMAIN_USAGE
- COLUMN_PRIVILEGES
- COLUMNS
- CONSTRAINT_COLUMN_USAGE
- CONSTRAINT_TABLE_USAGE
- DOMAIN_CONSTRAINTS
- DOMAINS
- KEY_COLUMN_USAGE
- PARAMETERS
- REFERENTIAL_CONSTRAINTS
- ROUTINES
- ROUTINE_COLUMNS
- SCHEMATA
- TABLE_CONSTRAINTS
- TABLE_PRIVILEGES
- TABLES
- VIEW_COLUMN_USAGE
- VIEW_TABLE_USAGE
- VIEWS
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.