| Köszönetnyilvánítás | |
| Bevezetés | |
| Kinek szól a könyv? | |
| A könyv témája | |
| A könyv felépítése | |
| Mire van szükség a könyv használatához? | |
| A könyvben használt jelölések | |
| Forráskód | |
| Hibaigazító | |
| p2p.wrox.com | |
| RDBMS alapok: miből áll az SQL Server adatbázis? | 1 |
| Az adatbázis-objektumok áttekintése | 2 |
| Az adatbázis-objektum | 2 |
| A tranzakciós napló | 8 |
| A legalapvetőbb adatbázis-objektumok: tábla | 8 |
| Fájlcsoportok | 10 |
| Diagrammok | 11 |
| Nézetek | 12 |
| Tárolt eljárások | 13 |
| Felhasználói függvények | 14 |
| Felhasználók és szerepek | 14 |
| Szabályok | 14 |
| Alapbeállítások | 15 |
| Felhasználói adattípusok | 15 |
| Teljes szövegű katalógusok | 15 |
| SQL Server adattípusok | 16 |
| NULL adat | 22 |
| Az objektumok SQL Server azonosítói | 22 |
| Mi kap nevet? | 23 |
| Névadási szabályok | 23 |
| Összegzés | 24 |
| A szakma eszközei | 25 |
| Books Online | 26 |
| SQL Server Computer Manager | 27 |
| Szolgáltatáskezelés | 27 |
| Hálózati konfiguráció | 28 |
| A protokollok | 30 |
| Az ügyfél | 32 |
| SQL Server Management Studio | 34 |
| A kezdetek | 35 |
| Query ablak | 40 |
| SQL Server Integration Service (SSIS) | 46 |
| A tömegesmásoló-program (Bulk Copy Program, bcp) | 48 |
| SQL Server Profiler | 48 |
| sqlcmd | 49 |
| Összegzés | 49 |
| A T-SQL alapvető utasításai | 51 |
| Ismerkedés a SELECT utasítás egyszerű eseteivel | 52 |
| A SELECT utasítás és a FROM klauzula | 53 |
| A WHERE klauzula | 56 |
| Az ORDER BY klauzula | 61 |
| Az adatok csoportosítása a GROUP BY klauzulával | 65 |
| A csoportosítás feltételhez kötése a HAVING klauzulával | 74 |
| XML előállítása a FOR XML klauzulával | 77 |
| A lekérdezések módosítása az OPTION klauzulával | 78 |
| A DISTINCT és az ALL predikátumok | 78 |
| Adatok beszúrása az INSERT utasítással | 81 |
| Az INSERT INTO...SELECT utasítás | 86 |
| Az adatok módosítása az UPDATE utasítással | 88 |
| A DELETE utasítás | 91 |
| Összegzés | 93 |
| Gyakorlatok | 93 |
| Összekapcsolások: a JOIN operátor | 95 |
| A JOIN operátorok | 96 |
| Belső összekapcsolás: az INNER JOIN operátor | 97 |
| Az INNER JOIN és a WHERE klauzula hasonlósága | 103 |
| Külső összekapcsolás: az OUTER JOIN | 107 |
| Az egyszerű OUTER JOIN operátor | 108 |
| Összetettebb OUTER JOIN összekapcsolások | 114 |
| A két oldal teljes összekapcsolása: a FULL JOIN operátor | 119 |
| A CROSS JOIN összekapcsolás | 121 |
| Az összekapcsolások alternatív szintaxisa | 122 |
| Az alternatív INNER JOIN összekapcsolás | 123 |
| Az alternatív OUTER JOIN összekapcsolás | 123 |
| Az alternatív CROSS JOIN összekapcsolás | 125 |
| Az UNION operátor | 126 |
| Összegzés | 131 |
| Gyakorlatok | 132 |
| Táblák létrehozása és módosítása | 133 |
| Objektumnevek az SQL Serverben | 133 |
| Sémanév (vagy Tulajdonjog) | 134 |
| Az adatbázisnév | 137 |
| Elnevezés a kiszolgáló szerint | 138 |
| Az alapértelmezések átvizsgálása | 138 |
| A CREATE utasítás | 139 |
| CREATE DATABASE | 139 |
| NAME | 141 |
| FILENAME | 141 |
| CREATE TABLE | 146 |
| Az ALTER utasítás | 163 |
| ALTER DATABASE | 163 |
| ALTER TABLE | 167 |
| A DROP utasítás | 171 |
| A grafikus eszköz használata | 173 |
| Adatbázis létrehozása a Management Studio használatával | 173 |
| Vissza a kódhoz: a szkriptkészítés alapjai a Management Studio használatával | 179 |
| Összegzés | 181 |
| Gyakorlatok | 181 |
| Megszorítások | 183 |
| A megszorítások típusai | 184 |
| Tartományi megszorítások | 185 |
| Entitásmegszorítások | 185 |
| Hivatkozásiintegritás-megszorítások | 186 |
| A megszorítások elnevezése | 187 |
| Kulcsmegszorítások | 188 |
| PRIMARY KEY-megszorítások | 188 |
| FOREIGN KEY-megszorítások | 191 |
| UNIQUE-megszorítások | 205 |
| CHECK-megszorítások | 206 |
| DEFAULT-megszorítások | 208 |
| Egy DEFAULT-megszorítás használata CREATE TABLE utasításunkban | 209 |
| Egy DEAFULT-megszorítás hozzáadása egy létező táblához | 210 |
| A megszorítások kikapcsolása | 211 |
| A rossz adatok figyelmen kívül hagyása, amikor létrehozzuk a megszorítást | 211 |
| Egy létező megszorítás ideiglenes kikapcsolása | 214 |
| Szabályok és alapértelmezések - a megszorítások unokatestvérei | 216 |
| Szabályok | 216 |
| Alapértelmezések | 218 |
| Annak meghatározása, mely táblák és adattípusok használnak egy adott szabályt vagy alapértelmezést | 220 |
| Triggerek az adatintegritásért | 220 |
| Annak megválasztása, mit használjunk | 221 |
| Összegzés | 222 |
| Hozzunk ki többet a lekérdezésekből! | 223 |
| Mi az allekérdezés? | 224 |
| Beágyazott allekérdezések készítése | 225 |
| Kölcsönösen összefüggő allekérdezések | 229 |
| Hogyan működnek a kölcsönösen összefüggő lekérdezések? | 229 |
| Kölcsönösen összefüggő lekérdezések a WHERE feltételben | 230 |
| A NULL értékű adatok kezelése - az ISNULL függvény | 234 |
| Leszármaztatott táblák | 235 |
| Az EXISTS operátor | 238 |
| Az EXISTS használata más módon | 240 |
| Adattípusok keverése: CAST és CONVERT | 242 |
| Teljesítményszempontok | 245 |
| Táblakapcsolás vagy ellekérdezés vagy...? | 246 |
| Összegzés | 247 |
| Gyakorlatok | 248 |
| Normalizálás és a tervezés más, alapszintű kérdései | 249 |
| A táblák | 249 |
| Az adatok tárolása normalizált formában | 250 |
| Mielőtt belevágnánk | 252 |
| Az első normálforma | 253 |
| A második normálforma | 258 |
| A harmadik normálforma | 259 |
| További normálformák | 262 |
| Kapcsolatok | 263 |
| Az egy-egyes kapcsolat | 264 |
| Az egy-egyes vagy -többes kapcsolat | 265 |
| A több-többes kapcsolat | 268 |
| Diagramrajzolás | 271 |
| A táblák | 274 |
| Táblák megadása és törlése | 275 |
| Kapcsolatok | 281 |
| A denormalizálás | 285 |
| A normalizáláson túl | 287 |
| Az egyszerűség szerepe | 287 |
| Az adattípusok kiválasztása | 287 |
| Inkább több adatot tároljunk, mint kevesebbet! | 288 |
| Egy gyors példa | 289 |
| Az adatbázis létrehozása | 289 |
| A diagram és a kezdőtáblák megadása | 289 |
| A kapcsolata megadása | 294 |
| Megszorítások megadása | 296 |
| Összegzés | 298 |
| Gyakorlatok | 298 |
| SQL Server tároló- és indexstruktúra | 299 |
| SQL Server tároló | 299 |
| Az adatbázis | 299 |
| Az extent | 300 |
| A lap | 301 |
| Az indexek alapjai | 302 |
| B-fák | 303 |
| Adatok hozzáférése az SQL Serverben | 307 |
| Indexek létrehozása, módosítása és törlése | 317 |
| A CREATE INDEX utasítás | 317 |
| XML-indexek létrehozása | 324 |
| Megszorítások létrehozása során generált indexek | 325 |
| A bölcs döntés: hová milyen index kerüljön, és legfőképpen mikor? | 326 |
| Változatosság | 326 |
| A költségek mérlegelése: amikor a kevesebb több | 327 |
| A lehető legjobb csoportosított index kiválasztása | 328 |
| Az oszlopsorrend igenis számít | 331 |
| Indexek eldobása | 331 |
| A Datebase Engine Tuning varázsló használata | 332 |
| Az indexek karbantartása | 332 |
| Tördelődés | 333 |
| A tördelődés azonosítása és a lapszétválasztások valószínűsége | 333 |
| Összegzés | 338 |
| Gyakorlatok | 339 |
| Nézetek | 341 |
| Egyszerű nézetek | 341 |
| Összetettebb nézetek | 347 |
| Nézet használata adatok megváltoztatásához az INSTEAD OF triggerek előtt | 351 |
| Nézetek szerkesztése T-SQL-lel | 355 |
| Nézetek eldobása | 356 |
| Nézetek létrehozása és szerkesztése a Management Studióban | 356 |
| Nézetek szerkesztése a Management Studióban | 360 |
| Auditálás: a meglévő kód megjelenítése | 360 |
| A kód védelme: nézetek titkosítása | 362 |
| A sémakötésről | 364 |
| Nézetünk táblaszerűvé tétele a VIEW_METADATA opcióval | 364 |
| Indexelt (materializált) nézetek | 365 |
| Összegzés | 369 |
| Gyakorlatok | 370 |
| Szkriptek és kötegek | 371 |
| A szkriptírás alapjai | 371 |
| A USE utasítás | 372 |
| A változók deklarálása | 373 |
| A @@IDENTITY használata | 378 |
| A @@ROWCOUNT használata | 382 |
| Kötegek | 383 |
| Hibák a kötegekben | 386 |
| Mikor használjuk a kötegeket? | 386 |
| SQLCMD | 390 |
| Dinamikus SQL: kódgenerálás menet közben az EXEC parancs segítségével | 394 |
| Az EXEC parancs buktatói | 396 |
| Összegzés | 400 |
| Gyakorlatok | 401 |
| Tárolt eljárások | 403 |
| A tárolt eljárás létrehozása: alapszintaxis | 404 |
| Példa alapszintű tárolt eljárásra | 404 |
| Tárolt eljárás módosítása az ALTER utasítással | 406 |
| Tárolt eljárás eldobása | 406 |
| Paraméterezés | 407 |
| Paraméterek deklarálása | 407 |
| Programvezérlő utasítások | 413 |
| Az IF...ELSE utasítás | 413 |
| Az ELSE rész | 417 |
| A CASE utasítás | 425 |
| Ciklus használata a WHILE utasítás segítségével | 433 |
| A WAITFOR utasítás | 434 |
| TRY/CATCH blokkok | 435 |
| A sikeres teljesítés vagy hiba jelzése visszatérési értékkel | 436 |
| Hogyan használjuk a RETURN utasítást | 436 |
| Hibakezelés | 439 |
| Ahogy volt... | 440 |
| Hibák kezelése keletkezésük előtt | 447 |
| Hibák manuális kiváltása | 450 |
| Egyedi hibaüzenetek felvétele | 455 |
| Amit a tárolt eljárás kínál | 460 |
| Meghívható folyamatok létrehozása | 460 |
| Tárolt eljárás használata biztonság érdekében | 462 |
| Tárolt eljárások és a teljesítmény | 462 |
| Kiterjesztett tárolt eljárások (Extended Stored Procedures, XP-k) | 465 |
| Egy rövid áttekintés a rekurzióról | 465 |
| Hibakeresés | 469 |
| Az SQL Server beállítása hibakereséshez | 469 |
| A HIbakereső indítása | 470 |
| A hibakereső részei | 472 |
| A hibakereső használata | 475 |
| .NET-szerelvények | 479 |
| Összefoglalás | 480 |
| Gyakorlatok | 481 |
| A felhasználó által definiált függvények | 483 |
| Mi is az az UDF | 483 |
| Skalár értéket eredményező UDF-ek | 484 |
| Táblával visszatérő UDF-ek | 489 |
| A determinizmus megértése | 498 |
| Hibakeresés felhasználó által definiált függvényekben | 500 |
| .NET az adatbázis világban | 501 |
| Összegzés | 501 |
| Gyakorlatok | 502 |
| Tranzakciók és zárak | 503 |
| Tranzakciók | 503 |
| BEGIN TRAN | 505 |
| COMMIT TRAN | 505 |
| ROLLBACK TRAN | 505 |
| SAVE TRAN | 506 |
| Az SQL Server napló működése | 506 |
| Hiba és helyreállítás | 508 |
| Zárak és konkurencia | 510 |
| Milyen problémákat oldhatunk meg zárakkal? | 511 |
| Zárolható erőforrások | 515 |
| A zár továbbterjedése és a zár hatásai a teljesítményre | 516 |
| Zárolási módok | 517 |
| Zárkompatibilitás | 519 |
| Egy adott zártípus megadása: optimalizálási tippek | 520 |
| Az izolációs szint beállítása | 522 |
| A holtpontok kezelése (aka "A 1205") | 525 |
| Hogyan érzékeli az SQL Server a holtpont helyzeteket? | 525 |
| A holtpont áldozatának kiválasztása | 526 |
| A holtpontok elkerülése | 526 |
| Összegzés | 529 |
| Triggerek | 531 |
| Mi a trigger? | 532 |
| ON | 534 |
| WITH ENCRYPTION | 534 |
| A FOR|AFTER és az INSTEAD OF klauzula | 534 |
| WITH APPEND | 537 |
| NOT FOR REPLICATION | 537 |
| AS | 538 |
| Triggerek használata adatintegritás-biztosítási szabályok esetében | 538 |
| A más táblából származó követelmények kezelése | 538 |
| A triggerek használata a módosítás különbségének ellenőrzésére | 540 |
| Egyedi hibaüzenetek a triggerek segítségével | 542 |
| A triggerek egyéb gyakorlati felhasználási lehetőségei | 543 |
| Egyéb kérdések a triggerekkel kapcsolatban | 543 |
| A triggerek egymásba ágyazhatók | 543 |
| A triggerek rekurzívak lehetnek | 544 |
| A triggerek nem akadályozzák meg az architektúraváltozást | 544 |
| A triggerek kikapcsolhatók anélkül, hogy eltávolítanánk őket | 545 |
| A triggerek kiváltási sorrendje | 546 |
| INSTEAD OF triggerek | 548 |
| Teljesítménymegfontolások | 548 |
| A triggerek reaktívak, nem proaktívak | 548 |
| A triggereknek nincs konkurenciaproblémája a kiváltó folyamatokkal | 549 |
| Az IF UPDATE() és COLUMNS_UPDATED használata | 549 |
| Röviden és velősen | 552 |
| Ne feledkezzünk el a triggerekről, mikor indexet választunk | 552 |
| Próbáljuk meg elkerülni a visszagörgetést triggeren belül | 552 |
| A triggerek eldobása | 553 |
| A triggerek hibakeresése | 553 |
| Összegzés | 555 |
| Egy rövid bevezetés az XML-be | 557 |
| XML-alapok | 558 |
| Egy XML-dokumentum részei | 560 |
| Névterek | 569 |
| Elemtartalom | 571 |
| Érvényesség és jól formáltság - sémák és DTD-k | 572 |
| Mit hoz az SQL Server a konyhára? | 573 |
| Relációs adatok előhívása XML-formátumban | 574 |
| A RAW opció | 577 |
| Az AUTO opció | 579 |
| Az EXPLICIT opció | 581 |
| PATH | 600 |
| OPENXML | 606 |
| Néhány szó az XSLT-ről | 614 |
| Összegzés | 616 |
| Jelentkezem szolgálatra, Uram! - Betekintés a Reporting Services-be | 617 |
| Reporting Services 101 | 618 |
| Egyszerű jelentésmodellek építése | 619 |
| Adatforrásnézetek | 624 |
| Jelentés létrehozása | 630 |
| Jelentéskiszolgáló-projektek | 634 |
| A jelentés telepítése | 639 |
| Összegzés | 640 |
| Integrálódás az Integration Services segítségével | 641 |
| A probléma magja | 641 |
| Az alapcsomagok generálása az Import/Export varázsló segítségével | 642 |
| A csomagok végrehajtása | 649 |
| Az Execute Package segédprogram használata | 649 |
| Végrehajtás a Business Intelligence Development Studión belül | 652 |
| Végrehajtás a Management Studión belül | 653 |
| A csomag szerkesztése | 653 |
| Összegzés | 656 |
| Játsszunk rendszergazdát! | 657 |
| Munkák ütemezése | 658 |
| Operátor létrehozása | 659 |
| Munkák és feladatok létrehozása | 661 |
| Biztonsági mentés és helyreállítás | 669 |
| Biztonsági mentés, más néven "dump" készítése | 670 |
| Helyreállítási modellek | 673 |
| Helyreállítás | 674 |
| Indexkarbantartás | 676 |
| ALTER INDEX | 677 |
| Adatarchiválás | 679 |
| Összegzés | 680 |
| Gyakorlatok | 681 |
| "A" függelék: A gyakorlatok megoldásai | 683 |
| "B" függelék: Rendszerfüggvények | 695 |
| Örökül maradt rendszerfüggvények (más néven globális változók) | 696 |
| Oszlopfüggvények | 708 |
| Kurzorfüggvények | 711 |
| Dátum- és időfüggvények | 712 |
| Matematikai függvények | 716 |
| Metaadatfüggvények | 722 |
| Rowset függvények | 735 |
| Biztonsági függvények | 738 |
| Sztringfüggvények | 741 |
| Rendszerfüggvények | 748 |
| Szöveg- és képmanipuláló függvények | 759 |
| "C" függelék: A megfelelő eszköz megkeresése | 761 |
| ERD-eszközök | 761 |
| Logikai és fizikai tervezés | 762 |
| Általános parancsprogramozás | 763 |
| Visszafejtés | 763 |
| Szinkronizálás | 763 |
| Makrók | 765 |
| Integráció más eszközökkel (kódgenerálás) | 765 |
| Egyebek | 766 |
| Néhány példa | 767 |
| Kódolási eszközök | 767 |
| Néhány példa | 768 |
| Mentést készítő segédprogramok | 768 |
| Néhány példa | 769 |
| Összegzés | 769 |
| "D" függelék: Egyszerű példák kapcsolódási lehetőségre | 771 |
| Néhány általános elv | 771 |
| Kapcsolódás a C#-nyelvben | 772 |
| Kapcsolódás a VB.NET esetén | 774 |
| "E" függelék: A mintaadatbázisok telepítése és használata | 775 |
| A könyvben használt mintaadatbázisok | 775 |
| A Microsoft által szolgáltatott adatbázisok | 776 |
| Szkript használatával létrehozott példák | 778 |
| Létrehozott példák | 778 |
| Tárgymutató | 779 |