logo
eng-flag

SQL Notları ve İpuçları

İçindekiler

  1. SQL Temelleri
  2. Veri Tanımlama Dili (DDL)
  3. Veri İşleme Dili (DML)
  4. Veri Sorgulama Dili (DQL)
  5. Birleştirmeler
  6. Toplama Fonksiyonları
  7. Alt Sorgular
  8. İndeksler
  9. Görünümler
  10. Saklı Yordamlar
  11. Tetikleyiciler
  12. İşlemler
  13. Veri Kontrol Dili (DCL)
  14. Performans Optimizasyonu
  15. En İyi Uygulamalar

SQL Temelleri

SQL (Yapılandırılmış Sorgu Dili), veritabanlarında veri depolamak, işlemek ve almak için standart bir dildir.

SQL Veri Tipleri

Yaygın SQL veri tipleri şunları içerir:

  • INT, BIGINT, SMALLINT, TINYINT
  • DECIMAL, NUMERIC
  • CHAR, VARCHAR, TEXT
  • DATE, TIME, DATETIME, TIMESTAMP
  • BOOLEAN

SQL Yorumları

-- Bu tek satırlık bir yorumdur

/*
Bu çok
satırlı bir
yorumdur
*/

Veri Tanımlama Dili (DDL)

DDL, veritabanı nesnelerinin yapısını tanımlamak ve değiştirmek için kullanılır.

CREATE TABLE

CREATE TABLE calısanlar (
    calısan_id INT PRIMARY KEY,
    ad VARCHAR(50),
    soyad VARCHAR(50),
    ise_baslama_tarihi DATE,
    maas DECIMAL(10, 2)
);

ALTER TABLE

-- Sütun ekle
ALTER TABLE calısanlar ADD email VARCHAR(100);

-- Sütun değiştir
ALTER TABLE calısanlar ALTER COLUMN email VARCHAR(150);

-- Sütun sil
ALTER TABLE calısanlar DROP COLUMN email;

DROP TABLE

DROP TABLE calısanlar;

Veri İşleme Dili (DML)

DML, veritabanındaki verileri işlemek için kullanılır.

INSERT

INSERT INTO calısanlar (calısan_id, ad, soyad, ise_baslama_tarihi, maas)
VALUES (1, 'Ahmet', 'Yılmaz', '2023-01-15', 50000.00);

UPDATE

UPDATE calısanlar
SET maas = 55000.00
WHERE calısan_id = 1;

DELETE

DELETE FROM calısanlar
WHERE calısan_id = 1;

Veri Sorgulama Dili (DQL)

DQL, veritabanından veri almak için kullanılır.

SELECT

SELECT * FROM calısanlar;

SELECT ad, soyad, maas
FROM calısanlar
WHERE maas > 50000
ORDER BY soyad ASC;

WHERE Cümlesi

SELECT * FROM calısanlar
WHERE ise_baslama_tarihi >= '2023-01-01' AND maas < 60000;

LIKE Operatörü

SELECT * FROM calısanlar
WHERE soyad LIKE 'Y%';

IN Operatörü

SELECT * FROM calısanlar
WHERE departman_id IN (1, 2, 3);

BETWEEN Operatörü

SELECT * FROM calısanlar
WHERE maas BETWEEN 40000 AND 60000;

Birleştirmeler

Birleştirmeler, iki veya daha fazla tablonun ilgili sütunlarına dayalı olarak satırları birleştirmek için kullanılır.

INNER JOIN

SELECT c.ad, c.soyad, d.departman_adı
FROM calısanlar c
INNER JOIN departmanlar d ON c.departman_id = d.departman_id;

LEFT JOIN

SELECT c.ad, c.soyad, d.departman_adı
FROM calısanlar c
LEFT JOIN departmanlar d ON c.departman_id = d.departman_id;

RIGHT JOIN

SELECT c.ad, c.soyad, d.departman_adı
FROM calısanlar c
RIGHT JOIN departmanlar d ON c.departman_id = d.departman_id;

FULL OUTER JOIN

SELECT c.ad, c.soyad, d.departman_adı
FROM calısanlar c
FULL OUTER JOIN departmanlar d ON c.departman_id = d.departman_id;

Toplama Fonksiyonları

Toplama fonksiyonları, bir dizi değer üzerinde hesaplamalar yapar ve tek bir sonuç döndürür.

Yaygın Toplama Fonksiyonları

SELECT 
    COUNT(*) as toplam_calısan,
    AVG(maas) as ortalama_maas,
    MAX(maas) as en_yuksek_maas,
    MIN(maas) as en_dusuk_maas,
    SUM(maas) as toplam_maas
FROM calısanlar;

GROUP BY

SELECT departman_id, AVG(maas) as ort_maas
FROM calısanlar
GROUP BY departman_id;

HAVING

SELECT departman_id, AVG(maas) as ort_maas
FROM calısanlar
GROUP BY departman_id
HAVING AVG(maas) > 50000;

Alt Sorgular

Bir alt sorgu, başka bir sorgunun içine yerleştirilmiş bir sorgudur.

WHERE Cümlesinde Alt Sorgu

SELECT ad, soyad
FROM calısanlar
WHERE departman_id IN (
    SELECT departman_id
    FROM departmanlar
    WHERE departman_adı = 'IT'
);

SELECT'te Alt Sorgu

SELECT 
    ad, 
    soyad,
    maas,
    (SELECT AVG(maas) FROM calısanlar) as ort_maas
FROM calısanlar;

İndeksler

İndeksler, veri alma işlemlerini hızlandırmak için kullanılır.

İndeks Oluştur

CREATE INDEX idx_soyad ON calısanlar (soyad);

İndeks Sil

DROP INDEX idx_soyad ON calısanlar;

Görünümler

Bir görünüm, bir SELECT ifadesinin sonucuna dayalı sanal bir tablodur.

Görünüm Oluştur

CREATE VIEW yuksek_maasli_calisanlar AS
SELECT ad, soyad, maas
FROM calısanlar
WHERE maas > 60000;

Görünüm Sorgula

SELECT * FROM yuksek_maasli_calisanlar;

Saklı Yordamlar

Saklı yordamlar, kaydedilebilen ve yeniden kullanılabilen hazırlanmış SQL ifadeleridir.

Saklı Yordam Oluştur

CREATE PROCEDURE DepartmanaGoreCalisanlarıAl
    @DepartmanId INT
AS
BEGIN
    SELECT * FROM calısanlar
    WHERE departman_id = @DepartmanId;
END;

Saklı Yordam Çalıştır

EXEC DepartmanaGoreCalisanlarıAl @DepartmanId = 1;

Tetikleyiciler

Tetikleyiciler, belirli olaylar gerçekleştiğinde otomatik olarak çalışan özel saklı yordamlardır.

Tetikleyici Oluştur

CREATE TRIGGER trg_DegisiklikTarihiniGuncelle
ON calısanlar
AFTER UPDATE
AS
BEGIN
    UPDATE calısanlar
    SET degisiklik_tarihi = GETDATE()
    WHERE calısan_id IN (SELECT calısan_id FROM inserted);
END;

İşlemler

İşlemler, bir dizi SQL işleminin tek bir iş birimi olarak gerçekleştirilmesini sağlar.

BEGIN TRANSACTION;

UPDATE hesaplar SET bakiye = bakiye - 100 WHERE hesap_id = 1;
UPDATE hesaplar SET bakiye = bakiye + 100 WHERE hesap_id = 2;

IF @@ERROR = 0
    COMMIT TRANSACTION;
ELSE
    ROLLBACK TRANSACTION;

Veri Kontrol Dili (DCL)

DCL, veritabanındaki verilere erişimi kontrol etmek için kullanılır.

GRANT

GRANT SELECT, INSERT ON calısanlar TO kullanici1;

REVOKE

REVOKE INSERT ON calısanlar FROM kullanici1;

Performans Optimizasyonu

EXPLAIN Kullanımı

EXPLAIN SELECT * FROM calısanlar WHERE soyad = 'Yılmaz';

Sorguları Optimize Etme

  • Uygun indeksler kullanın
  • Mümkün olduğunca SELECT * kullanmaktan kaçının
  • Uygun olduğunda alt sorgular yerine JOIN'leri kullanın
  • Döndürülen satır sayısını sınırlamak için LIMIT kullanın

En İyi Uygulamalar

  1. Anlamlı tablo ve sütun adları kullanın
  2. Her zaman uygun veri tiplerini kullanın
  3. Veritabanı tasarımınızı normalleştirin
  4. İndeksleri akıllıca kullanın
  5. Okunabilir ve sürdürülebilir SQL kodu yazın
  6. SQL enjeksiyonunu önlemek için sorgularda parametreler kullanın
  7. Veritabanınızı düzenli olarak yedekleyin
  8. Veritabanınızı ve SQL sunucunuzu güncel tutun
  9. Sorgu performansını izleyin ve optimize edin
  10. Veri bütünlüğü için işlemler kullanın

2024 © Tüm hakları saklıdır - buraxta.com