Dokümanistan Akademi

SQL Kullanmadan Önce Tavsiye Edilen Ayarlar #q05

SQL Sorgu Çıktılarının Grid Boyunu Büyültme

Tools – Options – Font and Colors – Show Settings for : Grid Results Seçiyoruz ve Size Kısmını 9 yapıyoruz.

MSSQL Kod Ekranında Satır Numarasını Aktif Etme

Sorgu yazarken hatalar vermeye başlayacak. Hata mesajı almaya başladığımızda bize hatanın satır numarasını verecek ancak ekranımızda satır numarası olmadığından aktif etmeliyiz. Değilse tek tek satırları saymamız gerekir.

Tools – Options – Text Editör – All Languages – Line numbers aktif edebilirsiniz.

Kod satıra sığmazsa aşağı satıra insin (Word Wrap)

Yazdığınız SQL Kodu ekrana sığmazsa varsayılan modda ekranın sağına doğru devam eder. Kodu incelemek istediğinizde sağa doğru kaydırmanız gerekecek. Bunun için

Tools – Options – Text Editör – All Languages – Word wrap

aktif edebilirsiniz. Ancak Eğitim içerisinde SQL’i daha iyi anlamak için tavsiye edeceğim SQL yazım düzenine göre kullanırsanız bu ayara ihtiyaç duymayacaksınız.

SQL kodun altı Kırmızı ise Kodu Tanımıyor demektir

Eğer Query alanında altı kırmızı çizgili bir kod görürseniz SQL’in bunu tanımadığı anlamına gelir. Bu örneğimizde Execute’ın hemen solunda Master göreceksiniz. SQL Server Management Studio açtığınızda varsayılan olarak master (Sistem) database’i açılır.

Bu sebeple master database’ini buradan kendi database seçtiğinizde ve o database’de personel tablosu varsa hata gidecektir.

MSSQL her açtığında master database yerine kendi database ile açılsın

Her SQL’i açtığınızda sistem verilerinin tutulduğu master database varsayılan olarak açılır. Her açılışta master database’ini değiştirmek zahmetli bir durumdur. Eğer tek bir database’de çalışıyorsanız her SSMS’i açtığınızda varsayılan olarak kendi veritabanınız gelmesi için ilk SSMS’i açtığınızda gelen sa ve şifre yazdığınız alan

Connect to Server penceresinde Conncection Properties Sekmesine geçin

Connect to database : [Kendi Database’ini seçin]

Veritabanı kullanımlarını renklere göre ayırma yöntemi

Yanlış sunucuya sorgu atma riskini azaltır. Örneğin bir canlı database var birde test database’i var. Tablolar ve sorgular hepsi aynı. Yanlışlıkla canlı ortamda sorgu yapıp canlı database’in performansını düşürebilirsiniz. Bu ayar sayesinde Hangi sunucuya bağlanıyorsanız bir defa renk ataması yaparsınız. Ardından hatalı sorgu çalıştırmazsınız.

Örneğin CanlıDB = Kırmızı, TestDB =Yeşil yapabilirsiniz.

Bu ayarı yaparak sorgu ekranının altında test ortamında çalıştığınızı bileceksiniz.

Altta kırmızı bar olduğunda canlı DB’de çalıştığınızı anlayacaksınız.

Çok faydalı bir yöntemdir.

Sorgu Sonucunu Excel’e Kaydederken Başlıklar Kaybolmasın

Sorgu sonucu çıktıktan “Save Results As” seçip csv kaydettiğinizde Başlıklar çıkmaz.

Eğer Export dosyasında başlıklarında çıkmasını istiyorsanız

Tools- Options – Query Results – SQL Server – Result to Grid seçeneğine gelin ve aşağıdaki alandan  “Include column headers when copying or saving results” seçeneğini işaretleyin. SQL Server’ı kapatıp açın.

Artık “Save Results As” yapıp CSV kaydettiğinizde başlıkları ile gelecektir.

Yazdığınız Kodlar Elektrik Kesintisiyle Kaybolmasın – Otomatik kurtarmayı Aktif Et (AutoRecover)

Tools- Options – Environment – AutoRecover Alanı aktif değilse aktif edin ve 5 değerini 1 yapın. Böyleye yazdığınız veriler ola ki ani bir elektrik kesintisinde bir dakika öncesindeki sorgularınızı otomatik kaydetsin.  Bu süre varsayılan olarak 5 dakika tavsiyem 1 veya 2 dakika kalsın.

Ani bir kesinti sonrası SMSS açtığınızda gelen pencere’de kurtarılacak dosya olduğunu göster

 

Sizde denemek isterseniz 1 dakikaya alın. Sonra kaydetmeden 1 dk bekleyin.  Ctrl + Shift + ESC tuşlarına basın Görev yöneticisisi açılacaktır. SMSS’i bulun ve sağ tuş – Görevi Sonlandır diyin

Sonra SSMS’i tekrar açın. Karşınıza bu şekilde ekran gelecektir. Recovery Select Files seçerek kaydetmediğiniz dosyayı otomatik kaydettiğinizi görecektir.

MSSQL’de Tarih verilerini Türkçe Göstermek için bu kodu çalıştırın

SQL’de her ne kadar veritabanına Türkçe formatta yükleseniz de sorguladığınızda bu şekilde Hafta Günü Ay gibi alanlar İngilizce görürsünüz.

“SET LANGUAGE Turkish” Kodunu bir kez çalıştırsanız, Dil ayarlarınız Artık Türkçe olacaktır.

Aynı sorguyu tekrar çalıştırdığınızda Türkçe Tarih bilgileri görebilirsiniz. Eski Haline getirmek isterseniz’de “SET LANGUAGE English” yapabilirsiniz. Bu veride bir değişiklik yapmaz.

Kapanış

Evet, SSMS ekranını kullanmak için tavsiye ettiğim ayarları yapmış olduk. Bir sonraki videoda SQL ekranını tanıyım anlamaya çalışacağız.

Bir sonraki eğitimde görüşmek üzere…

SQL Örnek Adventureworks2016 Database Kurulumu #q15

Bu iki programı kurduğumuz zaman artık kendi ortamınızda SQL yüklemiş olduk. Ancak SQL öğrenmek için örnek bir database ve içinde örnek verilerin olması gerekiyor.

Örnek Adventureworks Database dosyasını internetten indirme

Kendiniz de yeni database oluşturup örnek kayıtları oluşturabilirsiniz. Bu yöntem sizi çok oyalar. Onun yerine ama kendi içinde hazır veri olan microsoftûn eğitimler için kurguladığı database’i kullanmak daha iyidir. SQL Eğitim Makale serisinde kullanacağımız AdventureWorks2016 database’ini de microsoft sitesinden ücretsiz indirebilirsiniz.

Microsoft bu bilgileri githup’a yükledi. Google’a “Adventureworks database download githup” yazıyoruz. Releases ile başlayan linki açıyoruz.

https://github.com/Microsoft/sql-server-samples/releases

Açılan linkte biraz aşağısına gittiğinizde AdventureWork (OLTP) full database backups başlığına gidiyoruz. Buradaki linklerden herhangi birisini indirebilirsiniz.

Ben AdventureWork2016.bak dosyasını kullanıcam. Veriler arasında fark yok. Sadece en son 2022 dosyası daha güncel veriler var. O kadar.

Üzerine tıklayıp .bak dosyasını bilgisayarımıza indiriyoruz.

 

Adventureworks2016.bak dosyasını SQL Server’a import Etme

İndirdiğiniz AdventureWorks2016.bak dosyasını SQL Server’ın solda “Object Explorer” alanında Databases kısmına Sağ Tuş yapıyoruz ve çıkan menüden “Restore Files and FileGroups” seçiyoruz.

Açılan pencereden From Device seçiyoruz. Ve sağdaki üç nokta seçiyoruz.

Tekrar pencere açılacak. File seçili olduğunda emin olduktan sonra Add seçiyoruz

İnternetten indirdiğimiz Adventureworks2016.bak dosyasını seçiyoruz.

Tavsiyem indirdiğiniz bak dosyasını açılan MSSSQL Kurulu olduğu;
C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup\
klasöre kopyalayıp öyle bak dosyasını seçin. Böylece başka yerde aramak zorunda kalmazsınız. Sonra tekrar lazım olduğunda kendi backup yerinden çağıraabilirsiniz. Bu klasör mevcut database yedeğini aldığınız klasördür.

dosyayı seçip Tamam- Tamam dedikten sonra Bu alanda Restore alanını aktif ediyoruz.

OK dediğimzde

OK dedikten sonra Adventureworks2016 Database aşağıdaki şekilde yüklenmiş olacaktır. İçinde birçok örnek tablo, view ve daha birçok örnek dosya göreceksiniz.

Artık eğitime hazırsınız. Bu seri takip ederek adım adım SQL Server eğimini işliyor olacağız.

MS SQL Server Kurulumu #q04

SQL Server Ücretsiz İndirip Kurmak

SQL Serverı ücretsiz kurulum yapabilirsiniz. Google’la “SQL Server Download” yapıp arattın. Çıkan Microsoft sayfasını açınız.

En temel hali ile Express kullanabilirsiniz. İndireceğiniz dosya lisanslı ücretli versiyonla aynı özelliğe sahiptir. Ancak canlı ortamda kullanıldığında ücrete tabidir.

https://www.microsoft.com/en-us/sql-server/sql-server-downloads

Sayfaya girdikten sonra açılan sayfadan Express sürümünü indiriyoruz. (İsterseniz Developer’da indirebilirsiniz. Full kurulum olur. Ancak planladığım SQL eğitiminde Express yeterlidir.)

SQL2022-SSEI-Expr.exe şekilde bir dosya inecek. Kurulumu başlatın ve ilk adımda Basic seçiyoruz.

Kurulum bittiten sonra aşağıdaki şekilde bir ekran gelecektir. Burada Install SSMS butonunu seçiyoruz.

SQL Server Management Studio İndirip Kurmak

SQL Server kurduk ama uygulamaları çalıştırdığımız “SQL Server Management Studio” Uygulaması var ayrıca onu kurucaz. Google Aramaya;

SQL Server Management Studio download

Ya da

SSMS download

Diye aratın

Açılan sayfayı sayfayı açıp biraz kaydırdığınızda Free Download 19.2 diye dosyayı indiriyoruz.

SSMS SQL Server’i kullanacağımız bir arayüzdür. Microsoft web sitesi açılacak. Aşağıda görülen linke tıklayıp SSMS-Setup-ENU.exe adında 653 mb’lık bir dosya yüklenecek.

SSMS-Setup-ENU.exe dosyasını indirdikten sonra kuruluma başlıyoruz. Herhangi bir özel ayar yoktur. Direk kuruyoruz.

Kurulum tamamlanmıştır. Başlat çubuğuna “manage” yazdığınızda aşağıdaki program eğitim boyunca kullanacağız.


SQL Kurulumunda Çıkan Sorunların Çözümleri

Evet arkadaşlar, kurulumu tamamladık ama maalesef iş burada bitmiyor. Deneyimlerime göre, birçok kişi tam “işte oldu” derken aşağıdaki hatalarla karşılaşıyor ve motivasyonu düşüyor. Hatta bazıları defalarca SQL Server’ı kaldırıp yeniden kuruyor. Aslında çözümleri çok basit. Gelin en sık karşılaşılan sorunlara ve çözümlerine bakalım:

🚫 Sorun 1: “sa” Hesabı ile Bağlanamıyorum / Login Failed

  • Sebep: Varsayılan kurulumda ‘sa’ hesabı devre dışı gelir ve SQL Server Authentication modu kapalıdır.
  • Çözüm:
    1. Önce Windows Authentication ile bağlanın
    2. Sunucuya sağ tıklayıp Properties > Security bölümüne gidin
    3. SQL Server and Windows Authentication mode‘u seçili hale getirin
    4. Security > Logins > sa hesabını bulun, sağ tıklayıp Properties deyin
    5. Password ve Confirm Password alanlarına güçlü bir şifre girin
    6. Status bölümünden Login‘i Enabled yapın

🚫 Sorun 2: Windows Authentication ile de Giremiyorum

  • Sebep: Bazen kullanıcı izinleri tanımlı olmayabilir veya SQL Server servisi doğru kullanıcıyla çalışmıyordur.
  • Çözüm:
    • Bilgisayarınızı yeniden başlatmayı deneyin
    • Services.msc’den SQL Server servisinin çalıştığından emin olun

🚫 Sorun 3: SQL Server Servisi Çalışmıyor

  • Sebep: SQL Server arka planda bir servis olarak çalışır ve bazen bu servis başlamaz.
  • Çözüm:
    1. Windows + R tuşuna basın
    2. services.msc yazın
    3. Listeden SQL Server (MSSQLSERVER) veya kurulumda verdiğiniz instance adını bulun
    4. Durumu “Running” değilse, üzerine sağ tıklayıp Start‘a tıklayın

🚫 Sorun 4: “Cannot connect to …” Hatası

  • Sebep: SQL Server’ın dinlediği portlar etkin değil veya firewall engelliyor.
  • Çözüm:
    • SQL Server Configuration Manager’ı açın
    • SQL Server Network Configuration > Protocols for … bölümüne gidin
    • TCP/IP‘nin Enabled olduğundan emin olun
    • Firewall’dan SQL Server için gerekli portları (varsayılan 1433) açın

💡 PROFESYONEL TÜYO:
Bu sorunlardan herhangi biriyle karşılaşırsanız, sakın panik yapmayın ve hemen SQL Server’ı kaldırıp yeniden kurmaya kalkmayın. Çünkü %90 ihtimalle sorun sunucunun kendisinde değil, yapılandırmadadır. Yukarıdaki adımları sırasıyla deneyin.

Unutmayın, bu sorunlar SQL Server öğrenme yolculuğunun doğal bir parçasıdır ve hepimiz başlangıçta benzer şeyler yaşıyoruz.

Artık bilgisayarımızda SQL Server kurulmuştur.  Diğer yazımızda SQL Server içine örnek veri tabanını yine microsoft’un belirlediği örnek database kurulumu ve SQL Server’a yüklemesini konuşucaz.

İlişkisel Veri Tabanı ve Normalizasyon Kuralları #q03

Merhaba arkadaşlar, Bugün, veri tabanı tasarımının olmazsa olmazı, belki de en çok kafa karıştırdığı düşünülen ama aslında hayat kurtaran konusuna, Normalizasyon‘a derin bir dalış yapacağız arkadaşlar. Amacımız, bu soyut gibi görünen kuralları, somut örneklerle adım adım çözümlemeye çalışacağız. Hazırsanız başlayalım!

İlişkisel Veri Tabanı nedir?

Bir önceki videoda, bir veritabanının düzenli bir bilgi deposu olduğundan bahsetmiştik. Peki, kelimenin başında geçen ‘İlişkisel’ ifadesi nereden geliyor? Cevabı, tabloların birbiriyle olan bağlantısında yatıyor arkadaşlar Öncelikle Veritabanındaki tabloları ve bunun ilişkilerini anlatmak için Excel’den örnek vermek istiyorum. Excel bize ilişkisel veritabanının temel yapı taşlarını anlatır. Şöyle ki;
  • Excel’deki bir çalışma sayfası, veritabanındaki bir tabloya karşılık gelir arkadaşlar.
Gördüğünüz gibi birçok Excel Sayfası var. Eğer Veritabanı olsaydı her biri birer tablo olduğunu düşünebilirsiniz.
  • Excel’deki bir satır, veritabanında bir kaydı temsil eder (örneğin, tek bir müşteriye ait tüm bilgiler). Adres, Ad Soyad, telefon gibi
  • Excel’deki sütunlar ise, veritabanında bir alanı tanımlar arkadaşlar (her bir alana veri tabanında biz attribute diyoruz)
(örneğin, tüm müşterilerin ‘İsim’ bilgisinin saklandığı yer diyebiliriz)  Veri Tabanı yapısını Excel’den örnekledik. Peki Excel ile Veritabanı arasındaki kritik fark Nedir? Excel’de genelde tüm veriyi tek bir sayfada tutmaya çalışırız. Bize daha kolay gelir. Öyle alıştık çünkü Oysa ilişkisel veri tabanının gücü, bu veriyi mantıklı, küçük tablolara bölüp, sonra bu tabloları birbirine akıllıca bağlamakta yatar. Bu bağlantılar sayesinde hem veri tekrarının önüne geçeriz, hem de verimliliği ve doğruluğu artırmış oluruz.

Peki Neden Normalizasyon?

Tam da bu noktada şöyle bir soru aklımıza gelmeli: “Madem Excel’deki gibi tek bir tabloda tutabiliyoruz, neden uğraşıp veriyi parçalara ayıralım ki?” Bu, çok yerinde bir soru. Hemen bu sorunun cevabını somut bir örnekle birlikte verelim.

Giyim Mağazası Örneği ile Normalizasyon

[EXCEL AÇ : “Tablo Yapım Aşaması 1” Sayfasına Geç] Diyelim ki bir giyim mağazası için bir sipariş takip sistemi tasarlıyoruz. İlk aklımıza gelenler:
  • Sipariş verilen Ürün nedir? / Ürün Adı
  • Sipariş verilen ürünün tutarı? / Sipariş Tutarı
  • Siparişi veren Müşteri Kim? / Müşteri Adı
  • Siparişin Verildiği Tarih Nedir? / Sipariş Tarihi
  • Siparişin Ödeme yöntemi Nedir? / Ödeme yöntemi (Visa, mı, Nakit mi?)
  • Siparişin gideceği adres neresi?/ Teslimat Adresi
Sorulara cevap verdiğimizde Tablo başlıklarımız bu şekilde mantıklı görünüyor. Hadi bu tabloyu biraz veriyle dolduralım. Sizin için verileri ben bu şekilde doldurdum. Tabloda tekrar eden verileri renklendiriyorum. İşte! Tam da burada anlatmak istediğim sorunu görüyoruz Arkadaşlar. Bakın neler oluyor:
  • “Ahmet Ltd. Şti.” ismi neredeyse her siparişte tekrar ediyor.
  • “Kaban” ürünü defalarca satıldığı için sürekli tekrar ediyor.
  • “Kredi Kartı” ödeme yöntemi aynı şekilde onlarca yerde yazılı.
Bu verileri tekrar etse ne olur?  Bir zararı var mı? Bunu Şöyle Açıklayım “Ahmet Ltd. Şti.” binlerce sipariş vermiş olsun. Bir gün bize gelip, “Şirketimizin ismi artık Ahmet Tekstil A.Ş. oldu, lütfen tüm kayıtlarımızı günceller misiniz?” dedi. Ne yapacağız? Tablomuzda binlerce satırı tek tek bulup, elle değiştirmemiz gerekecek! Bu:
  • İnanılmaz bir zaman kaybıdır.
  • Hata riski çok yüksektir. Bir satırı unutma ihtimaliniz var.
  • Canlı bir sistemde bu kadar çok satırı güncellemek, performansı düşürür, hatta sistemi kilitleyebilir.
Ayrıca, aynı bilgi defalarca kaydedildiği için depolama alanı israfı da cabası.  İşte Normalizasyon tam da bu kaosu önlemek için var! Arkadaşlar. Normalizasyonun İki temel hedefi vardır:
  1. Veri tekrarını engellemek,
  2. Veri bütünlüğünü korumak.
Yani, Normalizasyon bize “Dur, bu veriyi buraya bu şekilde yazma, şu şekilde ayır, daha temiz ve güvenli olur!”  diyen bir kılavuzdur arkadaşlar.

Normalizasyon İşlemi Aşamaları

O zaman bu veriyi ayrı ayrı, küçük tablolara taşıyıp sonra da bu tabloları birbirine bağlayalım arkadaşlar. Yani Normalizasyon işlemi yapalım. Müşteri bilgileri için bir Müşterilertablosu oluşturuyoruz. Her Müşteriye bir Numara atayalım Ürün bilgileri için bir Ürünler tablosu, Ödeme yöntemleri için bir Ödeme Yöntemleritablosu oluşturuyoruz. Ana Siparişler tablosunda ise artık; Müşteri adı yazmak yerine, MüşteriID yazıp karşılık gelen numarasını yazıyoruz. Ürün adı yazmak yerine ÜrünID yazıyoruz. Artık “Ahmet Tekstil”in ismini değiştirmek için Müşteriler tablosundaki tek bir satırı güncellememiz yeterli oluyor! İnanılmaz değil mi?  

Peki Bu çizgilerle gösterdiğim, Tablolar Nasıl Birbirine Bağlanıyor?

(Ses tonunuzu hafifçe değiştirerek, bir sonraki mantık adımını işaret edin) MüşteriID: 1 yazdığımızda, veritabanı nasıl oluyor da bunun ‘Ahmet Bey’ olduğunu anlıyor? İşte ilişkisel veri tabanının sihri ve ‘ilişkisel’ kelimesinin veritabanındaki karşılığı İkincil Anahtar ya da İngilizce adıyla Foreign Key ile tabloları birbirine bağlıyoruz. Şu an ekranda gördüğünüz, Siparişler tablomuzdaki MüşteriID aslında bir referanstır. Buradaki ‘3’ rakamı, ‘Ahmet Bey’in kimlik kartı numarası gibi. Siparişi Veren 3 Numarayı Alıp, Müşteriler tablosuna gittiğinde, birebir o numarayı buluyoruz ve ‘Ahmet Bey’in tüm bilgilerine bu sayede ulaşabiliyoruz. Excel’de DÜŞEYARA Bilenler durumu kavrayacaktır. İşte ilişkisel veri tabanınındaki bu işlemi İkincil Anahtar, yani Foreign Key dediğimiz kavram yapıyor. Bu bağ, sadece bir bağlantı değil, aynı zamanda bir güvenlik mühendisidir. Veri bütünlüğünü otomatik olarak sağlar. Örnek verecek olursak; Siparişler tablosunda siparişi olan bir müşteriyi (örneğin ID’si 3 olan Ahmet Bey’i) Müşteriler tablosundan silmeye kalktığınızda, veri tabanı size izin vermez. Sizi uyarır: “Dur! Bu müşteriye ait aktif siparişler var. Önce onları silmelisin.” der Ya da Ürünler tablosunda olmayan bir ÜrünID (mesela 999) ile yeni bir sipariş girmeye çalıştığınızda, veri tabanı yine reddedecektir: “Böyle bir ürün yok, lütfen geçerli bir ürün kodu girin.” Der size.  

Günlük Hayattan Bir Örnek: Banka

Peki, bu Foreign Key kavramını günlük hayatta nerede görüyoruz? Aslında her yerde! Varlar. Bu sefer’de size çok tanıdık gelecek bir örnekle anlatayım: Banka. Düşünün, Örneğin Ziraat Bankasına gidip yeni bir hesap açtırdınız. Banka size hemen benzersiz hiçbir müşterisinde olmayan  bir müşteri numarası verir. İşte bu numara, bankanın devasa veri tabanının Müşteriler tablosundaki (Birincil Anahtarınız) yani Primary Key olarak sizin adınıza bir kayıt açılır. Bu Tablomuzda Primary Keyiniz Müşteri No’dur. ilaveten adınız, soyadınız, adresiniz, anne kızlık soyadınız gibi sadece sizi ilgilendiren sabit bilgileriniz tutulur. Şimdi, Ziraat Bankasında bir işlem yaptığınızı hayal edin. ATM’den Para çekiyorsunuz, İnternet Bankacılığından havale yapıyorsunuz veya fatura ödüyorsunuz. Banka, bu işlemi kaydederken, Banka İşlemleri veya Hesaplar gibi bir tabloya şunları yazar: ‘Şu tarihte, şu ATM’den, 500 TL çekilmiştir.’ Ama asla bu kaydın içine sizin adınızı ve soyadınızı tekrar tekrar yazmaz! Yapacağı şey çok basittir. Görselde gördüğünüz gibi O kaydın ‘MüşteriID’ sütununa sizin o benzersiz müşteri numaranızı (yani 1234567’i) yazar. Karşılığında da Banka İşlemlerinde 1234567’ye karşılık gelen kayıtlar size ait işlemlerdir. İşte Banka İşlemleri Tablosundaki yazan 1234567 kaydı bir Foreign Key yani İkincil Anahtardır. ‘dir. Banka, Mustafa Bey 500 TL çekti’ raporunu oluşturmak istediğinde, Banka İşlemleri tablosundaki MüşteriID’yi alır, Müşteriler tablosundaki ID ile birleştirir (JOIN işlemi yapar) ve işlemi yapan kişinin siz olduğunu anlar. Excel’de Düşeyara bilenler ne demek istediğimi anlayacaklardır. Yani, Primary Key (Müşteri Numaranız) sizi tanıtken, Foreign Key  ile yaptığınız tüm işlemleri fiziksel bir bağ gibi birbirine bağlıyor. Primary Key Benzersiz kayıtlara verilir. Foreign Key ise benzersiz kayıtlarla bağ kuran yapı diyebiliriz. İşte veri tabanı ilişkilerinin büyüsü ve mantığı tam olarak budur.  

Peki, Bu Kadar Mükemmel Bir Sistemin Hiç Mi Eksisi Yok?

Maalesef var arkadaşlar, her güzel şeyin bir de bedeli vardır. Normalizasyon dediğimiz kavram, veri tutarlılığı ve güvenliği için bir mükemmel olsa da, bu avantajın bir karşılığı var o da : Sorgu Performansı Düşüklüğü. Arkadaşlar. Şimdi şu görsele bir bakın. Ne kadar çok tablo, ne kadar çok ilişki varsa, bir rapor almak için o kadar çok JOIN işlemi yapmamız işlemi yapmamız gerekiyor. Tekar hatırlatıyım JOIN Excel’deki DÜŞEYARA gibidir. Onlarda Tablodaki verileri DÜŞEYARA ile çağırdığınızı düşünün Bu da veritabanı için ekstra iş yükü demek ve raporlama için yapacağınız sorguları yavaşlayacaktır. Yani, normalize edilmiş bir yapı, güncelleme için hızlıdır, ama sorgulama için nispeten yavaştır.  

Peki Bu Sorunla Nasıl Başa Çıkıyoruz? Pratik Çözüm Ne?

Pratikte bu durumun çok akıllıca bir çözümü var: İki sistemli (Hybrid) yaklaşımdır. 1. OLTP (İşlemsel) Veritabanı: Günlük işlemlerinizi yaptığınız, Normalizasyon kurallarına uygun tasarlanmış sistemdir. Sipariş girme, müşteri güncelleme gibi işlemler burada, hızlı ve güvenli bir şekilde yapılır. 2. OLAP (Analitik) Veri Ambarı: Raporlama ve analiz için kullanılan, bilerek (Normalizasyonun Tersi)  denormalize edilmiş yapıdır. Her gün işlenen veriler, sistemin az kullanıldığı saatlerde (genellikle gece olur) buraya aktarılır ve raporlamayı hızlandırmak için tekrar içeren geniş, yassı tablolar halinde saklanır. Yani, hem güvenli işlem yaparız, hem de hızlı rapor almış oluruz. Böylece her iki sisteminde en iyi yanlarını bir arada kullanmış oluyoruz.  

Sonuç

Özetle arkadaşlar,
  • Normalizasyon, veri tekrarını önleyerek bize tutarlılık, güvenlik ve esneklik sağlar.
  • Foreign Key ise bu yapıyı bir arada tutan, ilişkileri güvence altına alan çimento görevi görür.
Bu temel prensipleri özümsediğinizde, ister bir e-ticaret sitesi, ister bir banka sistemi tasarlayın, her veri tabanını çok daha sağlam kurgulayabilirsiniz arkadaşlar. Bir sonraki videoda görüşmek üzere, kendinize iyi bakın

SQL Dili ve Veritabanı Nedir? #q02

Merhaba, bu videoda SQL dilini, veritabanları nasıl çalıştırdığını ve günlük hayatta bize nasıl yardımcı olacağını göreceğiz. SQL’in temel komutlarını bir market örneğiyle, eğlenceli görseller eşliğinde incelemeye çalışacağız.

SQL Dili Nedir?

SQL, açılımı Structured Query Language. Türkçesiyle, Yapılandırılmış Sorgu Dili demektir.
Kısaca: Veritabanıyla konuşmamızı sağlayan bir dildir.

SQL Dili Veritabanına soru sormamızı, veri eklememizi, güncellememizi ve silmemizi sağlar.

Mesela Biz veritabanına “bana şu ürünü getir, şu müşteriyi ekle” deriz;

SQL ise bu isteğimizi si steme doğru şekilde ileten yazılım dilidir.

Veri Tabanı Nedir?

Peki Veritabanı Nedir? Bir veri tabanı, bilgilerin düzenli bir şekilde saklandığı dijital bir depo gibi düşünebilirsiniz.

Bunu bir kütüphaneye benzetebiliriz:

  • Kitaplar = Bir satırdaki kayıt gibi düşünün.
  • Kütüphanedeki Raflar = Veritabanındaki Tablolar olarak düşünebilirsiniz.
  • Kütüphanenin tamamı = Bir Veri tabanı gibidir.

👉 İlk videoda veriyi anlamaya çalışmıştık. Şimdi ise “o verilerle nasıl konuşuyoruz” kısmına odaklanacağız.

 

VeriTabanı Nelerden Oluşur?

Veri tabanını içeriğinde neler vardır.

  • Tablolar: Asıl bilgilerin saklandığı yer.
  • Tablonun içindeki Sütunlar: Bilginin türünü tanımlar (ad, soyad, fiyat) gibi.
  • Satırlar ( Yani Kayıtlar): Tek bir kişiyi ya da ürünü temsil eder.
  • Anahtarlar: Her kaydı benzersiz hale getirir, tabloları birbirine bağlar.

👉 Yani veritabanı aslında düzenli tabloların bir bütünüdür.

Veritabanında Veri Tipleri

Veri Tabanında bir diğer önemli konu ise Veri Tipleridir. Her sütun bir veri tipiyle tanımlamamız gerekir.

  • Metin (VARCHAR, NVARCHAR) → örneğin; isimler, açıklamalar
  • Sayı (INT, DECIMAL) → Örneğin, miktar, fiyat
  • Tarih/Saat (DATE, DATETIME) → sipariş tarihi olabilir
  • Mantıksal (BIT/BOOLEAN) → evet-hayır, Evli Bekar gibi değerleri saklarız.

👉 Veri tipi, bilgisayarın hafızayı doğru kullanmasını ve verinin güvenli şekilde saklanmasını sağlar.

 

SQL’in Temel İşlevleri?

SQL, veritabanına Dört Temel işlem vardır.

  1. Veri sorgulama (SELECT) → “Ne  var, göster bana.” Demiş oluyoruz.
  2. Veri ekleme (INSERT) → “Yeni bilgi ekle.”
  3. Veri güncelleme (UPDATE) → “Mevcut bilgiyi değiştir.”
  4. Veri silme (DELETE) → “Bilgiyi kaldır.”

👉 Yani SQL aslında veriyi okumak, yazmak, değiştirmek ve silmek için kullandığımız ortak dildir.

Yerleşik SQL Fonksiyonlar

Ancak SQL sadece sorgulamak değil, aynı zamanda hesaplama yapmak için de fonksiyonları vardır. Birçok Fonksiyon var. Excel’deki gibi size birkaçını söylemek istiyorum. Mesela,

  • COUNT() → Tabloda kaç kayıt var?
  • SUM() → Tablodaki toplam Sipariş tutarı nedir?
  • AVG() → Tablonun ortalama fiyat kaç?
  • MAX() → en yüksek değer
  • MIN() → en düşük değer

👉 Örneğin: “Marketteki en pahalı makarna hangisi?” → SELECT MAX(Fiyat) FROM Makarnalar sorgusuyla yazılır.

 

SQL İçin Örnek Senaryolar

Bir markette müşteri ile geçen diyalogların SQL karşılıklarını değerlendirmek istiyorum. Böylece SQL komutları daha iyi anlaşılacak.

Müşteri Diyor ki;

 

SELECT

Merhaba, Bana Fiyonk Makarna Getirir misiniz?



SELECT [Fiyonk Makarna] FROM Makarnalar

SELECT * FROM

Diğer Örneğimize geçelim.

Merhaba bana tüm Makarnaları getirir misiniz?



SELECT * FROM Makarnalar

SQL Kodundaki * işareti “tüm tablodaki veriler” demektir.

 

SELECT DISTINCT

Merhaba, Bana Tüm Makarna Çeşitlerinden birer tane getirir misiniz?

SELECT DISTINCT Makarna * FROM Makarnalar

SELECT’den sonraki DSTINCT komutunu kullanarak her bir üründen bir tane istemiş olduk.

WHERE

Merhaba, Bana Sıvı Yağlardan 5 Kg Sıvı Yağ Getirir misiniz.

SELECT [Sıvı Yağ] FROM Yağlar Where KG=5


WHERE komutu kullanacak Sıvı Yağların sadece 5 kiloluk olanını istemiş olduk.

 

INSERT INTO

Yeni gelen Cingöz Markalı Makarnaları, Makarna reyonuna yerleştirip 10 TL fiyat yazar mısın?

INSERT INTO Makarnalar (Marka, Fiyat) VALUES(‘Cingöz’,10)



Müdür Makarna Reyonuna Cingöz Marka yağ eklemesini ve Fiyatını 10 yazmasını istiyor.

UPDATE

Fırıldak markalı Makarna’nın fiyatını 15 TL olarak günceller misin?

UPDATE Makarnalar SET Fiyat=15 Where [Marka]=’Fırıldak’



Müdür Fırıldak Marka ürünleri 15 olarak güncellemesi istedi. Eğer WHERE kullanmasaydık tüm makarnaların fiyatını 15 yapardı.

DELETE FROM

Artık FOT Markalı makarnaları satmayacağız. Onları reyondan Kaldırır mısın?

DELETE From Makarnalar WHERE Marka=’FOT’


Müdür FOT marka ürünleri reyondan kaldırmasını istiyor.  Yine burada da WHERE yazmazsak tüm makarna reyonunu kaldırma işlemi yapılacaktır.

CREATE TABLE

CREATE TABLE İtalyanMakarna(Marka nvarchar(50), Fiyat decimal(18,0))



Önceden Makarna reyonu var. Ancak İtalyan Makarna’lar için yeni bir reyon açılmasını istiyor. Reyon içinde de Marka ve Fiyatı olsun istiyor.

Kapanış

SQL dili, veritabanlarıyla iletişim kurduğumuz evrensel bir dildir. Marketten ürün istemek gibi, SQL ile de verileri sorgular, ekler, günceller ve sileriz. Bu videoda SQL’in temel yapı taşlarını gördük. İlerki videoda sorguları daha detaylı örneklerle inceleyeceğiz.

SQL Eğitimi öncesi Veri Nedir? #q01

SQL, demek veri demektir.
O yüzden en başta şu soruyu soralım: Peki Veri nedir?
İlk dersimize bu soruyla başlayalım.

Veri Nedir?

Veri, işlenmemiş ham bilgidir.

Yani çevremizde gördüğümüz, duyduğumuz, kaydettiğimiz ama henüz üzerinde bir işlem yapmadığımız gerçeklerdir.

Tek başına anlamlı olmayabilir.
Örneğin: “Ayşe, 25 yaşında.” Bu sadece bir veridir.


Ama bu verileri işleyip anlamlı hale getirdiğimizde bilgi ortaya çıkar.

Mesela : “Ayşe’nin grubunun yaş ortalaması 28.” → Bu artık bir bilgidir.


Bir adım ötesinde bu bilgiyi kullanarak karar vermeye başladığımızda ise bilgelik düzeyine geçeriz.

Örneğin : “Ortalama yaş 28, o halde ürünümüzü 25–30 yaş arasına pazarlayalım.”

Veri → Bilgi → Bilgelik.

İşte veri, bilgi ve bilgelik arasındaki farkı anlamak, SQL öğrenirken neden veriye ihtiyaç duyduğumuzu daha net gösterecek.

SQL yolculuğumuz da tam burada başlıyor.

Günlük Hayatta Veri

Aslında her şey bir veridir.

  • Telefon rehberimizdeki isim ve numaralar,
  • Market fişimizdeki ürün, fiyat, miktar bilgileri,
  • Instagram’daki beğeniler, yorumlar, takipçi sayısı…

Hepsi birer veridir. Günlük hayatımızda farkında olmadan milyonlarca veriyle etkileşim halindeyiz.

Daha da basitleştirelim:

  • Adım, soyadım, doğum tarihim → kişisel veri
  • Maaşım, işe giriş tarihim → sayısal ve tarihsel veri
  • Arabamın plakası → metinsel veri

Veri Çeşitleri

Verilerin farklı türleri vardır.

  • Yapısal Veri (Structured):
    Excel’de gördüğümüz satır ve sütun düzenindeki verilerdir. Ad, soyad, maaş, tarih gibi standart formattaki verilerdir.
  • Yapısal Olmayan Veri (Unstructured):
    Fotoğraflar, videolar, ses kayıtları, telefonu açarken kullandığımız parmak izi. Ancak bir tabloya kolayca oturmazlar.

Sosyal medya büyük oranda bu tür verilerden oluşur.

  • Yarı Yapısal Veri (Semi-Structured):
    JSON, XML, CSV gibi kısmen düzenli ama esnek veriler.

Modern dünyada en çok kullanılan veri türlerinden biridir.

Şirketler Veriyi Neden Kaydeder?

Peki şirketler neden veriyi kaydetme ihtiyacı duyar?
Aslında iki temel sebebi vardır:

Birincisi: Geçmişi anlamak.
Bunu da Raporlama ve analiz yaparak görmek isterler.
Şirketler genelde “Geçmişte ne oldu?” sorusuna cevap ararlar.

İkincisi: Geleceği tahmin etmek.

“İleride ne olacak?” sorusuna yanıt ararlar.

Örneğin bir şirket, geçmiş satış verilerine bakarak gelecekte hangi ürünlere daha çok yatırım yapması gerektiğini görebilir.

Verinin Değeri

Bugün veriye “21. yüzyılın petrolü” deniyor.
Çünkü veri Ham haldeyken çok anlamlı değildir.
Ama işlendiğinde inanılmaz bir değer kazanıyor.

Google, Amazon, Meta gibi dev şirketler, aslında veriyi en iyi işleyen şirketler olduğu için dünyanın en büyükleri haline geldi.

Ancak buraya dikkat!

Ama verinin tek başına değerli olması için kaliteli olması gerekir.

Verinin Doğruluğu, güncel olması çok önemlidir. Yanlış ya da eksik veriler sizi yanlış sonuçlara götürür.

Bu yüzden Veri dünyasında şöyle bir söz vardır. “Çöp girerse, çöp çıkar (Garbage In, Garbage Out)” demişler. Yani yanlış veri girerse, yanlış sonuç çıkar.

Veriler Nerede Tutulur?

İlk etapta çoğu çalışan veriyi Excel’de tutar. Küçük ölçekli işler için bu yeterli olabilir. Ama milyonlarca satır veriyi Excel’de saklamak hem mümkün değildir hem de güvenli değildir.

İşte burada Veri Tabanı Sistemleri devreye girer. Şirketler verilerini merkezi ve güvenilir bir şekilde saklamak için veri tabanlarını kullanır.

İlişkisel Veri Tabanı Sistemleri

Bugün dünyada en çok tercih edilen veri tabanı türü İlişkisel Veri Tabanlarıdır (Relational Database Management Systems – RDBMS).
Çünkü bu sistemler verinin tutarlılığını garanti ederler. Finansal veriler, satış raporları gibi kritik bilgiler için tutarlılık hayati önem taşır.

En popüler ilişkisel veri tabanı sistemleri:

Oracle

(Neden Bu kadar popüler; İlk olarak 1970’lerde çıkarılmış. Bu yüzden bu işin atası kabul edildiği için 50 yıldır bilinen bir ürün olduğu için şirketler tercih eder. )

MSSQL Server

Microsoft Şirketinin ürettiği, Oracle’ın en büyük rakibidir.

IBM DB2

MYSQL

Genelde Web Sitelerinde Kullanılır.

PostgreSQL

Açık Kaynak yazılımları kullanılan ürünler Ücretsiz kullanılan üründür.

 

Bu sistemlerin çoğunda kullanılan SQL dili büyük oranda aynıdır. Ufak tefek farklılıklar olabilir ama temeli hep aynıdır.

Sonraki Adım

Şirketler verilerini bu veri tabanı sistemlerinde saklıyor. Bizim de SQL öğrenme amacımız bu sistemlerdeki verileri sorgulamak, raporlamak ve analiz etmek olacak.
Bir sonraki bölümde SQL’in temellerine giriş yapacağız.

error: İçerik Kopyalamaya Karşı Korulamlıdır. !!