-- Banka işlemi senaryosu
-- Furkan : 1000 tl
-- Barış : 1000 tl
-- Senaryoda Barış 100tl'sini Furkan'a gönderiyor.
-- İşlemler
-- Barış'ın hesabından -100tl düşülür.
-- UPDATE Hesaplar SET Bakiye -= 100 where KullaniciAdi = Baris
-- Elektrik kesildi - hard disk yandı - sistemsel arıza oldu.
-- Furkan'ın hesabına +100tl eklenir.
--UPDATE Hesaplar SET Bakiye += 100 where KullaniciAdi = Furkan
-- Bankamızı oluşturalım.
Create Database BatanBank
-- Veritabanını kullanalım
USE BatanBank
-- Tablomuzu oluşturalım
CREATE TABLE Musteriler
(
MusteriID int primary key identity(1,1) not null,
MusteriAdi nvarchar(150) not null,
Bakiyesi money not null
)
-- Müşterileri ekleyelim.
INSERT INTO Musteriler(MusteriAdi, Bakiyesi) values ('Barış', 1000)
INSERT INTO Musteriler(MusteriAdi, Bakiyesi) values ('Furkan', 1000)
-- Kontrol
SELECT * FROM Musteriler
-- Transcaction işlemi (MUTLAKA TRY-CATCH bloğu ile kullanılır)
BEGIN TRY
BEGIN TRANSACTION-- hareket bilgisi başlatılır.
UPDATE Musteriler SET Bakiyesi -=1000 where MusteriID = 1
SELECT 10/0 -- işlem hatası (donanımsal, elektrik kesintisi ...)
UPDATE Musteriler SET Bakiyesi +=1000 where MusteriID = 2
COMMIT TRANSACTION -- hareket bilgisi hatasız bir şekilde onaylanır.
END TRY
BEGIN CATCH
print 'Transcation işlemi hatalı!'
ROLLBACK TRANSACTION -- hareket bilgisi hataya düşmüsse, bu işlem en başa sarılır.
END CATCH
Sergen Okan - ASP.NET, C#, T-SQL, MVC, ENTITY FRAMEWORK,SEO Kaynak Paylaşımı
Sergen Okan, ASP.NET, C#, T-SQL, MVC, ENTITY FRAMEWORK,SEO
22 Eylül 2014 Pazartesi
15 Eylül 2014 Pazartesi
TRIGGER YAPISI
-- DML Triggers => Select, Insert, Update, Delete gibi yapılarla kullanılır.
-- DDL Triggers => Create, Alter, Drop gibi yapılarla kullanılır.
USE Northwind
--1) DML Triggerlar
-- Kargo tablosuna ekleme yapıldıkdan sonra o anki varolan tüm değerler otomatik olarak ekrana yazdırılsın.
CREATE TRIGGER Tetikci
ON Shippers
AFTER Insert
AS
SELECT * FROM Shippers
-- TEST
Insert INTO Shippers
(CompanyName, Phone)
Values
('Sürat Kargo', '555 66 99')
-- Disable Etme(Deaktif etme)
Disable trigger Tetikci on Shippers
-- Komple kaldırma(silme)
Drop trigger Tetikci
-- Categories tablosunda bir güncelleme yapıldığı zaman, güncelleme başarıyla tamamlandı, uyarısını ekrana verdiren trigger tasarlayınız.
CREATE TRIGGER KategoriMesaji
ON Categories
AFTER UPDATE
AS
print 'Güncelleme başarıyla tamamlandı!'
UPDATE Categories
SET CategoryName = 'Sekerpare'
Where CategoryID = 1
-- Kategoriler tablosuna eklenen son kaydın detaylarını gösteren bir trigger tasarlayınız.
CREATE TRIGGER TrigineBandim
ON Categories
AFTER INSERT
AS
Declare @sonId int
SELECT @sonId = CategoryId FROM Inserted
SELECT * FROM Categories where CategoryID = @sonId
-- Test
INSERT INTO Categories
(CategoryName, Description)
Values
('Sekerpare', 'Ahhh, olaydı da yeseydik :(')
-- DDL Triggers => Create, Alter, Drop gibi yapılarla kullanılır.
USE Northwind
--1) DML Triggerlar
-- Kargo tablosuna ekleme yapıldıkdan sonra o anki varolan tüm değerler otomatik olarak ekrana yazdırılsın.
CREATE TRIGGER Tetikci
ON Shippers
AFTER Insert
AS
SELECT * FROM Shippers
-- TEST
Insert INTO Shippers
(CompanyName, Phone)
Values
('Sürat Kargo', '555 66 99')
-- Disable Etme(Deaktif etme)
Disable trigger Tetikci on Shippers
-- Komple kaldırma(silme)
Drop trigger Tetikci
-- Categories tablosunda bir güncelleme yapıldığı zaman, güncelleme başarıyla tamamlandı, uyarısını ekrana verdiren trigger tasarlayınız.
CREATE TRIGGER KategoriMesaji
ON Categories
AFTER UPDATE
AS
print 'Güncelleme başarıyla tamamlandı!'
UPDATE Categories
SET CategoryName = 'Sekerpare'
Where CategoryID = 1
-- Kategoriler tablosuna eklenen son kaydın detaylarını gösteren bir trigger tasarlayınız.
CREATE TRIGGER TrigineBandim
ON Categories
AFTER INSERT
AS
Declare @sonId int
SELECT @sonId = CategoryId FROM Inserted
SELECT * FROM Categories where CategoryID = @sonId
-- Test
INSERT INTO Categories
(CategoryName, Description)
Values
('Sekerpare', 'Ahhh, olaydı da yeseydik :(')
11 Eylül 2014 Perşembe
IF KOŞUL YAPISI
-- Server üzerinde 'TestDB' adı altında bir database varsa bir database oluşturma, yoksa TestDB adı altında bir database oluştur.
IF NOT EXISTS (SELECT NAME FROM sys.databases where Name = 'TestDB')
BEGIN
CREATE DATABASE TestDB
print 'Veritabanı başarıyla oluşturuldu'
END
ELSE
BEGIN
print 'Zaten böyle bir veritabanı var.'
END
-- Shippers tablosu içerisinde 'Yurtiçi Kargo' diye bir şirket varsa o şirketin telefonu numarasını '212 255 55 15' olarak güncelleyin. Yoksa kaydı 'Yurtiçi Kargo' ve telefonu '212 255 55 15' olarak ekleyiniz.
IF EXISTS (SELECT CompanyName FROM Shippers where CompanyName = 'Yurtiçi Kargo')
BEGIN
UPDATE Shippers
SET Phone = '212 255 55 15'
WHERE CompanyName = 'Yurtiçi Kargo'
END
ELSE
BEGIN
INSERT INTO Shippers
(CompanyName, Phone)
Values
('Yurtiçi Kargo','212 255 55 15')
END
-- Bir store prosedür tasarlayınız. Bu prosedür dışardan kategori adı ve açıklaması alsın. Eğer böyle bir kategori yoksa eklesin, varsa bu kategori zaten var uyarısını kullancıya iletsin.
CREATE PROC AdiYok
(
@kategoriAdi nvarchar(20),
@aciklama nvarchar(30)
)
AS
IF NOT EXISTS (SELECT CategoryName FROM Categories where CategoryName = @kategoriAdi)
BEGIN
Insert Into Categories
(CategoryName, Description)
Values
(
@kategoriAdi, @aciklama
)
END
ELSE
BEGIN
print 'Böyle bir kategori zaten kayıtlarda mevcut.'
END
-- Test
EXEC AdiYok 'Sütlü tatlılar', 'Fazla yeme şeker yapar'
IF NOT EXISTS (SELECT NAME FROM sys.databases where Name = 'TestDB')
BEGIN
CREATE DATABASE TestDB
print 'Veritabanı başarıyla oluşturuldu'
END
ELSE
BEGIN
print 'Zaten böyle bir veritabanı var.'
END
-- Shippers tablosu içerisinde 'Yurtiçi Kargo' diye bir şirket varsa o şirketin telefonu numarasını '212 255 55 15' olarak güncelleyin. Yoksa kaydı 'Yurtiçi Kargo' ve telefonu '212 255 55 15' olarak ekleyiniz.
IF EXISTS (SELECT CompanyName FROM Shippers where CompanyName = 'Yurtiçi Kargo')
BEGIN
UPDATE Shippers
SET Phone = '212 255 55 15'
WHERE CompanyName = 'Yurtiçi Kargo'
END
ELSE
BEGIN
INSERT INTO Shippers
(CompanyName, Phone)
Values
('Yurtiçi Kargo','212 255 55 15')
END
-- Bir store prosedür tasarlayınız. Bu prosedür dışardan kategori adı ve açıklaması alsın. Eğer böyle bir kategori yoksa eklesin, varsa bu kategori zaten var uyarısını kullancıya iletsin.
CREATE PROC AdiYok
(
@kategoriAdi nvarchar(20),
@aciklama nvarchar(30)
)
AS
IF NOT EXISTS (SELECT CategoryName FROM Categories where CategoryName = @kategoriAdi)
BEGIN
Insert Into Categories
(CategoryName, Description)
Values
(
@kategoriAdi, @aciklama
)
END
ELSE
BEGIN
print 'Böyle bir kategori zaten kayıtlarda mevcut.'
END
-- Test
EXEC AdiYok 'Sütlü tatlılar', 'Fazla yeme şeker yapar'
8 Eylül 2014 Pazartesi
Stored Procedure Örnekleri
-- Dışardan girilen kargo firması tarafından taşınmış ve yine dışardan girilen kargo ödemesi değer aralığındaki siparişleri listeleyen bir prosedür tasarlayınız.
CREATE PROC SiparisGetir
(
@kargoAdi nvarchar(20),
@minimumFiyat money,
@maximumFiyat money
)
AS
SELECT OrderID, OrderDate, Freight FROM Orders o
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE CompanyName = @kargoAdi
AND Freight between @minimumFiyat and @maximumFiyat
EXEC SiparisGetir 'Speedy Express', 10, 50
-- Dışardan girilen karakterleri içerisinde barındıran müşteri adına sahip müşterilerce verilmiş siparişleri listeleyen bir prosedür yazınız..
CREATE PROC MusteriSiparisleri
(
@parametre nvarchar(20)
)
AS
SELECT OrderID, OrderDate, CompanyName FROM Orders o
JOIN Customers c
ON
c.CustomerID = o.CustomerID
WHERE c.CompanyName like @parametre
EXEC MusteriSiparisleri '%eh%'
-- Stok miktari dışardan girilen iki değer arasında olan, ürün ücreti dışardan girilen iki değer arasında olan, toptancı firma adı dışardan girilen harfi barındıran ürünlerin adlarını, fiyatlarını, toptancı şirket adlarını ve fiyatlarının KDV eklenmiş hallerini gösteren bir prosedür yazınız.
-- minimum stok
-- maximum stok
-- min ücret
-- max ücret
-- firma adı
CREATE PROC UrunleriGetir
(
@minimumstok smallint,
@maximumstok smallint,
@minucret money,
@maxucret money,
@firmaadi nvarchar(30)
)
AS
SELECT ProductName, UnitPrice, UnitsInStock, CompanyName, (UnitPrice * 1.18) AS 'KDV' FROM Products p
JOIN Suppliers s
ON
p.SupplierID = s.SupplierID
WHERE UnitsInStock between @minimumstok and @maximumstok
AND UnitPrice between @minucret and @maxucret
AND CompanyName like @firmaadi
Exec UrunleriGetir 10, 40, 40, 110, '%ltd%'
-- Dışardan girilen calisanID'si tarafından alınmış siparişleri listeleyiniz,ancak dışardan kaç adet CalisanID geldiği bilinmemektedir.
CREATE PROC CalisanaGoreSiparisleriGetir
(
@parametre nvarchar(max)
)
AS
-- string sorgu;
-- sorgu = SELECT OrderID, OrderDate, EmployeeID from Orders Where EmployeeID in ('+@parametre+') Order By EmployeeID
declare @sorgu nvarchar(max)
set @sorgu = ('SELECT OrderID, OrderDate, EmployeeID from Orders Where EmployeeID in ('+@parametre+') Order By EmployeeID')
Execute (@sorgu)
Exec CalisanaGoreSiparisleriGetir '1,5,7'
CREATE PROC SiparisGetir
(
@kargoAdi nvarchar(20),
@minimumFiyat money,
@maximumFiyat money
)
AS
SELECT OrderID, OrderDate, Freight FROM Orders o
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE CompanyName = @kargoAdi
AND Freight between @minimumFiyat and @maximumFiyat
EXEC SiparisGetir 'Speedy Express', 10, 50
-- Dışardan girilen karakterleri içerisinde barındıran müşteri adına sahip müşterilerce verilmiş siparişleri listeleyen bir prosedür yazınız..
CREATE PROC MusteriSiparisleri
(
@parametre nvarchar(20)
)
AS
SELECT OrderID, OrderDate, CompanyName FROM Orders o
JOIN Customers c
ON
c.CustomerID = o.CustomerID
WHERE c.CompanyName like @parametre
EXEC MusteriSiparisleri '%eh%'
-- Stok miktari dışardan girilen iki değer arasında olan, ürün ücreti dışardan girilen iki değer arasında olan, toptancı firma adı dışardan girilen harfi barındıran ürünlerin adlarını, fiyatlarını, toptancı şirket adlarını ve fiyatlarının KDV eklenmiş hallerini gösteren bir prosedür yazınız.
-- minimum stok
-- maximum stok
-- min ücret
-- max ücret
-- firma adı
CREATE PROC UrunleriGetir
(
@minimumstok smallint,
@maximumstok smallint,
@minucret money,
@maxucret money,
@firmaadi nvarchar(30)
)
AS
SELECT ProductName, UnitPrice, UnitsInStock, CompanyName, (UnitPrice * 1.18) AS 'KDV' FROM Products p
JOIN Suppliers s
ON
p.SupplierID = s.SupplierID
WHERE UnitsInStock between @minimumstok and @maximumstok
AND UnitPrice between @minucret and @maxucret
AND CompanyName like @firmaadi
Exec UrunleriGetir 10, 40, 40, 110, '%ltd%'
-- Dışardan girilen calisanID'si tarafından alınmış siparişleri listeleyiniz,ancak dışardan kaç adet CalisanID geldiği bilinmemektedir.
CREATE PROC CalisanaGoreSiparisleriGetir
(
@parametre nvarchar(max)
)
AS
-- string sorgu;
-- sorgu = SELECT OrderID, OrderDate, EmployeeID from Orders Where EmployeeID in ('+@parametre+') Order By EmployeeID
declare @sorgu nvarchar(max)
set @sorgu = ('SELECT OrderID, OrderDate, EmployeeID from Orders Where EmployeeID in ('+@parametre+') Order By EmployeeID')
Execute (@sorgu)
Exec CalisanaGoreSiparisleriGetir '1,5,7'
24 Ağustos 2014 Pazar
STORE PROCEDURE (SAKLI YORDAM)
-- INSERT, UPDATE, DELETE gibi işlemlerin daha güvenli ve hızlı bir şekilde yapılabilmesini sağlar. Bu işlemleri, view'de oluduğu gibi tekrar tekrar yazmasınız, sadece örneğin KargoEkle prosedürünü çalıştırıp, kargonuzu ekletebilirsiniz.
--KURAL : DIŞARDAN GİRİLEN HER NE VARSA, PARAMTERE OLARAK PROSEDÜRÜN İÇERİSİNDE YAZILIR.
-- Kargo ekleyen store procedure yazalım.
CREATE PROCEDURE KargoEkleyici
(
@ad nvarchar(30),
@tel nvarchar(20)
)
AS
INSERT INTO Shippers
(CompanyName, Phone)
Values
(@ad, @tel)
-- Test
--EXECUTE KargoEkleyici 'UPS Kargo', '222 55 15'
--EXEC KargoEkleyici 'UPS Kargo', '222 55 15'
KargoEkleyici 'UPS Kargo', '222 55 15'
-- Dışardan girilen değer kadar ürünlere zam yapan bir prosedür tasarlayınız.
CREATE PROC ZamYapici
(
@miktar money
)
AS
UPDATE Products
SET UnitPrice += @miktar
-- TEST
EXEC ZamYapici 10
-- Dışardan girilen kategori adına ait ürünleri listeleyen bir prosedür tasarlayın.
CREATE PROC KategoriyeGoreUrunler
(
@katAdi nvarchar(30)
)
AS
SELECT ProductName, UnitPrice, CategoryName FROM Products p
JOIN Categories c
ON p.CategoryID = c.CategoryID
WHERE CategoryName = @katAdi
-- TEST
EXEC KategoriyeGoreUrunler 'Beverages'
--KURAL : DIŞARDAN GİRİLEN HER NE VARSA, PARAMTERE OLARAK PROSEDÜRÜN İÇERİSİNDE YAZILIR.
-- Kargo ekleyen store procedure yazalım.
CREATE PROCEDURE KargoEkleyici
(
@ad nvarchar(30),
@tel nvarchar(20)
)
AS
INSERT INTO Shippers
(CompanyName, Phone)
Values
(@ad, @tel)
-- Test
--EXECUTE KargoEkleyici 'UPS Kargo', '222 55 15'
--EXEC KargoEkleyici 'UPS Kargo', '222 55 15'
KargoEkleyici 'UPS Kargo', '222 55 15'
-- Dışardan girilen değer kadar ürünlere zam yapan bir prosedür tasarlayınız.
CREATE PROC ZamYapici
(
@miktar money
)
AS
UPDATE Products
SET UnitPrice += @miktar
-- TEST
EXEC ZamYapici 10
-- Dışardan girilen kategori adına ait ürünleri listeleyen bir prosedür tasarlayın.
CREATE PROC KategoriyeGoreUrunler
(
@katAdi nvarchar(30)
)
AS
SELECT ProductName, UnitPrice, CategoryName FROM Products p
JOIN Categories c
ON p.CategoryID = c.CategoryID
WHERE CategoryName = @katAdi
-- TEST
EXEC KategoriyeGoreUrunler 'Beverages'
20 Ağustos 2014 Çarşamba
View Yapısı
CREATE TABLE Araclar
(
Id int primary key identity(1,1) not null,
Marka nvarchar(40) not null,
Plaka nvarchar(10) not null,
YapimYili datetime not null,
constraint YapimYili check (datediff(YEAR, YapimYili, getDate()) < 10), -- 10 yaşından büyük araçlar kayıt edilmez.
unique (Plaka) -- Aynı plakadan 2. kez girilemez.
)
-- Aynı plaka ile 2 adet kayıt denemesi
INSERT INTO Araclar
Values('Toyota', '34 ZA 2111', '01.01.2004')
-- 10 yaşından büyük araç kaydı denemesi
INSERT INTO Araclar
Values('Toyota', '06 ZA 2111', '01.01.2001')
-- ALTER YAPISI
-- CREATE ile oluşturulmuş objelerin özelliklerini değiştirmek için alter yapısı kullanılır.
ALTER TABLE Araclar
ALTER Column Marka nvarchar(50) not null
-- ÖDÜLLÜ : Tipi int olan MotorGucu kolonu ile adlandıracağınız, Araclar tablosuna bir adet kolon ekleyin. null olsun.
ALTER TABLE Araclar
Add MotorGucu int null
-- Motogucu kolonunu kaldırma işlemi
ALTER TABLE Araclar
Drop column MotorGucu
USE Northwind
-- Amerikalı müşterilerden alınmış olan siparişleri listeleyen bir sorgu tasarlayınız. (CustomerID, CompanyName, OrderID, OrderDate)
CREATE VIEW Amerikalilar
AS
SELECT c.CustomerID, CompanyName, OrderID, OrderDate FROM Orders o
JOIN Customers c
ON
c.CustomerID = o.CustomerID
WHERE c.Country = 'USA'
--TEST
SELECT * FROM Amerikalilar
SELECT CompanyName FROM Amerikalilar
-- Speedy Express ile taşınmış, Nancy'nin almış olduğu, Pazartei günleri DUMON ya da ALFKI ID'li müşteriler tarafından verilmiş olan siparişleri saklayan bir view oluşturunuz.
CREATE VIEW NaciyeninSiparisleri
AS
SELECT o.OrderID, o.OrderDate, s.CompanyName, e.FirstName, c.CustomerID FROM Orders o
JOIN Customers c
ON c.CustomerID = o.CustomerID
JOIN Employees e
ON e.EmployeeID = o.EmployeeID
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE e.FirstName = 'Nancy'
AND s.CompanyName = 'Speedy Express'
AND c.CustomerID in ('ALFKI', 'DUMON')
AND DATENAME(WEEKDAY, OrderDate) = 'Monday'
-- TEST
SELECT * FROM NaciyeninSiparisleri
(
Id int primary key identity(1,1) not null,
Marka nvarchar(40) not null,
Plaka nvarchar(10) not null,
YapimYili datetime not null,
constraint YapimYili check (datediff(YEAR, YapimYili, getDate()) < 10), -- 10 yaşından büyük araçlar kayıt edilmez.
unique (Plaka) -- Aynı plakadan 2. kez girilemez.
)
-- Aynı plaka ile 2 adet kayıt denemesi
INSERT INTO Araclar
Values('Toyota', '34 ZA 2111', '01.01.2004')
-- 10 yaşından büyük araç kaydı denemesi
INSERT INTO Araclar
Values('Toyota', '06 ZA 2111', '01.01.2001')
-- ALTER YAPISI
-- CREATE ile oluşturulmuş objelerin özelliklerini değiştirmek için alter yapısı kullanılır.
ALTER TABLE Araclar
ALTER Column Marka nvarchar(50) not null
-- ÖDÜLLÜ : Tipi int olan MotorGucu kolonu ile adlandıracağınız, Araclar tablosuna bir adet kolon ekleyin. null olsun.
ALTER TABLE Araclar
Add MotorGucu int null
-- Motogucu kolonunu kaldırma işlemi
ALTER TABLE Araclar
Drop column MotorGucu
USE Northwind
-- Amerikalı müşterilerden alınmış olan siparişleri listeleyen bir sorgu tasarlayınız. (CustomerID, CompanyName, OrderID, OrderDate)
CREATE VIEW Amerikalilar
AS
SELECT c.CustomerID, CompanyName, OrderID, OrderDate FROM Orders o
JOIN Customers c
ON
c.CustomerID = o.CustomerID
WHERE c.Country = 'USA'
--TEST
SELECT * FROM Amerikalilar
SELECT CompanyName FROM Amerikalilar
-- Speedy Express ile taşınmış, Nancy'nin almış olduğu, Pazartei günleri DUMON ya da ALFKI ID'li müşteriler tarafından verilmiş olan siparişleri saklayan bir view oluşturunuz.
CREATE VIEW NaciyeninSiparisleri
AS
SELECT o.OrderID, o.OrderDate, s.CompanyName, e.FirstName, c.CustomerID FROM Orders o
JOIN Customers c
ON c.CustomerID = o.CustomerID
JOIN Employees e
ON e.EmployeeID = o.EmployeeID
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE e.FirstName = 'Nancy'
AND s.CompanyName = 'Speedy Express'
AND c.CustomerID in ('ALFKI', 'DUMON')
AND DATENAME(WEEKDAY, OrderDate) = 'Monday'
-- TEST
SELECT * FROM NaciyeninSiparisleri
19 Ağustos 2014 Salı
DDL (DATA DEFINATION LANGUAGE)
--Create (Olusturma), Alter (Duzenleme), Drop (Silme)
--1)Standart ayarlariyla veritabani olusturma
Create database DenemeDB
--DB'yi silme
Drop database DenemeDB
--2)Manuel ayarlarla veritabani olusturma
--'Name' Parametresi => Database'în mantiksal adi nedir?
--'FileName' Parametresi => Veritabaninin fiziksel yolu nedir?
--'Size' Parametresi => Veritabaninin baslangic boyutu nedir?
--'FileGrowth' Parametresi => Buyume miktari nedir? MDF dosyalari icin MB cinsinden, LDF dosyalari icinse yuzde cinsinden deger verilmesi onerilmektedir..
--'MaxSize' Parametresi => Veritabaninin maksimum boyutu ne olacak?
Create database YD31302
on primary
(
Name = yd3_db,
FileName = 'C:\yd3.mdf',
Size = 10 MB,
FileGrowth = 3 MB,
MaxSize = 60 MB
)
Log on
(
Name = yd3_log,
FileName = 'C:\yd3.ldf',
Size = 2MB,
FileGrowth = 10%,
MaxSize = 10MB
)
--
Drop database YD31302
---Tablo Olusturma
Create database KuzeyRuzgari
use KuzeyRuzgari
Create table Personeller
(
PersonelID int primary key identity(1,1) not null,
PersonelAdi nvarchar(50) not null,
PersonelSoyadi nvarchar(50) not null
)
Create table Musteriler
(
MusteriID int identity(1,1) primary key not null,
SirketAdi nvarchar(30) not null,
Telefonu nvarchar(24) not null
)
Create table Siparisler
(
SiparisID int identity(1,1) primary key not null,
SiparisTarihi date not null,
SiparisiVerenMusteriID int foreign key references Musteriler(MusteriID) not null,
SiparisiAlanPersonelID int foreign key references Personeller(PersonelID) not null
)
Kaydol:
Kayıtlar (Atom)