Kendimizi Değerlendirelim-4
Aşağıdaki çıktıyı verecek SQL sorgusunu yazınız.

Kendimizi Değerlendirelim-3
Size verilen KanBankasi.xls dosyasındaki verileri SQL servera aktarınız. Aşağıdaki sorguları oluşturduğunuz veritabanında uygulayınız. (30P)

- Hangi hastanede en fazla A Rh(+) kan vardır?
- B Rh(+) kana ihtiyacı olan bir hasta nerelere kan için başvurabilir? (Kan uyum tablosu resimdeki gibidir.)

- Mevcut hiç 0 Rh(+) kanı olmayan hastahane ad(lar)ını gösteriniz.
- Kızılay il genelinde 19 Mayıs 2011 tarihinde gençlerden kan bağışı kampanyası başlatmıştır. Buna göre aşağıdaki miktarlarda kan bağışında bulunulmuştur.
- A Rh(+) 100 ünite, 0 Rh(-) 80 ünite, AB Rh(-) 50 ünite Buna göre Kızılaydaki son kan durumunu gösteriniz.
- Kızılay, Adana Devlet Hastahanesine her kan türünden 10ar ünite kan verdiine göre Kızılay ve Adana Devlet Hastanesinin yeni kan durumlarını gösteriniz.
Aşağıdaki gibi tüm kan sayılarının toplamını gösteren sorguyu yazınız.
Kendimizi Değerlendirelim-2
Size verilen stfaygs2011.xls dosyasındaki verileri SQL servera aktarınız. (excel tablosu resim olarak aşağıdadır)
Tablodaki net hesaplamalarını yaptırarak boş yerleri doldurunuz(4 yanlış 1 doğruyu götürmektedir).
Aşağıdaki sorguları oluşturduğunuz veritabanında uygulayınız.
- YGS1 Puanına göre ilk 10u gösteriniz.
SELECT TOP 10 * FROM TÜMSINIFLAR
ORDER BY [YGS-1PUAN] DESC
- Bilişim Teknolojileri Alanında toplam neti en iyi olanı gösteriniz.
SELECT MAX(TOPLAMNET) FROM TÜMSINIFLAR
WHERE ALAN=’BİLİŞİM TEKNOLOJİLERİ’
–oysa benim istediğim en iyi neti değil
–en iyi neti olanı göstermek
SELECT * FROM TÜMSINIFLAR
WHERE TOPLAMNET=(SELECT MAX(TOPLAMNET) FROM TÜMSINIFLAR)
–şöyle de olabilir
DECLARE @maxnet float
SET @maxnet=(SELECT MAX(TOPLAMNET) FROM TÜMSINIFLAR)
SELECT * FROM TÜMSINIFLAR
WHERE TOPLAMNET=@maxnet
- LYSye girebilecekleri, giremeyecekleri ve bunların ayrı ayrı sayılarını gösteriniz.
SELECT ADISOYADI as [YGSye GİREBİLECEKLER] FROM TÜMSINIFLAR
WHERE [YGS-1PUAN]>=180 or [YGS-2PUAN]>=180 or [YGS-6PUAN]>=180
ORDER BY [YGS-1PUAN] DESC
—————————————————————-
DECLARE @giren int
SET @giren=(SELECT count(*) FROM TÜMSINIFLAR
WHERE [YGS-1PUAN]>=180 or [YGS-2PUAN]>=180 or [YGS-6PUAN]>=180)
SELECT @giren as [YGSye GİREBİLECEKLER SAYISI]
—————————————————————-
SELECT ADISOYADI as [YGSye GİREMEYECEKLER] FROM TÜMSINIFLAR
WHERE NOT ([YGS-1PUAN]>=180 or [YGS-2PUAN]>=180 or [YGS-6PUAN]>=180)
ORDER BY [YGS-1PUAN] DESC
——————————————————————
DECLARE @giremeyen int
SET @giremeyen=(SELECT count(*) FROM TÜMSINIFLAR
WHERE NOT ([YGS-1PUAN]>=180 or [YGS-2PUAN]>=180 or [YGS-6PUAN]>=180) )
SELECT @giremeyen as [YGSye GİREMEYECEKLER]
————————————————————————-
DECLARE @topkayit int
SET @topkayit=(SELECT COUNT(*) FROM TÜMSINIFLAR)
DECLARE @sinavagirmeyenler int
SET @sinavagirmeyenler=@topkayit-(@giren+@giremeyen)
SELECT @sinavagirmeyenler as [YGSye GİRMEMİŞ OLANLAR]
- Toplam net sayısına göre okulun en iyi öğrencisinin ismini gösteriniz.
–toplam net sayısına göre okulun en iyi öğrencisinin ismi
SELECT ADISOYADI,TOPLAMNET FROM TÜMSINIFLAR
WHERE TOPLAMNET=(SELECT MAX(TOPLAMNET) FROM TÜMSINIFLAR)
- Okulun Türkçe, Sosyal, Fen ve Matematik netlerine göre en iyilerini gösteriniz.
–en iyi TÜRKÇE neti olan
SELECT ADISOYADI,TÜRKÇENET FROM TÜMSINIFLAR
WHERE TÜRKÇENET=(SELECT MAX(TÜRKÇENET) FROM TÜMSINIFLAR)
–en iyi SOSYAL neti olan
SELECT ADISOYADI,SOSYALNET FROM TÜMSINIFLAR
WHERE SOSYALNET=(SELECT MAX(SOSYALNET) FROM TÜMSINIFLAR)
–en iyi FEN net
SELECT ADISOYADI,FENNET FROM TÜMSINIFLAR
WHERE FENNET=(SELECT MAX(FENNET) FROM TÜMSINIFLAR)
–en iyi MATEMATİK net
SELECT ADISOYADI,MATEMATİKNET FROM TÜMSINIFLAR
WHERE MATEMATİKNET=(SELECT MAX(MATEMATİKNET) FROM TÜMSINIFLAR)
- YGS1 puanına göre ilk 10bine girenleri küçükten büyüğe listeleyin.
SELECT * FROM TÜMSINIFLAR
WHERE [YGS-1BAŞARI]<=10000
ORDER BY [YGS-1PUAN] ASC
- ABC ÜNİVERSİTESİ’nin YGS-1 taban puanı 280 olmak üzere 40 kontenjanı vardır. Bu üniversiteye yerleşebilecek adayları listeleyiniz.
SELECT TOP 40 * FROM TÜMSINIFLAR
WHERE [YGS-1PUAN]>=280
ORDER BY [YGS-1PUAN] DESC
- Öğrenci ismi Sayısal Neti Sözel Neti şeklinde çıktı verecek sorguyu hazırlayınız.
SELECT ADISOYADI,TÜRKÇENET+SOSYALNET AS SÖZELNET,MATEMATİKNET+FENNET as SAYISALNET FROM TÜMSINIFLAR
- Tüm okulun tüm testlerdeki ayrı ayrı ortalamalarını gösteriniz.
SELECT AVG(TÜRKÇENET) as [TÜRKÇE ORTALAMASI], AVG(SOSYALNET) as [SOSYAL ORTALAMASI],AVG(FENNET) as [FEN ORTALAMASI],AVG(MATEMATİKNET) as [MATEMATİK ORTALAMASI] FROM TÜMSINIFLAR
- Tüm verileri ALANLARA GÖRE tablo haline getiriniz.
SELECT * INTO bilisim FROM TÜMSINIFLAR
WHERE ALAN=’BİLİŞİM TEKNOLOJİLERİ’
SELECT * INTO elektrik_elektronik FROM TÜMSINIFLAR
WHERE ALAN=’ELEKTRİK-ELEKTRONİK TEK.’
SELECT * INTO insaat FROM TÜMSINIFLAR
WHERE ALAN=’İNŞAAT TEKNOLOJİLERİ’
SELECT * INTO makine FROM TÜMSINIFLAR
WHERE ALAN=’MAKİNE TEKNOLOJİLERİ’
SELECT * INTO otomasyon FROM TÜMSINIFLAR
WHERE ALAN=’END.OTOMASYON TEK.’
Kendimizi Değerlendirelim-1
Bir yazılımcı bir alışveriş sitesi için veritabanı hazırlayacaktır.
Veritabanında alanları aşağıdaki gibi olan kullanicilar tablosu tasarlamaktadır
TABLO OLUŞTURMAK
Tablo alanları: Kullanıcı IDsi, kullanıcı ismi, kullanıcı parolası, üyelik tarihi, cinsiyeti, son ziyaret tarihi
- ID alanı otomatik sayı olmalıdır
- Kullanıcı ismi birincil anahtar olmalıdır
- Kullanıcı ismi ve parolası boş olamaz
CREATE TABLE kullanicilar
(
kid int identity(1,1),
kadi varchar(8) PRIMARY KEY NOT NULL,
kpass varchar(8) NOT NULL,
kuyelik date,
cinsiyeti char(1),
ksonziyaret date
)
TABLO KISITLAMALARI
- Cinsiyet alanının varsayılan değeri E olmalıdır.
CREATE DEFAULT cins as ‘E’
exec sp_bindefault cins,’kullanicilar.cinsiyeti’
- Üyelik tarihi o anki tarih olmalıdır
CREATE DEFAULT uyelik as GETDATE()
exec sp_bindefault uyelik,’kullanicilar.kuyelik’
- Son ziyaret tarihi üyelik tarihinden önce olamaz
ALTER TABLE kullanicilar
ADD CONSTRAINT ck_ziyaret CHECK (ksonziyaret>=kuyelik)
- Parola en az 6 en fazla 8 karakter olabilir, harf ile başlayıp harf ile bitmelidir, * karakteri kullanılamaz.
ALTER TABLE kullanicilar
ADD CONSTRAINT ck_pass1 CHECK (LEN(kpass)>=6 AND LEN(kpass)<=8)
ALTER TABLE kullanicilar
ADD CONSTRAINT ck_pass2 CHECK (kpass LIKE ‘[a-z]%[a-z]‘)
ALTER TABLE kullanicilar
ADD CONSTRAINT ck_pass3 CHECK (CHARINDEX(‘*’,kpass)=0)
SORGULAR
- Son bir yıl içinde üye olanları listeleyiniz.
SELECT * FROM kullanicilar
WHERE DATEDIFF (yy,kuyelik,GETDATE())<=1
- 3 aydan beri siteye giriş yapmamış olanları listeleyerek siliniz.
DELETE FROM kullanicilar
WHERE (ksonziyaret <= DATEADD(day, -90, GETDATE()))
- Alışveriş sitesi üye olan her 10. Kişiye çeşitli hediyeler vermektedir. Buna göre örneğin 10., 20., 30.. ….. üyeleri listeleyiniz (toplam üye sayısına kadar)
SELECT * FROM kullanicilar
WHERE ROUND(((kid)/10),0)*10=kid
- Aşağıdaki şekilde çıktı verecek sorguyu hazırlayınız. Sayın karaltan 100 gündür üyesiniz (karaltan burada kullanıcı ismidir)
SELECT ‘sayın ‘ + kadi+ ‘ ‘ + CAST( DATEDIFF(day, kuyelik, getdate()) as varchar)+ ‘ gündür üyesiniz’
FROM kullanicilar
Yer imleri
MSSQL
- http://www.bilgininadresi.net/185/SQL%20SERVER/1
- SQL Commands – SQL Commands Reference
- SQL Commands – Learn about SELECT, DELETE, UPDATE, and WHERE commands.
- The SQLTeam.com Weblogs
- SSMS Tools Pack
- SSMS Tools Pack: The best free SQL Server Management Studio Add-In on the Web
- Free SQL Server tools that might make your life a little easier
- SQL Management Studio Araçları
- SQL Server Blogs from the UK Community
- SQL Formatter / SQLFormatter formats SQL Statements
- SQLinform is a free online SQL Formatter for any DB (Oracle, DB2, MySQL, SQLServer, Access, Informix, etc)
- Instant SQL Formatter
- Free online tool that beautify your sql code
- Learn SQL Server
- SQL Programmer Tutorials
- Find tutorials, articles, resources, books for programming languages such as Java, C#, C++, .NET, PHP, XML and much more…
- SQL Chick – Microsoft BI Blog
- Data Analysis & Visualization with Microsoft Business Intelligence tools
- SQLblog.com – The SQL Server blog spot on the web
- SQL Blog – Blogs about SQL Server, T-SQL, CLR, Service Broker, Integration Services, Reporting, Analysis Services, Business Intelligence, XML, SQL Scripts, best practices, database development, database administration, and programming
- SQL Server Tutorials
SQL Server Management Studio (SSMS)
Kaynak: http://www.asp.net.tr/Makale/894-SQL-Server-Management-Studio–SSMS-.aspx
SQL Server Management Studio,Database Developer ve Database Administratorların SQL server ile ilgili geliştirme ve yönetim işlemlerini yapabilecekleri kolayca yapabileceği kullanıcı dostu bir Grafik ara yüzüdür.SSMS(SQL Server Management Studio) hayatımıza SQL Server Yukon(SQL Server 2005) ile beraber girmiştir. Hatırlayacağımız gibi SQL Server 2000 de geliştirme ye yönetim işlemleri SSMS yerine Query Analyzer, Analysis Manager ve Enterprise Manager Toolları ile gerçekleştiriliyordu.
Şimdi SQL Server Intancelarımız yönetmek için SSMS açalım. Bunun için şu yolu izlemeliyiz.
Başlat->Tüm Programlar->Microsoft SQL Server 200x-> SQL Server Management Studio
Bu yolu izleyerek SSMS açtığınız zaman bağlantı ayarlarının yapılacağı aşağıdaki gibi bir ekranla karşılaşacaksınız.

Bu ekran kısaca inceleyecek olursak:
Server Type: Bu kısımda kurmuş olduğumuz SQL Server’a ait hangi alt sisteme login olacağımızı seçiyoruz. Bu alt sistemler Database Engine, Analysis Services, Report Server, veya Integration Services olabilir.
Server Name: Tahmin edebileceğiniz gibi buraya da bağlanmak istediğiniz SQL Server’ın adını veya IP adresini girebilirsiniz. Eğer bağlanmak istediğiniz SQL Server Instance’ı aynı makinede kurulu ise Server Name kısmına Localhost yazarak ya da makinenin loopback adresini kullanarak(127.0.0.1) bağlanabilirsiniz. Hatta server Name yerine .(sadece bir Nokta) koyarak da lokal makinede kurulu instance’a bağlanabilirsiniz.Fakat burada dikkat edilmesi gereken nokta SQL Server’ın Ip Adresini girdikten sonra SQL Server Instance Adı da yazılmalıdır.Çünkü SQL Server 2005 den sonra artık aynı fiziksel makine üzerine SQL Serverın birden fazla kopyası(Instance) farklı isimlerle kurulabiliyor.Bu yüzden bizde bağlanmak istediğimiz Instance’ı da belirtmeliyiz.
Authentication : SQL Server’a bağlantı şeklinizi buradan seçebilirsiniz.Bu seçenekler Windows Authentication veya SQL Server Authentication olabilir.SQL Server Authentication Modunu kullanmak için SQL Serverımızı kurarken veya kurduktan sonra Authentication Modu Mixed olarak yapılandırmamız gerekmektedir.Buna rağmen Windows Authentication ile bağlanmak için fazladan bir ayar yapmaya gerek yoktur.Varsayılan olarak zaten Windows Authentication kullanılır.Ayrıca SQL Server Authentication seçmemiz halinde bizden bağlanılacak SQL Server için daha önceden oluşturulmuş bir kullanıcı adı ve şifre isteyecektir.
Yukarıda kısaca açıkladığımız bilgileri girdikten sonra Connect Butonuna tıklayarak belirtiğiniz SQL Server’a bağlanabilirsiniz. Fakat bunu yapmadan önce Options Butonuna dikkatiniz çekmek istiyorum.Öncelikle Options butonuna tıklayalım.Karşımıza aşağıdaki gibi bir pencere gelecektir.

Connect to database : Bu seçenek ile Login olduğumuz zaman varsayılan olarak seçili olmasını istediğimiz veritabanını belirleyebiliriz.
Network Protocol : SQL Server ile bağlantı kurulmak istenince kullanılmak istenen protokol buradan seçilebilir.Seçebileceğimiz Protokoller: Shared Memory,TCP/IP,Named Pipes olarak listelenmiştir.Ayrıca bunlara başka bir makale de değinilecek olsa da kısaca bilgi vermek gerekirse :
Shared Memory: SQL Serverın sürümlerinde default olarak açık gelen iletişim protokolüdür. SQL Server ile Client uygulama ihtiyaç duyduğu verilere bellekten ulaşır.Bu yüzden SQL Server’ın ve Client uygulamasının aynı makinede olması gerekir.
Named Pipes:TCP/IP’nin kullanıma el verişli olmadığı ve ortamda isim çözecek DNS Server gibi bir mekanizma yoksa kullanılabilecek bir protokoldür.Bu protokol gün geçtikçe geçerliğini yitirmektedir.Ayrıca Server Name parametresine IP adresi girerek de SQL Server Instance’ına bağlanabilceğimizi söylemiştik.
TCP/IP: Bu protokol bir çok cihaz tarafından da desteklenen standart bir protokoldür. de SQL Server Instance’ına bir IP adresi yardımıyla uzaktan bağlanmamızı sağlar.
Connection Time-out: Bağlantının yapılacağı SQL Server’a bağlanılmak için en fazla ne kadarlık bir zaman harcanabileceğini göstermektedir. Varsayılan olarak 15 saniye olan bu değer bağlantımıza göre daha fazla bir değere ayarlanabilir.
Execution Time-out: Bu süre ise çalıştırılan bir sorgu için alınacak cevap için geçilmesi gereken en az süredir. Yani bu değeri 10 saniye olarak ayarlamak çalıştırmış olduğumuz sorgunun sonucunun dönmeye başlaması için 10 saniyelik bir zamana ihtiyacımız var demektir. Ayrıca bunun varsayılan 0 (sıfır) olması 0 saniye olarak değil Execution time-out parametresinin maksimum olduğu anlamına gelmektedir.
Bu ayarları da yaptıktan sonra nihayet Connect butonuna tıklayarak verdiğimiz bilgiler doğruysa seçtiğimiz SQL Server Instance’ına bağlanabiliriz.Bağlandıktan sonra aşağıdaki gibi bir ekran ile karşılaşırız.

Yukarıdakiekranda SSMS birkaç önemli özelliğinden kısaca söz edeceğiz fakat başka bir yazıda tüm hepsini ayrıntılı bir şekilde ele alacağız.
Bağlantı kurulduktan sonra ekranın sağ tarafında bulunan beyaz bölüm T-SQL kullanarak yazmış olduğumuz sorguları çalıştırabileceğimiz hatta SSMS 2008 ile gelen bir özellikle yazdığımız ifadeyi debug edebileceğimiz Query Editor penceresidir. Buraya ulaşmak için yine ekranda sol üst köşede işaretletmediğim New Query sekmesini kullanabilirsiniz.
Object Explorer, ise SQL Serverımızda bulunan tüm nesnelerin göründüğü bir listedir. Bu listede Kullanıcı tanımlı veri tabanları, sistem veri tablanları,tablolar,viewlar,stored procedurelar,kullanıcılarla beraber SQL Serverda tanımlı tüm nesnelere buradan ulaşabiliriz.
Son olarak üzerinde işlemler yapıp T-SQL deyimlerini çalıştırabileceğimiz veritabanını da sol üst köşedeki New Query sekmesinin altından seçebiliriz. Ayrıca bunu seçmek yerine çalıştıracağımız T-SQL deyiminin başına USE<veritabanı Adı> yazarak da programatik olarak üzerinde çalıştığımız veri tabanını değiştirebiliriz.
SQL Server Management Studio ile ilgili anlatılabilecek özellikler bitmez biz de yeri geldikçe tekrar tekrar bunlara değineceğiz.
Bol SQL’li günler…
Kolay gelsin



Son Yorumlar