Bilge Adam Yetiştirme Programı kapsamında bitirmiş olduğum 20461C Querying Microsoft® SQL Server® kitabından çıkarmış olduğum 20 soru aşağıdadır:
1. SQL Server’ın sistem veri tabanları arasında geçici bir depolama alanı olarak kullanılan veri tabanı hangisidir?
A. Master
B. Msdb
C. Model
D. Tempdb
E. Resource
I. Select
II. From
III. Where
IV. Group by
V. Having
VI. Order by
B. Msdb
C. Model
D. Tempdb
E. Resource
I. Select
II. From
III. Where
IV. Group by
V. Having
VI. Order by
2. T-SQL Querying’de komutların execute edilme sırası hangisinde doğru verilmiştir?
A. I-II-III-IV-V-VI
B. II-III-IV-V-VI-I
C. VI-V-IV-III-II-I
D. V-IV-III-II-I-VI
E. II-III-IV-V-I-VI
B. II-III-IV-V-VI-I
C. VI-V-IV-III-II-I
D. V-IV-III-II-I-VI
E. II-III-IV-V-I-VI
3. Tablodan çekilen birimfiyat kolonunun ismi fiyat olarak değiştirilecektir ve bu değer miktarla çarpılarak toplam adı altında listelenecektir. Bu sorgunun çekildiği Satış.SiparişDetay tablonun ismi ise SiparişDetay olarak değiştirilecektir. Aşağıdaki sorgulardan hangisiyle bu işlemler gerçekleştirilmelidir?
A. SELECT urunID, birimfiyat AS fiyat, toplam=birimfiyat*miktar FROM Satış.SiparişDetay Sipariş Detay
B. SELECT urunID, birimfiyat AS fiyat, fiyat *miktar AS toplam FROM Satış.SiparişDetay AS SiparişDetay
C. SELECT urunID, birimfiyat fiyat, birimfiyat*miktar=toplam FROM
Satış.SiparişDetay AS SiparişDetay
Satış.SiparişDetay AS SiparişDetay
D. SELECT urunID, birimfiyat AS fiyat, birimfiyat*miktar AS toplam FROM Satış.SiparişDetay=SiparişDetay
E. SELECT urunID, birimfiyat=fiyat, fiyat*miktar AS toplam FROM Satış.SiparişDetay SiparişDetay
4. Yukarıdaki I ve II tablolarından III tablosu elde edilmesi için aşağıdaki sorgulardan hangisi çalıştırılmalıdır?
A. SELECT ö.ÖğrenciAdı , b. BölümAdı FROM Öğrenci ö LEFT OUTER JOIN Bölüm b ON ö.BölümID=b.BölümID
B. SELECT ö.ÖğrenciAdı , b. BölümAdı FROM Öğrenci ö RIGHT OUTER JOIN Bölüm b ON ö.BölümID=b.BölümID
C. SELECT ö.ÖğrenciAdı , b. BölümAdı FROM Öğrenci ö INNER JOIN Bölüm b ON ö.BölümID=b.BölümID
D. SELECT ö.ÖğrenciAdı , b. BölümAdı FROM Öğrenci ö CROSS JOIN Bölüm b ON ö.BölümID=b.BölümID
E. SELECT ö.ÖğrenciAdı , b. BölümAdı FROM Öğrenci ö SELF JOIN Bölüm b ON ö.BölümID=b.BölümID
5. Aşağıdaki sorgulardan hangisi hatalı yazılmıştır?
A. SELECT orderid, custid, YEAR(orderdate) AS orderyear FROM Sales.Orders ORDER BY orderyear
B. SELECT orderid, custid, YEAR(orderdate) AS orderyear FROM Sales.Orders ORDER BY orderyear DESC
C. SELECT orderid, custid, YEAR(orderdate) AS ordyear FROM Sales.Orders WHERE ordyear=2006
D. SELECT TOP (5) WITH TIES orderid, custid, orderdate FROM SalesOrders ORDER BY orderdate DESC
E. SELECT orderid, custid, empid, orderdate FROM Sales.Orders ORDER BY orderdate DESC OFFSET 0 ROWS FETCH FIRST 50 ROWS ONLY
I. Char
II. Decimal
III. Tinyint
IV. Int
V. Nvarchar
II. Decimal
III. Tinyint
IV. Int
V. Nvarchar
6. Veri tiplerinin convert edilme öncelik sırası (düşük->yüksek) hangisinde doğru verilmiştir?
A. II-IV-II-V-I
B. I-II-III-IV-V
C. I-V-III-IV-II
D. II-IV-III-I-V
E. III-IV-II-V-I
B. I-II-III-IV-V
C. I-V-III-IV-II
D. II-IV-III-I-V
E. III-IV-II-V-I
7. Hangisi DML (Data Manipulation Language) komutu değildir?
A. Truncate
B. Merge
C. Drop
D. Delete
E. Update
8. Select ÖğrenciID, NULLIF(puan, hedef) AS Sonuç FROM dbo.Öğrenci
B. Merge
C. Drop
D. Delete
E. Update
8. Select ÖğrenciID, NULLIF(puan, hedef) AS Sonuç FROM dbo.Öğrenci
Yukarıdaki sorgu çalıştırıldığında hangi tablo elde edilir?
A.
D.
9.
SELECT SUM (c2) AS sütun1, COUNT (*) AS sütun2, COUNT (c2) AS sütun3, AVG (c2) AS sütun4, (SUM(c2)/COUNT(*)) AS sütun5 FROM t1;
Yukarıdaki sorgu çalıştırıldığında hangi tablo elde edilir?
A. sütun1 sütun2 sütun3 sütun4 sütun5
100 5 5 20 20
100 5 5 20 20
B. sütun1 sütun2 sütun3 sütun4 sütun5
100 5 4 20 25
100 5 4 20 25
C. sütun1 sütun2 sütun3 sütun4 sütun5
100 4 5 25 20
100 4 5 25 20
D. sütun1 sütun2 sütun3 sütun4 sütun5
100 4 5 20 25
100 4 5 20 25
E. sütun1 sütun2 sütun3 sütun4 sütun5
100 5 4 25 20
100 5 4 25 20
10. Aşağıdaki sorgulardan hangisi yanlıştır?
A. SELECT custid, companyname FROM Sales.Customers AS c WHERE
NOT EXIST (Select * FROM Sales.Orders AS O WHERE c.custid=o.custid)
NOT EXIST (Select * FROM Sales.Orders AS O WHERE c.custid=o.custid)
B. SELECT custid, companyname FROM Sales.Customers AS c WHERE
EXIST (Select Companyname FROM Sales.Orders AS O WHERE c.custid=o.custid)
EXIST (Select Companyname FROM Sales.Orders AS O WHERE c.custid=o.custid)
C. SELECT custid, orderid FROM Sales.orders WHERE
custid IN (SELECT custid FROM Sales.Customers WHERE country=N’Mexico’)
custid IN (SELECT custid FROM Sales.Customers WHERE country=N’Mexico’)
D. SELECT orderid, productid, unitprice, qty FROM Sales.OrderDetails WHERE
orderid=(SELECT MAX(orderid) AS lastorder FROM Sales.Orders)
orderid=(SELECT MAX(orderid) AS lastorder FROM Sales.Orders)
E. SELECT empid, lastname FROM HR.Employees AS e WHERE
(SELECT COUNT(*) FROM Sales.Orders AS O WHERE O.empid=e.empid)>0
(SELECT COUNT(*) FROM Sales.Orders AS O WHERE O.empid=e.empid)>0
11. Hangisi Inline Table-Valued Functions (TVFs) sorgusudur?
A. CREATE VIEW Sales.CustOrders
AS
SELECT
O.custid,
DATEADD (month, DATEIFF (month, 0, O.orderdate), 0) AS ordermonth,
SUM(OD.qty) AS qty
FROM Sales.Orders AS O
JOIN Sales.OrderDetails AS OD
ON OD.orderid=O.orderid
GROUP BY custid, DATEADD(month, DATEIFF(month, 0, O.orderdate), 0)
AS
SELECT
O.custid,
DATEADD (month, DATEIFF (month, 0, O.orderdate), 0) AS ordermonth,
SUM(OD.qty) AS qty
FROM Sales.Orders AS O
JOIN Sales.OrderDetails AS OD
ON OD.orderid=O.orderid
GROUP BY custid, DATEADD(month, DATEIFF(month, 0, O.orderdate), 0)
B. SELECT orderyear, COUNT(DISTINCT custid) AS cust_count
FROM (SELECT YEAR(orderdate) AS orderyear, custid
FROM Sales.Orders) AS derived_year
GROUP BY orderyear
FROM (SELECT YEAR(orderdate) AS orderyear, custid
FROM Sales.Orders) AS derived_year
GROUP BY orderyear
C. DECLARE @emp_id INT=9;
SELECT orderyear, COUNT(DISTINCT custid) AS cust_count
FROM (
SELECT YEAR (orderdate) AS orderyear, custid
FROM SalesOrders
WHERE empid=@emp_id
) AS derived_year
GROUP BY orderyear;
GO
SELECT orderyear, COUNT(DISTINCT custid) AS cust_count
FROM (
SELECT YEAR (orderdate) AS orderyear, custid
FROM SalesOrders
WHERE empid=@emp_id
) AS derived_year
GROUP BY orderyear;
GO
D. CREATE FUNCTION Production.TopNProducts (@t AS INT)
(@t AS INT)
RETURNS TABLE
AS
RETURN
(SELECT TOP (@t) productid, productname, unitprice
FROM Production.Products
ORDER BY unitprice DESC)
(@t AS INT)
RETURNS TABLE
AS
RETURN
(SELECT TOP (@t) productid, productname, unitprice
FROM Production.Products
ORDER BY unitprice DESC)
E. WITH CTE_year
AS
( SELECT YEAR(orderdate) AS orderyear, custid
FROM Sales.Order )
SELECT orderyear, COUNT (DISTINCT custid) AS cust_count
FROM CTE_year
GROUP BY orderyear
AS
( SELECT YEAR(orderdate) AS orderyear, custid
FROM Sales.Order )
SELECT orderyear, COUNT (DISTINCT custid) AS cust_count
FROM CTE_year
GROUP BY orderyear
12. Yukarıdaki I ve II tablolarından III tablosu elde edilmesi için aşağıdaki sorgulardan hangisi çalıştırılmalıdır?
A. SELECT Country, City FROM Production.Suppliers
UNION ALL
SELECT Country, City FROM Sales.Customers
UNION ALL
SELECT Country, City FROM Sales.Customers
B. SELECT Country, City FROM Production.Suppliers
INTERSECT
SELECT Country, City FROM Sales.Customers
INTERSECT
SELECT Country, City FROM Sales.Customers
C. SELECT Country, City FROM Production.Suppliers
UNION
SELECT Country, City FROM Sales.Customers
UNION
SELECT Country, City FROM Sales.Customers
D. SELECT Country, City FROM Production.Suppliers
EXCEPT
SELECT Country, City FROM Sales.Customers
EXCEPT
SELECT Country, City FROM Sales.Customers
E. SELECT Country, City FROM Production.Suppliers C
OUTER APPLY
(SELECT TOP (2) Country, City
FROM Sales.Customers as o
WHERE O.country=C.country)
OUTER APPLY
(SELECT TOP (2) Country, City
FROM Sales.Customers as o
WHERE O.country=C.country)
13. OVER Clause kullanım şekli hangisinde doğru yazılmıştır?
A. OVER ([<ORDER BY clause>]
[<PARTITION BY clause>]
[<ROWS or RANGE clause>]
)
[<PARTITION BY clause>]
[<ROWS or RANGE clause>]
)
B. OVER ([<ORDER BY clause>]
[<ROWS or RANGE clause>]
[<PARTITION BY clause>]
)
[<ROWS or RANGE clause>]
[<PARTITION BY clause>]
)
C. OVER ([<ROWS or RANGE clause>]
[<ORDER BY clause>]
[<PARTITION BY clause>]
)
[<ORDER BY clause>]
[<PARTITION BY clause>]
)
D. OVER ([<PARTITION BY clause>]
[<ROWS or RANGE clause>]
[<ORDER BY clause>]
)
[<ROWS or RANGE clause>]
[<ORDER BY clause>]
)
E. OVER ([<PARTITION BY clause>]
[<ORDER BY clause>]
[<ROWS or RANGE clause>]
)
[<ORDER BY clause>]
[<ROWS or RANGE clause>]
)
14. Yukarıdaki I tablosundan II tablosu oluşturulmak istenmektedir. Aşağıdaki sorgulardan hangisi çalıştırılmalıdır?
A. SELECT Category, Qty, Orderyear
FROM (SELECT Category, Qty, Orderyear FROM Sales.CategoryQtyYear AS D
PIVOT(SUM(qty) FOR orderyear IN ([2006], [2007], [2008])) AS pvt
FROM (SELECT Category, Qty, Orderyear FROM Sales.CategoryQtyYear AS D
PIVOT(SUM(qty) FOR orderyear IN ([2006], [2007], [2008])) AS pvt
B. SELECT Category, [2006], [2007], [2008]
FROM (SELECT Category, Qty, Orderyear FROM Sales.CategoryQtyYear AS D
PIVOT(SUM(qty) FOR orderyear IN ([2006], [2007], [2008])) AS pvt
FROM (SELECT Category, Qty, Orderyear FROM Sales.CategoryQtyYear AS D
PIVOT(SUM(qty) FOR orderyear IN ([2006], [2007], [2008])) AS pvt
C. SELECT Category, Qty, Orderyear
FROM Sales.CategorySales
UNPIVOT (Qty FOR orderyear IN([2006],[2007],[2008])) AS unpvt
FROM Sales.CategorySales
UNPIVOT (Qty FOR orderyear IN([2006],[2007],[2008])) AS unpvt
D. SELECT GROUPING_ID(Category),
GROUPING_ID(Qty),GROUPING_ID(Orderyear)
FROM Sales.CategorySales
GROUP BY CUBE(Qty FOR orderyear IN([2006],[2007],[2008]))
GROUPING_ID(Qty),GROUPING_ID(Orderyear)
FROM Sales.CategorySales
GROUP BY CUBE(Qty FOR orderyear IN([2006],[2007],[2008]))
E. SELECT Category, Qty, Orderyear
FROM Sales.CategorySales
GROUPING SETS (Qty FOR orderyear IN([2006],[2007],[2008]))
FROM Sales.CategorySales
GROUPING SETS (Qty FOR orderyear IN([2006],[2007],[2008]))
15. Bir işçinin çalışma saati ve saat ücreti verildiğinde alacağı günlük yevmiye tutarını gösterecek bir Stored Procedure yazılmak istenmektedir. Hangisinde Query’den gelecek değerleri karşılayacak ve sonucu geri döndürecek değişkenler tanımlanmıştır?
A. DECLARE @Calisma_Saati smallint
DECLARE @Saat_Ucreti int
DECLARE @Isci_Yevmiye float
DECLARE @Saat_Ucreti int
DECLARE @Isci_Yevmiye float
B. CREATE PROC UYevmiyeHesap (
@CSaat smallint,
@SUcret int,
@Yevmiye float OUTPUT
@CSaat smallint,
@SUcret int,
@Yevmiye float OUTPUT
C. SELECT @Calisma_Saati=10
SELECT @Saat_Ucreti=5
SELECT @Isci_Yevmiye=NULL
SELECT @Saat_Ucreti=5
SELECT @Isci_Yevmiye=NULL
D. AS
IF (@CSaat<=8)
BEGIN
SELECT @Yevmiye=@CSaat*@SUcret
END
IF (@CSaat<=8)
BEGIN
SELECT @Yevmiye=@CSaat*@SUcret
END
E. IF (@CSaat>8)
BEGIN
SELECT @Yevmiye=(@CSaat*@SUcret) + ((@CSaat*@SUcret)* 0.05)
END
BEGIN
SELECT @Yevmiye=(@CSaat*@SUcret) + ((@CSaat*@SUcret)* 0.05)
END
DECLARE @deg1 AS INT=42;
DECLARE @deg2 AS NVARCHAR(255);
SET @deg2=N’string’;
DECLARE @deg3 AS NVARCHAR(20);
SELECT @deg3=soyadı FROM personel WHERE perid=1
SELECT @deg1 AS deg1, @deg2 AS deg2, @deg3 AS deg3
DECLARE @deg2 AS NVARCHAR(255);
SET @deg2=N’string’;
DECLARE @deg3 AS NVARCHAR(20);
SELECT @deg3=soyadı FROM personel WHERE perid=1
SELECT @deg1 AS deg1, @deg2 AS deg2, @deg3 AS deg3
16. Yukarıdaki sorgu çalıştırıldığında aşağıdakilerden gelecektir?
A. deg1 deg2 deg3
string Kurt 42
string Kurt 42
B. deg1 deg2 deg3
42 string Kurt
42 string Kurt
C. deg1 deg2 deg3
Kurt string 42
Kurt string 42
D. deg1 deg2 deg3
42 Kurt string
42 Kurt string
E. deg1 deg2 deg3
string 42 Kurt
string 42 Kurt
BEGIN TRY
DECLARE @sayi INT
SET @sayi= ‘12345’
PRINT @sayi
PRINT ‘TRY bloğu bitti’
END TRY
BEGIN CATCH
PRINT ‘ Hata oluştu… Catch bloğu devreye girdi’
END CATCH
PRINT ‘BİTTİ’
DECLARE @sayi INT
SET @sayi= ‘12345’
PRINT @sayi
PRINT ‘TRY bloğu bitti’
END TRY
BEGIN CATCH
PRINT ‘ Hata oluştu… Catch bloğu devreye girdi’
END CATCH
PRINT ‘BİTTİ’
17. Yukarıdaki sorgu çalıştırıldığında hangi mesaj yazdırılacaktır?
A. 12345
Hata oluştu… Catch bloğu devreye girdi
BİTTİ
Hata oluştu… Catch bloğu devreye girdi
BİTTİ
B. TRY bloğu bitti
BİTTİ
BİTTİ
C. Hata oluştu… Catch bloğu devreye girdi
BİTTİ
BİTTİ
D. 12345
TRY bloğu bitti
BİTTİ
TRY bloğu bitti
BİTTİ
E. 12345
BİTTİ
BİTTİ
CREATE PROCEDURE sp_Havale(
@gonderenHesapNo VARCHAR (20),
@ alanHesapNo VARCHAR (20),
@ havaleMiktari FLOAT
)
AS
……………………….
UPDATE Hesap
SET Bakiye=Bakiye-@havaleMiktari
WHERE Hesap_Numara=@gonderenHesapNo
IF @@ERROR<>0
ROLLBACK
@gonderenHesapNo VARCHAR (20),
@ alanHesapNo VARCHAR (20),
@ havaleMiktari FLOAT
)
AS
……………………….
UPDATE Hesap
SET Bakiye=Bakiye-@havaleMiktari
WHERE Hesap_Numara=@gonderenHesapNo
IF @@ERROR<>0
ROLLBACK
UPDATE Hesap
SET Bakiye=Bakiye+@havaleMiktari
WHERE Hesap_Numara=@alanHesapNo
IF @@ERROR<>0
..…………………….
SET Bakiye=Bakiye+@havaleMiktari
WHERE Hesap_Numara=@alanHesapNo
IF @@ERROR<>0
..…………………….
…………….
18. Havale işlemi yapılabilmesi için bir prosedür oluşturulacaktır. Havale yapan müşterinin hesap numarası, havaleyi alacak müşterinin hesap numarası ve yapılacak havale miktarı bu saklı prosedüre dışarıdan bilgi olarak alınacaktır. Havale işlemi sırasında işlemlerde bir sorun olmazsa havale kabul edilecek, aksi taktirde yapılan tüm işlemler geri alınacaktır. Buna göre noktalı yerlere hangi komutlar gelmelidir?
A. BEGIN TRANSACTION
ROLLBACK
COMMIT
ROLLBACK
COMMIT
B. BEGIN TRANSACTION
COMMIT TRANSACTION
END TRY
COMMIT TRANSACTION
END TRY
C. BEGIN TRANSACTION
BEGIN CATCH
END CATCH
BEGIN CATCH
END CATCH
D. BEGIN TRANSACTION
COMMIT
ROLLBACK
COMMIT
ROLLBACK
E. BEGIN TRY
BEGIN CATCH
END CATCH
BEGIN CATCH
END CATCH
19. Bir sorgu tarafından oluşturulan disk ve veri önbellek faaliyet miktarının ölçümünü yapan komut hangisidir?
A. SET STATISTIC TIME ON|OFF
B. SET SHOWPLAN_XML ON|OFF
C. SET STATISTICS IO ON|OFF
D. Scan and Seek
E. Lookup
20. Bir Stored Procedure’un scriptini yazdırmak için aşağıdaki komutlardan hangisi kullanılmalıdır?
A. sp_databases <sp adı>
B. sp_helptext <sp adı>
C. sp_configure <sp adı>
D. sp_columns <sp adı>
E. sp_tables <sp adı>
CEVAP ANAHTARI
1. D
2. E
3. A
4. A
5. C
6. C
7. C
8. A
9. E
10. B
11. D
12. D
13. E
14. C
15. B
16. B
17. D
18. A
19. C
20. B
2. E
3. A
4. A
5. C
6. C
7. C
8. A
9. E
10. B
11. D
12. D
13. E
14. C
15. B
16. B
17. D
18. A
19. C
20. B
0 yorum:
Yorum Gönder