C# - Nézet táblák létrehozása

Transact SQL 20. rész

forráskód letöltése
A cikksorozat ezen részében a nézettáblák létrehozásának módjával foglalkozunk.
A nézettáblák olyan dinamikus táblák, amelyek tulajdonképpen egy SELECT lekérdezés eredményei. Így egy nézettábla egyszerre akár több tábla összekapcsolt adatait is tartalmazhatja bizonyos feltételekkel szűrve, rendezve. A nézettáblát úgy használhatjuk, mintha egy normáltábla lenne, tehát akár lekérdezésekben is szerepelhet.
Egy nézettáblát a CREATE VIEW utasítással tudunk létrehozni. Az utasítás után meg kell adni a nézet tábla nevét, majd az AS kulcsszó után a SELECT lekérdezést.
Néhány korlátozás van a normál táblákkal szemben. Először is ideiglenes táblákhoz nem hozhatunk létre nézet táblát. A másik fontos dolog, hogy a nézet táblához nem készíthetünk triggereket. Ha belegondolunk, ez teljesen érthető, hiszen a nézet tábláknak a normál táblák szolgáltatják az adatokat, tehát az azokhoz létrehozott triggerek lesznek érvényesek a nézet táblára is. További korlátozás, hogy az ORDER BY záradék (rendezés) csak sorok lekérdezése esetén használható (pl. TOP 10). Nem használhatjuk továbbá a COMPUTE záradékot (virtuális oszlopok létrehozása) és az INTO kulcsszó használatát is kerülni kell.
Ebben a példában nem hozunk létre saját adatbázist, hanem a NorthWind példa adatbázist használjuk fel.
01.sql
Kapcsolódunk a NorthWind adatbázishoz, és lefutattunk egy lekérdezést.
02.sql
Készítünk egy nézet táblát az előző lekérdezéssel. Ezentúl a lekérdezés eredményét úgy használhatjuk, mintha egy tábla lenne. Mivel az eredményt rendezzük, a nézet tábla lekérdezésben a TOP záradékot is meg kell adni.
CREATE VIEW dbo.VIEW1
AS
SELECT DISTINCT TOP 100 PERCENT 
  dbo.Region.RegionDescription, 
  dbo.Territories.TerritoryDescription, 
  dbo.Employees.TitleOfCourtesy + ' ' + 
  dbo.Employees.FirstName + ' ' + 
  dbo.Employees.LastName AS EmpName
FROM dbo.Employees INNER JOIN dbo.EmployeeTerritories
  ON dbo.Employees.EmployeeID = dbo.EmployeeTerritories.EmployeeID
INNER JOIN dbo.Territories
  ON dbo.EmployeeTerritories.TerritoryID = dbo.Territories.TerritoryID
INNER JOIN dbo.Region
  ON dbo.Territories.RegionID = dbo.Region.RegionID
ORDER BY dbo.Region.RegionDescription, dbo.Territories.TerritoryDescription
03.sql
Adatokat kérdezünk le a nézet táblából úgy, mintha az egy normál tábla lenne.
SELECT RegionDescription, TerritoryDescription
FROM View1 WHERE EmpName like('Dr. Andrew%')
04.sql
Ha már nincs szükség a nézet táblára, akkor a DROP VIEW utasítással törölhetjük azt. Az utasítás után meg kell adni a nézet tábla nevét.

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész
Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész

Nézet táblák létrehozása - Transact SQL 20. rész

Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész