Ana Sayfa » SQL Dersleri

View Nesnesi Özellikleri ve Kullanımı | SQL Ders Notları

Yazı 21:26 - 10 Ağustos 2011 tarihinde eklendi. |

sql View Nesnesi Özellikleri ve Kullanımı | SQL Ders Notları———————— VIEW NESNESI ———————————–
– Bir sorgu icerisined cok fazla islem gerceklestiriyorsaniz ve ustune ustluk bu sorguyu defalarca calisitirmaniz gerekiyorsa her defasinda ayni seyleri yazmak size zulum gelecektir icon smile View Nesnesi Özellikleri ve Kullanımı | SQL Ders Notları Bu zulmu asmak icinse Server’ın size sundugu nesne “View” nesnedirir..
– Sorgunuzu tıpkı sanal bir tabloymuscasina saklar ve her defasında artik o tablodan sorgularin cekilmesini ister…

–Amerikali musterilerden alinmis siparisleri listeleyen bir sorgu tasarlayiniz ve bir view icerisinde saklayiniz…

  1. GO
  2. CREATE VIEW Amerikalilar
  3. AS
  4. SELECT c.CustomerID, CompanyName, orderID, orderdate FROM Orders
  5. INNER JOIN Customers c ON c.CustomerID = Orders.CustomerID
  6. WHERE c.Country = 'USA'
  7. GO
  8. --Test
  9. SELECT * FROM Amerikalilar
  10. SELECT CompanyName, orderID FROM Amerikalilar

–Speedy Express ile tasinmis, Nancy’nin almis oldugu, Pazartesi gunleri DUMON ya da ALFKI ID’li musteriler tarafindan verilmis olan saklayan bir view tasarlayiniz..

  1. GO
  2. CREATE VIEW NaciyeminSiparisleri
  3. AS
  4. SELECT o.OrderID, o.OrderDate, s.CompanyName, e.FirstName, c.CustomerID FROM Orders o
  5. INNER JOIN Customers c ON c.CustomerID = o.CustomerID
  6. INNER JOIN Employees e ON e.EmployeeID = o.EmployeeID
  7. INNER JOIN Shippers s ON s.ShipperID = o.ShipVia
  8. WHERE e.FirstName = 'Nancy'
  9. AND s.CompanyName = 'Speedy Express'
  10. AND DATENAME(WEEKDAY,OrderDate) = 'Monday'
  11. AND c.CustomerID IN ('ALFKI', 'DUMON')
  12. GO
  13. --Test
  14. SELECT * FROM NaciyeminSiparisleri

—– VIEW OZELLIKLERI
— WITH ENCRYPTION

–Eger olusturmus oldugunuz view icerisindeki sorgularinizin birileri tarafindan gorunur halde olmasini istemiyorsaniz, view’ini sifreleyebilirsiniz..

  1. GO
  2. CREATE VIEW Kategorimsiler
  3. WITH encryption
  4. AS
  5. SELECT * FROM Categories
  6. GO
  7. --Test
  8. SELECT * FROM Kategorimsiler
  9. --Sifre Cozme
  10. GO
  11. ALTER VIEW Kategorimsiler
  12. AS
  13. SELECT * FROM Categories
  14. GO

– VIEW UZERINDEN INSERT ISLEMI
– Eger view icerisinde birden fazla tablo kullanmiyorsanız view uzerinden insert yapabilirsiniz ancak; view birden fazla tabloya bagimli olarak yasiyor ise artik o view uzerinden insert islemi gerceklestirilemez!

  1. INSERT INTO Kategorimsiler(CategoryName, [Description])
  2. VALUES('Sütlü Tatlılar', 'Süt iyidir, kemiğe iyi gelir')
  3. --Test
  4. SELECT * FROM Kategorimsiler
  5. SELECT * FROM Categories
  6. GO
  7. CREATE VIEW KategoriUrunleri
  8. AS
  9. SELECT ProductName, CategoryName FROM Categories
  10. INNER JOIN Products ON Products.CategoryID = Categories.CategoryID
  11. GO
  12. --Insert (HATALI!)
  13. INSERT INTO KategoriUrunleri(ProductName, CategoryName)
  14. VALUES('Sütlü Nuriye', 'Sütlü Tatlılar')

–ORDER BY KAOSU
–Eger olusturmus oldugunuz view icerisinde, bir siralama (order by) islemi gerceklestirecekseniz, mutlaka top anahtar kelimesini kullanarak siralamayi gerceklestirmeniz gerekmektedir…

  1. GO
  2. CREATE VIEW FiyataGoreUrunler
  3. AS
  4. SELECT top 77 ProductName, UnitPrice FROM Products
  5. ORDER BY UnitPrice DESC
  6. GO
  7. --Test
  8. SELECT * FROM FiyataGoreUrunler

–WITH CHECK OPTION
–View uzerinden insert islemi gerceklestirirken, eger view’iniz uzerinde bir where kriteri tanimli ise, insert edilirken gonderilen degerin de bu kritere uygun olmasini saglayabilirsiniz…

  1. GO
  2. CREATE VIEW FIleBaslayanKargolar
  3. AS
  4. SELECT * FROM Shippers
  5. WHERE CompanyName LIKE 'F%'
  6. WITH CHECK OPTION
  7. GO
  8. --Test
  9. SELECT * FROM FIleBaslayanKargolar
  10. --Insert Testi
  11. INSERT INTO FIleBaslayanKargolar(CompanyName)
  12. VALUES('Fly Kargo')

–WITH SCHEMABINDING
–View’in bagli bulundugu tablo(lar)daki kolonlari kilitler ve o tablolarin, kolonlarin silinmesine engel olur…

  1. GO
  2. CREATE VIEW TumKargolarim
  3. WITH schemabinding
  4. AS
  5. SELECT CompanyName,Phone FROM dbo.Shippers
  6. GO
  7. --Test
  8. ALTER TABLE Shippers
  9. DROP COLUMN Phone

–Beverages kategorisine ait, Amerikali toptancilar tarafindan alinmis, stoklarimda mevcut urunlerin adlarini, ucretlerini, KDV’li ucretlerini gosteren bir view tasarlayiniz (Bagli bulundugu kolonlar asla silinmemeli ve view kodlarini gorunmemelidir…)

  1. GO
  2. CREATE VIEW KategoriyeGoreUrunler
  3. WITH schemabinding, encryption
  4. AS
  5. SELECT CategoryName, ProductName, UnitsInStock, UnitPrice, (UnitPrice * 1.18) AS 'KDV', CompanyName FROM dbo.Categories
  6. INNER JOIN dbo.Products ON Products.CategoryID = Categories.CategoryID
  7. INNER JOIN dbo.Suppliers ON Suppliers.SupplierID = Products.SupplierID
  8. WHERE CategoryName = 'Beverages'
  9. AND Country = 'USA'
  10. AND UnitsInStock > 0
  11. GO
  12. --Test
  13. SELECT * FROM KategoriyeGoreUrunler
  14. --SchemaBinding Test
  15. ALTER TABLE Products
  16. DROP COLUMN UnitsInStock

Kaynak: Bilge Adam (Selçuk Usta)

Konudaki veritabanını indirmek için tıklayın