Lekérdezések - NymE

Download Report

Transcript Lekérdezések - NymE

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  +, -, *, /, ^, \, mod Összehasonlító  <, <=, >, >=, <>, =, Between Logikai  Not, And, Or, Xor, Imp, Eqv Szöveg  &

Lekérdezések feldolgozása 1.

2.

3.

 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)     1.

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.