Microsoft Access Lekérdezések
Melléklet NorthwindSQL.mdb adatbázis [X] => QueryX lekérdezés
Elnevezés Nem lehet két azonos nevű Nem lehet táblával azonos nevű
Lekérdezések típusai Választó lekérdezések Módosító lekérdezések Törlő Frissítő Hozzáfűző Táblakészítő Kereszttáblás lekérdezés SQL specifikus lekérdezés Egyesítő Átadó Adatdefiniáló
Választó lekérdezések (DQL) Vetítés (projekció) Válogatás (szelekció) Számított mező Rendezés Csoportosítás Összekapcsolás
SQL nyelv DQL utasításai (1) Projekció SELECT m1 [,m2...,mi] FROM táblanév; [0] Minden mező esetén: * [2] DISTINCT [3] TOP [4] ALL, ez az alapértelmezett Táblanév.mezőnév [Szóköz van a névben]
SQL nyelv DQL utasításai (2) Szelekció WHERE [5] And, or, not [6] Between Like [7] Dátumok megadása [8] Igen/Nem (-1=True; 0=False) IS NULL IN, lekérdezések beágyazása [19]
SQL nyelv DQL utasításai (3) Számított mező [9] Lehet matematikai, szöveges, logikai, dátum-idő, stb. kifejezés AS Szerepelhet a WHERE záradékban [10]
SQL nyelv DQL utasításai (4) Rendezés ORDER BY [11] Több mező szerint is lehet Rendezés iránya
SQL nyelv DQL utasításai (5) Csoportképzés Min(), Max(), Avg(), Sum(), Count() [12] Csoport képző: GROUP BY [13] Csoportok szelekciója: HAVING [14] WHERE záradék csoportosítás esetén
SQL nyelv DQL utasításai (6) Összekapcsolás Természetes összekapcsolás [15] JOIN INNER [16] LEFT, RIGHT [17]
SQL nyelv DQL utasításai (7) UNIO [18] Azonos számú mezők száma UNION ALL, alapból csak a különböző sorokat mutatja, így gyorsabb is Csak az első SELECT-ben használjunk Aliast
Tippek A lekérdezések egymásra épülhetnek 50 szint mélyen DML műveletek a lekérdezésekben Rekordmódosítás a lekérdezésben Rekordfelvétel a lekérdezésben Rekord törlése a lekérdezésben
Lekérdezések formázása Mezőlista tulajdonságok Mező tulajdonságok Lekérdezés tulajdonságok
DQL felhasználása Beágyazott lekérdezések Másik lekérdezés WHERE záradékában Listák sorforrása Másik lekérdezés rekordforrásaként
SQL nyelv DML utasításai (1) INSERT INTO Sor (ok) beszúrása Céltábla Értékek beszúrása [21] Lekérdezés beszúrása [22] Futtatás módja
SQL nyelv DML utasításai (2) DELETE FROM Sorok törlése DELETE * FROM tábla [23] Feltétel megadása Futtatás módja
SQL nyelv DML utasításai (3) UPDATE Frissítő lekérdezés [24] Ha nincs WHERE, akkor minden rekordot módosít
SQL nyelv DDL utasításai (1) SELECT INTO Táblakészítő parancs Céltábla Egy sor beszúrásával [25] Lekérdezés beszúrásával [26] Futtatás módja
SQL nyelv DDL utasításai (2) DROP TABLE Tábla törlése [27]
SQL nyelv DDL utasításai (3) CREATE TABLE [28] Mezők Adattípusok Kulcs Kötelező Idegenkulcs
Tippek lekérdezésekhez (1) Táblák lekérdezése [29] Véletlen rekordok kiválasztása [30] Paraméterek használata [31] [32] További tippek: acFundSQL.mdb acIntSQL.mdb
Tippek lekérdezésekhez (2) Lekérdezés tulajdonságai Leírás Összes mező a kimenetre Csúcsérték Egyedi értékek (DISTINCT) Egyedi rekordok (DISTINCTROW) Forrás-adatbázis
Hasznos függvények (1) Dátum-idő függvények Date(), Time(), Now() DateAdd(intervallum;szám;dátum) DateDiff(intervallum;d1;d2;hétkezdőnap) DateSerial(é;h;n), TimeSerial(ó;p;m) DateValue(szöveg), TimeValue(szöveg) Day(dátum), Month(dátum), Year(dátum) Hour(idő), Minute(idő), Second(idő) IsDate(kif)
Hasznos függvények (2) Átalakítás függvények Asc(karakter) Chr(szám) Hex(szám) Oct(szám) Nz(kifejezés;érték ha Null)
Hasznos függvények (3) Vizsgálat függvények IsNumeric(kifejezés) IsNull(kifejezés) IsDate(kifejezés)
Hasznos függvények (4) Matematikai függvények Abs(szám) Int(szám) Kerek(szám;pontosság) Log(szám) Rnd(szám) Sgn(szám) Sqr(szám)
Hasznos függvények (5) Szövegkezelő függvények InStr(kezdet;sz1;sz2) LCase(szöveg), UCase(szöveg) Left(szöv;n), Right(szöv;n), Mid(szöv,n,m) Len(szöveg) LTrim(szöv), RTrim(szöv), Trim(szöv) String(szám;szöveg) StrComp(sz1;sz2) Space(szám)
Hasznos függvények (6) Programfolyamat függvények Choose(index;kif1;kif2;…) IIF(logikai kif;igaz kif;hamis kif) Switch(logkif1;kif1;logkif2;kif2;…)
Hasznos függvények (7) Tartományösszesítő függvények DAvg(kifejezés;tartomány;feltétel) DCount(kifejezés;tartomány;feltétel) DFirst(kifejezés;tartomány;feltétel) DLast(kifejezés;tartomány;feltétel) DMax(kifejezés;tartomány;feltétel) DMin(kifejezés;tartomány;feltétel) DSum(kifejezés;tartomány;feltétel) DLookup(kifejezés;tartomány;feltétel)
Konstansok „” False (Hamis) 0 True (Igaz) -1 Null
Operátorok Aritmetikai Összehasonlító Logikai Szöveg +, -, *, /, ^, \, mod Összehasonlító <, <=, >, >=, <>, =, Between Logikai Not, And, Or, Xor, Imp, Eqv Szöveg &
Lekérdezések feldolgozása Szintaktika ellenőrzése Léteznek-e a megnevezett táblák, mezők, helyesek-e a kifejezések, stb. Lekérdezés-terv létrehozása A legoptimálisabb módszer meghatározása Végrehajtás
Lekérdezés-terv (1) JOIN algoritmusok 830 sor rendelés 2155 sor részl. Rendeléskód [1:N] Hivatkozási integritás
Lekérdezés-terv (2) SELECT * FROM [Rendelések] INNER JOIN [Rendelés részletei] ON [Rendelések].[Rendeléskód] = [Rendelés részletei].[Rendeléskód] Két módszer kínálkozik Végig megyünk a rendeléseken, és minden rekordhoz megkeressük az összes rekordot Végigmegyünk a gyermek rekordokon, és megkeressük mindegyikhez az aparekordot Mindegyik két egymásba ágyazott ciklus. NESTED LOOP
Lekérdezés-terv (3) NESTED LOOP Ha az egyik tábla kicsi, akkor gyors Ha mindkét tábla nagy, akkor nagyon költségigényes Nagy táblák esetén, ha van WHERE záradék, ami csökkenti a rekordszámot, akkor ismét gyors lehet
Lekérdezés-terv (4) MERGE JOIN Mindkét táblán csak egyszer megy végig Csak akkor ha mindkét táblában a rekordok rendezett módon érhetők el Van index a JOIN mezőkre A Merge előtt lefut egy logikai sorbarendezési művelet Két lába van, az egyikkel az egyik, a másikkal a másik táblán csoszog előre Használhatatlan, ha a JOIN operátor nem =, hanem >=, <=, stb.