-- 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
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
)
18 Ağustos 2014 Pazartesi
DELETE YAPISI (Silme İşlemi)
-- EĞER WHERE KRİTERİNİ UNUTURSANIZ, O TABLODAKİ TÜM VERİLERİNİZ SİLİNİR.
-- Kargolar tablosundaki KargoID'si 5'den büyük tüm kayıtlar silinsin.
DELETE FROM Shippers
WHERE ShipperID > 5
SELECT * FROM Shippers
17 Ağustos 2014 Pazar
UPDATE YAPISI - Güncelleme İşlemleri
-- UPDATE İŞLEMİ YAPARKEN, WHERE KOŞULUNU UNUTURSANIZ, UPDATE ETTİĞİNİZ TABLO, AYNI DEĞERLERLE GÜNCELLENİR. BU İŞLEM DELETE İŞLEMİ İÇİN DE GEÇERLİ OLACAK.
-- 6 Nolu kargo firmasının telefon numarasını (212) 888 11 55 yapalım.
UPDATE Shippers
SET Phone = '(212) 888 11 55', CompanyName = 'Ahmet Kargo'
WHERE ShipperID = 6
-- Çalışanlar tablosundaki Nancy adlı çalışanın doğum tarihini '01.01.1967' şehir bilgisini ise 'Kastamonu' olarak değiştiriniz.
UPDATE Employees
SET BirthDate = '01.01.1967', City = 'Kastamonu'
WHERE EmployeeID = 1
SELECT FirstName, Birthdate, City FROM Employees WHERE FirstName = 'Nancy'
-- 6 Nolu kargo firmasının telefon numarasını (212) 888 11 55 yapalım.
UPDATE Shippers
SET Phone = '(212) 888 11 55', CompanyName = 'Ahmet Kargo'
WHERE ShipperID = 6
-- Çalışanlar tablosundaki Nancy adlı çalışanın doğum tarihini '01.01.1967' şehir bilgisini ise 'Kastamonu' olarak değiştiriniz.
UPDATE Employees
SET BirthDate = '01.01.1967', City = 'Kastamonu'
WHERE EmployeeID = 1
SELECT FirstName, Birthdate, City FROM Employees WHERE FirstName = 'Nancy'
16 Ağustos 2014 Cumartesi
SUBQUERY YAPISI
-- İç içe select sorgularıdır.
-- Ne zaman subquery kullanmalıyım ?
a) INNER JOIN'in yetersiz kaldığı durumlarda
b) Having ifadesinin size yanıt veremediği zamanlarda.
-- Ortalama ücretin üzerinde yer alan ürünleri gösteriniz.
SELECT ProductName, UnitPrice FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products)
-- Nancy'nin almış olduğu siparişlerin ID'lerini inner join ile raporlayınız.
SELECT OrderId, FirstName FROM Orders o
INNER JOIN Employees e
ON
o.EmployeeID = e.EmployeeID
WHERE e.FirstName = 'Nancy'
-- Subquery ile sorgu
SELECT OrderID FROM Orders
WHERE EmployeeID = (SELECT EmployeeID FROM Employees WHERE FirstName = 'Nancy')
-- Beverages kategorisine ait ürünleri subquery ile gösteriniz.
SELECT ProductName, CategoryID FROM Products
WHERE CategoryID = (Select CategoryID FROM Categories where CategoryName = 'Bici Bici')
-- Nancy; Andrew ya da Janet tarafından alınmış ve Speedy Express ile taşınmamış siparişleri listeleyiniz.
SELECT OrderID, EmployeeID, ShipVia FROM Orders
WHERE EmployeeID in (SELECT EmployeeID FROM Employees where FirstName in('Nancy', 'Janet', 'Andrew'))
AND
ShipVia != (SELECT ShipperID FROM Shippers WHERE CompanyName = 'Speedy Express')
-- Ne zaman subquery kullanmalıyım ?
a) INNER JOIN'in yetersiz kaldığı durumlarda
b) Having ifadesinin size yanıt veremediği zamanlarda.
-- Ortalama ücretin üzerinde yer alan ürünleri gösteriniz.
SELECT ProductName, UnitPrice FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products)
-- Nancy'nin almış olduğu siparişlerin ID'lerini inner join ile raporlayınız.
SELECT OrderId, FirstName FROM Orders o
INNER JOIN Employees e
ON
o.EmployeeID = e.EmployeeID
WHERE e.FirstName = 'Nancy'
-- Subquery ile sorgu
SELECT OrderID FROM Orders
WHERE EmployeeID = (SELECT EmployeeID FROM Employees WHERE FirstName = 'Nancy')
-- Beverages kategorisine ait ürünleri subquery ile gösteriniz.
SELECT ProductName, CategoryID FROM Products
WHERE CategoryID = (Select CategoryID FROM Categories where CategoryName = 'Bici Bici')
-- Nancy; Andrew ya da Janet tarafından alınmış ve Speedy Express ile taşınmamış siparişleri listeleyiniz.
SELECT OrderID, EmployeeID, ShipVia FROM Orders
WHERE EmployeeID in (SELECT EmployeeID FROM Employees where FirstName in('Nancy', 'Janet', 'Andrew'))
AND
ShipVia != (SELECT ShipperID FROM Shippers WHERE CompanyName = 'Speedy Express')
15 Ağustos 2014 Cuma
HAVING JOIN (having join)
-- En çok aldığımız 3 toptancıyı, almış olduğumuz ürün miktarlarına göre raporlayınız.
SELECT TOP 3 CompanyName,COUNT(ProductID) FROM Products p
JOIN Suppliers s
ON
p.SupplierID = s.SupplierID
GROUP BY CompanyName
-- Her bir üründen toplam ne kadarlık satış yapılmıştır ve o ürünler hangi kategoriye aittir ?
SELECT ProductName, CategoryName, SUM(od.UnitPrice*od.Quantity) FROM Categories c
JOIN Products p
ON
c.CategoryID = p.CategoryID
JOIN [Order Details] od
ON
p.ProductID = od.ProductID
GROUP BY ProductName, CategoryName
-- HAVING : Bir aggregate function'u, koşulda kullanıyorsanız, where yerine having kullanırsınız ve group by ifadesinden sonra kullanılır.
-- Toplam sipariş miktarı 1200'ün üzerinde olan ürünlerin adlarını ve sipariş miktarlarını gösteriniz.
SELECT ProductName, SUM(Quantity) FROM Products p
JOIN [Order Details] od
ON
od.ProductID = p.ProductID
GROUP BY ProductName
HAVING SUM(od.Quantity) > 1200
-- 250'den fazla sipariş taşımış olan kargo firmalarının adlarını, telefon numaralarını ve sipariş miktarlarını raporlayınız.
SELECT CompanyName, Phone, COUNT(ShipVia) FROM Orders o
JOIN Shippers s
ON
s.ShipperID = o.ShipVia
GROUP BY CompanyName, Phone
HAVING COUNT(o.ShipVia)>250
SELECT TOP 3 CompanyName,COUNT(ProductID) FROM Products p
JOIN Suppliers s
ON
p.SupplierID = s.SupplierID
GROUP BY CompanyName
-- Her bir üründen toplam ne kadarlık satış yapılmıştır ve o ürünler hangi kategoriye aittir ?
SELECT ProductName, CategoryName, SUM(od.UnitPrice*od.Quantity) FROM Categories c
JOIN Products p
ON
c.CategoryID = p.CategoryID
JOIN [Order Details] od
ON
p.ProductID = od.ProductID
GROUP BY ProductName, CategoryName
-- HAVING : Bir aggregate function'u, koşulda kullanıyorsanız, where yerine having kullanırsınız ve group by ifadesinden sonra kullanılır.
-- Toplam sipariş miktarı 1200'ün üzerinde olan ürünlerin adlarını ve sipariş miktarlarını gösteriniz.
SELECT ProductName, SUM(Quantity) FROM Products p
JOIN [Order Details] od
ON
od.ProductID = p.ProductID
GROUP BY ProductName
HAVING SUM(od.Quantity) > 1200
-- 250'den fazla sipariş taşımış olan kargo firmalarının adlarını, telefon numaralarını ve sipariş miktarlarını raporlayınız.
SELECT CompanyName, Phone, COUNT(ShipVia) FROM Orders o
JOIN Shippers s
ON
s.ShipperID = o.ShipVia
GROUP BY CompanyName, Phone
HAVING COUNT(o.ShipVia)>250
14 Ağustos 2014 Perşembe
INNER JOIN (inner join)
-- Ürünlerin adlarını ve kategori adlarını raporlayınız.
SELECT ProductName, CategoryName FROM Products
JOIN Categories
ON Products.CategoryID = Categories.CategoryID
-- Ürünleri ve alındıkları toptancıların şirket adlarını raporlayınız.
SELECT ProductName, CompanyName FROM Products
JOIN Suppliers
ON Products.SupplierID = Suppliers.SupplierID
-- Beverages kategorisine ait, stoklarda bulunan ürünleri raporlayınız.
SELECT p.ProductName, c.CategoryName, p.UnitsInStock FROM Products p
INNER JOIN Categories c
ON c.CategoryID = p.CategoryID
WHERE c.CategoryName = 'Beverages' AND
p.UnitsInStock > 0
-- Federal Shipping ile taşınmış ve Nancy'nin almış olduğu siparişleri gösteriniz. (OrderId, FirstName, LastName, OrderDate, CompanyName)
SELECT OrderId, FirstName, LastName, OrderDate, CompanyName FROM Shippers s
JOIN Orders o
ON
s.ShipperID = o.ShipVia
JOIN Employees e
ON
o.EmployeeID = e.EmployeeID
WHERE s.CompanyName = 'Federal Shipping'
AND e.FirstName = 'Nancy'
-- CompanyName'leri arasında 'a' geçen müşterilerin vermiş olduğu, Nancy; Andrew ya da Janet tarafından alınmış, Speedy Express ile taşınmamış siparişlere toplam ne kadarlık kargo ödemesi yapılmıştır ?
SELECT SUM(Freight)FROM Employees e
JOIN Orders o
ON
o.EmployeeID = e.EmployeeID
JOIN Customers c
ON
c.CustomerID = o.CustomerID
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE c.CompanyName LIKE '%a%'
AND FirstName IN('Nancy', 'Andrew', 'Janet')
AND s.CompanyName != 'Speedy Express'
SELECT ProductName, CategoryName FROM Products
JOIN Categories
ON Products.CategoryID = Categories.CategoryID
-- Ürünleri ve alındıkları toptancıların şirket adlarını raporlayınız.
SELECT ProductName, CompanyName FROM Products
JOIN Suppliers
ON Products.SupplierID = Suppliers.SupplierID
-- Beverages kategorisine ait, stoklarda bulunan ürünleri raporlayınız.
SELECT p.ProductName, c.CategoryName, p.UnitsInStock FROM Products p
INNER JOIN Categories c
ON c.CategoryID = p.CategoryID
WHERE c.CategoryName = 'Beverages' AND
p.UnitsInStock > 0
-- Federal Shipping ile taşınmış ve Nancy'nin almış olduğu siparişleri gösteriniz. (OrderId, FirstName, LastName, OrderDate, CompanyName)
SELECT OrderId, FirstName, LastName, OrderDate, CompanyName FROM Shippers s
JOIN Orders o
ON
s.ShipperID = o.ShipVia
JOIN Employees e
ON
o.EmployeeID = e.EmployeeID
WHERE s.CompanyName = 'Federal Shipping'
AND e.FirstName = 'Nancy'
-- CompanyName'leri arasında 'a' geçen müşterilerin vermiş olduğu, Nancy; Andrew ya da Janet tarafından alınmış, Speedy Express ile taşınmamış siparişlere toplam ne kadarlık kargo ödemesi yapılmıştır ?
SELECT SUM(Freight)FROM Employees e
JOIN Orders o
ON
o.EmployeeID = e.EmployeeID
JOIN Customers c
ON
c.CustomerID = o.CustomerID
JOIN Shippers s
ON s.ShipperID = o.ShipVia
WHERE c.CompanyName LIKE '%a%'
AND FirstName IN('Nancy', 'Andrew', 'Janet')
AND s.CompanyName != 'Speedy Express'
13 Ağustos 2014 Çarşamba
CASE - WHEN - THEN (WHEN - CASE YAPISI)
-- Employee'ler üzerinde TitleOfCourtesy alanlarını türkçeye çevirelim.
SELECT FirstName + ' ' + LastName as 'AdSoyad', Unvani =
case TitleOfCourtesy
when 'Mr.' then 'Bay'
when 'Ms.' then 'Bayan'
when 'Mrs.' then 'Bayan'
when 'Dr.' then 'Doktor'
else 'Ön bilgi bulunmuyor.'
end
from Employees
Order By Unvani
-- Ürün adlarını, ücretlerini ve stok miktarlarını raporlayınız. Eğer stok miktarı 50'den küçükse 'Kritik durum', 50 - 75 arası ise 'Normal durum', 75'den fazla ise 'Stok fazlası' uyarısı versin. Raporunuz stok miktarına göre küçükten büyüğe sıralansın.
SELECT ProductName, UnitPrice, UnitsInStock, [Stok Durumu] =
case
WHEN UnitsInStock < 50 then 'Kritik Stok'
WHEN UnitsInStock between 50 and 75 then 'Normal Stok'
WHEN UnitsInStock > 75 then 'Stok Fazlası'
END
FROM Products
ORDER BY UnitsInStock
12 Ağustos 2014 Salı
GROUP BY
-- Eğer ki sorgunuzda, RAM üzerinden dönen veri + fiziksel kolon(lar) varsa, group by + fiziksel kolon(lar) ismi.
-- Ülkelere göre çalışan sayımız nedir ?
SELECT Country, COUNT(EmployeeID) FROM Employees
GROUP BY Country
-- Hangi kategorimde kaç tane ürün var ?
SELECT Count(ProductID) as UrunAdedi, CategoryId as KategoriID FROM Products
GROUP By CategoryID
-- Çalışanlara göre almış oldukları siparişlerin sayısını raporlayınız.
SELECT EmployeeID, COUNT(OrderID) as [Alınan Sipariş Sayısı] FROM Orders
group by EmployeeID
order by [Alınan Sipariş Sayısı] desc
-- Her bir kategoride ücret bazlı toplam ne kadarlık ürünüm vardır ?
SELECT CategoryID, SUM(UnitPrice*UnitsInStock) FROM Products
GROUP BY CategoryID
11 Ağustos 2014 Pazartesi
IN YAPISI (in yapısı) -Sql in Nasıl Kullanılır Ne işe Yarar
-- Veyalı sorgularda parantez hatalarının önüne geçmek için getirilmiş bir yapıdır.
-- 2,4,5,7 nolu çalışanlarımın almış oldukları siparişleri gösteriniz.
SELECT OrderID, EmployeeID FROM Orders
WHERE EmployeeID in (2,4,5,7)
-- 1 ya da 2 nolu kargo firması tarafından taşınmış, 1996 yılında bir Perşembe günü alınmış siparişler için ödenen azami kargo bedeli nedir?
SELECT MAX(Freight) FROM Orders
WHERE ShipVia in (1,2)
AND YEAR(OrderDate) = 1996
AND DATENAME(weekday, OrderDate) = 'Thursday'
10 Ağustos 2014 Pazar
T-Sql BETWEEN - AND KALIBI Nasıl kullanılır ?
-- Stok miktari 20'den büyük 49'dan küçük ürünleri listeleyin.
SELECT ProductName, UnitPrice, UnitsInStock FROM Products
WHERE UnitsInStock between 20 and 49
Order BY UnitsInStock
-- 01.01.1997 ile 06.06.1998 tarihleri arasındaki siparişleri listeleyiniz.
SELECT OrderID , OrderDate FROM Orders
WHERE OrderDate between '01.01.1997' and '06.06.1998'
-- Baş harfi C olan, stoklarda mevcut, 10 - 250 tl arası ücreti olan ürünleri fiyatlarına göre listeleyiniz.
SELECT ProductName, UnitPrice, UnitsInStock FROM Products
WHERE UnitPrice between 10 and 250
and LEFT(ProductName,1) = 'c'
and UnitsInStock > 0
ORDER BY UnitPrice
-- Çarşamba günü alınan, kargo ücreti 20-75 arasında olan, teslim tarihi null olmayan siparişlerin bilgilerini raporlayınız ve OrderID'lerine göre büyükten küçüğe sıralayınız.
SELECT OrderID, Freight, ShippedDate, OrderDate FROM Orders
WHERE Freight between 20 and 75
AND DATENAME(weekday, OrderDate) = 'Wednesday'
AND ShippedDate is not null
ORDER BY OrderID desc
-- ARAMA İŞLEMLERİ (LIKE)
-- Tablolarınız içerisinde geçen verileri arayıp sorgularmızda kullanmak istiyorsak, like anahtar kelimesini kullanabiliriz.
-- CompanyName'leri A harfli ile başlayan müşterileri listeleyelim.
SELECT CompanyName FROM Customers
WHERE CompanyName LIKE 'A%'
-- CompanyName'leri A harfli ile biten müşterileri listeleyelim.
SELECT CompanyName FROM Customers
WHERE CompanyName LIKE '%A'
-- CompanyName'leri arasında ltd geçen müşterileri listeleyelim.
SELECT CompanyName FROM Customers
WHERE CompanyName LIKE '%ltd%'
-- CustomerID'lerinden ilk harfi A ya da S olan müşterileri getiriniz.
SELECT CustomerID FROM Customers
WHERE CustomerID LIKE '[AS]%'
-- CustomerID'lerinden ilk harfi A ile K arasında olan müşterileri getiriniz.
SELECT CustomerID FROM Customers
WHERE CustomerID LIKE '[A-K]%'
-- CustomerID'lerinden ilk harfi A olan, ikinci harfi N olmayan müşterileri getiriniz.
SELECT CustomerID FROM Customers
WHERE CustomerID LIKE 'A[^N]%'
-- Tost yapmayı seven ve bunu çok iyi yapan çalışanımın adını ve soyadını getiriniz.
SELECT FirstName, LastName, Notes FROM Employees
WHERE Notes LIKE '%toast%'
-- Japoncayı akıcı bir şekilde konuşan çalışanımın adını ve soyadını getiriniz.
SELECT FirstName, LastName, Notes FROM Employees
WHERE Notes LIKE '%japanese%'
Etiketler:
And,
between,
MsSql,
Nasıl Kullanılır,
TSql
9 Ağustos 2014 Cumartesi
Bütünleştirici Fonksiyonlar (AGGREGATE FUNCTIONS)
-- Aggregate functions, fiziksel olarak veritabanlarında bulunmaz. İşlem ram üzerinde yapılıp, size sonuç olarak ram üzerinden geriye döner.
-- COUNT YAPISI : Sizin için, verdiğiniz kolondaki dolu satır sayısını hesaplar.
-- Stokta bulunan kaç tane ürünümüz vardır ?
SELECT COUNT(UnitsOnOrder) FROM Products
WHERE UnitsInStock > 0
-- 1996 yılından sonra alınmış kaç adet sipariş vardır ?
SELECT COUNT(OrderDate) FROM Orders
WHERE YEAR(OrderDate) > 1996
-- Kaç ülkeden müşterimiz bulunmaktadır ?
-- NOT : Tekrar eden kolonları , tek saydırabileceğiniz anahtar kelime distinct'dir.
SELECT COUNT(distinct Country) FROM Customers
-- SUM YAPISI
-- Verdiğiniz kolondaki tüm değerleri toplar.
-- Her bir üründen, bir adet alsaydım ne kadar öderdim?
SELECT SUM(UnitPrice) FROM Products
-- Depoda ücret bazlı olarak toplam ne kadarlık ürünüm kalmıştır ?
SELECT SUM(UnitPrice*UnitsInStock) FROM Products
-- 1997 yılında alınmış olan siparişlerim için toplam ne kadarlık kargo ödemesi yaptık ?
SELECT SUM(Freight) FROM Orders
WHERE YEAR(OrderDate) = 1997
-- Bu zamana dek ödenmiş ortalama kargo ücretimiz nedir ?
SELECT SUM(Freight) / COUNT(OrderID) FROM Orders
-- AVG (Ortalama Alma)
-- Bu zamana dek ödenmiş ortalama kargo ücretimiz nedir ?
SELECT AVG(Freight) FROM Orders
-- Ülke başına ortalama ne kadarlık kargo ücreti ödenmiştir.
SELECT SUM(Freight) / COUNT(distinct ShipCountry) FROM Orders
-- MAX - MIN YAPISI
-- En yüksek bedelli ürünüm nedir ?
SELECT MAX(UnitPrice) FROM Products
-- En düşük bedelli ürünüm nedir ?
SELECT MIN(UnitPrice) FROM Products
8 Ağustos 2014 Cuma
ORDER BY (SIRALAMA)
-- Sorgunuz içerisindeki verileri sıralı bir halde getirmeye yarar.
-- NOT : Siz order by kullanmadan sorguyu çalıştırdığınızda, kolonun primary key'ine göre, küçükten büyüğe sıralıdır.
-- Büyükten küçüğe sıralama (Z - A) => DESC(descending)
-- Küçükten büyüğe sıralama (A - Z) => ASC (Ascending)
-- Personellerimizi A'dan Z'ye sıralayalım.
SELECT FirstName + ' ' + LastName as AdSoyad FROM Employees
ORDER BY AdSoyad asc
-- Personellerimizi Z'den A'ya sıralayalım.
SELECT FirstName + ' ' + LastName as AdSoyad FROM Employees
ORDER BY AdSoyad desc
-- Musterilerin ID'lerini, şirket adlarını, ülkelerini listeleyiniz. Ancak şirket Fransız şirketi olacak şekilde ve CustomerID'lerine göre tersten sıralatın.
SELECT CustomerID,CompanyName, Country FROM Customers
WHERE Country = 'France'
ORDER BY CustomerID desc
-- KAYITLARDA BELİRLİ BİR SAYIDA VERİYİ ALMA
-- TOP Kontrolü => verdiğiniz sayıda veri size geri döner.
-- En ucuz 10 ürünü gösterelim.
SELECT TOP 10 ProductName, UnitPrice FROM Products
ORDER BY UnitPrice asc
-- En son teslim edilen 5 siparişin detaylarını gösteriniz.
SELECT TOP 5 OrderID, OrderDate, CustomerID, ShippedDate FROM Orders
ORDER BY ShippedDate desc
-- NOT : Siz order by kullanmadan sorguyu çalıştırdığınızda, kolonun primary key'ine göre, küçükten büyüğe sıralıdır.
-- Büyükten küçüğe sıralama (Z - A) => DESC(descending)
-- Küçükten büyüğe sıralama (A - Z) => ASC (Ascending)
-- Personellerimizi A'dan Z'ye sıralayalım.
SELECT FirstName + ' ' + LastName as AdSoyad FROM Employees
ORDER BY AdSoyad asc
-- Personellerimizi Z'den A'ya sıralayalım.
SELECT FirstName + ' ' + LastName as AdSoyad FROM Employees
ORDER BY AdSoyad desc
-- Musterilerin ID'lerini, şirket adlarını, ülkelerini listeleyiniz. Ancak şirket Fransız şirketi olacak şekilde ve CustomerID'lerine göre tersten sıralatın.
SELECT CustomerID,CompanyName, Country FROM Customers
WHERE Country = 'France'
ORDER BY CustomerID desc
-- KAYITLARDA BELİRLİ BİR SAYIDA VERİYİ ALMA
-- TOP Kontrolü => verdiğiniz sayıda veri size geri döner.
-- En ucuz 10 ürünü gösterelim.
SELECT TOP 10 ProductName, UnitPrice FROM Products
ORDER BY UnitPrice asc
-- En son teslim edilen 5 siparişin detaylarını gösteriniz.
SELECT TOP 5 OrderID, OrderDate, CustomerID, ShippedDate FROM Orders
ORDER BY ShippedDate desc
7 Ağustos 2014 Perşembe
TSQL (Transact-Structured Query Language)
-- WHERE KRITERI <= >= == != <>(eşit değilse)
SELECT ProductName, UnitPrice FROM Products
WHERE UnitPrice > 30
-- Londra'da yaşayan personellerimi listeleyiniz.
SELECT FirstName + ' ' + LastName FROM Employees
WHERE City = 'London'
-- CategoryID'si 5 olmayan ürünlerimin adlarını categoryID'lerini raporlayınız.
SELECT ProductName, CategoryID FROM Products
WHERE CategoryID <> 5
-- 01.01.1993 tarihinden sonra işe girmiş personellerimin adını, soyadını ve işe giriş tarihlerini raporlayınız.
SELECT FirstName + ' ' + LastName, HireDate FROM Employees
WHERE HireDate > '01.01.1993'
-- Mart ayında alınmış olan siparişlerimin, OrderID, OrderDate kolonundaki değerleri raporlayınız.
SELECT OrderID, OrderDate FROM Orders
WHERE Month(OrderDate) = 3
-- ALTERNATIF
SELECT OrderID, OrderDate FROM Orders
WHERE DATENAME(MONTH, OrderDate) = 'March'
-- MANTIKSAL OPERATORLER(AND - OR)
-- Ürünlerim arasında stok miktarı 20 - 50 olan ürünlerimin listesini raporlayınız.
SELECT ProductName, UnitPrice, UnitsInStock FROM Products
WHERE UnitsInStock >= 20 AND UnitsInStock <= 50
-- Yaşı 50'den büyük, İngiltere'de oturmayan çalışanlarımın adlarını ve yaşlarını raporlayınız. Ancak isimler şu formatta olsun : A. Fuller (tek kolon)
SELECT LEFT(FirstName, 1) + ' ' + LastName,DATEDIFF(YEAR, BirthDate, getDate()) AS YAS FROM Employees
WHERE DATEDIFF(YEAR, BirthDate, getDate()) > 50 AND Country != 'UK'
-- 1997(dahil) yılından sonra alınmış, kargo ücreti 20'den büyük ve Fransaya gönderilmemiş siparişlerin, OrderID, sipariş tarihlerini, teslim tarihlerini ve kargo ücretlerini raporlayınız.
SELECT OrderID, ShippedDate, OrderDate, Freight, ShipCountry FROM Orders
WHERE YEAR(OrderDate) >= 1997 AND Freight > 20 AND ShipCountry != 'France'
-- NULL IFADELERIN KONTROLU
-- Henüz müşteriye ulaşmamış siparişleri listeleyelim.
SELECT OrderID, OrderDate, ShippedDate FROM Orders
WHERE ShippedDate is null
-- Kimseye rapor vermeyen personelimin adını ve soyadını listeleyiniz.
SELECT FirstName, LastName FROM Employees
WHERE ReportsTo is null
-- 'DUMON' ya da 'AFLKI' CustomerID'lerine sahip olan müşteriler tarafından alınmış, 1 nolu personelin onayladığı, 3 nolu kargo firması tarafından taşınmış ve ShipRegion'ı null olan siparişleri gösteriniz.
SELECT CustomerID, EmployeeID, ShipVia, ShipRegion FROM Orders
WHERE (CustomerID = 'DUMON' or CustomerID = 'ALFKI') -- or ve and bir arada kullanılıyorsa, or kalıbını parantez içinde yazmalısınız.
and EmployeeID = 1
and ShipVia = 3
and ShipRegion is null
6 Ağustos 2014 Çarşamba
TSQL (Transact-Structured Query Language)
-- TSQL (Transact-Structured Query Language)
-- 1) DML (Data Manuplation Language)
-- SELECT , INSERT, UPDATE , DELETE
-- 2) DDL (Data Defination Language)
-- CREATE, ALTER, DROP
-- 3) DCL (Data Control Language)
-- GRANT, DENY, REVOKE, GRANT WITH
-- SELECT
-- DB üzerinde yer alan tablolardaki verilerin seçilmesinde ve raporlanmasında kullanılan anahtar kelimedir.
SELECT 2+3 'Toplama Islemi' , 5-2 Cikarma, 10/2 Bolme
SELECT 2+3 as 'Toplama'
SELECT 2+3 as [Toplama]
SELECT 2+3 'Toplama Islemi'
SELECT 2+3 [Toplama Islemi]
-- Metin İşlemleri
SELECT 'Merhaba' + ' ' + 'Dünya' as Selamlama
-- Metinin tamamını büyük yada küçük yapma
SELECT LOWER('BİLGEADAM')
SELECT UPPER('bilgeadam')
-- Substring kullanımı (metnin belli bir bölümünü ayıklama)
SELECT SUBSTRING('bilgeadam', 3 , 3) -- kaçıncı karakterden başlanacak, kaç adet alınacak.
-- Soldan ve sağdan boşlukları alma
SELECT LTRIM(' bilgeadam')
SELECT RTRIM('bilgeadam ')
-- Metin uzunluğunu alma
SELECT LEN('bilgeadamYD31302') as MetinUzunlugu
-- Bir metinsel ifadedeki belirtilen degerin, başka bir değerle değiştirilmesi
SELECT REPLACE('bilgeadam', 'adam', 'kadın')
-- Bir ifadeyi tersden yazdırma.
SELECT REVERSE('bilgeadam')
-- Bir ifadenin solundan ve sağından belirli bir kısmını alma.
SELECT LEFT('bilgeadam', 5) as 'Ad', RIGHT('bilgeadam',4) as 'Soyad'
-- TARİH İŞLEMLERİ
-- Bugünün tarihini alma
SELECT getDate()
-- Bir tarihin gününü, ayını, yılını alma.
SELECT Day(GETDATE())
SELECT Month(GETDATE())
SELECT Year(GETDATE())
-- Verilen bir tarihe belirli bir zaman dilimi ekleme
SELECT DATEADD(YEAR, 12, getDATE()) -- Bugünün tarihine 12 yıl ekler.
-- İki tarih arasındaki farkı alma
SELECT DATEDIFF(MINUTE, '05.19.1923', GETDATE())
-- Özel fonksiyonlar
SELECT DATENAME(Month, getdate())
SELECT DATENAME(DAYOFYEAR, getDate()) -- yılın kaçıncı günü
SELECT DATENAME(weekday, getDate())
-- 1) DML (Data Manuplation Language)
-- SELECT , INSERT, UPDATE , DELETE
-- 2) DDL (Data Defination Language)
-- CREATE, ALTER, DROP
-- 3) DCL (Data Control Language)
-- GRANT, DENY, REVOKE, GRANT WITH
-- SELECT
-- DB üzerinde yer alan tablolardaki verilerin seçilmesinde ve raporlanmasında kullanılan anahtar kelimedir.
SELECT 2+3 'Toplama Islemi' , 5-2 Cikarma, 10/2 Bolme
SELECT 2+3 as 'Toplama'
SELECT 2+3 as [Toplama]
SELECT 2+3 'Toplama Islemi'
SELECT 2+3 [Toplama Islemi]
-- Metin İşlemleri
SELECT 'Merhaba' + ' ' + 'Dünya' as Selamlama
-- Metinin tamamını büyük yada küçük yapma
SELECT LOWER('BİLGEADAM')
SELECT UPPER('bilgeadam')
-- Substring kullanımı (metnin belli bir bölümünü ayıklama)
SELECT SUBSTRING('bilgeadam', 3 , 3) -- kaçıncı karakterden başlanacak, kaç adet alınacak.
-- Soldan ve sağdan boşlukları alma
SELECT LTRIM(' bilgeadam')
SELECT RTRIM('bilgeadam ')
-- Metin uzunluğunu alma
SELECT LEN('bilgeadamYD31302') as MetinUzunlugu
-- Bir metinsel ifadedeki belirtilen degerin, başka bir değerle değiştirilmesi
SELECT REPLACE('bilgeadam', 'adam', 'kadın')
-- Bir ifadeyi tersden yazdırma.
SELECT REVERSE('bilgeadam')
-- Bir ifadenin solundan ve sağından belirli bir kısmını alma.
SELECT LEFT('bilgeadam', 5) as 'Ad', RIGHT('bilgeadam',4) as 'Soyad'
-- TARİH İŞLEMLERİ
-- Bugünün tarihini alma
SELECT getDate()
-- Bir tarihin gününü, ayını, yılını alma.
SELECT Day(GETDATE())
SELECT Month(GETDATE())
SELECT Year(GETDATE())
-- Verilen bir tarihe belirli bir zaman dilimi ekleme
SELECT DATEADD(YEAR, 12, getDATE()) -- Bugünün tarihine 12 yıl ekler.
-- İki tarih arasındaki farkı alma
SELECT DATEDIFF(MINUTE, '05.19.1923', GETDATE())
-- Özel fonksiyonlar
SELECT DATENAME(Month, getdate())
SELECT DATENAME(DAYOFYEAR, getDate()) -- yılın kaçıncı günü
SELECT DATENAME(weekday, getDate())
5 Ağustos 2014 Salı
MS-SQL Select İşlemi
-- VERİLER ÜZERİNDE SELECT İŞLEMLERİ
-- Kargolar(Shippers) tablosunda yer alan KargoID (ShipperID), FirmaAdi(CompanyName) ve Telefon Numarası (Phone) bilgilerini raporlayınız.
SELECT CompanyName, ShipperID, Phone FROM Shippers
-- Eğer ki tablodaki tüm kolonların result set içerisinde gelmesini istiyorsanız, kolon isimleri yerine * yazabilirsiniz. Ama bunu hiç bir zaman yapmamalısınız, çünkü istemediğiniz verileri sorguda çekmek, zaman ve aktarım kaybına yol açar.
SELECT * FROM Products
-- Çalışanlarımın (Employees) ID'lerini (EmployeeID), adlarını (FirstName) ve soyadlarını (LastName) raporlayınız. Ancak adlar ve soyadlar tek bir kolonda gelsin, kolonun adı AdSoyad olsun.
SELECT FirstName +' ' + LastName as ADSOYAD, EmployeeID FROM Employees
-- Çalışanlarımın Ad ve Soyadlarıyla birlikte yaşlarını raporlayınız(Not : Doğum tarihleri değil, yaşlarını 25, 57, 78 gibi yazdırınız.)
SELECT FirstName + ' ' + LastName, DATEDIFF(YEAR, BirthDate, getDate()) FROM Employees
-- Ürünlerimin ID'lerini, adlarını, stok miktarlarını, fiyatlarını ve fiyatlara %18 KDV eklenmiş hallerini raporlayınız.
SELECT ProductID, ProductName, UnitsInStock, UnitPrice, UnitPrice * 1.18 as KDV FROM Products
-- Kargolar(Shippers) tablosunda yer alan KargoID (ShipperID), FirmaAdi(CompanyName) ve Telefon Numarası (Phone) bilgilerini raporlayınız.
SELECT CompanyName, ShipperID, Phone FROM Shippers
-- Eğer ki tablodaki tüm kolonların result set içerisinde gelmesini istiyorsanız, kolon isimleri yerine * yazabilirsiniz. Ama bunu hiç bir zaman yapmamalısınız, çünkü istemediğiniz verileri sorguda çekmek, zaman ve aktarım kaybına yol açar.
SELECT * FROM Products
-- Çalışanlarımın (Employees) ID'lerini (EmployeeID), adlarını (FirstName) ve soyadlarını (LastName) raporlayınız. Ancak adlar ve soyadlar tek bir kolonda gelsin, kolonun adı AdSoyad olsun.
SELECT FirstName +' ' + LastName as ADSOYAD, EmployeeID FROM Employees
-- Çalışanlarımın Ad ve Soyadlarıyla birlikte yaşlarını raporlayınız(Not : Doğum tarihleri değil, yaşlarını 25, 57, 78 gibi yazdırınız.)
SELECT FirstName + ' ' + LastName, DATEDIFF(YEAR, BirthDate, getDate()) FROM Employees
-- Ürünlerimin ID'lerini, adlarını, stok miktarlarını, fiyatlarını ve fiyatlara %18 KDV eklenmiş hallerini raporlayınız.
SELECT ProductID, ProductName, UnitsInStock, UnitPrice, UnitPrice * 1.18 as KDV FROM Products
4 Ağustos 2014 Pazartesi
FUNCTIONS (Fonksiyonlar) - User Defined Functions
-- Dışardan girilen iki değeri toplayan ve bize geri döndüren bir fonksiyon yazalım.
CREATE Function ToplamaYap
(
@sayiBir int,
@sayiIki int
)
returns int -- işlem sonucunda geriye ne tipte veri döneceği belirtilir.
as
BEGIN
return @sayiBir + @sayiIki
END
-- Test
SELECT dbo.ToplamaYap(10,20) AS 'Toplama' -- fonksiyonlar dbo şemasıyla beraber kullanılırlar.
-- Dışardan girilen 3 değerin ortalamasını geriye döndüren fonksiyonu yazınız.
CREATE FUNCTION OrtalamaAl
(
@sayi1 float, @sayi2 float, @sayi3 float
)
returns float
AS
BEGIN
return (@sayi1 + @sayi2 + @sayi3 ) /3
END
SELECT dbo.OrtalamaAl(5.5, 6463.31, 541.67)
-- Parametre olarak ad ve soyad bilgilerini alan bir fonksiyon tasarlayınız. Bu fonksiyon adın ilk üç harifi, soyadın son 3 harfini alsın ve arlarına bir nokta, sonuna @gmail.com koyarak ve tamamını küçük harf yaparak geri döndürsün.
CREATE FUNCTION MailOlustur
(
@ad nvarchar(50),
@soyad nvarchar(50)
)
returns nvarchar(50)
AS
BEGIN
return LOWER(LEFT(@ad, 3) + '.' + RIGHT(@soyad, 3) + '@gmail.com')
END
SELECT dbo.MailOlustur('bilge', 'adam')
CREATE Function ToplamaYap
(
@sayiBir int,
@sayiIki int
)
returns int -- işlem sonucunda geriye ne tipte veri döneceği belirtilir.
as
BEGIN
return @sayiBir + @sayiIki
END
-- Test
SELECT dbo.ToplamaYap(10,20) AS 'Toplama' -- fonksiyonlar dbo şemasıyla beraber kullanılırlar.
-- Dışardan girilen 3 değerin ortalamasını geriye döndüren fonksiyonu yazınız.
CREATE FUNCTION OrtalamaAl
(
@sayi1 float, @sayi2 float, @sayi3 float
)
returns float
AS
BEGIN
return (@sayi1 + @sayi2 + @sayi3 ) /3
END
SELECT dbo.OrtalamaAl(5.5, 6463.31, 541.67)
-- Parametre olarak ad ve soyad bilgilerini alan bir fonksiyon tasarlayınız. Bu fonksiyon adın ilk üç harifi, soyadın son 3 harfini alsın ve arlarına bir nokta, sonuna @gmail.com koyarak ve tamamını küçük harf yaparak geri döndürsün.
CREATE FUNCTION MailOlustur
(
@ad nvarchar(50),
@soyad nvarchar(50)
)
returns nvarchar(50)
AS
BEGIN
return LOWER(LEFT(@ad, 3) + '.' + RIGHT(@soyad, 3) + '@gmail.com')
END
SELECT dbo.MailOlustur('bilge', 'adam')
Hesap Makinesi
Merhaba;
Şimdi sizler ile basit bir hesap makinesi yapmaya çalışacağız. Aynı zamanda projemiz ile birlikte tip dönüşüm işlemleri ile ilgili sizlere kısa bilgiler sunacağız.
Öncelikle basit bir şekilde sizlere tasarımdan söz edeyim. Bunu için toolbax'daki gerekli bileşenleri sürekle bırak yöntemi ile aşağıdaki tasarımı oluşturuyoruz.
Tasarım oldukça basit burada yapılması planlanan sadece 2 adet sayıyı matematiksel olarak toplamak, çıkarmak, çarpmak ve bölmek. Ekranda görüldüğü gibi butonların text özelliklerine isimler veriyoruz arka planda bizim kullanmamız içinse name özellikleri belirleniyor. Aynı işlemi textboxlarımız içinde yapıyoruz burada sadece name özelliklerini değiştirmemiz yeterlidir. Ardından Label nesnesini kullanıyoruz 3 adet label için sadece text özellikleri düzenleniyor.
İlk İşlem Toplama için aşağıdaki kod satırlarını "Topla" ismini verdiğimiz butona çift tıklayarak yazıyoruz.
Yukarıdaki işlem olarak int tipinde sayi1 isimli bir değişken tanımlıyor ve değişkenin değerini txtSayi1 isimini verdiğimiz Textbox içindeki değerden geleceğini belirtiyoruz. Bu satırda aynı zamanda tip dönüşümü yapmamız gerekli txtsayi.text'i convert ederek Int32 türüne dönüştüyoruz.
Convert.ToInst16= Short veri tipine dönüşüm yapmak için kullanılır.
Convert.ToInst32= Int veri tipine dönüşüm yapmak için kullanılır.
Convert.ToInst64= Long Veri tipine dönüşüm yapmak için kullanılır.
Convert.ToInst32= Int veri tipine dönüşüm yapmak için kullanılır.
Convert.ToInst64= Long Veri tipine dönüşüm yapmak için kullanılır.
Ardından int tipinde sonuc isimli bir değişken tanımlanıyor ve burada yapılması gereken işlem sayi1 ve sayi2'nin toplanıp sonuc isimli değişkene atanması şekilde gerçekleşiyor.
Son olarak da txtsonuc isimli textboxda iki sayinin toplamını göstermek için txtsonuc'un text özelliğine sonuc değişkenini string e çevirerek yolluyoruz.
Diğer işlemlerimizi de aynı şekilde sadece aralardaki "+" işaretini değiştirerek tekrarlıyoruz yapamayanlar için aşağıda resimlerini sizlerle paylaşıyorum.
3 Ağustos 2014 Pazar
Veri Tipleri ve Değişkenler
Bir değişken için ayrılacak alanın hangi formatta olacağını belirlemek için kullanılır. Metinsel ve sayısal ifadeleri farklı veri tiplerinde tutarız bunun için yapılacak işleme göre seçeceğimiz veri tipi oldukça önemlidir.
Tanımlamada Dikkat Edilecek Durumlar
- Bir değerleri olmalıdır veya mutlak suretle null olarak tanımlanmalıdır.
- Tanımlama yaparken büyük-küçük harf ayrımı vardır.
- Değişken adları rakamla başlayamaz.
- Class, namespace ve kontrol isimleri gibi program tarafından kullanılan isimler verilemez.
- Aynı kod bloğu içerisinde aynı isimden birden fazla değişken tanımlanamaz.
- Özel karakter içermez örneğin /,*,-,+.
- Boşluk kullanılamaz.
- Türkçe karakter kullanılmamalıdır. Ş, ğ,ü,ö,ç,ı gibi…
- Özel sözcükler (if, else, random, vb.) kullanılmaz.
Değişken Tanımlama
Değişken tanımlamaları şu şekilde yapılmaktadır.
(Değişken Türü) ( Değişen Adı) = (Değeri)
Metinsel İfadeler İçin;
Metinsel ifadeler, bir matematik işleminde kullanılmak için değil, sadece kullanıcıya gösterilmek için tutulurlar. Mesela , mesaj kutusu yada bir çıktı gibi diyebiliriz.
"String" metinsel ifadeler için kullanılan bir veri tipidir.
string girilecekYazi = "Merhaba";
"Char" Tek bir harf girdisi için kullanılır
char tekHarf = 'A';
İNT: Sadece tam sayıları tutabileceğimiz, -2 milyar küsürden, +2 milyar küsüre kadar değer aralığı içerir.
int sayi1 = 5;
int sayi2 = 17;
int sayi2 = 17;
byte ufakTamSayi = 5;
long buyukTamSayi = 4353454353453;
long buyukTamSayi = 4353454353453;
Ondalıklı Sayı İçin Veri Tipleri;
double : Matematik ve fizik gibi işlemler için double veritipi uygundur.
decimal : Finansal işlerde genellikle decimal kullanılır.
float : Değer aralığı gereği, genelde oyun motorlarında ya da grafiksel işlemlerlerde tercih edilir.
decimal : Finansal işlerde genellikle decimal kullanılır.
float : Değer aralığı gereği, genelde oyun motorlarında ya da grafiksel işlemlerlerde tercih edilir.
decimal ondalikliSayi1 = 15.5M;
double ondalikliSayi2 = 645.2;
float ondalikliSayi3 = 1231.435F;
double ondalikliSayi2 = 645.2;
float ondalikliSayi3 = 1231.435F;
Mantıksal Veri Tipleri;
Cevabı evet veya hayır olan veritipleridir.
bool dogruMu = true;
bool yanlisMi = false;
bool yanlisMi = false;
Aşağıda sizler için veri tiplerinin aldığı değer aralıklarını paylaşıyorum..
(Resmi Büyütmek İçin Tıklayınız)
2 Ağustos 2014 Cumartesi
MessageBox
Merhaba;
İşte ilk projemiz yeni başlayanlar için biraz karmaşık olabilir ama aslında çok basit bir işlem. Öncelikle kısaca ne yapmak istediğimizden söz edelim. Visual Stduio yardımı ile bir windows form oluşturulacak ve ekrana eklenecek bir butona tıklandığında size bir mesaj penceresi göstermeye çalışacağız.

İlk olarak Windows From oluşturulur ve sol tarafta bulunan toolbox dan bir adet buton nesnesi sürükle bırak yöntemi ile ekrana bırakılır. Ardından buton üzerinde sağ tuş ile tıklanır ve properties seçenekleri arasında yer alan Text Özelliğine Buton üzerinde görünmesini istediğimiz yazıyı yazıyoruz biz burada yapılması planlanan işlem mesaj gösterilmesi olduğu için butonun Text kısmına "Mesaj Göster" olarak belirledik ardından yine properties seçeneklerinden butonun name özelliğine istediğimiz bir isim veriyoruz kod yazılımlarında text kısmı kullanıcıya gösterilirken name kısmı ise sadece programı yazan kişi görebilir ve o butonun arka planda çağırma işlemleri için kullanılır.
İşte ilk projemiz yeni başlayanlar için biraz karmaşık olabilir ama aslında çok basit bir işlem. Öncelikle kısaca ne yapmak istediğimizden söz edelim. Visual Stduio yardımı ile bir windows form oluşturulacak ve ekrana eklenecek bir butona tıklandığında size bir mesaj penceresi göstermeye çalışacağız.

İlk olarak Windows From oluşturulur ve sol tarafta bulunan toolbox dan bir adet buton nesnesi sürükle bırak yöntemi ile ekrana bırakılır. Ardından buton üzerinde sağ tuş ile tıklanır ve properties seçenekleri arasında yer alan Text Özelliğine Buton üzerinde görünmesini istediğimiz yazıyı yazıyoruz biz burada yapılması planlanan işlem mesaj gösterilmesi olduğu için butonun Text kısmına "Mesaj Göster" olarak belirledik ardından yine properties seçeneklerinden butonun name özelliğine istediğimiz bir isim veriyoruz kod yazılımlarında text kısmı kullanıcıya gösterilirken name kısmı ise sadece programı yazan kişi görebilir ve o butonun arka planda çağırma işlemleri için kullanılır.
Ekrana eklediğimiz butona çift tıklıyor ve arka planda kodlarımızı yazacağımız ekrana geçiyoruz.

Arka Planda botunun tıklanma olayı tetiklenir ve buton tıklandığında yapılaması gerek işlemler yazılır. Bizler buton tıklandığında sadece bir mesaj penceresi açılmasını istediğimiz için sadece tıklanma olayı içerisine,
MessageBox.Show("Merhaba Dünya");
yazarak butonun tıklandığında mesaj penceresinde "Merhaba Dünya" yazmasını sağlıyoruz. Projelerinizde yazdığınız tüm kod satırları büyük ve küçük harfe duyarlıdır buna dikkat etmenizi öneririm.
İşte ilk basit projenizi yaptınız. Görüşmek üzere :)
1 Ağustos 2014 Cuma
Merhaba
Merhaba;
İşte ilk yazım :) Aslında tam olarak ne yazacağımı henüz bilmiyorum sadece öğrendiklerimi burada paylaşmak istiyorum.. Umarım paylaştıklarım işinize yarar nitelikte olur. İlk paylaşımda görüşmek üzere..
İşte ilk yazım :) Aslında tam olarak ne yazacağımı henüz bilmiyorum sadece öğrendiklerimi burada paylaşmak istiyorum.. Umarım paylaştıklarım işinize yarar nitelikte olur. İlk paylaşımda görüşmek üzere..
18 Temmuz 2014 Cuma
INSERT ISLEMLERİ (Ekleme İşlemleri)
-- Kargolar tablosuna yeni bir kargo kaydı ekleyiniz.
INSERT INTO Shippers
(Phone,CompanyName)-- buraya kolon isimleri.
Values
('222 11 22','ARAS Kargo')-- buraya o kolona girilecek değerler verilir.
-- Eklendimi kontrolü
SELECT * FROM Shippers
-- EK NOT : Eğer ki o tablodadaki verilerin hepsini girecekseniz, yani hiç bir kolonu null geçmeden tüm verileri insert edecekseniz, kolon isimlerini yazmanıza gerek yok.
INSERT INTO Shippers
Values
('MNG Kargo', '111 22 33')
-- EK NOT : Eğer ki toplu bir şekilde, mesela 2 kargo şirketi aynı anda eklemek istiyorsanız:
INSERT INTO Shippers
(Phone,CompanyName)
Values
('222 11 22','ARAS Kargo'),
('666 55 11', 'Süper Kargo')
-- Herkes kendisini istediği kolonları kullanarak bir çalışan olarak veritabanına eklesin.
INSERT INTO Employees
(FirstName, LastName, Title, BirthDate)
Values
('Baris', 'Ates', 'Consulting', '02.16.1987')
SELECT * FROM Employees
-- SON YAPILAN İŞLEMİN ID'SİNİ ALMA
INSERT INTO Shippers
Values('Sürat Kargo', '(212) 266 98 87')
SELECT CompanyName FROM Shippers WHERE ShipperID =(SELECT SCOPE_IDENTITY())-- oturum bazlı çalışır.
INSERT INTO Shippers
Values('Sürat Kargo', '(212) 266 98 87')
SELECT CompanyName FROM Shippers WHERE ShipperID =(SELECT @@IDENTITY)
-- Değişken tanımlama
DECLARE @sonID int
INSERT INTO Products
(ProductName, UnitPrice)
Values
('Laptop', 2000)
SELECT @sonID = SCOPE_IDENTITY()
SELECT UnitsInStock AS [Son Eklenen Ürüne Ait Stok Bilgisi] FROM Products WHERE ProductID = @sonID
INSERT INTO Shippers
(Phone,CompanyName)-- buraya kolon isimleri.
Values
('222 11 22','ARAS Kargo')-- buraya o kolona girilecek değerler verilir.
-- Eklendimi kontrolü
SELECT * FROM Shippers
-- EK NOT : Eğer ki o tablodadaki verilerin hepsini girecekseniz, yani hiç bir kolonu null geçmeden tüm verileri insert edecekseniz, kolon isimlerini yazmanıza gerek yok.
INSERT INTO Shippers
Values
('MNG Kargo', '111 22 33')
-- EK NOT : Eğer ki toplu bir şekilde, mesela 2 kargo şirketi aynı anda eklemek istiyorsanız:
INSERT INTO Shippers
(Phone,CompanyName)
Values
('222 11 22','ARAS Kargo'),
('666 55 11', 'Süper Kargo')
-- Herkes kendisini istediği kolonları kullanarak bir çalışan olarak veritabanına eklesin.
INSERT INTO Employees
(FirstName, LastName, Title, BirthDate)
Values
('Baris', 'Ates', 'Consulting', '02.16.1987')
SELECT * FROM Employees
-- SON YAPILAN İŞLEMİN ID'SİNİ ALMA
INSERT INTO Shippers
Values('Sürat Kargo', '(212) 266 98 87')
SELECT CompanyName FROM Shippers WHERE ShipperID =(SELECT SCOPE_IDENTITY())-- oturum bazlı çalışır.
INSERT INTO Shippers
Values('Sürat Kargo', '(212) 266 98 87')
SELECT CompanyName FROM Shippers WHERE ShipperID =(SELECT @@IDENTITY)
-- Değişken tanımlama
DECLARE @sonID int
INSERT INTO Products
(ProductName, UnitPrice)
Values
('Laptop', 2000)
SELECT @sonID = SCOPE_IDENTITY()
SELECT UnitsInStock AS [Son Eklenen Ürüne Ait Stok Bilgisi] FROM Products WHERE ProductID = @sonID
Kaydol:
Kayıtlar (Atom)