Bevezetés az SQL utasításokba; a legegyszerűbb SQL lekérdezések létrehozása Accessben a SELECT paranccsal az IN, BETWEEN, LIKE operátorok használatával. SQL lekérdezési nyelv A hozzáférésben lévő SQL lekérdezések szintaxisa

Bevezetés az SQL utasításokba;  a legegyszerűbb SQL lekérdezések létrehozása Accessben a SELECT paranccsal az IN, BETWEEN, LIKE operátorok használatával.  SQL lekérdezési nyelv A hozzáférésben lévő SQL lekérdezések szintaxisa
Bevezetés az SQL utasításokba; a legegyszerűbb SQL lekérdezések létrehozása Accessben a SELECT paranccsal az IN, BETWEEN, LIKE operátorok használatával. SQL lekérdezési nyelv A hozzáférésben lévő SQL lekérdezések szintaxisa

Egy SQL-lekérdezés beágyazható egy másikba. Az allekérdezés nem más, mint egy lekérdezés a lekérdezésben. Általában egy segédlekérdezést használnak a WHERE záradékban. De vannak más módok is az allekérdezések használatára.

Kérés Q011. Információkat jelenít meg a termékekről az m_product táblából, amelyek kódjai az m_income táblában is megtalálhatók:

KIVÁLASZTÁS *
FROM m_product
WHERE id IN (SELECT termékazonosító FROM m_bevétel);

Kérés Q012. Megjelenik azon termékek listája az m_product táblából, amelyek kódjai nem szerepelnek az m_outcome táblában:

KIVÁLASZTÁS *
FROM m_product
WHERE id NOT IN (SELECT product_id FROM m_outcome);

Kérés Q013. Ez az SQL-lekérdezés olyan egyedi kódok és terméknevek listáját adja vissza, amelyeknek kódja van az m_income táblában, de nincs kódja az m_outcome táblában:

SELECT DISTINCT product_id, title
FROM m_income BELSŐ CSATLAKOZÁS m_product
ON m_jövedelem.termékazonosító=m_termékazonosító
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

Kérés Q014. Az m_category táblából egy egyedi kategóriák listája jelenik meg, amelyek neve M betűvel kezdődik:

SELECT DISTINCT cím
FROM m_product
WHERE cím, MINT "M*";

Kérés Q015. Példa a lekérdezés mezőivel végzett aritmetikai műveletek végrehajtására és a lekérdezés mezőinek átnevezésére (alias). Ez a példa kiszámítja a költség = mennyiség*ár és haszon minden egyes cikk fogyasztási rekordjához, feltételezve, hogy a nyereség az értékesítés 7 százaléka:

Ár, összeg*ár AS eredmény_összeg,
összeg*ár/100*7 AS nyereség
FROM m_outcome;

Kérés Q016. Elemzéssel és egyszerűsítéssel aritmetikai műveletek, növelheti a lekérdezés végrehajtásának sebességét:


eredmény_összeg*0,07 AS nyereség
FROM m_outcome;

Kérjen Q017. Az INNER JOIN utasítás használatával több tábla adatait kombinálhatja. A következő példában a ctgry_id értékétől függően az m_income tábla minden bejegyzése az m_kategória tábla azon kategóriájának nevével lesz egyeztetve, amelyhez a termék tartozik:

SELECT c.title, b.title, dt, summa, price, summa*price AS bevételi_összeg
FROM (m_jövedelem MINT BELSŐ CSATLAKOZÁS m_product AS b ON a.product_id=b.id)
BELSŐ CSATLAKOZÁS m_kategória AS c ON b.ctgry_id=c.id
RENDELÉS c.cím, b.cím;

Kérés Q018. Az olyan függvényeket, mint a SUM – összeg, COUNT – mennyiség, AVG – számtani átlag, MAX – maximális érték, MIN – minimális érték, összesített függvényeknek nevezzük. Több értéket vesznek fel, és feldolgozáskor egyetlen értéket adnak vissza. Példa az összeg és az ár mezők szorzatának összegének kiszámítására a használatával aggregált függvényÖSSZEG:

SELECT SUM(összeg*ár) AS Total_Sum
FROM m_jövedelem;

Kérés Q019. Példa több összesítő függvény használatára:


SELECT Sum(összeg) AS Összeg_Összeg, AVG(összeg) AS Összeg_AVG,
MAX(összeg) AS Összeg_Max., Min.(összeg) AS Összeg_Min.,
Szám(*) AS Total_Number
FROM m_jövedelem;

Kérés Q020. Ebben a példában a 2011 júniusában kapott 1-es kódú tételek összegét a rendszer kiszámítja:

KIVÁLASZTÁS
M_jövedelemtől
WHERE product_id=1 ÉS dt #6/1/2011# ÉS #6/30/2011#;.

Kérés Q021. A következő SQL lekérdezés kiszámítja, hogy mennyiért adták el a 4-es vagy 6-os kódú árut:

KIVÁLASZTÁS
FROM m_outcome
WHERE termékazonosító=4 VAGY termékazonosító=6;

Kérés Q022. Kiszámításra került, hogy 2011. június 12-én mennyiért értékesítették a 4-es vagy 6-os kódú árut:

SELECT Sum(összeg*ár) AS eredmény_összeg
FROM m_outcome
WHERE (termékazonosító=4 VAGY termékazonosító=6) ÉS dt=#6/12/2011#;

Kérés Q023. A feladat ez. Számítsa ki a teljes összeget, amelyért a "Sült termékek" kategória áruit jóváírták.

A probléma megoldásához három táblán kell működnie: m_jövedelem, m_termék és m_kategória, mert:
- a jóváírt áruk mennyisége és ára az m_income táblában kerül tárolásra;
- minden termék kategóriakódja az m_termék táblában kerül tárolásra;
- a kategóriacím neve az m_kategória táblában tárolódik.

A probléma megoldásához a következő algoritmust használjuk:
- a "Sült termékek" kategóriakód meghatározása az m_category táblából egy részlekérdezéssel;
- az m_income és m_product táblák összekapcsolása az egyes jóváírt termékek kategóriájának meghatározásához;
- az áru átvételi összegének (= mennyiség * ár) kiszámítása, amelynek kategóriakódja megegyezik a fenti részlekérdezésben meghatározott kóddal.


FROM m_product MINT BELSŐ CSATLAKOZÁS m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="Pékáruk"); !}

Kérés Q024. A "sült termékek" kategóriába tartozó jóváírt áruk teljes összegének kiszámításának problémáját a következő algoritmus oldja meg:
- az m_income tábla minden rekordja, a termék_azonosító értékétől függően, az m_kategória táblából, megegyezzen a kategória nevével;
- válassza ki azokat a rekordokat, amelyeknél a kategória megegyezik a "Sült termékek" kategóriával;
- kiszámítja a bevétel összegét = mennyiség * ár.

SELECT Sum(összeg*ár) AS jövedelem_összeg
FROM (m_product MINT BELSŐ CSATLAKOZÁS m_bevétel AS b ON a.id=b.product_id)
WHERE c.title="Pékáruk"; !}

Kérés Q025. Ez a példa kiszámítja, hogy hány elemet fogyasztottak el:

SELECT COUNT(product_id) AS product_cnt
FROM (SELECT DISTINCT product_id FROM m_outcome) AS t;

Kérés Q026. A GROUP BY záradék a rekordok csoportosítására szolgál. A rekordokat általában egy vagy több mező értéke alapján csoportosítják, és minden csoportra összesítési műveletet alkalmaznak. Például a következő lekérdezés egy jelentést generál az áruk értékesítéséről. Vagyis létrejön egy táblázat, amely tartalmazza az áruk nevét és az eladási összeget:

SELECT cím, SUM(összeg*ár) AS eredmény_összeg
FROM m_product MINT BELSŐ JOIN m_outcome AS b
ON a.id=b.product_id
GROUP BY cím;

Kérés Q027.Értékesítési jelentés kategóriánként. Ez azt jelenti, hogy létrejön egy táblázat, amely tartalmazza a termékkategóriák nevét, a teljes összeget, amennyiért ezeknek a kategóriáknak a termékeit értékesítik, és az átlagos értékesítési összeget. A ROUND függvény az átlagértéket a legközelebbi századra (a tizedeselválasztó utáni második tizedesjegyre) kerekíti:

SELECT c.title, SUM(összeg*ár) AS output_sum,
ROUND(AVG(összeg*ár),2) AS eredmény_összeg_átl
FROM (m_product AS A INNER JOIN m_outcome AS b ON a.id=b.product_id)
BELSŐ CSATLAKOZÁS m_category AS c ON a.ctgry_id=c.id
GROUP BY c.title;

Kérés Q028. Minden termék esetében kiszámításra kerül a teljes és átlagos bizonylatok száma, és információkat jelenít meg azokról az árukról, amelyek összes bevételének száma legalább 500:

SELECT termékazonosító, SUM(összeg) AS összeg_összeg,
Kerek(átl.(összeg),2) AS összeg_átl
M_jövedelemtől
GROUP BY product_id
HAVING Sum(összeg)>=500;

Kérés Q029. Ez a lekérdezés minden egyes tételre kiszámítja a 2011 második negyedévében teljesített bevételek összegét és átlagát. Ha az áru átvételének teljes összege nem kevesebb, mint 1000, akkor a termékkel kapcsolatos információk jelennek meg:

SELECT cím, SUM(összeg*ár) AS jövedelem_összeg
m_jövedelemtől a BELSŐ CSATLAKOZÁS m_product b ON a.product_id=b.id
HOL dt 2011.04.01# ÉS 2011.06.30# KÖZÖTT
GROUP BY cím
HAVING SUM(összeg*ár)>=1000;

Kérjen Q030-at. Egyes esetekben egy tábla minden rekordját meg kell egyeztetni egy másik tábla minden rekordjával; amit karteziánus szorzatnak neveznek. Az ilyen összekapcsolás eredményeként kapott táblázatot Descartes-táblának nevezzük. Például, ha egy A tábla 100 bejegyzést tartalmaz, a B pedig 15 bejegyzést, akkor a derékszögű tábla 100*15=150 bejegyzésből áll. A következő lekérdezés egyesíti az m_income tábla minden bejegyzését az m_outcome tábla minden bejegyzésével:

SELECT *FROM m_bevétel, m_eredmény;

Kérje a Q031-et. Példa a rekordok két mező szerinti csoportosítására. A következő SQL lekérdezés minden szállító számára kiszámítja a tőle kapott áruk mennyiségét és mennyiségét:


SZUM(összeg*ár) AS bevétel_összeg

Kérés Q032. Példa a rekordok két mező szerinti csoportosítására. Az alábbi lekérdezés minden szállító esetében kiszámítja az általunk értékesített termékeik mennyiségét és mennyiségét:

SELECT szállítóazonosító, termékazonosító, SUM(összeg) AS összeg összege,
SZUM(összeg*ár) AS eredmény_összeg
GROUP BY beszállítói_azonosító, termékazonosító;

Kérjen Q033-at. Ebben a példában a fenti két lekérdezést (q031 és q032) használjuk segédlekérdezésként. Ezeknek a lekérdezéseknek az eredményei a LEFT JOIN metódussal egyetlen jelentésbe egyesülnek. A következő lekérdezés jelentést jelenít meg az egyes szállítóknál beérkezett és eladott termékek számáról és mennyiségéről. Figyelni kell arra, hogy ha egy termék már megérkezett, de még nem adták el, akkor ehhez a rekordhoz az output_sum cella üres lesz. Azt is meg kell jegyezni, hogy ez a lekérdezés csak egy példa a vonatkozó felhasználásra összetett lekérdezések részlekérdezésként. Ennek a teljesítménye SQL lekérdezés nál nél nagy térfogatú az adatok kétségesek:

KIVÁLASZTÁS *
TÓL TŐL
SZUM(összeg*ár) AS bevétel_összeg
ON a.product_id=b.id CSOPORT BY beszállítói_azonosító, termékazonosító) AS a
BAL CSATLAKOZÁS
(SELECT szállítóazonosító, termékazonosító, SUM(összeg) AS összeg_összeg,
SZUM(összeg*ár) AS eredmény_összeg
FROM m_outcome MINT BELSŐ JOIN m_product AS b
ON a.product_id=b.id CSOPORT BY beszállítói_azonosító, termékazonosító) AS b
BE (a.product_id=b.product_id) ÉS (a.supplier_id=b.supplier_id);

Kérje a Q034-et. Ebben a példában a fenti két lekérdezést (q031 és q032) használjuk segédlekérdezésként. Ezeknek a lekérdezéseknek az eredményeit a RIGTH JOIN metódussal egyetlen jelentésbe egyesítjük. A következő lekérdezés egy jelentést nyomtat ki az egyes ügyfelek által az általuk használt fizetési rendszerekre befizetett összegekről és az általuk végrehajtott befektetések összegéről. A következő lekérdezés jelentést jelenít meg az egyes szállítóknál beérkezett és eladott termékek számáról és mennyiségéről. Vegye figyelembe, hogy ha egy terméket már eladtak, de még nem érkezett meg, akkor a bejegyzés bevételi_összege cellája üres lesz. Az ilyen üres cellák jelenléte az értékesítés elszámolásának hibáját jelzi, mivel az értékesítés előtt először meg kell érkeznie a megfelelő terméknek:

KIVÁLASZTÁS *
TÓL TŐL
(SELECT szállítóazonosító, termékazonosító, SUM(összeg) AS összeg_összeg,
SZUM(összeg*ár) AS bevétel_összeg
FROM m_income MINT BELSŐ CSATLAKOZÁS m_product AS b ON a.product_id=b.id
GROUP BY beszállítói_azonosító, termékazonosító) AS a
JOBB CSATLAKOZÁS
(SELECT szállítóazonosító, termékazonosító, SUM(összeg) AS összeg_összeg,
SZUM(összeg*ár) AS eredmény_összeg
FROM m_outcome MINT BELSŐ CSATLAKOZÁS m_product AS b ON a.product_id=b.id
GROUP BY beszállítói_azonosító, termékazonosító) AS b
BE (a.szállítóazonosító=b.szállítóazonosító) ÉS (a.termékazonosító=b.termékazonosító);

Kérjen Q035-öt. Megjelenik a bevételek és kiadások összegéről termékenkénti jelentés. Ehhez az m_income és m_outcome táblák szerint létrejön egy terméklista, majd ebből a listából minden egyes termékre kiszámolja az m_bevétel tábla szerinti bevételeinek összegét és az m_outcome tábla szerinti kiadásainak összegét:

SELECT termékazonosító, SUM(összegben) AS bevételi_összeg,
SUM(out_amount) AS eredmény_összeg
TÓL TŐL
(VÁLASZTÁSA termékazonosító, AS összeg a_összegben, 0 AS out_amount
M_jövedelemtől
UNION ALL
SELECT termékazonosító, 0 AS összegben, AS kimenő_összeg
FROM m_outcome) AS t
GROUP BY termékazonosító;

Kérjen Q036. Az EXISTS függvény IGAZ értéket ad vissza, ha a neki átadott halmaz tartalmaz elemeket. Az EXISTS függvény FALSE-t ad vissza, ha a neki átadott halmaz üres, azaz nincs eleme. A következő lekérdezés az m_income táblában és az m_outcome táblában is szereplő termékkódokat adja vissza:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE EXISTS(SELECT termékazonosító FROM m_outcome AS b

Kérje a Q037-et. Megjelennek azok a termékkódok, amelyeket az m_income és az m_outcome tábla is tartalmaz:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE product_id IN (SELECT product_id FROM m_outcome)

Kérés Q038. Megjelennek azok a termékkódok, amelyek az m_income táblához hasonlóan szerepelnek, de nem szerepelnek az m_outcome táblában:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE NOT EXISTS(SELECT termékazonosító FROM m_outcome AS b
WHERE b.product_id=a.product_id);

Kérés Q039. Megjelenik a legmagasabb eladási összegű termékek listája. Az algoritmus ez. Minden termékre kiszámolják az eladások összegét. Ezután meghatározzák ezen összegek maximumát. Ezután minden terméknél újra kiszámításra kerül az eladások összege, és megjelenik azon termékek kódja és eladásainak összege, amelyek eladási összege megegyezik a maximummal:

SELECT termékazonosító, SUM(összeg*ár) AS összeg_összeg
FROM m_outcome
GROUP BY product_id
HAVING SUM(összeg*ár) = (SELECT MAX(s_amount)
FROM (SELECT SUM(összeg*ár) AS s_összeg FROM m_outcome GROUP BY product_id));

Kérjen Q040-et. A fenntartott IIF szót (feltételes utasítás) használják az értékeléshez logikai kifejezésés az eredménytől függően (IGAZ vagy HAMIS) hajtson végre egy vagy másik műveletet. A következő példában egy tétel kiszállítása "kicsinek" minősül, ha a mennyiség kisebb, mint 500. Ellenkező esetben, vagyis ha a beérkezési mennyiség nagyobb vagy egyenlő, mint 500, a szállítás "nagynak" minősül:

SELECT dt, product_id, summa,
IIF(összeg<500,"малая","большая") AS mark
FROM m_jövedelem;

SQL lekérdezés Q041. Abban az esetben, ha az IIF utasítást többször használjuk, kényelmesebb a SWITCH utasítással helyettesíteni. A SWITCH operátor (többszörös választási operátor) egy logikai kifejezés kiértékelésére és az eredménytől függő művelet végrehajtására szolgál. A következő példában a leszállított tételt "kicsinek" tekintjük, ha a tételben lévő áruk mennyisége kevesebb, mint 500. Ellenkező esetben, ha az áruk mennyisége nagyobb vagy egyenlő, mint 500, a tétel "nagynak" minősül. ":

SELECT dt, product_id, summa,
SWITCH(összeg<500,"малая",amount>=500"nagy") AS jel
FROM m_jövedelem;

Kérés Q042. <300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, summa,
IIF(összeg<300,"малая",
IIF(összeg<1000,"средняя","большая")) AS mark
FROM m_jövedelem;

SQL lekérdezés Q043. A következő lekérdezésnél, ha a bejövő kötegben lévő áru mennyisége 300-nál kisebb, akkor a tétel "kicsinek" minősül. Ellenkező esetben, ha a feltétel összegét<300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, summa,
SWITCH(összeg<300,"малая",
összeg<1000,"средняя",
összeg>=1000"nagy") AS jel
FROM m_jövedelem;

SQL lekérdezés Q044. A következő lekérdezésben az értékesítések három csoportra oszthatók: kicsi (150-ig), közepes (150-300), nagy (300 és több). Ezután minden csoportra kiszámítják a teljes összeget:

SELECT kategória, SUM(outcome_sum) AS Ctgry_Total
FROM (SELECT összeg*ár AS eredmény_összeg,
IIf(összeg*ár<150,"малая",
IIf(összeg*ár<300,"средняя","большая")) AS Category
FROM m_outcome) AS t
GROUP BY Kategória;

SQL lekérdezés Q045. A DateAdd funkció arra szolgál, hogy egy adott dátumhoz napokat, hónapokat vagy éveket adjon, és új dátumot kapjon. Következő kérés:
1) 30 napot ad a dátumhoz a dt mezőből, és megjeleníti az új dátumot a dt_plus_30d mezőben;
2) adjon hozzá 1 hónapot a dátumhoz a dt mezőből, és jelenítse meg az új dátumot a dt_plus_1m mezőben:

SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m
FROM m_jövedelem;

SQL lekérdezés Q046. A DateDiff függvényt arra tervezték, hogy kiszámítsa két dátum közötti különbséget különböző mértékegységekben (napok, hónapok vagy évek). A következő lekérdezés kiszámítja a dt mezőben lévő dátum és az aktuális dátum közötti különbséget napokban, hónapokban és években:

SELECT dt, DateDiff("d",dt,Date()) AS utolsó_nap,
DateDiff("m",dt,Date()) AS utolsó_hónapok,
DateDiff("yyyy",dt,Date()) AS utolsó_évek
FROM m_jövedelem;

SQL lekérdezés Q047. Az áru beérkezésének napjától (m_bevétel tábla) az aktuális dátumig eltelt napok számát a DateDiff függvénnyel számítjuk ki, és összehasonlítjuk a lejárati dátumot (m_product táblázat):


DateDiff("d",dt,Date()) AS utolsó_napok
FROM m_income MINT BELSŐ JOIN m_product AS b
ON a.product_id=b.id;

SQL lekérdezés Q048. Kiszámítja az áru átvételétől az aktuális dátumig eltelt napok számát, majd ellenőrzi, hogy ez a szám meghaladja-e a lejárati dátumot:

SELECT a.id, product_id, dt, lifedays,
DateDiff("d",dt,Date()) AS utolsó_napok, IIf(utolsó_napok>életnapok,"Igen","Nem") AS date_expire
FROM m_income a BELSŐ JOIN m_product b
ON a.product_id=b.id;

SQL lekérdezés Q049. Az áru átvételétől az aktuális dátumig eltelt hónapok száma kerül kiszámításra. A month_last1 oszlop a hónapok abszolút számát, a month_last2 oszlop pedig a teljes hónapok számát:

SELECT dt, DateDiff("m",dt,Date()) AS hónap_utolsó1,
DateDiff("m",dt,Dátum())-iif(nap(dt)>nap(dátum()),1,0) AS hónap_utolsó2
FROM m_jövedelem;

SQL lekérdezés Q050. Megjelenik egy negyedéves jelentés a 2011-re beérkezett áruk mennyiségéről és mennyiségéről:

SELECT kvartal, SUM(outcome_sum) AS Összesen
FROM (SELECT összeg*ár AS eredmény_összeg, hónap(dt) AS m,
SWITCH(m<4,1,m<7,2,m<10,3,m>=10,4) AS kvartal
FROM m_jövedelem WHERE év(dt)=2011) AS t
GROUP BY blokk;

Kérés Q051. A következő lekérdezés segít kideríteni, hogy a felhasználóknak sikerült-e az áruk átvételének összegénél nagyobb összegű árufogyasztással kapcsolatos információkat bevinniük a rendszerbe:

SELECT product_id, SUM(in_sum) AS bevételi_összeg, SUM(out_sum) AS output_sum
FROM (SELECT termékazonosító, összeg*ár mint in_sum, 0 mint out_sum
m_jövedelemből
UNION ALL
SELECT termékazonosító, 0 mint in_sum, summa*price mint out_sum
m_outcome-ból) AS t
GROUP BY product_id
HAVING SUM(összegben)

Kérés Q052. A lekérdezés által visszaadott sorok számozása többféleképpen valósul meg. Például átszámozhatja az MS Accessben készített jelentés sorait magának az MS Access-nek a használatával. A programozási nyelvek, például a VBA vagy a PHP segítségével is újraszámozhat. Néha azonban ezt magában az SQL-lekérdezésben kell megtenni. Tehát a következő lekérdezés számozza az m_income tábla sorait az ID mező értékeinek növekvő sorrendjében:

SELECT COUNT(*) mint N, b.id, b.product_id, b.amount, b.price
FROM m_income a BELSŐ CSATLAKOZÁS m_income b ON a.id<= b.id
GROUP BY b.id, b.product_id, b.amount, b.price;

Kérés Q053. A termékek közül az eladások alapján az első öt helyezett jelenik meg. Az első öt rekord kimenete a TOP utasítással történik:

SELECT TOP 5, product_id, sum(összeg*ár) AS összeg
FROM m_outcome
GROUP BY product_id
ORDER BY összeg(összeg*ár) DESC;

Kérjen Q054-et. Megjelenik a termékek közül az eladások alapján az első öt helyezett, és ennek eredményeként a sorok meg vannak számozva:

SELECT COUNT(*) AS N, b.product_id, b.summa
TÓL TŐL

FROM m_outcome GROUP BY product_id) AS a
BELSŐ ÖSSZEKAPCSOLÁS
(SELECT termékazonosító, összeg(összeg*ár) AS összeg,
summa*10000000+product_id AS id
FROM m_outcome GROUP BY product_id) AS b
ON a.id>=b.id
GROUP BY b.product_id, b.summa
SZÁMOLVA (*)<=5
RENDEZÉS SZÁM SZERINT(*);

Kérés Q055. A következő SQL lekérdezés a COS, SIN, TAN, SQRT, ^ és ABS matematikai függvények használatát mutatja be az MS Access SQL-ben:

KIVÁLASZTÁS (a szám(*) kiválasztása az m_jövedelemből) N-ként, 3,1415926 mint pi, k,
2*pi*(k-1)/N mint x, COS(x) mint COS_, SIN(x) mint SIN_, TAN(x) mint TAN_,
SQR(x) mint SQRT_, x^3 mint "x^3", ABS(x) mint ABS_
FROM (SELECT COUNT(*) AS k
FROM m_income MINT BELSŐ JOIN m_income AS b ON a.id<=b.id
GROUP BY b.id) t;

Valójában az MS Access bármely lekérdezése SQL nyelven valósul meg. A legtöbb lekérdezés összeállítható az Access által tervezési módban biztosított eszközökkel, ebben az esetben a rendszer SQL utasításként tárolja őket. De bizonyos típusú lekérdezések csak az SQL nyelv használatával hozhatók létre.

A SELECT utasítás szintaxisa az MS Accessben. Az SQL nyelv magja a SELECT utasítás. Az adatbázistáblák sorainak és oszlopainak kiválasztására szolgál, és öt fő záradékot tartalmaz. Általában a szintaxis a következőképpen ábrázolható:

TÓL TŐL<список-таблиц>

Az MS Access fontos nyelvbővítő eszközöket valósít meg: a TRANSFORM utasítást, amely lehetővé teszi keresztlekérdezések felépítését; egy IN záradék, amely egy távoli adatbázishoz való kapcsolatot, vagy a keresztlekérdezések oszlopainak nevét adja meg stb. Szintaxis:

[[(táblanév | lekérdezésnév kiválasztása | álnév)!]].][mezőnév]

táblanév, lekérdezésnév kiválasztása És álnév, a mezőnév megadásának szerepelnie kell a lekérdezés FROM záradékában. Ha a táblának vagy lekérdezésnek van álneve, akkor ezt az álnevet kell használnia, nem pedig a tábla vagy lekérdezés tényleges nevét.

A név első része (beleértve a pontot is) elhagyható, ha a mező csak az egyik táblában létezik a FROM záradékban.

A mezőlista definiálásakor a mező neve helyett a "*" karakter használata azt jelzi, hogy az adott táblázat összes oszlopát meg kell jeleníteni. Ha a mezők listájaként a "*" karaktert használjuk, akkor a FROM záradékban megadott összes tábla összes oszlopa ki van jelölve.

10.5. példa. A következő kifejezés nullát ad meg a [Termékek] táblából, amelynek neve Név:

Áruk. Név

FROM záradék. Megadja azokat a táblákat vagy lekérdezéseket, amelyek adatforrásként fognak szolgálni a generált lekérdezéshez. Szintaxis:

FROM (táblanév [[ MINT] alias] I

select-query-name [alias] I

<таблица-объединения>] ...

[BAN BEN forrás specifikáció>]

Ahol<таблица-объединения>:

(táblanév [[ MINT] alias] I

select-query-name [[ MINT] alias] I

(<таблица-объединения>)}

(BELSŐ I LEFT I RIGHT] CSATLAKOZÁS

(táblanév [[ MINT] alias] I

select-query-name [[ MINT] alias] I

(<таблица-объединения>)}

TOVÁBB <условие объединения>

Minden táblához és lekérdezéshez megadhat egy alternatív nevet. A teljes táblanév helyett álnévként használatos, amikor oszlopneveket ad meg a mezőlistában, a csatlakozási feltételben és a WHERE záradékban.

10.6. példa. A következő lekérdezés megjeleníti a Termékek táblázat összes mezőjét:

10.7. példa. A következő lekérdezés azokat a termékeket jeleníti meg, amelyek ára meghaladja a 100 dollárt, és 36 hónapos garanciával rendelkeznek:

A termékekből

WHERE Termékek.Ár > 100 ÉS Termékek.[Garanciaidő] = 36;

Az SQL nyelv nagy ereje nagyrészt azon a képességén alapszik, hogy képes több táblából vagy lekérdezésből származó információkat kombinálni.

A FROM záradék a JOIN műveletet használja annak meghatározására, hogy a táblák milyen logikai rekordhalmazba kapcsolódnak, amelyből a szükséges információk kiválasztásra kerülnek.

Az INNER JOIN művelet arra szolgál, hogy mindkét logikai táblából megkapja az összes olyan sort, amely megfelel az összekapcsolási feltételnek.

A LEFT JOIN művelet visszaadja az első logikai tábla összes sorát a második azon soraival egyesítve, amelyek megfelelnek az összekapcsolási feltételnek.

Hasonlóképpen, a RIGHT JOIN művelet visszaadja a második logikai tábla összes sorát az első tábla azon soraival egyesítve, amelyek megfelelnek az összekapcsolási feltételnek.

<Условие объединения>– olyan kifejezés, amelyben az első tábla mezőit összehasonlítjuk a második tábla mezőivel. A QBE lekérdezéstervben csak az egyenlő (=) operátor kerül felhasználásra az összekapcsolási feltételben. Lekérdezés a táblák egyenlőtlenség alapján történő összekapcsolásán (<, >, <>, <= или >=) csak SQL módban hozható létre.

10.8. példa. A következő lekérdezés információkat jelenít meg a Citii i nk raktárairól:

SELECT Raktárak. Raktárszám, Raktárak. Cím,

Raktárak.Telefon

Cégektől BELSŐ JOIN Raktárak

ON Companies.CompanyCode = Warehouses.CompanyCode

WHERE Companies.Name = "Citilink";

10.9. példa. A lekérdezés megjeleníti a még el nem adott áruk listáját, feltüntetve az áruk nevét és a raktárok számát, ahol azokat tárolják:

SELECT Áruk.Leírás, Tárolás.Raktárszám

LEFT JOIN Sales ON Storage.ID = Sales.ID

WHERE ((Sales.Quantity) Null);

10.10. példa. A következő művelet a "Termékek" és a "Tárolás" táblák összes olyan sorát adja vissza, amelyeknek azonos értékei vannak az ItemID mezőben:

Áruk BELSŐ CSATLAKOZÁSA Tárolás az árukon.ItemCode =

Storage.ProductCode

A LEFT JOIN művelet az előző BELSŐ CSATLAKOZÁS művelet eredményeként kapott tábla összes sorát visszaadja, az Értékesítési tábla azon soraival egyesítve, amelyekhez az összekapcsolási feltétel teljesül. Ekkor a nem értékesített cikk sorában az [Eladott cikk mennyisége] mezőben a Null érték lesz, amely a keresett lista kiválasztási feltétele lesz.

GROUP BY záradék. A SELECT utasításban megadja a kiválasztott sorokból csoportok létrehozásához használt oszlopokat. Szintaxis:

GROUP BY oszlopnév,...

A GROUP BY operátor csoportokra osztja a kérdéses táblát úgy, hogy ezen csoportok bármelyikén belül minden sor ugyanazt az értéket tartalmazza a megadott oszlopban.

10.11. példa. A következő lekérdezés az egyes cikkeknél eladott cikkek teljes számát jeleníti meg:

KIVÁLASZTOTT termékek. Név, Összeg (Eladás. Mennyiség)

FROM (Termékek INNER JOIN Tárolás

ON Goods.ItemCode = Storage.ItemCode)

BELSŐ JOIN Sales ON Storage.U=Sales.ID

GROUP BY Products.Name;

VAN ajánlat. Ez a WHERE záradék egy speciális formája. Nem az egyes sorokra, hanem a csoportokra vonatkozik: a HAVING záradék predikátuma mindig a csoportok tulajdonságaira hivatkozik (például a SET speciális könyvtári függvényeken keresztül) nem a sorokra, és ez alapján a predikátum vagy egész csoportok kerülnek kiválasztásra, ill. eldobva.. Szintaxis:

HAVING "kiválasztási feltétel>

GROUP BY záradék hiányában a kiválasztási feltétel a SELECT utasítás által meghatározott teljes logikai táblára vonatkozik.

Példa 10.12. A következő lekérdezés a 2003. december 10. és december 20. között eladott cikkek teljes számát jeleníti meg:

SELECT Sales.Date, Eit(Sales.Quantity)

Az értékesítésből

GROUP BY Sales.Date

HAVING ((Sales.Date) #10.12.03# ÉS között

RENDELÉS záradék szerint. Megadja, hogy a SELECT utasítás milyen sorrendben adja vissza a sorokat. Szintaxis:

ORDER BY (oszlopnév I oszlopszám ),...

Az ORDER BY záradék határozza meg, hogy a kijelölés eredménye az attribútumértékek növekvő (ASC) vagy csökkenő (DESC) sorrendjében legyen-e rendezve. Egy ORDER BY záradékban több oszlopot is megadhat. A lista először annak az oszlopnak az értékei szerint rendeződik, amelynek a nevét először adjuk meg.

10.13. példa. A következő lekérdezés megjeleníti az ár szerint rendezett termékek listáját:

SELECT Áruk.Név, Áruk.Ár

A termékekből

RENDELÉS Termékek szerint.Ár DESC;

SELECT utasítás. Kijelölési és összekapcsolási műveleteket hajt végre logikai tábla (rekordkészlet) létrehozásához más táblák vagy lekérdezések alapján. A SELECT utasítás szintaxisát fentebb általánosságban tárgyaltuk. Nézzük meg részletesebben:

KIVÁLASZTÁS]<список-полей>

Predikátumok ALL, DISTINCT, DISTINCTROW, TOP n vagy TOP n PERCENT finomítja a lekérdezési rekordok végső készletét.

Az alapértelmezett predikátum az ALL, amely tartalmazza a rekordkészletben található összes sort, amely megfelel a kiválasztási feltételeknek, beleértve a duplikátumokat is.

A DISTINCT predikátum megköveteli, hogy a lekérdezés csak olyan sorokat adjon vissza, amelyek különböznek az összes többitől. Ha a SELECT utasítás tartalmazza a DISTINCTROW predikátumot, akkor csak azok a sorok szerepelnek a rekordkészletben, ahol a visszaadott oszlopokban részt vevő összes tábla elsődleges kulcsainak összefűzése egyedi. Attól függően, hogy mely oszlopok vannak a rekordkészletben, előfordulhat, hogy ismétlődő sorok jelennek meg, de akkor is minden lekérdezési sor az alaptáblázatok sorainak (ROWS) egyedi (DISTINCT) kombinációjából jön létre.

Hogy az eredményhalmaz csak az elsőt tartalmazza P vagy először P a rekordok százaléka, használja a TOP predikátumot P vagy TOP P SZÁZALÉK. Paraméter P 100-nál kisebb egész számnak kell lennie, ha a PERCENT kulcsszót használja.

10.14. példa. A következő lekérdezés a 10 legdrágább cikk listáját jeleníti meg:

KIVÁLASZTÁS A TOP 10 Áruk.Név, Áru.Ár

A termékekből

RENDELÉS Termékek szerint.Ár DESC;

Allekérdezés (beágyazott kijelölés). Az SQL nyelv lehetővé teszi egy másik kijelölés eredményeinek felhasználását a kiválasztási feltételben. A beágyazódásnak több szintje is lehet.

10.15. példa. A következő lekérdezés megjeleníti azon processzorok listáját, amelyek ára az átlagos processzorár alatt van:

SELECT Áruk.Név, Áruk.Ár

A termékekből

WHERE ((Products.Description) Mint "százalék*") ÉS

((Goods.L(eHa)<(SELECT Ауд(Товары.Цена) AS СредняяЦена

A termékekből

WHERE ((Termékek.Leírás) Mint "százalék*")));

A kérésnek pontosvesszővel kell végződnie.

Az MS Access DBMS alkalmazás egy komplett asszisztens a táblákba és tömbökbe zárt adatbázisok létrehozásához és karbantartásához. Ha az adatbázis túl nagy, akkor meglehetősen nehéz gyorsan megtalálni a szükséges értékeket.

Ezért van az Access olyan funkcióval, mint a lekérdezések. Fontolja meg, mi ez, hogyan működik, milyen funkciókkal rendelkezik.

Hozzon létre lekérdezéseket a Microsoft Accessben

Ahhoz, hogy megtudja, hogyan hozhat létre lekérdezéseket az Accessben, ismernie kell az adatbázis-kezelő rendszerrel való munka alapjait.

Ennek az eljárásnak két módja van:

  • Lekérdezés konstruktor.
  • Lekérdezés varázsló.

Az első módszer lehetővé teszi, hogy az összes elérhető lekérdezés közül bármelyiket manuálisan hozzon létre, de egy kis fenntartással, azaz, hogy a felhasználónak van tapasztalata az Access alkalmazással kapcsolatban. Meg kell értenie legalább a fő feladatait is. Ami a második módszert illeti, azt részletesebben meg kell vizsgálni.

Könnyű módszer kezdőknek

Egy hozzáértő személy néhány kattintással kiválasztja azokat az összetevőket, amelyekre a felhasználónak szüksége lesz a kérés teljesítéséhez, majd az összegyűjtött kulcsértékeknek megfelelően gyorsan létrehozza a rendszerleíró adatbázist. Ha ez az első ismerkedés a DBMS-sel, és a felhasználónak fogalma sincs, hogyan hozhat létre lekérdezéseket az Accessben, akkor a Wizard program kerül kiválasztásra.

Ebben a módban a következő típusú kéréseket ismerheti meg:

  • Egyszerű.
  • Kereszt.
  • Feljegyzések beosztottak nélkül.
  • Ismétlődő bejegyzések.

Ez a választás már a varázslóval való munka első szakaszában megtörténik. A jövőben pedig az egyértelmű utasításokat követve még egy kezdő felhasználó is könnyedén létrehozhat kérést. Ismerkedjünk meg fajtáival.

Egyszerű kérés

Ez a táblázatkezelő eszköz a felhasználó által megadott mezőkből gyűjti össze a szükséges adatokat. Már a névből is látszik, hogy ez a legnépszerűbb kéréstípus a kezdők számára. Kényelme abban rejlik, hogy egy ilyen eljárás új lapon nyílik meg. Ezért a varázsló első menüjének megnyitása után nyilvánvalóvá válik a válasz arra a kérdésre, hogy hogyan lehet lekérdezést létrehozni az Access 2010-ben.

Keresztkérelem

Ez a fajta mintavétel bonyolultabb. Ha meg szeretné tudni, hogyan hozhat létre keresztlekérdezést az Accessben a "Varázsló" segítségével ebben a módban, kattintson erre a funkcióra az első ablakban.

A képernyőn megjelenik egy táblázat, amelyben legfeljebb három, az eredetiben található oszlopot választhat ki.

A fennmaradó kijelöletlen mezők egyike használható lekérdezési tábla fejlécként. Az eljárás harmadik szakaszában (metszéspont) egy változékonysági függvénnyel még egy érték kerül kiválasztásra (átlagérték, összeg, első, utolsó).

A képen látható, hogy a keresztkérelem létrejött, és a szükséges műveletek megtörténtek a megadott paraméterek szerint.

Ismétlődő bejegyzések

Ahogy a neve is sugallja, ennek a lekérdezésnek az a fő célja, hogy a megadott paramétereknek megfelelően kijelölje az összes azonos sort a táblázatban. Ez így néz ki:

Ezenkívül további mezők is rendelkezésre állnak, amelyek egyszerre több sort is egyeztethetnek.

Az ismétlődő bejegyzések kiválasztásához ki kell bontania a kérelmek listáját, és új mappát kell létrehoznia ott. Ezután az "Új lekérdezés" mezőben válassza ki a "Rekordok ismétlődésének keresése" sort. Ezután kövesse a varázsló utasításait.

Feljegyzések beosztottak nélkül

Ez az utolsó lekérdezési típus, amely elérhető a Master - Records without Slaves módban.

Ebben az esetben csak azok az értékek kerülnek kiválasztásra, amelyeket a táblák és lekérdezések egyik mezőjében sem használnak, de amelyeket már létrehoztak.

Ez a típus csak több adatbázis esetén releváns.

Mind a négy lekérdezéstípus az összetett elemekkel való munka kiindulópontja, de megkönnyíti a lekérdezés létrehozását az Access-adatbázisban.

Funkciók lekérdezése az MS Accessben

Nézzük meg, miért kell végrehajtania a fent leírt lépéseket. Az Access DBMS-ben az összes egyszerű és összetett lekérdezés célja a következő:

  • A szükséges adatok táblázatokba gyűjtése, utólagos megtekintése, szerkesztése, új értékek hozzáadása.
  • Kiváló forrásanyag mindenféle bejelentőlap elkészítéséhez.
  • Matematikai és statisztikai számlálási eljárások végrehajtása teljes adattömbökön az eredmények képernyőn való megjelenítésével (átlagérték, összeg, eltérés, összesítés).

Minta kérés

Ez a fajta adatbázis-munka összetett, mert több tábla részvételét igényli.

Szükséges, hogy minden táblának legyen közös kulcsmezője. Ellenkező esetben a művelet sikertelen lesz.

Tekintsük át, hogyan lehet kiválasztani lekérdezést az Accessben. Először létre kell hoznia egy egyszerű lekérdezést a kötelező mezők kiválasztásával. Már itt szerkesztheti az adatokat, hogy azok a kívánt formába kerüljenek. Az elvégzett változtatások egyébként átkerülnek az eredeti táblákba, így ezt a pontot figyelembe kell venni.

A tervező megnyílt ablakában a "Táblázatok hozzáadása" ablak megtelik. Itt kell hozzáadnia azokat a táblákat vagy lekérdezéseket, amelyekből az eredeti értékeket le szeretné gyűjteni.

Hozzáadás után megkezdheti az igénylés feltételeinek kitöltését. Ehhez szükségünk van a "Mező" karakterláncra. Ebben ki kell választania azokat az értékeket a táblázatokból, amelyek kérésre megjelennek.

A művelet befejezéséhez kattintson a "Végrehajtás" gombra.

Kérjen paraméterekkel

Ez egy másik típusú összetett eljárás, amely megköveteli a felhasználótól, hogy rendelkezzen bizonyos adatbázis-ismeretekkel. Ennek a tevékenységnek az egyik fő területe a volumetrikus adatokat tartalmazó riportok készítésének előkészítése, valamint az összesítő eredmények megszerzése. Az alábbiakban bemutatjuk, hogyan hozhat létre lekérdezéseket az Access 2007-ben a tervező segítségével.

Ezt az adatkiválasztási eljárást egy egyszerű lekérdezés létrehozásával kell elindítani a szükséges mezők kiválasztásához. Továbbá a Tervezés módban ki kell tölteni a "Kiválasztási feltétel" mezőt, és a beírt érték alapján megtörténik a kiválasztás.

Így arra a kérdésre, hogy hogyan lehet lekérdezést létrehozni egy paraméterrel az Accessben, a válasz egyszerű - a kiválasztás kezdeti paramétereinek megadása. A Tervezővel való együttműködéshez a Lekérdezés varázslót kell használnia. Ott jönnek létre a szűréshez szükséges elsődleges adatok, amelyek a további munka alapjául szolgálnak.

Speciális keresztlekérdezés

Tovább bonyolítjuk a helyzetet. Még nehezebb megérteni, hogyan lehet lekérdezéseket létrehozni az Accessben, ha több adattábla is van. A keresztkérést fentebb már tárgyaltuk, mint a varázslóval való együttműködés egyik lehetőségét. A "Tervezés" módban azonban létrehozhat hasonló lekérdezést.

Ehhez kattintson a "Query Builder" - "Cross" elemre.

Megnyílik a forrástáblázatok hozzáadásának menüje, valamint az egyéni mezők kitöltésének lehetősége. Az egyetlen dolog, amire figyelni kell, az a "csoportos művelet" és a "keresztezés". Ezeket helyesen kell kitölteni, különben az eljárás nem lesz megfelelően végrehajtva.

A keresztlekérdezések a legegyszerűbb módja annak, hogy több adatforrásból megkeressük és lekérjük az információkat, valamint lehetőség nyílik diagramok és grafikonok létrehozására.

Ráadásul ennek az eljárásnak a használatakor a keresés gyorsabb, akár több fejlesztési lehetőség mellett is.

Természetesen vannak "buktatók" is, amelyek megzavarhatják a munkát. Például amikor lekérdezést hoz létre egy adatbázis oszlopérték szerinti rendezésére, a rendszer hibát generál. Vagyis csak szabványos tételek szerinti rendezés érhető el - „növekvő és csökkenő”.

Összefoglalva, azt kell mondani, hogy a felhasználó dönti el, hogyan hoz létre lekérdezéseket az Accessben - a varázsló vagy a tervező segítségével. Bár a legtöbb MS Access DBMS-t használó ember számára az első lehetőség megfelelőbb. Hiszen a varázsló minden munkát maga végez, csak néhány egérkattintást hagy a felhasználónak a lekérdezési feltételek kiválasztásakor.

A speciális beállítások használatához egyértelműen professzionális adatbázis-tapasztalat szükséges. Ha nagy adatbázisok vesznek részt a munkában, a legjobb, ha szakemberhez fordul, hogy elkerülje a DBMS megszakítását és az esetleges adatvesztést.

Van egy pont, amely csak a programozók számára elérhető. Mivel a DBMS fő nyelve az SQL, a kívánt lekérdezés programkód formájában írható. Ha ebben a módban szeretne dolgozni, kattintson a már létrehozott lekérdezés sorára, és a megnyíló helyi menüben válassza az "SQL mód" lehetőséget.

A lekérdezés a legegyszerűbb esetben egy táblázatból valósítja meg a szükséges mezők, a megadott kiválasztási feltételeknek megfelelő rekordok kiválasztását és a lekérdezés eredményeinek megtekintését.

Kiválasztási lekérdezések tervezése kiválasztási feltételekkel

Tekintsük az Accessben a kiválasztási lekérdezéseket az Áruellátás adatbázis ÁRUK táblájából való információszerzés példájával.

1. feladat. Tegyük fel, hogy egy termék számos jellemzőjét a neve alapján kell kiválasztani.

  1. Lekérdezés létrehozásához az adatbázis ablakban válassza ki a szalag fület - Teremtés(Létrehozás) és csoportban Kérések(Lekérdezések) kattintson Lekérdezéskészítő(Query Design). Tervező nézetben egy üres kiválasztási lekérdezési ablak nyílik meg - KérelemN(QueryN) és párbeszédpanel Táblázat hozzáadása(Táblázat megjelenítése) (4.2. ábra).
  2. Az ablakban Táblázat hozzáadása(Táblázat megjelenítése) válassza ki a TERMÉK táblázatot, és kattintson a gombra Hozzáadás(Hozzáadás). A kiválasztott tábla megjelenik a lekérdezési adatséma területen. Csukd be az ablakot Táblázat hozzáadása(Táblázat megjelenítése) a gomb megnyomásával Bezárás(Bezárás).

A lekérdezéstervező ablakban (4.1. ábra) végrehajtott műveletek eredményeként a felső panelen megjelenik a lekérdezési adatséma, amely az ehhez a lekérdezéshez kiválasztott táblákat tartalmazza. Ebben az esetben egy asztal TERMÉK. A táblázatot mezők listája képviseli. A táblázat mezőinek listájának első, csillaggal (*) jelölt sora a táblázat mezőinek teljes halmazát jelöli. Az alsó panel egy kitöltendő űrlap.

Emellett megjelenik és automatikusan aktiválódik egy új fül a szalagon (Lekérdező eszközök | Tervezés) (a 4.3. ábrán ennek a lapnak egy része látható), amelyen a létrehozott lekérdezés típusa színnel kiemelve - Minta(Válassza ki). Így alapértelmezés szerint mindig egy kiválasztási lekérdezés jön létre. A lapon található parancsok eszközöket biztosítanak a lekérdezés létrehozásakor szükséges műveletek végrehajtásához. Ez a lap akkor nyílik meg, ha tervezési módban új lekérdezést hoz létre, vagy egy meglévőt szerkeszt.

  1. Bármely tábla eltávolításához a lekérdezési adatsémából vigye rá az egérmutatót, és nyomja meg a billentyűt. Hozzáadáshoz - kattintson a gombra Kijelző táblázat(Show Table) egy csoportban Lekérdezés beállítása(Lekérdezés beállítása) fülre Munka kérésekkel | Konstruktőr(Lekérdező eszközök | Tervezés), vagy futtassa a parancsot Táblázat hozzáadása(Táblázat megjelenítése) a helyi menüben hívja meg a lekérdezési adatsémát.
  2. A konstruktor ablakában (4.4. ábra) a TERMÉK tábla mezőinek listájából húzza egymás után a LEARN_TOV, PRICE, AVAILABILITY_TOV mezőket az igénylőlap oszlopaiba a sorba. Terület(terület).
  3. A táblázat kívánt mezőinek a lekérdezés megfelelő oszlopaiba történő felvételéhez a következő technikákat használhatja:
    • az igénylőlap első sorában Terület(Mező) egérkattintással jelenítse meg a lista gombot, és válassza ki a kívánt mezőt a listából. A lista a lekérdezési adatsémában megjelenített táblák mezőit tartalmazza;
    • kattintson duplán a tábla mező nevére a lekérdezési adatsémában;
    • Ha az összes mezőt bele akarja foglalni egy táblázatba, húzza vagy kattintson duplán a * (csillag) szimbólumra a lekérdezési adatséma táblázatmezőinek listájában.
  4. Ha tévedésből húzott egy felesleges mezőt a kérés űrlapon, törölje azt. Ehhez vigye a kurzort felülről az oszlopjelölő területre, ahol egy lefelé mutató fekete nyíl formájában jelenik meg, majd kattintson az egérgombbal. Az oszlop kiemelve lesz. Nyomjon meg egy billentyűt vagy futtasson egy parancsot Oszlopok eltávolítása(Oszlopok törlése) egy csoportban Lekérdezés beállítása(Lekérdezés beállítása).
  5. Sorban Kimenet a kijelzőn(Megjelenítés) ellenőrizze a mezőket, különben nem kerülnek be a lekérdezési táblába.
  6. Írj sorban Kiválasztási feltételek(Kritérium) terméknév, amint az a 2. ábrán látható igénylőlapon látható. 4.4. Mivel a kiválasztási feltételben szereplő kifejezés nem tartalmaz operátort, alapértelmezés szerint az = operátor használatos. A kifejezésben használt szöveges érték dupla idézőjelbe kerül, amely automatikusan hozzáadódik.
  7. Futtassa a lekérdezést a Futtatás vagy a Nézet gombra kattintva az Eredmények csoportban. A képernyőn táblázat módban egy lekérdező ablak jelenik meg a TERMÉK tábla egy rekordjával, amely megfelel a megadott kiválasztási feltételeknek.

MEGJEGYZÉS
A táblanézet lekérdezési ablaka hasonló az adatbázis táblanézet ablakához. A lekérdezés egyes tábláin keresztül a lekérdezés alapjául szolgáló alaptábla adatai módosíthatók. Az adatlap nézetben megtekintett lekérdezés az Access 2010 adatbázistáblával ellentétben nem tartalmaz oszlopot Kattintson a hozzáadáshoz(Kattintson a Hozzáadáshoz), amelynek célja a táblázat szerkezetének megváltoztatása. Ebben az üzemmódban a szalaglapon itthon(Kezdőlap) ugyanazok a gombok érhetők el, mint az adatbázistábla megnyitásakor.

  1. Ha az összetett terméknév megadásakor pontatlanságot követett el, a termék nem található a táblázatban. Sablonoperátorok használata - csillag (*) és kérdőjel (?) (ANSI-89 szabvány, alapértelmezés szerint a lekérdezésekhez használatos) vagy százalékjel (%) és aláhúzás (_) (ANSI-92, SQL Server szabványként ajánlott) , megkönnyíti a megfelelő húrok megtalálását, és sok hibát elkerül. A teljes terméknév helyett írja be a Case* vagy a Case% értéket. Töltse ki a kérést. Ha a terméknév mezőben egy érték "Case" szóval kezdődik, akkor a lekérdezés eredménye ugyanaz lesz, mint az előző esetben. A lekérdezés végrehajtása után a beírt kifejezés kiegészül a Like "Body*" operátorral. Ez az operátor lehetővé teszi helyettesítő karakterek használatát szövegmezőkben történő kereséskor.
  2. Ha több elemet kell keresnie, használja az In operátort. Lehetővé teszi az egyenlőség tesztelését a listából bármely értékkel, amely zárójelben van megadva. Írja be a kiválasztási feltételek sorába ("MiniTower case";"HDD Maxtor 20GB";"FDD 3,5"). A lekérdezési táblázat három sort fog megjeleníteni. Az In utasítás nem engedélyezi a helyettesítő karaktereket.
  3. Mentse el a lekérdezést a fülre kattintva Fájl(Fájl) és futtassa a parancsot Megment(Megment). Az ablakban Megőrzés(Mentés másként) írja be a lekérdezés nevét Példa1. Vegye figyelembe, hogy a lekérdezés neve nem csak a meglévő lekérdezések nevével, hanem az adatbázisban lévő táblák nevével sem egyezhet meg.
  4. Zárja be az aktuális kérést a helyi menü parancsával Bezárás(Bezárás) vagy a lekérdező ablak gombra kattintva Bezárás(Bezárás).
  5. A mentett lekérdezés végrehajtásához jelölje ki a lekérdezést a navigációs ablakban, és válassza ki a parancsot a helyi menüből Nyisd ki(Nyisd ki).
  6. Lekérdezés szerkesztéséhez válassza ki azt a navigációs területen, és futtassa a parancsot a helyi menüben Konstruktőr(DesignView).

2. feladat. Olyan árukat kell választani, amelyek ára nem haladja meg az 1000 rubelt, és az áfa nem haladja meg a 10% -ot, valamint olyan árukat, amelyek ára meghaladja a 2500 rubelt. Az eredménynek tartalmaznia kell a termék nevét (NAME_TOV), árát (PRICE) és áfáját (RATE_VAT).

  1. Hozzon létre egy új lekérdezést tervezési módban, adja hozzá a TERMÉK táblát. A konstruktor ablakban (4.5. ábra) húzza egymás után az ÁRU táblázat mezőinek listájából a lekérdezéshez a LEARN_TOV, PRICE, RATE_VAT mezőket.
  2. írd le Kiválasztási feltételekábrán látható igénylőlapon (kritériumok) látható. 4.5. Az azonos sorba írt feltételek között logikai ÉS műveletet hajtanak végre. A különböző sorokba írt feltételek között a VAGY logikai művelet kerül végrehajtásra.
  3. Futtassa a lekérdezést, kattintson a gombra Fuss(Fuss) egy csoportban eredmények(eredmények). A képernyőn táblázat módban egy lekérdező ablak jelenik meg a TERMÉK tábla azon rekordjaival, amelyek megfelelnek a megadott kiválasztási feltételeknek.
  4. Mentse el a kérést a megfelelő parancs végrehajtásával a kérelem helyi menüjében, amely akkor kerül meghívásra, amikor a kurzor a kérés fejlécén áll. Adj neki nevet Példa2.

3. feladat. Legyen szükséges egy adott időszakra vonatkozó összes számlát kiválasztani. Az eredménynek tartalmaznia kell a számlaszámot (NOM_NAK), a raktárkódot (CODE_SK), a szállítás dátumát (DATE_SHIPP) és a kiszállított áru összértékét (AMOUNT_INC).

  1. Hozzon létre egy új lekérdezést tervezési módban, adja hozzá a INVOICE táblát. A tervezőablakban egymás után húzza át az összes kötelező mezőt a SZÁMLA tábla mezőinek listájából az igénylőlapra.
  2. A sorban lévő DATE_OTGR mezőhöz Kiválasztási feltételek(Kritériumok) írd le a #11.01.2008# és #31.03.2008# között. A Between operátor megad egy dátumintervallumot (az ANSI-92-ben a # jel helyett egyszeres idézőjelek ' vannak használatban). Ezenkívül ez az operátor lehetővé teszi egy numerikus érték intervallumának megadását.

A javításhoz nézze meg az oktatóvideót:

Az MS Accessben adatbázisokat, táblákat, űrlapokat és egyéb jelentéseket hozhat létre. Ez a cikk segít a felhasználónak SQL-lekérdezések futtatásában az MS Accessben. Ugyanazokat a lekérdezéseket futtathatja, amelyeket az SQL-ben használ az adatok adatbázisból való lekéréséhez. Ez a cikk azoknak a felhasználóknak szól, akik most kezdték el az MS Access tanulását, és SQL-lekérdezéseket szeretnének futtatni az MS Accessben. A továbblépéshez szükséges egyetlen feltétel a szervezetben használt adatbázishoz való hozzáférés elérhetősége.

Lépések


Mire lesz szüksége

  • A felhasználónak hozzáféréssel kell rendelkeznie a szervezet adatbázisához
  • A felhasználó kapcsolatba léphet a technológiai támogatással, mielőtt lekérdezést indítana az MS Accessen keresztül

Cikk információi

Ezt az oldalt 4443 alkalommal tekintették meg.

Hasznos volt ez a cikk?

Minden webfejlesztőnek ismernie kell az SQL-t ahhoz, hogy adatbázis-lekérdezéseket írhasson. És bár a phpMyAdmin nem lett törölve, az alacsony szintű SQL írásához gyakran be kell piszkolni a kezét.

Ezért készítettünk egy rövid ismertetőt az SQL alapjairól. Kezdjük el!

1. Hozzon létre egy táblázatot

A CREATE TABLE utasítás táblák létrehozására szolgál. Az argumentumoknak az oszlopok nevének és adattípusának kell lenniük.

Hozzunk létre egy egyszerű táblázatot, melynek neve hónap. 3 oszlopból áll:

  • id– A hónap száma a naptári évben (egész szám).
  • név– A hónap neve (karakterlánc, maximum 10 karakter).
  • napok– Napok száma ebben a hónapban (egész szám).

Így nézne ki a megfelelő SQL-lekérdezés:

CREATE TABLE hónapok (id int, név varchar(10), napok int);

Táblázatok létrehozásakor is célszerű az egyik oszlophoz elsődleges kulcsot adni. Ez egyedivé teszi a nyilvántartásokat, és felgyorsítja a kiválasztott lekérdezéseket. Legyen esetünkben egyedi a hónap neve (oszlop név)

TÁBLÁZAT LÉTREHOZÁSA hónapok (id int, név varchar(10), napok int, PRIMARY KEY (name));

dátum és idő
AdattípusLeírás
DÁTUMDátumértékek
DÁTUM IDŐDátum és idő értékek perc pontossággal
IDŐIdőértékek

2. Sorok beszúrása

Most pedig töltsük ki a táblázatunkat hónapok hasznos információ. A rekordok táblához való hozzáadása az INSERT utasításon keresztül történik. Ezt az utasítást kétféleképpen írhatjuk meg.

Az első módszer az, hogy nem adjuk meg azoknak az oszlopoknak a nevét, ahová az adatokat beillesztjük, hanem csak az értékeket adjuk meg.

Ez a jelölés egyszerű, de nem biztonságos, mert nincs garancia arra, hogy a projekt bővítésekor és a táblázat szerkesztése során az oszlopok ugyanabban a sorrendben lesznek, mint korábban. Az INSERT utasítások biztonságosabb (és egyben körülményesebb) írási módja az értékek és az oszlopok sorrendjének megadását igényli:

Itt van a lista első értéke ÉRTÉKEK megegyezik az elsőként megadott oszlopnévvel, és így tovább.

3. Adatok kinyerése táblákból

A SELECT utasítás a legjobb barátunk, amikor adatokat szeretnénk lekérni egy adatbázisból. Nagyon gyakran használják, ezért kérjük, figyelmesen olvassa el ezt a részt.

A SELECT utasítás legegyszerűbb használata egy olyan lekérdezés, amely egy tábla összes oszlopát és sorát adja vissza (például egy táblából karakterek):

SELECT * FROM "karakterek"

A csillag karakter (*) azt jelenti, hogy az összes oszlopból szeretnénk adatokat szerezni. Mivel az SQL adatbázisok általában egynél több táblából állnak, a FROM kulcsszóra van szükség, amelyet egy szóköz követ, majd a tábla neve.

Néha nem akarunk adatokat lekérni egy táblázat nem minden oszlopából. Ehhez a csillag (*) helyett vesszővel elválasztva kell beírnunk a kívánt oszlopok nevét.

SELECT azonosító, név FROM hónap

Ezenkívül sok esetben azt szeretnénk, hogy az eredmények meghatározott sorrendben legyenek rendezve. SQL-ben ezt az ORDER BY paranccsal tesszük. Szükség lehet egy opcionális módosítóra - ASC (alapértelmezett) a növekvő sorrendben, vagy DESC a csökkenő sorrendben:

SELECT id, név FROM hónaptól ORDER BY név DESC

Az ORDER BY használatakor ügyeljen arra, hogy az utolsó legyen a SELECT utasításban. Ellenkező esetben hibaüzenet jelenik meg.

4. Adatszűrés

Megtanulta, hogyan válasszon ki adott oszlopokat egy adatbázisból SQL lekérdezéssel, de mi van akkor, ha bizonyos sorokat is szeretnénk lekérni? Itt segít a WHERE záradék, amely lehetővé teszi az adatok feltétel alapján történő szűrését.

Ebben a lekérdezésben csak azokat a hónapokat jelöljük ki a táblázatból hónap amelyek 30 napnál hosszabbak a nagyobb mint (>) operátor használatával.

SELECT azonosító, név FROM hónap WHERE nap > 30

5. Speciális adatszűrés. ÉS és VAGY operátorok

Korábban egyetlen feltétel alapján szűrtük az adatokat. Bonyolultabb adatszűréshez használhatja az ÉS és VAGY operátorokat, valamint az összehasonlító operátorokat (=,<,>,<=,>=,<>).

Itt van egy táblázat, amely minden idők négy legkelendőbb albumát tartalmazza. Válogassuk ki azokat, amelyek a rocknak ​​minősülnek, és kevesebb mint 50 millió példányban keltek el. Ez könnyen megtehető, ha a két feltétel közé egy ÉS operátort helyezünk.


SELECT * FROM albumok WHERE műfaj = "rock" ÉS eladások_milliókban<= 50 ORDER BY released

6. In/Between/Like

A WHERE számos speciális parancsot is támogat, lehetővé téve a leggyakrabban használt lekérdezések gyors ellenőrzését. Itt vannak:

  • IN - egy sor feltétel megadására szolgál, amelyek bármelyike ​​teljesíthető
  • BETWEEN – Ellenőrzi, hogy az érték a megadott tartományban van-e
  • LIKE - bizonyos mintákat keres

Például, ha albumokat szeretnénk kiválasztani a popÉs lélek zene, használhatjuk az IN("érték1","érték2") -t.

SELECT * FROM albumok WHERE műfaj IN ("pop", "soul");

Ha meg akarjuk szerezni az összes 1975 és 1985 között megjelent albumot, akkor ezt írjuk:

SELECT * FROM albumok WHERE 1975 ÉS 1985 KÖZÖTT;

7. Funkciók

Az SQL tele van olyan funkciókkal, amelyek mindenféle hasznos dolgot végeznek. Íme néhány a leggyakrabban használtak közül:

  • COUNT() - a sorok számát adja vissza
  • SUM() - egy numerikus oszlop teljes összegét adja vissza
  • AVG() - egy értékkészlet átlagértékét adja vissza
  • MIN() / MAX() – A minimális/maximális értéket kéri le egy oszlopból

Ahhoz, hogy táblázatunkban a legutóbbi év szerepeljen, a következő SQL lekérdezést kell írnunk:

SELECT MAX(megjelent) albumokból;

8. Allekérdezések

Az előző bekezdésben megtanultuk, hogyan lehet egyszerű számításokat végezni adatokkal. Ha a számítások eredményét szeretnénk felhasználni, akkor nem nélkülözhetjük a beágyazott lekérdezéseket. Tegyük fel, hogy ki akarjuk adni művész, albumÉs kiadás éve a táblázat legrégebbi albumához.

Tudjuk, hogyan lehet ezeket a konkrét oszlopokat megszerezni:

SELECT előadó, album, megjelent FROM albumokból;

Azt is tudjuk, hogyan szerezzük be a legkorábbi évet:

SELECT MIN(megjelent) FROM album;

Most már csak össze kell kapcsolni a két lekérdezést a WHERE-vel:

SELECT előadó,album,kiadva FROM albumokból WHERE megjelent = (SELECT MIN(megjelent) FROM albumokból);

9. Táblázatok összevonása

Az összetettebb adatbázisokban több tábla is kapcsolódik egymáshoz. Az alábbiakban például két táblázat található a videojátékokról ( videójátékok) és videojáték-fejlesztők ( game_developers).


asztal videójátékok van egy fejlesztői oszlop ( fejlesztői_azonosító), de egy egész számot tartalmaz, nem a fejlesztő nevét. Ez a szám egy azonosító ( id) a megfelelő fejlesztőtől a játékfejlesztői táblázatból ( game_developers) logikusan összekapcsolja a két listát, lehetővé téve, hogy a mindkettőben tárolt információkat egyszerre használjuk fel.

Ha olyan lekérdezést szeretnénk készíteni, amely mindent visszaad, amit a játékokról tudnunk kell, akkor egy INNER JOIN segítségével összekapcsolhatjuk mindkét tábla oszlopait.

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country FROM video_games BELSŐ CSATLAKOZÁS game_developers ON video_games.developer_id = game_developers.id;

Ez a legegyszerűbb és leggyakoribb JOIN típus. Számos más lehetőség is létezik, de ezek ritkább esetekre vonatkoznak.

10. Álnevek

Ha megnézi az előző példát, észre fogja venni, hogy két oszlop van nevezett név. Ez zavaró, ezért állítsunk be egy álnevet az ismétlődő oszlopok egyikéhez, például név az asztaltól game_developers hívják majd fejlesztő.

A lekérdezést a táblanevek álnévvel is lerövidíthetjük: videójátékok hívjuk játékok, game_developers - fejlesztők:

SELECT games.name, games.genre, devs.name AS fejlesztő, devs.country FROM video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Adatfrissítés

Gyakran néhány sorban módosítanunk kell az adatokat. SQL-ben ez az UPDATE utasítással történik. Az UPDATE utasítás a következőkből áll:

  • A pótlási értéket tartalmazó táblázat;
  • Oszlopnevek és új értékeik;
  • A WHERE elemmel kijelölt sorok, amelyeket frissíteni szeretnénk. Ha ez nem történik meg, akkor a táblázat összes sora megváltozik.

Alul a táblázat látható TV sorozat sorozatokkal azok értékelésével. A táblázatba azonban egy apró hiba csúszott: bár a sorozat Trónok harcaés komédiaként írják le, valójában nem az. Javítsuk ki!

tv_series táblázat adatai UPDATE tv_series SET genre = "dráma" WHERE id = 2;

12. Adatok törlése

Egy táblázatsor törlése SQL-lel nagyon egyszerű folyamat. Csak annyit kell tennie, hogy kiválasztja a törölni kívánt táblázatot és sort. Távolítsuk el a táblázat utolsó sorát az előző példából TV sorozat. Ez a >DELETE utasítással történik.

DELETE FROM tv_series WHERE id = 4

Legyen óvatos a DELETE utasítás írásakor, és ügyeljen a WHERE záradék meglétére, ellenkező esetben az összes táblasor törlődik!

13. Táblázat törlése

Ha az összes sort el akarjuk távolítani, de magát a táblázatot elhagyjuk, akkor használjuk a TRUNCATE parancsot:

TRUNCATE TABLE táblanév;

Abban az esetben, ha valóban törölni akarjuk az adatokat és magát a táblát is, akkor a DROP parancs jól jön:

DROP TABLE táblázat_neve;

Legyen nagyon óvatos ezekkel a parancsokkal. Nem vonhatók vissza!/p>

Ezzel az SQL oktatóanyagunk véget ért! Nem sokat foglalkoztunk vele, de amit már tud, annak elegendőnek kell lennie ahhoz, hogy gyakorlati készségeket adjon a webes karrierje során.

Az SQL-lekérdezés egy SQL-utasításokkal létrehozott lekérdezés. Az SQL (Structured Query Language) lekérdezések létrehozására, valamint relációs adatbázisok, például Microsoft Access adatbázisok frissítésére és kezelésére szolgál.

Amikor a felhasználó lekérdezést hoz létre a Lekérdezéstervező nézetben, a Microsoft Access automatikusan létrehoz egy ezzel egyenértékű SQL utasítást. Számos olyan lekérdezés létezik, amelyek csak SQL módban hajthatók végre. A tapasztalt programozók gyakran könnyebbnek találják azonnali kifejezést írni SQL-ben, mint lekérdezést létrehozni.

Kérelem típusa a konstruktorban:

Összetett számításoknál az eredmény eléréséhez egymás után több kérést kell benyújtania. Nyilvánvaló, hogy ezeket a műveleteket automatikusan, felhasználói beavatkozás nélkül kell végrehajtani.

Ehhez makrókat használnak, amelyek több, egymás után végrehajtott parancsból állnak.

Számítások lekérdezésekben, képletek létrehozásának és szerkesztésének lehetősége.

A lekérdezési sémában megadott táblák mezőihez bármilyen számítást megadhat.

A számítások elvégzéséhez további számított mezőket kell hozzáadnia a lekérdezéshez, amelyek értékeit a rendszer más lekérdezési mezők értékei alapján számítja ki.

Végső lekérdezések, csoportosítás, végső függvények.

A végső lekérdezés a mód - Összefoglaló lekérdezés használatával jön létre.

Három táblázat használható, köztük egy hivatkozási táblázat.

Ebben az esetben a lekérdezés bármely pontjáról (jobb egérgombbal) előhívhatja a helyi menüt, és kiválaszthatja a "csoportos műveletek" funkciót.

Az igénylőlapon egy új Csoportosítás sor jelenik meg.

Összes függvények: abban a mezőben, amelyre az összegeket ki szeretnénk számítani, válassza ki a listából az „Összeg” funkciót a kiválasztott mezők összes értékének összegzéséhez. A Count funkció megszámolja a mezőértékek számát. info szerkesztés microsoft

A lekérdezés egy hívás a DBMS-hez bármilyen adatművelet végrehajtására: az adatok egy részének kiválasztása a teljes mennyiségből, számított mezők hozzáadása, adatok tömeges módosítása stb.

Egy kérésben a következőket teheti:

  • - információk kiválasztása több kapcsolódó táblázatból;
  • - összetett kiválasztási feltételeket alkalmazni;
  • - a felhasználó maga is megadhatja a paraméterértékeket, hozzáadhat számított mezőket;
  • - Végezze el a végső számításokat.

Kérelem típusok:

  • - minta;
  • - táblázat készítése;
  • - frissítés (adatmódosítás);
  • - rekordok hozzáadása;
  • - bejegyzések törlése.

A lekérdezéseket az űrlapok és jelentések rekordforrásaként használják. Többnyire mind a nyomtatványokban, mind a jelentésekben a kiadás előtt ki kell választani az adatok egy részét bizonyos feltételek szerint, és az adatokat rendezni. Ez kéréssel történik. A kérés külön is tárolható, vagy űrlaphoz, jelentéshez kapcsolható.

A Microsoft Accessben többféle lekérdezés létezik.