You are on page 1of 9

İçindekiler

1 SQL Server Management Studio ....................................................................................................... 2


SQL Server Management Studio

Eğer giriş bölümündeki adımları takip ettiyseniz şu an elinizde hem SQL Server’in hem de
Visual Studio’nun temiz bir kurulumu olması lazım. Öyleyse SQL Server Management Studio’yu
(kısaca SSMS) açın, varsayılan veri tabanı oturumunuza bağlanın, ki bu da
localhost\oturumunuzun _adı ‘dır (varsayılan isim MSSQLEXPRESS’dir). Bu adımları
gerçekleştirdiğinizde aşağıdaki gibi bir ekranla karşılaşmanız gerekiyor.

Figür 1: Microsoft SQL Server Management Studio

SSMS’i her zaman kullanıcı dostu bulmuşumdur. Bir scripti çalıştırmak için araç
çubuğundan New Query’ye tıklamanız yeterli ancak sol üstten doğru veri tabanını seçtiğinizden
emin olun (veya scriptinize USE [database_name] GO yazabilirsiniz). Sırada önümüzdeki
örneklerde kullanacağımız veri tabanını oluşturmak var. Object Explorer’dan Databases
sekmesini genişletin. Büyük bir ihtimalle boştur. O yüzden Databases sekmesine sağ tıklayın ve
New database seçeneğini seçin. Veri tabanınız için bir isim belirleyin (bu kitapta
SuccinctlyExamples ismini kullanacağız) ve diğer seçenekleri varsayılan değerlerinde bırakın.
Artık bir veri tabanınız olduğuna göre, sekmeyi tekrar açtığınızda bütün tabloları, view’leri ve
kayıtlı prosedürleri görebilirsiniz.

Şimdi de bir tablo oluşturalım. Tables sekmesine sağ tıklayın ve Table seçeneğini seçin.
Tablonuzu aşağıdaki resme göre oluşturun ve Id sütunun Primary Key (Birincil Anahtar) ve
kendiliğinden artan (Identity Specification özelliği sayesinde yapıyoruz) olarak atandığından
emin olun.

Figür 2: Person tablosu


Tabloyu Person ismiyle kaydedin. Tablonuzu Object Explorer’da görebilmek için Object
Explorer’ı yenilemeniz gerekebilir (Tables sekmesine sağ tıklayın ve Refresh seçeneğini seçin).
Fark ettiyseniz GenderId sütunu için int veri türünü kullandım. Bu ilk bakışta garip gelebilir
ancak ileride mümkün olan bütün cinsiyetler için ayrı bir tablo oluşturmak ve o tabloyu buraya
referans vermeyi planlıyorum.

Aynı az önce yaptığınız gibi yine aşağıdaki resme göre bir tablo daha oluşturun (bu sefer
Id sütunu üzerinde Identity Specification’ı açmayın).

Figür 3: Gender tablosu

Bu tabloyu da Gender ismiyle kaydedin.

Şimdi Person tablonuza geri dönün. Eğer tabloyu kapattıysanız, tablonun üzerine sağ
tıklayıp Design seçeneğine basarsanız geri gelecektir. Sonrasında herhangi bir yere sağ tıklayıp
Relationships seçeneğine tıklayın. Yeni bir tanesini ekleyin, Tables and Columns
Specification’a tıklayın ve aşağıdaki gibi ayarlandığından emin olun.
Figür 4: Yabancı Anahtar İlişkilendirmeleri

SSMS, yabancı anahtarınızı otomatik olarak FK_Person_Gender diye isimlendirecektir.


SQL Server’a, Person tablosundaki GenderId sütunun sadece, aynı zamanda Gender tablosunun
Id sütununda bulunan verileri içerebileceğini söylemiş olduk.

Şimdi, Gender tablosuna sağ tıklayın ve Edit Top 200 Rows seçeneğini seçin. Nasıl
değerler girdiğiniz fark etmese de belki de benim örneklerimi takip etmeniz daha iyi olacaktır.

Figür 5: Cinsiyetler

Artık Person tablosuna da bir veya birden fazla insan girebiliriz.

Figür 6: İnsanlar
Gördüğünüz gibi yaptıklarımız çokta zor değildi. İki adet tablo ve yabancı anahtar
oluşturduk ayrıca veri girişi yaptık. Ama eksik olan tek bir şey kaldı… scriptler! Eğer bu adımları
farklı bir veri tabanı üzerinde yapmak isterseniz scriptlere ihtiyacınız olacaktır. Neyse ki SSMS
scriptleri oluşturmak için birkaç seçeneğe sahip.

İlk yöntem, bir nesneye sağ tıkladıktan sonra Script [Object] as > seçeneğini seçin.
Sonrasında ise seçimini yapın. Ama bu yöntemle sadece nesnenin tamamının scriptini
oluşturabilirsiniz. Çoğu zaman işini görecek olsa da tablolarla kullanamazsınız (tablolar veri kaybı
yaşamadan üzerine yazılamazlar). Mesela Person tablosunun CREATE scripti aşağıdaki gibidir.

Kod Örneği 1: CREATE TABLE [dbo].[Person]

CREATE TABLE [dbo].[Person](


[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](256) NOT NULL,
[LastName] [varchar](256) NULL,
[DateOfBirth] [smalldatetime] NULL,
[GenderId] [int] NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Person] WITH CHECK ADD CONSTRAINT [FK_Person_Gender]
FOREIGN KEY([GenderId])
REFERENCES [dbo].[Gender] ([Id])
GO
ALTER TABLE [dbo].[Person] CHECK CONSTRAINT [FK_Person_Gender]
GO
Unutmayın ki, scriptin düzgün çalışması için önce Gender tablosunun halihazırda
bulunması gerekiyor. Normalde yabancı anahtar kısıtlamasını sonradan ekliyorduk ama burada
hepsini tek bir scriptte hallettik.

Tabloları güncellemek içinse Design penceresine gidip sütun ekleyebilir, türleri


değiştirebilir, kısıt ekleyebilir ve sonrasında sağ tıklayıp Generate Change Script seçeneğini
seçmelisiniz. Mesela ben LastLoginTime sütunu ekledim ve GenderId sütununu da boş-
bırakılamaz hale getirdim.
Figure 7: Save Change Script

Gördüğünüz gibi SQL Server aslında geçici bir tablo oluşturuyor, tabloyu siliyor ve
değişiklikleri yapıyor. Bu scripti kaydedip başka bir ortamda da hiç efor sarf etmeden (hatta
otomatik olarak) çalıştırabilirsiniz. Ne yazık ki tabloları önce silip sonra tekrar oluşturmak yavaş
ve çok fazla kaynak kullanan bir iş. O yüzden güncelleme scriptlerinizi kendiniz yazmak
isteyebilirsiniz.

Ekranın sol üstündeki menüden New Query butonunu veya Ctrl + N kısa yolunu
kullanarak yeni bir sorgu penceresi açabilirsiniz. Ancak scriptlerinizi doğru veri tabanının üzerinde
çalıştırdığınızdan (Execute butonunu veya F5’i kullanarak) emin olun. Sık sık yapılan bir hata
scriptleri varsayılan olarak seçilen master veri tabanında çalıştırmaktır.
Aşağıdaki scriptte LastLoginTime sütununu ekleyecek ve GenderId sütununu boş-
bırakılamaz hale getirecektir.

Kod Örneği 2: ALTER TABLE

ALTER TABLE dbo.Person


ADD LastLoginTime DATETIME
ALTER TABLE dbo.Person
ALTER COLUMN GenderId INT NOT NULL

Ek bilgi: Tek bir sorgu penceresinde Scriptin sadece istediğimiz kısımlarını


çalıştırmak da mümkündür. Bunun için scriptin çalıştırmak istediğiniz kısmını seçin ve F5’e
basın. Bu özellik sayesinde SELECT ve UPTADE/INSERT/DELETE ifadelerinizi aynı sorgu
penceresi içerisinde yazıp istediğinizi çalıştırabilirsiniz. Her biri için ayrı ayrı pencere
açmanıza gerek kalmaz.

Son olarak da veri olsun veya olmasın, ister tüm ister bazı seçili nesnelerle bir veri tabanını
scriptleyebilirsiniz. Veri tabanınıza sağ tıklayın, Tasks > seçeneğini seçin ve Generate Scripts’e
tıklayın. Yardımcı sihirbazın yönergelerini takip edin. Hatta farklı seçenekleri de deneyin
(karmaşık olmasa da çok fazla seçenek bulunduruyor). Aşağıda ise verileriyle birlikte Gender
tablosunun scripti yer almaktadır.

Kod Örneği 3: CREATE TABLE [dbo].[Gender] Verilerle Birlikte

CREATE TABLE [dbo].[Gender](


[Id] [int] NOT NULL,
[Code] [varchar](16) NOT NULL,
[Description] [varchar](64) NOT NULL,
CONSTRAINT [PK_Gender] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[Gender] ([Id], [Code], [Description]) VALUES (0, N'UNKNOWN',
N'Not saying')
GO
INSERT [dbo].[Gender] ([Id], [Code], [Description]) VALUES (1, N'MALE',
N'Male')
GO
INSERT [dbo].[Gender] ([Id], [Code], [Description]) VALUES (2, N'FEMALE',
N'Female')
GO
Burada SQL Server Management Studio’ya kısa bir giriş yaptık. Sağ tık ile açılan içerik
menüleri ağaç görünümüyle gayet uyumlu ve iyi bir şekilde çalışan özellikler. Elbette istediğiniz
kısa yol tuşlarını kullanabilirsiniz. Menüden bakmanız yeterlidir. Bu kitap boyunca da SSMS’i sık
sık kullanmaya devam edeceğiz.

Ek bilgi: Veri tabanınızda yeni bir nesne oluşturduğunuz zaman bu nesnelere yönelik
yazdığınız sorgularda SSMS size yardımcı olmayacaktır. Otomatik tamamlama özelliği
çalışmayacaktır hatta SSMS elle yazmadığınız sürece size böyle bir nesnenin olmadığını
söyleyecektir. Ama sorgularınız sorunsuz çalışacaktır. Veri tabanınızı yenilemek de sizi bu
durumda yardımcı olamaz. Çok uzun bir süre boyunca bu nesneleri nesne ön belleğine
almanın tek yolunun SSMS’i kapatıp açmak olduğunu zannettim. Halbuki Ctrl + Shift + R
yapmam yetiyormuş. Bundan sonra, yeni oluşturduğunuz nesnelerin altındaki kıvrık kırımızı
çizgilerle uğraşmanıza gerek yok.

You might also like