![Top 5 labākās 2019. gada Windows 7 tēmas](/f/b0bf3a3fab196dc2832593b45396029e.jpg?width=100&height=100)
Šī ir 2 rakstu sērijas otrā daļa par būtisko MariaDB / MySQL komandas. Pirms turpināt, lūdzu, skatiet mūsu iepriekšējo rakstu par šo tēmu.
Šajā otrajā daļā MySQL/MariaDB iesācēju sērija, mēs paskaidrosim, kā ierobežot a atgriezto rindu skaitu SELECT vaicājumu un kā pasūtīt rezultātu kopu, pamatojoties uz konkrētu nosacījumu.
Turklāt mēs iemācīsimies grupēt ierakstus un veikt pamata matemātiskas manipulācijas ar ciparu laukiem. Tas viss palīdzēs mums izveidot SQL skriptu, ko varam izmantot, lai sagatavotu noderīgus pārskatus.
Lai sāktu, lūdzu, rīkojieties šādi:
1. Lejupielādēt darbinieki
datubāzes paraugs, kurā ir sešas tabulas, kas sastāv no 4 kopā miljons ierakstu.
# wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2. # tar xjf darbinieki_db-pilna-1.0.6.tar.bz2. # cd darbinieki_db.
2. Ievadiet MariaDB un izveidojiet datubāzi ar nosaukumu darbinieki:
# mysql -u sakne -p Ievadiet paroli: Laipni lūdzam MariaDB monitorā. Komandas beidzas ar; vai \ g. Jūsu MariaDB savienojuma ID ir 2. Servera versija: 10.1.14-MariaDB MariaDB servera autortiesības (c) 2000, 2016, Oracle, MariaDB Corporation Ab un citi. Ierakstiet “help”; vai '\ h', lai saņemtu palīdzību. Ierakstiet '\ c', lai notīrītu pašreizējo ievades paziņojumu. MariaDB [(nav)]>IZVEIDOT DATU BĀZES darbiniekus; Vaicājums OK, ietekmēta 1 rinda (0,00 sek.)
3. Importējiet to savā MariaDB serverī šādi:
MariaDB [(nav)]>avota darbinieki.kv
Pagaidiet 1-2 minūtes, līdz tiek ielādēta paraugu datu bāze (paturiet prātā, ka mēs runājam 4M ieraksti šeit!).
4. Pārbaudiet, vai datu bāze ir pareizi importēta, norādot tās tabulas:
MariaDB [darbinieki]>USE darbinieki; Datu bāze ir mainīta. MariaDB [darbinieki]>RĀDĪT TABULAS;++ | Tabulas_darbiniekos | ++ | nodaļas | | dept_emp | | dept_manager | | darbinieki | | algas | | virsraksti | ++ Komplektā 6 rindas (0,02 sek.)
5. Izveidojiet īpašu kontu, ko izmantot ar darbinieki datu bāze (nekautrējieties izvēlēties citu konta nosaukumu un paroli):
MariaDB [darbinieki]>IZVEIDOT LIETOTĀJU [e -pasts aizsargāts] IDENTIFICĒTA ar 'empadminpass'; Vaicājums ir labs, tika ietekmētas 0 rindas (0,03 sek.) MariaDB [darbinieki]>Piešķiriet darbiniekiem visas privilēģijas.* [e -pasts aizsargāts]; Vaicājums ir labs, tika ietekmētas 0 rindas (0,02 sek.) MariaDB [darbinieki]>FLUSH PRIVILĒGAS; Vaicājums ir labs, tika ietekmētas 0 rindas (0,00 sek.) MariaDB [darbinieki]>Izeja Čau.
Tagad piesakieties kā empadmin lietotājs Mariadb uzvednē.
# mysql -u empadmin -p Ievadiet paroli: Laipni lūdzam MariaDB monitorā. Komandas beidzas ar; vai \ g. Jūsu MariaDB savienojuma ID ir 4. Servera versija: 10.1.14-MariaDB MariaDB servera autortiesības (c) 2000, 2016, Oracle, MariaDB Corporation Ab un citi. Ierakstiet “help”; vai '\ h', lai saņemtu palīdzību. Ierakstiet '\ c', lai notīrītu pašreizējo ievades paziņojumu. MariaDB [(nav)]>USE darbinieki; Tabulas informācijas nolasīšana tabulu un kolonnu nosaukumu aizpildīšanai. Varat izslēgt šo funkciju, lai ātrāk startētu, mainot datu bāzi.
Pirms turpināt, pārliecinieties, ka visas iepriekš attēlā norādītās darbības ir pabeigtas.
Algu tabulā ir visi katra darbinieka ienākumi ar sākuma un beigu datumiem. Mēs varētu vēlēties apskatīt algas emp_no = 10001
laika gaitā. Tas palīdzēs atbildēt uz šādiem jautājumiem:
Izpildiet šādu vaicājumu, lai uzzinātu:
MariaDB [darbinieki]>SELECT * FROM algas WHERE emp_no = 10001 ORDER BY from_date;+++++ | emp_no | alga | no_datums | uz_datumu | +++++ | 10001 | 60117 | 1986-06-26 | 1987-06-26 | | 10001 | 62102 | 1987-06-26 | 1988-06-25 | | 10001 | 66074 | 1988-06-25 | 1989-06-25 | | 10001 | 66596 | 1989-06-25 | 1990-06-25 | | 10001 | 66961 | 1990-06-25 | 1991-06-25 | | 10001 | 71046 | 1991-06-25 | 1992-06-24 | | 10001 | 74333 | 1992-06-24 | 1993-06-24 | | 10001 | 75286 | 1993-06-24 | 1994-06-24 | | 10001 | 75994 | 1994-06-24 | 1995-06-24 | | 10001 | 76884 | 1995-06-24 | 1996-06-23 | | 10001 | 80013 | 1996-06-23 | 1997-06-23 | | 10001 | 81025 | 1997-06-23 | 1998-06-23 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 88958 | 2002-06-22 | 9999-01-01 | +++++ 17 rindas komplektā (0,03 sek.)
Ko darīt, ja mums ir jāskatās pēdējie 5 paaugstinājumi? Mēs varam izdarīt PASŪTĪT no_datums DESC. DESC atslēgvārds norāda, ka vēlamies sakārtot rezultātu kopu dilstošā secībā.
Turklāt, IEROBEŽOJUMS 5 ļauj mums atgriezties tikai augšpusē 5 rezultātu kopas rindas:
MariaDB [darbinieki]>SELECT * FROM algas WHERE emp_no = 10001 ORDER BY from_date DESC LIMIT 5;+++++ | emp_no | alga | no_datums | uz_datumu | +++++ | 10001 | 88958 | 2002-06-22 | 9999-01-01 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | +++++ 5 rindas komplektā (0,00 sek.)
Varat arī izmantot SAKĀRTOT PĒC ar vairākiem laukiem. Piemēram, šāds vaicājums sakārtos rezultātu kopu, pamatojoties uz darbinieka dzimšanas datumu, augošā formā (noklusējums) un pēc tam pēc uzvārdiem alfabēta dilstošā formā:
MariaDB [darbinieki]>ATLASIET KONCATU (uzvārds, ',', vārds, uzvārds) AS Vārds, dzimums AS Dzimums, iznomāšanas datums AS "Noma datums" NO darbiniekiem PASŪTĪT PĒC dzimšanas datuma, uzvārda DESC LIMIT 10;++++ | Nosaukums | Dzimums | Nomas datums | ++++ | Whitcomb, Kiyokazu | M | 1988-07-26 | | Schaad, Ronghao | M | 1988-07-10 | | Remmele, Supot | M | 1989-01-27 | | Pocchiola, Jouni | M | 1985-03-10 | | Kuzuoka, Eishiro | M | 1992-02-12 | | Decaestecker, Moni | M | 1986-10-06 | | Wiegley, Mircea | M | 1985-07-18 | | Vendrig, Sachar | M | 1985-11-04 | | Tsukuda, Cedric | F | 1993-12-12 | | Tišendorfa, Persija | M | 1986-11-10 | ++++ 10 rindas komplektā (0,31 sek.)
Jūs varat apskatīt vairāk informācijas par LIMITšeit.
Kā jau minējām iepriekš,. algas
tabulā ir norādīti katra darbinieka ienākumi laika gaitā. Turklāt LIMIT, mēs varam izmantot MAKS un MIN atslēgvārdi, lai noteiktu, kad tika pieņemts darbā maksimālais un minimālais darbinieku skaits:
MariaDB [darbinieki]>ATLASIET KONCATU (uzvārds, ',', uzvārds) AS Vārds, MAX (B.darbs) AS "Maks. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no;+++ | Nosaukums | Maks. alga | +++ | Facello, Georgi | 88958 | | Simmel, Bezalel | 72527 | | Bamforda, Parto | 43699 | +++ Komplektā 3 rindas (0,02 sek.)MariaDB [darbinieki]>Izvēlieties CONCAT (uzvārds, ',', vārds) AS Vārds, MIN (B.darbs) AS "Min. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no;+++ | Nosaukums | Min. alga | +++ | Facello, Georgi | 60117 | | Simmel, Bezalel | 65828 | | Bamforda, Parto | 40006 | +++ Komplektā 3 rindas (0,00 sek.)
Pamatojoties uz iepriekš minētajām rezultātu kopām, vai varat uzminēt, ko sniegs zemāk esošais vaicājums?
MariaDB [darbinieki]>ATLASIET KONCATU (uzvārds, ',', vārds_vārds) KĀ VĀRDS, APAĻA (AVG (B.darbs), 2) AS "Vid. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no;+++ | Nosaukums | Vid. alga | +++ | Facello, Georgi | 75388.94 | | Simmel, Bezalel | 68854.50 | | Bamforda, Parto | 43030.29 | +++ Komplektā 3 rindas (0,01 sek.)
Ja piekrītat, ka tiks atgriezts vidējais (kā norādīts AVG) alga laika gaitā noapaļota līdz 2 zīmēm aiz komata (kā norādīts RAUNDS), tev taisnība.
Ja mēs vēlamies apskatīt algu summu, kas sagrupēta pēc darbiniekiem, un atdot augšējo 5, mēs varam izmantot šādu vaicājumu:
MariaDB [darbinieki]>SELECT emp_no, SUM (alga) AS Alga no algām GRUPA PĒC emp_no PASŪTĪT PA ALGU DESC LIMIT 5;+++ | emp_no | Alga | +++ | 109334 | 2553036 | | 43624 | 2492873 | | 66793 | 2383923 | | 237542 | 2381119 | | 47978 | 2374024 | +++ Komplektā 5 rindas (2,22 sek.)
Iepriekš minētajā vaicājumā algas tiek sagrupētas pēc darbiniekiem un pēc tam tiek veikta summa.
Par laimi, lai sagatavotu pārskatu, mums nav jāizpilda vaicājums pēc vaicājuma. Tā vietā mēs varam izveidot skriptu ar SQL komandu sēriju, lai atgrieztu visas nepieciešamās rezultātu kopas.
Kad mēs izpildīsim skriptu, tas atgriezīs nepieciešamo informāciju bez turpmākas iejaukšanās no mūsu puses. Piemēram, izveidosim failu ar nosaukumu maxminavg.sql pašreizējā darba direktorijā ar šādu saturu:
-Izvēlieties datu bāzi. USE darbinieki; -Aprēķiniet maksimālās algas. ATLASIET KONCATU (uzvārds, ',', uzvārds) AS Vārds, MAX (B.darbs) AS "Maks. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no; -Aprēķiniet minimālās algas. Izvēlieties CONCAT (uzvārds, ',', vārds) AS Vārds, MIN (B.darbs) AS "Min. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no; -Aprēķiniet vidējos rādītājus, noapaļojot līdz 2 zīmēm aiz komata. ATLASIET KONCATU (uzvārds, ',', vārds_vārds) KĀ VĀRDS, APAĻA (AVG (B.darbs), 2) AS "Vid. alga "NO darbiniekiem A PIEVIENOTIES algām B ON A.emp_no = B.emp_no WHERE A.emp_no IN (10001, 10002, 10003) GROUP BY A.emp_no;
Līnijas, kas sākas ar divām domuzīmēm, tiek ignorētas, un atsevišķi vaicājumi tiek izpildīti viens pēc otra. Mēs varam izpildīt šo skriptu vai nu no Linux komandrindas:
# mysql -u empadmin -pIevadi paroli: Nosaukums Maks. alga. Facello, Georgi 88958. Simmel, Bezalel 72527. Bamforda, Parto 43699. Nosaukums Min. alga. Facello, Georgi 60117. Simmel, Bezalel 65828. Bamforda, Parto 40006. Nosaukums Vid. alga. Facello, Georgi 75388.94. Simmel, Bezalel 68854.50. Bamforda, Parto 43030.29.
vai no MariaDB uzvednes:
# mysql -u empadmin -p Ievadiet paroli: Laipni lūdzam MariaDB monitorā. Komandas beidzas ar; vai \ g. Jūsu MariaDB savienojuma ID ir 4. Servera versija: 10.1.14-MariaDB MariaDB servera autortiesības (c) 2000, 2016, Oracle, MariaDB Corporation Ab un citi. Ierakstiet “help”; vai '\ h', lai saņemtu palīdzību. Ierakstiet '\ c', lai notīrītu pašreizējo ievades paziņojumu. MariaDB [(nav)]>avots maxminavg.sql Tabulas informācijas nolasīšana tabulu un kolonnu nosaukumu aizpildīšanai. Varat izslēgt šo funkciju, lai ātrāk startētu, mainot datu bāzi.
Šajā rakstā mēs esam izskaidrojuši, kā izmantot vairākas MariaDB funkcijas, lai precizētu atgriezto rezultātu kopas SELECT paziņojumi. Kad tie ir definēti, skriptā var ievietot vairākus atsevišķus vaicājumus, lai to izpildītu vieglāk un samazinātu cilvēku kļūdu risku.
Vai jums ir kādi jautājumi vai ieteikumi par šo rakstu? Jūtieties brīvi rakstīt mums piezīmi, izmantojot zemāk esošo komentāru veidlapu. Mēs ceram uz jūsu ziņu!