Postgres Alkérdések

Bevezetés

amikor SQL utasítást hoz létre a PostgreSQL-ben, előfordulhat, hogy be kell ágyaznia egy másik SQL-lekérdezést az utasításba. Ezeket a beágyazott vagy beágyazott lekérdezéseket subqueries néven ismerjük, és hatékony módot nyújtanak a szükséges adatok SQL utasításból történő lekérésére. Ebben a cikkben közelebbről megvizsgáljuk a Postgres alkereséseket, és áttekintünk néhány példát, amelyek bemutatják, hogyan kell használni őket.

előfeltétel

mielőtt elkezdené ezt az oktatóanyagot, győződjön meg arról, hogy telepítette és konfigurálta a következőket a gépén:

  • PostgreSQL

alapvető PostgreSQL ismeretek is szükség van, hogy képes legyen követni együtt a bemutató.

mi az a Postgres Subquery?

ahogy a neve is sugallja, a Postgres-lekérdezés egy másik SQL-lekérdezésbe vagy utasításba ágyazott lekérdezés. Az alkérdezés olyan adatokat ad vissza, amelyeket a fő lekérdezésben a WHERE záradékban megadott feltételek részeként használnak fel.

Mintaadatkészlet létrehozása

ebben a szakaszban létrehozunk egy mintaadatkészletet, amelyet felhasználhatunk a példáinkban. Be kell jelentkeznünk a Postgres shell-be az adatbázis és a tábla létrehozásához.

  • adatbázisunkat a következő paranccsal hozhatjuk létre:
1
adatbázis-termék létrehozása
  • ezután táblázatokat hozhatunk létre az adatbázis számára a következő struktúrával:
1
2
3
4
5
6
7
8
9
10
Táblázat létrehozása, ha nem létezik készlet (
id soros elsődleges kulcs,
category_id karakter változó(100),
termék_neve karakter változó(100),
sku karakter változó(100),
leírás karakter változó (100),
ár INT,
mennyiség Int
);

végül beillesztjük a mintarekordokat:

1
2
3
4
5
6
7
készletbe helyezés(id,category_id, product_name, sku, leírás, ár, mennyiség)
értékek
(1, ‘M01’, ‘Monitor 22inch’, ‘HW020’, ‘számítógép monitor 22inch’, 300, 100),
(2,’M02′, ‘hőpaszta’, ‘HW040’, ‘CPU hőpaszta’, 2, 130),
(3,’M03′,’krimpelő eszköz’, ‘HW021’, ‘hálózati eszköz’, 14, 10),
(4,’M01′, ‘billentyűzet’, ‘HW098’, ‘számítógép billentyűzet’, 3, 25),
(5,’M01′, ‘SSD 250GB’, ‘HW033’, ‘szilárdtestalapú meghajtó’, 24, 60);

most hozzunk létre egy másik, ‘kategória’ nevű táblát a következő struktúra felhasználásával:

1
2
3
4
Táblázat létrehozása, ha nem létezik kategória (
category_id karakter változó(100),
category_name karakter változó(100)
);

a mintarekordokat is beillesztjük ebbe a táblázatba:

1
2
3
4
5
beszúrás a kategóriába (category_id,category_name)
értékek
(‘M01’, ‘Feriperálok’),
(‘M02’, ‘egyéb anyagok’),
(‘M03’, ‘hálózatépítés’);

a két táblázatnak a következőképpen kell kinéznie:

készlet táblázat

1
2
3
4
5
6
7
8
id / category_id / product_name / cikkszám / Leírás / ár | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22 hüvelyk | HW020 | számítógép monitor 22 hüvelyk | 300 | 100
2 | M02 | termikus paszta | HW040 | CPU termikus paszta | 2 | 130
3 | M03 | krimpelő eszköz | HW021 | hálózati eszköz | 14 | 10
4 | M01 | billentyűzet | HW098 | számítógépes billentyűzet | 3 | 25
5 | M01 | SSD 250GB | HW033 | szilárdtestalapú meghajtó / 24/60
(5 sor)

kategória táblázat

1
2
3
4
5
6
category_id | category_name
————-+————————-
M01 / Feriperálok
M02 / különféle anyagok
M03 / hálózatépítés
(3 sor)

Postgres Subqueries Example

most, hogy létrehoztuk a mintaadatkészletünket, megnézhetünk néhány példát, amelyek bemutatják a Postgres subqueries használatát:

1
2
3
4
5
6
7
8
9
10
11
12
13
válasszon
id,
terméknév,
ár
a
készlet
ahol
ár > (
válasszon
átlag (ár)
a
készlet
);

beszéljük meg ezt a lekérdezést egy kicsit részletesebben.

  • először figyelje meg a zárójelbe zárt lekérdezést:
1
2
3
4
válasszon
átlag (ár)
tól
készlet
  • a Postgres sorrendben hajtja végre a lekérdezéseket, a legbelső alkérdéstől kezdve.
  • az alkérdezés feldolgozása után az eredmény visszatér a külső lekérdezéshez.
  • végül a külső lekérdezés végrehajtásra kerül.

a kimenetnek valahogy így kell kinéznie:

1
2
3
4
id / terméknév / ár
—-+—————–+——-
1 | Monitor 22 hüvelyk | 300
(1 sor)

nézzünk meg egy másik példát, ahol egy FROM záradékban egy alkérdést használunk:

1
2
3
4
5
6
válassza a készlet lehetőséget.termék_neve, the_subquery.category_name
raktárról,
(kategória kiválasztása.category_id, kategória.category_name, COUNT (category_id) összesen
kategóriából
csoport kategória szerint.category_id, kategória.category_name) the_subquery
ahol the_subquery.category_id = készlet.category_id;
1
2
3
(válassza a kategória lehetőséget.category_id, kategória.category_name, COUNT (category_id) összesen
kategóriából
csoport kategória szerint.category_id, kategória.category_name) the_subquery

a fenti lekérdezésben az alkeresést ‘the_subquery’ álnév alá helyeztük. Ezt az álnevet használják hivatkozásként az alkériára.

a kimenetnek valahogy így kell kinéznie:

1
2
3
4
5
6
7
8
termék_neve / kategória_neve
—————–+————————-
SSD 250GB / Pheriperals
billentyűzet | Pheriperals
Monitor 22inch / Pheriperals
termikus paszta / különféle anyagok
krimpelő eszköz / hálózati
(5 sor)

következtetés

ha összetettebb lekérdezést kell létrehoznia a szükséges adatok megszerzéséhez, akkor a feladat végrehajtásához Postgres allekérdezésre lehet szükség. Az alkérések a külső lekérdezésbe vannak beágyazva; az ezekből visszaadott eredmények a fő lekérdezés WHERE záradékának részeként kerülnek felhasználásra. Ebben a cikkben elmagyaráztuk, hogyan kell használni a Postgres allekérdezést, és megvizsgáltunk néhány példát az SQL utasításokra, amelyek allekérdezéseket tartalmaznak. Ezekkel a példákkal és magyarázatokkal nem okoz problémát az alkérdések végrehajtása a saját adatbázis-lekérdezéseiben.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.