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çİsimKopyala
#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çİsimKopyala
#View Kaldırma
DROP VIEW ilacialanhastaKopyala
#View Çağırma
SELECT * FROM ilacialanhastaTrigger
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;
ENDKopyala
#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;
ENDKopyala
#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;
ENDKopyala
#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);
ENDKopyala
#SP Düzenleme
ALTER PROCEDURE DoktorEkle
...
Kopyala
#SP Kaldırma
DROP PROCEDURE DoktorEkleKopyala
#SP Çağırma
EXEC DoktorEkle @DoktorTCNo='213151323',@Ad='Ersun',@Soyad='Yamal',@Uzmanlık='Hücum'