Yavuzlar
Ana sayfaTelegram
  • Yavuzlar
  • VulnLab
  • CodinLab
  • 📚EĞİTİM
    • PHP
      • XAMPP kurulumu
      • VS Code Kurulum
      • 1.0 PHP Nedir
      • 1.1 Dosya Oluşturma
      • 1.2 Syntax (Yazım Kuralları)
      • 1.3 PHP'de Echo ve Print
      • 1.4 PHP'deki yorumlar
      • 1.5 PHP Değişkenleri
      • 1.6 Operatörler (Operators)
      • 1.7 Veri Türünü Alma
      • 1.8 PHP'de String
      • 1.9 PHP'de Sabitler
      • 2.0 PHP'de If Else Elseif
      • 2.1 Switch Case
      • 2.2 PHP'de Döngüler
      • 2.3 PHP'de Diziler (Arrays)
      • 2.4 PHP'de Süper Global Değişkenleri
      • 2.5 PHP'de Cookie (Çerez) Ve Session (Oturum) Yöntemleri
      • 2.6 Form işlemleri
    • C++
      • 1.0 Temeller
        • 1.1 Dosya Oluşturma
        • 1.2 Syntax (Yazım Kuralları)
        • 1.3 Yorum Satırları
        • 1.4 C++ Değişkenleri
          • 1.4.1 Değişken Türleri
        • 1.5 Operatörler (Operators)
        • 1.6 Namespace
        • 1.7 Kullanıcı Girdisi (User Input)
        • 1.8 C++ Stringleri (C++ Strings)
        • 1.9 Matematik (Math) Fonksiyonları
        • 1.10 Booleans
        • 1.11 If Else
        • 1.12 Switch
        • 1.13 While Döngüsü
          • 1.13.1 Do While Döngüsü
        • 1.14 For Döngüsü
        • 1.15 Break/Continue
        • 1.16 Diziler
        • 1.17 Structures
        • 1.18 Enums
        • 1.19 References
        • 1.20 Pointers
      • 2.0 Fonksiyonlar
      • 3.0 Sınıflar
        • 3.1 OOP
        • 3.2 Sınıflar ve Objeler
        • 3.3 Sınıf Methodları
        • 3.4 Yapıcılar (Constructors)
        • 3.5 Erişim Belirleyicileri (Access Specifiers)
        • 3.6 Kapsülleme (Encapsulation)
        • 3.7 Inheritance
        • 3.8 Polimorfizm (Polymorphism)
        • 3.9 Dosyalar (Files)
        • 3.10 İstisnalar (Exceptions)
        • 3.11 Tarih ve Zaman (Date and Time)
      • 4.0 Veri Yapıları (Data Structures)
        • 4.1 Veri Yapıları ve STL
        • 4.2 Vektörler (Vectors)
        • 4.3 Listeler (Lists)
        • 4.4 Yığınlar (Stacks)
        • 4.5 Kuyruklar (Queues)
        • 4.6 Deque (Çift Uçlu Kuyruk)
        • 4.7 Küme (Set)
        • 4.8 Maps
        • 4.9 Iterator
        • 4.10 Algoritmalar
  • 🛠️ARAÇLAR
    • Aircrack-ng
    • Airgeddon
    • Arjun
    • BeEF
    • Bettercap
    • Docker
    • Gelişmiş Wireshark Kullanımı (Advanced Wireshark Usage)
    • Google Dorks
    • Hping3
    • John the Ripper
    • Metasploit Framework
    • Netcat
    • Nmap
    • OSINT Framework
    • PEASS-ng
    • Sublist3r
    • XSS Scanner
    • Wireshark
    • ZAP
    • HYDRA
  • 🖥️İŞLETİM SİSTEMLERİ
    • Linux101
    • MBR
  • 🔑KRİPTOLOJİ
    • Dijital Sertifika ve İmzalar
    • Sezar Şifrelemesi
    • Steganografi
    • Veri Şifreleme (Data Encryption)
  • 🔏Network
    • Domain Name Server (DNS)
    • Firewall Nedir? Nasıl Çalışır ?
    • Ortadaki Adam Saldırısı (Man In The Middle Attack)
    • OSI Modeli
    • Sanal Özel Ağlar (VPN)
    • World Wide Web (WWW)
  • 🔐PRIVILEGED
    • Docker Escape
  • 📨Protokoller
    • ARP
    • DHCP
    • FTP
    • HTTP/HTTPS
    • SSH
    • TCP/IP
    • UDP
    • Wİ-Fİ Güvenlik Protokolleri (WEP/WPA/WPA2/WPA3)
  • 💻SİBER TEHDİT İSTİHBARATI
    • Gelişmiş Siber Tehdit İstihbaratı Nedir?
  • 🔒WEB GÜVENLİĞİ
    • 403 ByPass
    • API Güvenliği (API Security)
    • Broken Access Control
    • Bulut Güvenliği (Cloud Security)
    • Command Injection
    • Cross Origin Resource Sharing
    • Cross Site Request Forgery (CSRF)
    • Cyber Kill Chain
    • DDoS Saldırıları
    • File Upload Zafiyeti Nedir?
    • HTTP Request Smuggling
    • Insecure Direct Object Reference (IDOR)
    • Incident Response
    • Local File Inclusion (LFI)
    • NoSQL Injection
    • Pentest 101
    • Race Condition
    • Server Side Request Forgery (SSRF)
    • Server Side Template Injection (SSTI)
    • Spring4Shell
    • Two Factor Authentication Bypass
    • XML External Entity Attack (XEE)
  • 🤖YAPAY ZEKA
    • ChatGPT for Hacking
    • Siber Güvenlik ve Yapay Zeka
    • Yapay Zeka ile Sahte Fotoğraf Tespiti
  • 🌐YAZILIM
    • Düzenli İfadeler (Regular Expressions)
    • Elasticsearch Nedir?
    • Front-end Teknolojileri
    • Golang'da Arayüzler (Interfaces)
    • Go'da Concurrency ve Uygulamaları
    • Güvenli Kodlama (Secure Coding)
    • Java Overloading vs Overriding
    • JSON Web Token (JWT)
    • Material-UI
    • NextJS Nedir?
    • ReactJS Kancalar (Hooks)
    • ReactJS Nedir?
    • Redux Toolkit
    • SOLID Yazılım Geliştirme Prensipleri
    • SQL 101
    • UI / UX Nedir?
    • Veri Taşıma Nedir? (Database Migration)
    • Versiyon Kontrol Sistemleri ve GIT
  • 🔷DİĞER
    • Bug Bounty (Hata Ödülü) Nedir?
    • Popüler Yazılımların Kurulumları
      • Ubuntu Server 24.04 LTS Kurulumu
      • Ubuntu için Güncel Docker Engine Kurlumu
    • Güvenlik Operasyonları Merkezi Nedir?
    • Honeypot (Bal Küpü)
    • IoT Güvenliği Nedir?
    • ShellShock Exploit
    • Yük Dengeleyici (Load Balancer) Nedir?
Powered by GitBook
On this page
  • 1. SQL
  • 1.1. Veritabanı Kurulumu
  • 1.2. Nedir?
  • 1.3 Neden Kullanılır?
  • 2. SQL'de Sorgu Yapısı
  • 3. SQL'de Temel İşlemler
  • 3.1. Tablo Oluşturma (CREATE TABLE)
  • 3.2. Seçme (SELECT)
  • 3.3. Ekleme (INSERT)
  • 3.4. Güncelleme (UPDATE)
  • 3.5. Silme (DELETE)
  • 4. Kaynakça

Was this helpful?

  1. YAZILIM

SQL 101

PreviousSOLID Yazılım Geliştirme PrensipleriNextUI / UX Nedir?

Last updated 5 months ago

Was this helpful?

1. SQL

Bu yazımda temel SQL anlatacağım. Tablo oluşturma, veri ekleme, veri çekme, veri güncelleme, veri silme gibi konulardan bahsedeceğim

1.1. Veritabanı Kurulumu

Kuruluma geçmeden önce bu kurduğumuz veritabanı nedir? Ondan bahsedelim Veritabanı, yapılandırılmış verilerin depolandığı ve yönetildiği bir sistemdir. Bilgiyi organize etmek, erişmek ve güncellemek için kullanılır. Veritabanları genellikle ilişkisel tablolar şeklinde düzenlenir ve SQL gibi sorgu dilleriyle etkileşime girilir.

SQL nedir ve ne işe yarar'a geçmeden önce, uygulamalı bir şekilde öğrenme adımlarımızı takip etmek için bir veritabanı oluşturalım. Bu eğitimde MYSQL Workbench kullanacağız. Elbette, PostgreSQL, SQL Server gibi başka veritabanı sistemleri de mevcut, ancak başlangıç için MYSQL'i tercih edeceğiz. Şimdi kuruluma geçelim.

1.1.1. MYSQL Workbench

İlk olarak indirin ardından sitesine girin ve aşağıdaki adımları uygulayarak indirin.

İlk olarak MYSQL Server indirin. Bu olmadan MYSQL Workbench kullanılamaz. Çünkü bağlanılacak server ortada yok. Kurulumu basit yukarıdaki siteden indirin.Sadece "Next" düğmesine tıklayarak ilerleyin. Son adımda, size aşağıdaki gibi bir soru sorulacaktır. Tavsiyem, indirmeyi tamamlamak için "COMPLETE" seçeneğini işaretlemenizdir.

Bunları yaptıktan sonra MYSQL Configurator penceresi gelecektir. Burada şimdilik bilmeniz gereken tek şey alttaki kısımda giriş yaparken kullanacağınız şifreyi belirtiniz.

Şimdi MYSQL Workbench kurulumuna bakalım.

Alt tarafta ise kendi işletim sisteminize göre seçin ve indirmeye başlayın.

İndirme işlemi tamamlandıktan sonra yapılacak işlemler oldukça basittir. Sadece "Next" düğmesine tıklayarak ilerleyin. Son adımda, size aşağıdaki gibi bir soru sorulacaktır. Tavsiyem, indirmeyi tamamlamak için "COMPLETE" seçeneğini işaretlemenizdir. Böylelikle her şeyi ile birlikte bilgisayarınıza inicektir.

1.1.2. Temel Kullanım

İndirip açıktan sonra alttaki gibi görüntü göreceksiniz. Eğer MYSQL Server kurulumunuzda bir sıkıntı var ise bağlanmayacaktır.

Şifreniz ile giriş yaptıktan sonra alttaki gibi bir pencere sizi karşılayacaktır.

Burada 1 ile yazılan kısım Database'lerin olduğu yer. 2 ile yazılan kısım ise SQL sorgularınızı yazdığınız kısım. 1 Yazan kısıma sağ tıklayıp Create Schema ya tıklayıp yeni database oluşturunuz.

Oluşturduğunuz database'i seçmek için USE yazıp sonra adını yazıyoruz. Artık veritabanı hangi database üzerinden işlem yapacağınızı biliyor. Ardından örnek olarak bir tablo oluşturma sorgusu bunun içine yazılabilir. Alt tarafta örneği bulunmaktadır.

Temel olarak kullanım bu kadar. Şimdi SQL sorgularına geçelim.

1.2. Nedir?

SQL (Structured Query Language), veritabanlarında veri depolamak, güncellemek ve sorgulamak için kullanılan bir programlama dilidir.

1.3 Neden Kullanılır?

Bu kısımda örnekler vererek açıklama yapacağım.

  • Bir internet sitesine girdiğinizde, üye olduğunuzda, giriş yaptığınızda veya bir sosyal medya sitesine girip bir gönderiyi beğendiğinizde, yaptığınız işlemlerin bir veritabanında saklanmasını genel olarak SQL ile gerçekleştiriyoruz.

  • Yaşadığımız bu yüzyılda, verilerin önemi giderek artmaktadır. Bu nedenle verinin doğru bir şekilde saklanması, doğru analiz edilmesi ve doğru bir şekilde kullanılması, yaptığınız projeler üzerinde büyük fayda sağlar.

Kısaca, hayatımızın her anında gittiğimiz yerler, telefondan girdiğimiz siteler, tıkladığımız linkler ve hatta bir videoyu kaç saniye izlediğimiz bile veritabanlarına SQL yardımıyla kaydediliyor. Peki, bu nasıl yapılır? Hadi bakalım.

2. SQL'de Sorgu Yapısı

Bu kısımda sorgulara girmeden önce ileride göreceğimiz temel işlemler hakında basit bilgi verip yapılarından bahstedeceğim.

SQL ile yapabileceğiniz temel işlemler aşağıdaki gibidir.

  • SELECT: Veritabanından veri çekmeyi sağlar.

SELECT sutun-1,sutun-2,...,sutun-n FROM tablo_adi;

Koşul ile birilikte kullanım.

SELECT sutun-1,sutun-2,...,sutun-n FROM tablo_adi WHERE kosul;
  • INSERT: Veritabanına veri eklemeyi sağlar.

INSERT tablo_adi (sutun-1,sutun-2,...,sutun-n) VALUES (deger-1,deger-2,...,deger-n);
  • UPDATE: Veritabanında hazır olan veriyi güncellemeyi sağlar.

UPDATE tablo_adi SET sutun-1 = deger-1, sutun-2 = deger-2, ... sutun-n = deger-n WHERE kosul;
  • DELETE: Veritabanında hazır olan veriyi silmeyi sağlar.

DELETE FROM tablo_adi WHERE kosul;

Yukarıdaki sorgu yapılarında farkındaysanız WHERE kullanılıyor. Bunun ile istediğimiz belirli bir veri üzerinde seçme,güncelleme ve silme işlemi yapılabilir. Daha detaylı açıklamayı alt tarafta bulabilirsiniz.

3. SQL'de Temel İşlemler

3.1. Tablo Oluşturma (CREATE TABLE)

Tablo oluşturmadan önce, tablonun ne olduğunu ve neden tablo oluşturduğumuzu anlamak önemlidir. Günümüzde, veritabanları verileri tablo dediğimiz yapılar içinde saklar. İşte aşağıda, bir veritabanında tutulan bir tabloyu temsil eden örnek bir yapı:

id
name
surname

1

Çetin Boran

Mesüm

2

Murat Kaan

Mesüm

Tabloların içinde saklanacak veri türlerini biz belirleriz ve yalnızca belirlediğimiz türde veri kabul ederiz. Tablo oluştururken ilk olarak CREATE TABLE ifadesiyle başlarız ve ardından tablonun adını belirtiriz. Yukarıda belirttiğimiz sütun adını ve alabileceği veri türünü de isimden sonra yazılan () içinde yazarız. İşte bir örnek yapısı:

    CREATE TABLE tablo_ismi(
        sütun1 veritürü özellikler,
        sütun2 veritürü özellikler,
        sütun3 veritürü özellikler,
    )

Bu kısımda sütun başlıkları belirtilir. Veri türü ise bu sütunda hangi tür veri saklanacağını belirtir. Veritabanına göre bu veri türleri değişiklik gösterebilir. İşte alt kısımda örnek veri türü:

  • VARCHAR (Karakter Dizisi): Değişken uzunluktaki metinleri saklamak için kullanılır. Belirli bir maksimum uzunluğa sahip olabilir.

  • CHAR (Karakter): Sabit uzunluktaki metinleri saklamak için kullanılır. Belirli bir uzunluğa sahip bir karakter dizisi olarak tanımlanır. Karakter dizisi bu uzunlukta değilse, boşluklarla doldurulur.

  • INT (Tamsayı): Tam sayı değerlerini saklamak için kullanılır. İnteger olarak adlandırılır.

  • FLOAT (Kayan Noktalı Sayı): Ondalık sayıları saklamak için kullanılır. Kesirli sayıları temsil eder.

  • DATE (Tarih): Yıl, ay ve gün bilgisini saklamak için kullanılır. Yıl, ay ve gün değerlerini içerir.

  • DATETIME (Tarih ve Saat): Yıl, ay, gün, saat, dakika ve saniye bilgisini saklamak için kullanılır. Tarih ve saat bilgisini içerir.

Özellikler kısmı, o sütunların durumlarını tutar. Örneğin, bir sütuna veri girerken boş olup olmaması, varsayılan değeri ne olacağı, birincil anahtar mı yoksa yabancı anahtar mı olduğu gibi durumları belirtir. Veritabanlarına göre değişiklik gösterebilirler.

  • NOT NULL: Bu özellik, bir sütunun boş olamayacağını belirtir. Yani, bu sütuna her zaman bir değer verilmelidir.

  • DEFAULT: Bu özellik, bir sütuna varsayılan bir değer atar. Eğer sütuna değer verilmezse, bu varsayılan değer kullanılır.

  • PRIMARY KEY: Bu özellik, bir sütunu birincil anahtar olarak belirtir. Her bir satırın benzersiz bir şekilde tanımlanması için kullanılır. Genellikle PRIMARY KEY otomatik atanır. Veri oluşturulurken atanmaz.

Şimdi aşağıda örnek olarak bir tablo oluşturalım. Bu senaryoda bir sitedeki kullanıcı bilgilerini tutan bir tablo oluşturalım

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    password VARCHAR(50) NOT NULL,
    birthDate DATE,
    registrationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3.2. Seçme (SELECT)

SELECT: Bu sorgu ile tabloya veri çekme işlemini yapacağız.

SELECT sütun-1,sütün-2,...,sütün-n FROM tablo_ismi;

Bu sorguda, SELECT anahtar kelimesiyle belirli sütunları seçtiğimizi belirtiyoruz. Ardından, virgülle ayrılmış bir şekilde istediğimiz sütun isimlerini yazıyoruz. Burada * koyarsak sütünları belirlediğimiz kısımda bütün sütünları alacaktır. Son olarak, veriyi çekeceğimiz tablonun adını belirtiyoruz. ";" sembolü sorgunun sonlandığını belirtir.

Belirli bir sütunun belirli bir değere sahip olanları döndürmek istiyorsak, SQL'de WHERE ifadesini kullanırız. Öncelikle normal bir sorguyu yazıp, ardından WHERE ifadesini kullanarak belirli bir sütunun belirli bir değere eşit olduğu koşulunu ekleriz. Bu koşulu belirtmek için de sütun adını ve istenen değeri kullanırız. Örneğin, WHERE sütun_adı = 'değer' şeklinde bir ifade kullanarak belirli bir sütunun belirli bir değere eşit olan verileri getirebiliriz.

Aşağıdaki örnekte, users tablosundan id, username ve email sütunlarını çekiyorum. Ancak sadece username sütunu "2023an" olan verileri alıyorum.

SELECT id, username, email FROM users WHERE username = '2023an';

Özetle WHERE kullanarak koşullu sorgular oluşturabiliyoruz.

Eğer verilerin belli sıralama ile gelmesini istiyorsak ORDER BY kullanacağız. Bununla ilgili sadece örnek vermek yeterli olucaktır.

Aşağıdaki örnekte, users tablosundan * ile bütün sütunları çekiyorum. Username sütununa göre alfabetik sıralama yapıyorum.

SELECT * password FROM users ORDER BY username;

Son olarak gruplama görelim. Bir kullanıcılar tablosu düşünün. İçerisinde isim, soyisim ve il olarak 3 tane sütun olsun. Benim istediğim hangi ilden kaç tane kullanıcı var onu bulmak istiyorum. Bunun için bilmemiz gereken iki tane yapı var.

COUNT(*) kullanarak bir tabloda kaç veri olduğunu öğrenebiliriz.

Aşağıda örnek olarak users tablosunda kaç kayıt var onu döndüren soruguyu görebilirsiniz.

SELECT COUNT(*) FROM users;

GROUP BY ile gruplamayı öğreneceğiz

Aşağıdaki örnekte, users tablosundan kullanıcı il'ini ve sayısını çekiyoruz ve bunları il'e göre grupluyoruz. Ek bilgi olarak burada AS anahtar kelimesi ile sütun ismini değiştirebiliyoruz.

SELECT il, COUNT(*) AS Toplam FROM users GROUP BY il;

Aşağıda bu sorgunun örnek bir çıktısını görebilirsiniz.

username
il
Toplam

user1

Istanbul

3

user2

Ankara

2

user3

Istanbul

1

user4

Izmir

2

3.3. Ekleme (INSERT)

INSERT: Bu sorgu ile tabloya veri ekleme işlemini yaparız.

Aşağıdaki örnekte, tablo_adı yazdıktan sonra ilk parantez içinde hangi sütunlara veri yükleyeceğimizi belirliyoruz. Sonrasında VALUES kısmında ise bu sütunlarla ilişkilendirilmiş değerleri belirtiyoruz. Özetle, sütun1 = değer1, sütun2 = değer2 gibi bir eşleştirme yapıyoruz.

INSERT INTO tablo_adı (sütun1, sütun2, sütun3, ...) VALUES (değer1, değer2, değer3, ...);

Aşağıdaki örnekte, users tablosuna username alanı için "2023an" ve password alanı için "cokgizlisifre123" değerlerini içeren bir veri ekledim.

INSERT INTO users (username, password) VALUES ('2023an', 'cokgizlisifre123');

3.4. Güncelleme (UPDATE)

UPDATE:Bu sorgu ile tabloda hazır olan veriyi güncelleriz.

Aşağıdaki örnekte, UPDATE işlemiyle birlikte SET anahtar kelimesini kullanarak hangi sütunların güncelleneceğini belirtiriz ve her bir sütunun yeni değerini atarız. Bu sorgu genellikle WHERE ile birlikte kullanılır, bu sayede belirli koşullara uyan satırlar güncellenir.

UPDATE tablo_adi SET sutun-1 = deger-1, sutun-2 = deger-2, ... sutun-n = deger-n WHERE kosul;

Aşağıdaki örnekte users tablosunda id değeri 2 olan kullanıcının username'ini Kaan olarak değiştiriyorum.

UPDATE users SET username='Kaan' WHERE id = 2;

3.5. Silme (DELETE)

DELETE: Bu sorgu ile tabloda olan bir veriyi silebiliyoruz.

Aşağıdaki örnekte, basit olarak bir silme işlemi yapılmıştır. Tablo içerisinden belli kayıtları sileceğimiz için WHERE ile kullanılır.

DELETE FROM tablo_adi WHERE kosul;

Bu örnekte ise users tablosu içerisinde id değeri 2 olan kullanıcıyı tablodan sildik.

DELETE FROM users WHERE id = 2;

4. Kaynakça

SQL İçin Kaynakça

🌐
W3Schools
Free Code Camp
MYSQL Server
MYSQL Workbench
cetinboran - OverviewGitHub
Bu yazı Çetin Boran Mesüm tarafından hazırlanmıştır.
Logo
sql-101
sql-101
sql-101
sql-101
sql-101
sql-101
sql-101
sql-101
sql-101