T-SQL Komutları

T-SQL Komutları


View

Bir veya birden fazla tablodan select sorgusu çekerek oluşan verisetinin bir tablo gibi kullanılmasıdır.

Kopyala
#View Oluşturma
CREATE VIEW ilacialanhasta
AS
SELECT H.Ad, D.Ad AS DoktorAd, D.Soyad, R.ReçeteNo, Rİ.İlaçİsim, Birim_fiyatı FROM Hasta H INNER JOIN Reçete R 
ON H.HastaTCNo= R.HastaTCNo INNER JOIN Doktor D ON R.DoktorTCNo=D.DoktorTCNo
INNER JOIN Reçeteİlaç Rİ ON R.ReçeteNo=Rİ.ReçeteNo INNER JOIN İlaç İ ON İ.İlaçİsim=Rİ.İlaçİsim
Kopyala
#View Düzenleme
ALTER VIEW ilacialanhasta
AS
SELECT H.Ad, D.Ad AS DoktorAd, D.Soyad AS DoktorSoyad, R.ReçeteNo, Rİ.İlaçİsim, Birim_fiyatı FROM Hasta H INNER JOIN Reçete R 
ON H.HastaTCNo= R.HastaTCNo INNER JOIN Doktor D ON R.DoktorTCNo=D.DoktorTCNo
INNER JOIN Reçeteİlaç Rİ ON R.ReçeteNo=Rİ.ReçeteNo INNER JOIN İlaç İ ON İ.İlaçİsim=Rİ.İlaçİsim
Kopyala
#View Kaldırma
DROP VIEW ilacialanhasta
Kopyala
#View Çağırma
SELECT * FROM ilacialanhasta

Trigger

Bir işlem gerçekleştiğinde başka bir işlemin otomatik olarak gerçekleşmesini sağlar. Trigger’lar elle çağrılmaz, bir olay tetiklendiğinde kendiliğinden çalışır. İnserted tablosu insert ve update sonrası değişen kayıtların yeni değerini tutar. Deleted tablosu silinen kaydı ya da değiştirilen kaydın eski değerini tutar. Log tutma amacı ile kullanılır.

Kopyala
CREATE TABLE DoktorEklemeLog (
    LogID INT IDENTITY PRIMARY KEY,
    TCNo CHAR(11),
    AdSoyad NVARCHAR(200),
    Uzmanlık NVARCHAR(200),
    EklemeTarihi DATETIME DEFAULT GETDATE()
);

CREATE TABLE UzmanlikDegisimLog (
    LogID INT IDENTITY PRIMARY KEY,
    TCNo CHAR(11),
    EskiUzmanlik NVARCHAR(100),
    YeniUzmanlik NVARCHAR(100),
    DegisimTarihi DATETIME DEFAULT GETDATE()
);

CREATE TABLE SilinenDoktorlar (
    TCNo CHAR(11),
    Ad NVARCHAR(50),
    Soyad NVARCHAR(50),
    Uzmanlık NVARCHAR(100),
    SilinmeTarihi DATETIME DEFAULT GETDATE()
);
Kopyala
#AFTER INSERT Kullanımı
CREATE TRIGGER trg_Doktor_Insert
ON Doktor
AFTER INSERT
AS
BEGIN
    INSERT INTO DoktorEklemeLog (TCNo, AdSoyad, Uzmanlık)
    SELECT DoktorTCNo, Ad + ' ' + Soyad, Uzmanlık
    FROM INSERTED;
END
Kopyala
#AFTER UPDATE Kullanımı
CREATE TRIGGER trg_Doktor_UzmanlikUpdate
ON Doktor
AFTER UPDATE
AS
BEGIN
    INSERT INTO UzmanlikDegisimLog (TCNo, EskiUzmanlik, YeniUzmanlik)
    SELECT i.DoktorTCNo, d.Uzmanlık, i.Uzmanlık
    FROM INSERTED i
    INNER JOIN DELETED d ON i.DoktorTCNo = d.DoktorTCNo
    WHERE i.Uzmanlık <> d.Uzmanlık;
END
Kopyala
#AFTER DELETE Kullanımı
CREATE TRIGGER trg_Doktor_Delete
ON Doktor
AFTER DELETE
AS
BEGIN
    INSERT INTO SilinenDoktorlar (TCNo, Ad, Soyad, Uzmanlık)
    SELECT DoktorTCNo, Ad, Soyad, Uzmanlık
    FROM DELETED;
END
Kopyala
#Trigger Düzenleme
ALTER VIEW Trigger_Adı
...            
Kopyala
#Trigger Kaldırma
DROP VIEW Trigger_Adı

Stored Procedure

T-SQL kodlarının derlenerek hafızada tutulmuş halidir. İçinde parametre tanımlanır viewde tanımlanamaz. Normal sorgulardan farkı derlenmiş olarak hazır olarak beklediği için daha hızlı çalışmasıdır.

Kopyala
#SP Oluşturma
CREATE PROCEDURE DoktorEkle
	@DoktorTCNo NVARCHAR(100), 
	@Ad NVARCHAR(100), 
	@Soyad NVARCHAR(100), 
	@Uzmanlık NVARCHAR(100)
AS
BEGIN
	INSERT INTO Doktor (DoktorTCNo,Ad,Soyad,Uzmanlık) VALUES (@DoktorTCNo,@Ad,@Soyad,@Uzmanlık);
END
Kopyala
#SP Düzenleme
ALTER PROCEDURE DoktorEkle
...            
Kopyala
#SP Kaldırma
DROP PROCEDURE DoktorEkle
Kopyala
#SP Çağırma
EXEC DoktorEkle @DoktorTCNo='213151323',@Ad='Ersun',@Soyad='Yamal',@Uzmanlık='Hücum'