Datu paraugu ņemšana Access datu bāzē, izmantojot sql vaicājumus. Microsoft Office Access datu bāzes pārsūtīšana uz Microsoft SQL Server Ierakstiet SQL vaicājumus programmā Access

06.04.2023

Katrs no mums regulāri sastopas un lietojam dažādas datu bāzes. Izvēloties e-pasta adresi, mēs strādājam ar datu bāzi. Datu bāzes izmanto meklēšanas pakalpojumus, bankas klientu datu glabāšanai utt.

Bet, neskatoties uz pastāvīgo datu bāzu izmantošanu, pat daudziem izstrādātājiem programmatūras sistēmas ir daudz "tukšu vietu", jo vienu un to pašu terminu interpretācija ir atšķirīga. Pirms SQL valodas aplūkošanas mēs sniegsim īsu datu bāzes terminu definīciju. Tātad.

Datu bāze - fails vai failu kopa sakārtotu datu struktūru un to attiecību glabāšanai. Ļoti bieži datu bāzi sauc par vadības sistēmu – tā ir tikai informācijas krātuve noteiktā formātā un var darboties ar dažādām DBVS.

Tabula - Iedomāsimies mapi, kurā glabājas dokumenti, kas sagrupēti pēc noteikta atribūta, piemēram, pasūtījumu saraksts par pēdējo mēnesi. Šī ir tabula datorā. Atsevišķai tabulai ir savs unikālais nosaukums.

Datu tips - kāda veida informāciju atļauts glabāt noteiktā kolonnā vai rindā. Tie var būt cipari vai noteikta formāta teksts.

Kolonna un rinda- mēs visi esam strādājuši ar izklājlapām, kurās ir arī rindas un kolonnas. Jebkura relāciju datu bāze darbojas ar tabulām tādā pašā veidā. Rindas dažreiz sauc par ierakstiem.

primārā atslēga- katrai tabulas rindai var būt viena vai vairākas kolonnas, lai to unikāli identificētu. Bez primārās atslēgas ir ļoti grūti atjaunināt, modificēt un dzēst vēlamās rindas.

Kas ir SQL?

SQL(angļu — strukturētā vaicājuma valoda) tika izstrādāta tikai darbam ar datu bāzēm un šobrīd ir standarts visām populārajām DBVS. Valodas sintakse sastāv no neliela operatoru skaita un ir viegli apgūstama. Bet, neskatoties uz ārējo vienkāršību, tas ļauj sql izveide vaicājumi sarežģītām operācijām ar jebkura izmēra datu bāzi.

Kopš 1992. gada pastāv vispārpieņemts standarts, ko sauc par ANSI SQL. Tas nosaka operatoru pamatsintaksi un funkcijas, un to atbalsta visi DBVS tirgus līderi, piemēram, ORACLE. Nav iespējams vienā mazā rakstā aptvert visas valodas iespējas, tāpēc īsumā apskatīsim tikai pamata SQL vaicājumus. Piemēri skaidri parāda valodas vienkāršību un iespējas:

  • datu bāzu un tabulu izveide;
  • datu paraugu ņemšana;
  • ierakstu pievienošana;
  • informācijas grozīšana un dzēšana.

SQL datu tipi

Visas datu bāzes tabulas kolonnas glabā viena veida datus. Datu tipi SQL ir tādi paši kā citās programmēšanas valodās.

Tabulu un datu bāzu izveide

Ir divi veidi, kā izveidot jaunas datu bāzes, tabulas un citus vaicājumus SQL:

  • izmantojot DBVS konsoli
  • Izmantojot datu bāzes serverī iekļautos interaktīvos administrēšanas rīkus.

Operators izveido jaunu datu bāzi IZVEIDOT DATU BĀZI<наименование базы данных>; . Kā redzat, sintakse ir vienkārša un kodolīga.

Mēs izveidojam tabulas datu bāzē, izmantojot priekšrakstu CREATE TABLE ar šādiem parametriem:

  • tabulas nosaukums
  • kolonnu nosaukumi un datu veidi

Piemēram, izveidosim preču tabulu ar šādām kolonnām:

Mēs izveidojam tabulu:

IZVEIDOT TABULU Prece

(preces_id CHAR(15) NOT NULL,

vendor_id CHAR(15) NOT NULL,

preces_nosaukums CHAR(254) NULL,

commodity_price DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Tabulā ir piecas kolonnas. Pēc nosaukuma tiek norādīts datu tips, kolonnas tiek atdalītas ar komatiem. Kolonnas vērtība var būt tukša (NULL) vai jāaizpilda (NOT NULL), un tā tiek noteikta, izveidojot tabulu.

Datu atlase no tabulas

Datu atlases operators ir visbiežāk izmantotais SQL vaicājums. Lai iegūtu informāciju, jānorāda, ko no šādas tabulas vēlamies atlasīt. Vispirms vienkāršs piemērs:

ATLASĪT preces_nosaukums FROM Prece

Pēc SELECT priekšraksta norādām kolonnas nosaukumu informācijas iegūšanai, un FROM definē tabulu.

Vaicājuma izpildes rezultāts būs visas tabulas rindas ar Commodity_name vērtībām tādā secībā, kādā tās tika ievadītas datu bāzē, t.i. bez jebkādas šķirošanas. Rezultāta pasūtīšanai tiek izmantots papildu punkts ORDER BY.

Lai vaicātu vairākos laukos, uzskaitiet tos, atdalot tos ar komatiem, kā parādīts šajā piemērā:

ATLASĪT preces_id, preces_nosaukums, preces_cena NO Preces

Kā vaicājuma rezultātu ir iespējams iegūt visu rindas kolonnu vērtību. Šim nolūkam tiek izmantota zīme "*":

SELECT * FROM Prece

  • Papildus SELECT atbalsta:
  • Datu kārtošana (ORDER BY paziņojums)
  • Izvēlieties atbilstoši apstākļiem (KUR)
  • Grupēšanas termins (GROUP BY)

Līnijas pievienošana

Lai tabulai pievienotu rindu, tiek izmantoti SQL vaicājumi ar INSERT priekšrakstu. Pievienošanu var veikt trīs veidos:

  • pievienot jaunu veselu rindu;
  • virknes daļa;
  • vaicājuma rezultāti.

Lai pievienotu pilnu rindu, jānorāda tabulas nosaukums un jaunās rindas kolonnu (lauku) vērtības. Šeit ir piemērs:

INSERT INTO Preču VĒRTĪBAS ("106", "50", "Coca-Cola", "1.68", "Bez alkohola ,)

Piemērā tabulai tiek pievienots jauns produkts. Vērtības katrai kolonnai ir norādītas aiz VALUES. Ja kolonnai nav atbilstošas ​​vērtības, tad jānorāda NULL. Kolonnas tiek aizpildītas ar vērtībām tādā secībā, kas norādīta tabulas izveides laikā.

Ja pievienojat tikai daļu no rindas, jums ir skaidri jānorāda kolonnu nosaukumi, kā parādīts piemērā:

INSERT INTO Prece (preču_id, piegādātāja_id, preces_nosaukums)

VĒRTĪBAS("106 ", '50", "Coca Cola")

Mēs ievadījām tikai preces identifikatorus, piegādātāju un tā nosaukumu, bet pārējos laukus atstājām tukšus.

Vaicājuma rezultātu pievienošana

INSERT galvenokārt izmanto rindu pievienošanai, taču to var izmantot arī SELECT priekšraksta rezultātu pievienošanai.

Mainīt datus

Lai mainītu informāciju datu bāzes tabulas laukos, jāizmanto priekšraksts UPDATE. Operatoru var izmantot divos veidos:

  • Visas tabulas rindas ir atjauninātas.
  • Tikai noteiktai līnijai.

UPDATE sastāv no trim galvenajiem elementiem:

  • tabula, kurā nepieciešams veikt izmaiņas;
  • lauku nosaukumi un to jaunās vērtības;
  • nosacījumi maināmo rindu atlasei.

Apsveriet piemēru. Pieņemsim, ka produkta ar ID=106 cena ir mainījusies, tāpēc šī rinda ir jāatjaunina. Mēs rakstām šādu operatoru:

ATJAUNINĀT Preču SET commodity_price = "3,2" WHERE commodity_id = "106"

Mēs norādījām tabulas nosaukumu, mūsu gadījumā Commodity, kur tiks veikta atjaunināšana, pēc tam pēc SET - kolonnas jauno vērtību un atradām vēlamo ierakstu, norādot vēlamo ID vērtību WHERE.

Lai mainītu vairākas kolonnas, pēc priekšraksta SET norādiet vairākus kolonnu-vērtību pārus, atdalot tos ar komatiem. Apskatīsim piemēru, kurā tiek atjaunināts preces nosaukums un cena:

UPDATE Commodity SET commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

Lai dzēstu informāciju kolonnā, varat iestatīt to uz NULL, ja tabulas struktūra to atļauj. Jāatceras, ka NULL ir tieši "nē" vērtība, nevis nulle teksta vai skaitļa formā. Noņemt produkta aprakstu:

ATJAUNINĀT Preču SET commodity_desc = NULL WHERE commodity_id = "106"

Notiek rindu noņemšana

SQL vaicājumi rindu dzēšanai tabulā tiek izpildīti ar DELETE priekšrakstu. Ir divi lietošanas gadījumi:

  • atsevišķas tabulas rindas tiek dzēstas;
  • visas tabulas rindas tiek dzēstas.

Piemērs vienas rindas dzēšanai no tabulas:

DELETE FROM Commodity WHERE preces_id = "106"

Pēc DELETE FROM mēs norādām tabulas nosaukumu, kurā rindas tiks dzēstas. Klauzula WHERE satur nosacījumu, saskaņā ar kuru rindas tiks atlasītas dzēšanai. Piemērā mēs dzēšam produktu līniju ar ID=106. Ir ļoti svarīgi norādīt KUR. izlaižot šo paziņojumu, tiks dzēstas visas tabulas rindas. Tas attiecas arī uz lauku vērtības maiņu.

DELETE priekšraksts nenorāda kolonnu nosaukumus vai metarakstzīmes. Tas pilnībā noņem rindas, bet nevar noņemt vienu kolonnu.

SQL izmantošana programmā Microsoft Access

Parasti to izmanto interaktīvi, lai izveidotu tabulas, datu bāzes, pārvaldītu, modificētu, analizētu datus datu bāzē un ieviestu SQL Access vaicājumus, izmantojot ērtu interaktīvu vaicājumu noformētāju (Query Designer), ar kura palīdzību jūs varat izveidot un nekavējoties izpildīt jebkuras sarežģītības SQL paziņojumus.

Tiek atbalstīts arī servera piekļuves režīms, kurā Access DBMS var izmantot kā SQL vaicājumu ģeneratoru jebkuram ODBC datu avotam. Šī iespēja ļauj Access lietojumprogrammām mijiedarboties ar jebkuru formātu.

SQL paplašinājumi

Tā kā SQL vaicājumiem nav visas procesuālās programmēšanas valodu funkcijas, piemēram, cilpas, zari utt., DBVS pārdevēji izstrādā savu SQL versiju ar uzlabotām funkcijām. Pirmkārt, tas ir atbalsts saglabātajām procedūrām un procesuālo valodu standarta operatoriem.

Visizplatītākie valodas dialekti:

  • Oracle datu bāze — PL/SQL
  • Interbase, Firebird — PSQL
  • Microsoft SQL Serveris — Transact-SQL
  • PostgreSQL — PL/pgSQL.

SQL tīmeklī

MySQL DBVS tiek izplatīta saskaņā ar GNU vispārējo publisko licenci. Ir komerciāla licence ar iespēju izstrādāt pielāgotus moduļus. Kā neatņemama sastāvdaļa tā ir iekļauta populārākajos interneta serveru komplektos, piemēram, XAMPP, WAMP un LAMP, un ir vispopulārākā DBVS lietojumprogrammu izstrādei internetā.

To izstrādāja Sun Microsystems, un pašlaik to uztur Oracle Corporation. Atbalsta datu bāzes līdz 64 terabaitiem, SQL:2003 sintakses standartu, datu bāzu replikāciju un mākoņpakalpojumus.

Vaicājumi programmā Access ir galvenais rīks datu atlasei, atjaunināšanai un apstrādei datu bāzes tabulās. Programma Access saskaņā ar relāciju datu bāzu koncepciju izmanto strukturēto vaicājumu valodu (SQL), lai izpildītu vaicājumus. Ar SQL priekšrakstu palīdzību tiek īstenots jebkurš Access vaicājums.

Galvenais pieprasījuma veids ir atlasītais pieprasījums. Šī vaicājuma rezultāts ir jauna tabula, kas pastāv līdz vaicājuma aizvēršanai. Ieraksti tiek veidoti, apvienojot to tabulu ierakstus, uz kurām ir veidots vaicājums. Tabulas ierakstu apvienošanas metode tiek norādīta, definējot to attiecības datu shēmā vai veidojot vaicājumu. Vaicājumā formulētie atlases nosacījumi ļauj filtrēt ierakstus, kas veido tabulu savienošanas rezultātu.

Programmā Access var izveidot vairāku veidu vaicājumus:

  • pieprasījuma paraugs- atlasa datus no vienas tabulas vai vaicājuma vai vairākām saistītām tabulām un citiem vaicājumiem. Rezultāts ir tabula, kas pastāv līdz vaicājuma aizvēršanai. Rezultātu tabulas ierakstu veidošana tiek veikta atbilstoši noteiktajiem atlases nosacījumiem un izmantojot vairākas tabulas, to ierakstus apvienojot;
  • vaicājums, lai izveidotu tabulu- atlasa datus no saistītajām tabulām un citiem vaicājumiem, bet atšķirībā no atlases vaicājuma saglabā rezultātu jaunā pastāvīgā tabulā;
  • pieprasījumi atjaunināt, pievienot, dzēst- ir darbības pieprasījumi, kuru rezultātā tiek mainīti dati tabulās.

Pieprasījumi programmā Access projektēšanas režīmā satur datu shēmu, kas parāda izmantotās tabulas, un vaicājuma formu, kurā tiek konstruēta vaicājuma tabulas struktūra un ierakstu atlases nosacījumi (4.1. att.).

Izmantojot vaicājumu, varat veikt šādus datu apstrādes veidus:

  • iekļaut vaicājuma tabulā lietotāja atlasītos tabulas laukus;
  • veikt aprēķinus katrā no saņemtajiem ierakstiem;
  • atlasīt ierakstus, kas atbilst atlases nosacījumiem;
  • veidot jaunu virtuālo tabulu, pamatojoties uz saistīto tabulu ierakstu savienību;
  • grupēt ierakstus, kuriem vienā vai vairākos laukos ir vienādas vērtības, vienlaikus veic statistikas funkcijas citos grupas laukos un katrā grupā iekļauj vienu ierakstu rezultātā;
  • izveidot jaunu datu bāzes tabulu, izmantojot datus no esošajām tabulām;
  • atjaunināt laukus atlasītajā ierakstu apakškopā;
  • dzēst izvēlēto ierakstu apakškopu no datu bāzes tabulas;
  • pievienot atlasīto ierakstu apakškopu citai tabulai.

Vaicājumi programmā Access kalpo kā ierakstu avoti citiem vaicājumiem, veidlapām un pārskatiem. Izmantojot vaicājumu, jūs varat savākt pilnīgu informāciju, lai no vairākām tabulām izveidotu noteiktas tematiskās jomas dokumentu, pēc tam to izmantot, lai izveidotu veidlapu - šī dokumenta elektronisko attēlojumu. Ja vednis izveido veidlapu vai atskaiti, pamatojoties uz vairākām saistītām tabulām, tām automātiski tiek ģenerēts vaicājums kā ieraksta avots.
Lai labotu, skatiet video pamācību.

SQL tiek izmantots, lai izgūtu datus no datu bāzes. SQL ir programmēšanas valoda, kas ļoti atgādina angļu valodu, bet ir paredzēta datu bāzu pārvaldības programmām. SQL tiek izmantots visos Access vaicājumos.

Izpratne par to, kā darbojas SQL, palīdz izveidot precīzākus vaicājumus un atvieglo to vaicājumu labošanu, kas atgriež nepareizus rezultātus.

Šis raksts ir daļa no SQL for Access rakstu sērijas. Tajā ir aprakstīti SQL lietošanas pamati datu izgūšanai un sniegti SQL sintakses piemēri.

Šajā rakstā

Kas ir SQL?

SQL ir programmēšanas valoda, kas paredzēta darbam ar faktu kopām un attiecībām starp tām. Relāciju datu bāzes programmas, piemēram, Microsoft Office Access, izmanto SQL, lai manipulētu ar datiem. Atšķirībā no daudzām programmēšanas valodām, SQL ir viegli lasāms un saprotams pat iesācējiem. Tāpat kā daudzas programmēšanas valodas, SQL ir starptautisks standarts, ko atzinušas standartu komitejas, piemēram, ISO un ANSI.

Datu kopas ir aprakstītas SQL, lai palīdzētu atbildēt uz jautājumiem. Lietojot SQL, ir jāizmanto pareizā sintakse. Sintakse ir noteikumu kopums, kas ļauj pareizi apvienot valodas elementus. SQL sintakse ir balstīta uz angļu valodas sintakse un koplieto daudzus elementus ar Visual Basic for Applications (VBA) valodas sintaksi.

Piemēram, vienkāršs SQL priekšraksts, kas izgūst to kontaktpersonu uzvārdu sarakstu, kuras nosauktas Marija, varētu izskatīties šādi:

ATLASĪT Uzvārdu
NO Kontaktiem
WHERE First_Name = "Marija";

Piezīme: SQL valoda tiek izmantots ne tikai operāciju veikšanai ar datiem, bet arī datu bāzes objektu, piemēram, tabulu, struktūras izveidei un modificēšanai. SQL daļu, kas tiek izmantota datu bāzes objektu izveidei un modificēšanai, sauc par DDL. DDL šajā rakstā nav apskatīts. Papildus informācija Skatiet sadaļu Tabulu vai indeksu izveide un modificēšana, izmantojot datu definīcijas vaicājumu.

SELECT paziņojumus

SELECT tiek izmantots, lai aprakstītu datu kopu SQL. Tajā ir pilns datu kopas apraksts, kas jāizgūst no datu bāzes, tostarp:

    tabulas, kas satur datus;

    saiknes starp datiem no dažādiem avotiem;

    lauki vai aprēķini, pamatojoties uz kuriem tiek atlasīti dati;

    atlases nosacījumi, kuriem jāatbilst vaicājuma rezultātā iekļautajiem datiem;

    šķirošanas nepieciešamība un metode.

SQL priekšraksti

SQL priekšraksts sastāv no vairākām daļām, ko sauc par klauzulām. Katrai klauzulai SQL priekšrakstā ir mērķis. Daži piedāvājumi ir obligāti. Tālāk esošajā tabulā ir uzskaitīti visbiežāk izmantotie SQL priekšraksti.

SQL klauzula

Apraksts

Obligāts

Definē laukus, kuros ir nepieciešamie dati.

Definē tabulas, kas satur klauzulā SELECT norādītos laukus.

Definē lauku atlases kritērijus, kuriem jāatbilst visiem rezultātos iekļautajiem ierakstiem.

Norāda rezultātu kārtošanas secību.

SQL priekšrakstā, kurā ir apkopotas funkcijas, norāda laukus, kuriem klauzulā SELECT netiek aprēķināta kopsavilkuma vērtība.

Tikai tad, ja ir tādi lauki

SQL priekšrakstā, kurā ir apkopotas funkcijas, tiek definēti nosacījumi, kas tiek piemēroti laukiem, kuriem SELECT klauzulā tiek aprēķināta kopsavilkuma vērtība.

SQL termini

Katrs SQL teikums sastāv no terminiem, kurus var salīdzināt ar runas daļām. Tālāk esošajā tabulā ir norādīti SQL terminu veidi.

SQL termins

Salīdzināma runas daļa

Definīcija

Piemērs

identifikators

lietvārds

Nosaukums, ko izmanto, lai identificētu datu bāzes objektu, piemēram, lauka nosaukums.

Klienti.[PhoneNumber]

operators

darbības vārds vai apstākļa vārds

Atslēgvārds, kas attēlo vai maina darbību.

nemainīgs

lietvārds

Vērtība, kas nemainās, piemēram, skaitlis vai NULL.

izteiksme

īpašības vārds

Identifikatoru, operatoru, konstantu un funkciju kombinācija, kas tiek novērtēta līdz vienai vērtībai.

>= Preces.[Cena]

Pamata SQL klauzulas: SELECT, FROM un WHERE

Vispārējais SQL priekšrakstu formāts ir:

ATLASĪT lauku_1
NO tabulas_1
KUR kritērijs_1
;

Piezīmes:

    Access neievēro rindiņu pārtraukumus SQL priekšrakstā. Neskatoties uz to, katru teikumu ieteicams sākt jaunā rindiņā, lai SQL priekšraksts būtu viegli lasāms gan tam, kurš to uzrakstījis, gan visiem pārējiem.

    Katrs SELECT priekšraksts beidzas ar semikolu (;). Semikols var būt vai nu pēdējā teikuma beigās, vai atsevišķā rindā SQL priekšraksta beigās.

Piemērs programmā Access

Šis piemērs parāda, kā programmā Access varētu izskatīties SQL priekšraksts vienkāršam atlases vaicājumam.

1. SELECT klauzula

2. NO klauzula

3. WERE klauzula

Sadalīsim piemēru pa teikumiem, lai saprastu, kā darbojas SQL sintakse.

SELECT klauzula

SELECT , Uzņēmums

Šī ir SELECT klauzula. Tajā ir (SELECT) priekšraksts, kam seko divi identifikatori ("[E-pasta adrese]" un "Uzņēmums").

Ja identifikatorā ir atstarpes vai īpašas zīmes(piemēram, "E-pasta adrese"), tas jāiekļauj kvadrātiekavās.

Klauzulā SELECT nav jānorāda tabulas, kurās ir lauki, un nevar norādīt atlases nosacījumus, kuriem jāatbilst rezultātos iekļaujamajiem datiem.

SELECT priekšrakstā klauzula SELECT vienmēr ir pirms klauzulas FROM.

NO klauzulas

NO Kontaktiem

Šī ir klauzula FROM. Tas satur paziņojumu (FROM), kam seko identifikators (Kontakti).

FROM klauzula nenorāda atlasāmos laukus.

KUR klauzula

KUR Pilsēta = "Sietla"

Šī ir WHERE klauzula. Tas satur operatoru (WHERE), kam seko izteiksme (City="Rostova").

Izmantojot klauzulas SELECT, FROM un WHERE, varat veikt daudzas darbības. Lai iegūtu papildinformāciju par šo piedāvājumu izmantošanu, skatiet šos rakstus:

Kārtot rezultātus: ORDER BY

Tāpat kā Microsoft Excel, arī Access ļauj kārtot vaicājuma rezultātus tabulā. Izmantojot klauzulu ORDER BY, varat arī norādīt, kā rezultāti tiks kārtoti, izpildot vaicājumu. Ja tiek izmantota klauzula ORDER BY, tai jābūt SQL priekšraksta beigās.

Klauzulā ORDER BY ir ietverts kārtojamo lauku saraksts tādā pašā secībā, kādā kārtošana tiks lietota.

Pieņemsim, piemēram, ka vispirms vēlaties kārtot rezultātus pēc lauka "Uzņēmums" dilstošā secībā un pēc tam, ja laukā "Uzņēmums" ir ieraksti ar vienādu vērtību, kārtojiet tos pēc "E-pasta adreses". " lauks augošā secībā. ORDER BY klauzula izskatītos šādi:

PASŪTĪJUMS PĒC UZŅĒMUMA DESC,

Piezīme: Pēc noklusējuma Access kārto vērtības augošā secībā (no A līdz Z, no mazākā līdz lielākajam). Lai kārtotu vērtības dilstošā secībā, ir jānorāda atslēgvārds DESC.

Papildinformāciju par punktu PASŪTĪJUMS skatiet sadaļā ORDER BY.

Darbs ar kopsavilkuma datiem: GROUP BY un HAVING klauzulas

Dažreiz jums ir jāstrādā ar kopsavilkuma datiem, piemēram, kopējo ikmēneša pārdošanas apjomu vai dārgākajām precēm noliktavā. Lai to izdarītu, klauzula SELECT laukam piemēro apkopošanas funkciju. Piemēram, ja vaicājuma rezultāts ir katra uzņēmuma e-pasta adrešu skaits, SELECT klauzula var izskatīties šādi:

Iespēja izmantot vienu vai otru agregāta funkcija atkarīgs no datu veida laukā un vēlamās izteiksmes. Papildinformāciju par pieejamajām apkopošanas funkcijām skatiet rakstā SQL apkopošanas funkcijas.

Tiek norādīti lauki, kas netiek izmantoti apkopošanas funkcijā: klauzula GROUP BY

Izmantojot apkopotās funkcijas, parasti ir jāizveido klauzula GROUP BY. Klauzula GROUP BY norāda visus laukus, kuriem netiek piemērota apkopošanas funkcija. Ja apkopotās funkcijas attiecas uz visiem vaicājuma laukiem, jums nav jāizveido klauzula GROUP BY.

GROUP BY klauzulai nekavējoties jāseko WHERE vai FROM klauzulai, ja nav WHERE klauzulas. Klauzulā GROUP BY lauki ir norādīti tādā pašā secībā kā klauzulā SELECT.

Turpināsim iepriekšējo piemēru. Ja klauzula SELECT piemēro tikai apkopošanas funkciju laukam [E-pasta adrese], tad klauzula GROUP BY izskatītos šādi:

GRUPA PĒC uzņēmuma

Papildinformāciju par GROUP BY klauzulu skatiet sadaļā GROUP BY.

Apkopoto vērtību ierobežošana ar grupēšanas nosacījumiem: klauzula HAVING

Ja vēlaties norādīt nosacījumus, lai ierobežotu rezultātus, bet lauks, kuram vēlaties tos lietot, tiek izmantots apkopošanas funkcijā, jūs nevarat izmantot WHERE klauzulu. Tā vietā ir jāizmanto klauzula HAVING. HAVING klauzula darbojas tāpat kā WHERE klauzula, bet tiek izmantota apkopotiem datiem.

Pieņemsim, piemēram, ka AVG funkcija (kas aprēķina vidējo vērtību) tiek lietota pirmajam laukam klauzulā SELECT:

SELECT COUNT(), Uzņēmums

Ja vēlaties ierobežot vaicājuma rezultātus, pamatojoties uz funkcijas COUNT vērtību, šim klauzulā WHERE nevar piemērot filtra nosacījumu. Tā vietā nosacījums jāievieto klauzulā HAVING. Piemēram, ja vēlaties, lai vaicājums atgrieztu rindas tikai tad, ja uzņēmumam ir vairākas e-pasta adreses, varat izmantot šādu HAVING klauzulu:

AR SKAITĪŠANU()>1

Piezīme: Vaicājumā var būt iekļauta gan WHERE klauzula, gan HAVING klauzula ar nosacījumiem laukiem, kas netiek izmantoti WHERE klauzulā norādītajās apkopotajās funkcijās, un nosacījumi laukiem, kas tiek izmantoti apkopošanas funkcijās, ir norādīti klauzulā HAVING. .

Papildinformāciju par HAVING klauzulu skatiet sadaļā HAVING.

Vaicājuma rezultātu apvienošana: SAVIENĪBAS operators

Operatoru UNION izmanto, lai vienlaikus skatītu visus datus, ko atgriezuši vairāki līdzīgi atlases vaicājumi, kā apvienotu kopu.

UNION operators ļauj apvienot divus SELECT priekšrakstus vienā. Kombinētajiem SELECT priekšrakstiem ir jābūt vienādam izvades lauku skaitam un secībai ar vienādiem vai saderīgiem datu tipiem. Kad vaicājums tiek izpildīts, dati no katras atbilstošo lauku kopas tiek apvienoti vienā izvades laukā, tāpēc vaicājuma izvadei ir tik daudz lauku, cik katram SELECT priekšrakstam atsevišķi.

Piezīme: Apvienības vaicājumos ciparu un teksta datu tipi ir saderīgi.

Izmantojot operatoru UNION, varat norādīt, vai vaicājuma rezultātos ir jāiekļauj rindu dublikāti, ja tādi ir. Lai to izdarītu, izmantojiet atslēgvārdu VISI.

Vaicājumam divu SELECT priekšrakstu savienošanai ir šāda pamata sintakse:

ATLASĪT lauku_1
NO tabulas_1
SAVIENĪBA
ATLASĪT lauku_a
NO tabulas_a
;

Pieņemsim, piemēram, ka ir divas tabulas ar nosaukumu “Produkti” un “Pakalpojumi”. Abās tabulās ir lauki ar preces vai pakalpojuma nosaukumu, cenu un garantijas informāciju, kā arī lauks, kas norāda uz piedāvātās preces vai pakalpojuma ekskluzivitāti. Neskatoties uz to, ka tabulas "Produkti" un "Pakalpojumi" paredz dažādi veidi garantijas, pamatinformācija ir tāda pati (vai tiek sniegta kvalitātes garantija atsevišķiem produktiem vai pakalpojumiem). Lai apvienotu četrus laukus no divām tabulām, varat izmantot šādu savienošanas vaicājumu:

ATLASĪT nosaukumu, cenu, garantiju_pieejams, ekskluzīvs_piedāvājums
NO produktiem
SAVIENĪBA VISU
ATLASĪT nosaukumu, cenu, garantiju_pieejams, ekskluzīvs_piedāvājums
NO pakalpojumiem
;

Papildinformāciju par SELECT priekšrakstu apvienošanu, izmantojot operatoru UNION, skatiet rakstā

Izglītības projekta "Veikals" apraksts

Tabulas saišu shēma

Tabulu apraksts

m_category - produktu kategorijas

m_ienākums - preču saņemšana

m_outcome - preču patēriņš

m_product - direktorijs, produkta apraksts

m_supplier - direktorijs; piegādātāja informācija

m_unit - direktorijs; vienības

Lai praktiski pārbaudītu šajā apmācībā sniegtos piemērus, jums ir jābūt pieejamai šādai programmatūrai:

Microsoft Access 2003 vai jaunāka versija.

SQL vaicājums programmā MS Access. Sākt

Lai redzētu tabulas saturu, veiciet dubultklikšķi uz tabulas nosaukuma kreisajā rūtī:

Lai pārslēgtos uz tabulas lauka rediģēšanas režīmu, augšējā panelī atlasiet Dizaina režīms:

Lai parādītu SQL vaicājuma rezultātu, veiciet dubultklikšķi uz vaicājuma nosaukuma kreisajā rūtī:

Lai pārslēgtos uz SQL vaicājuma rediģēšanas režīmu, augšējā panelī atlasiet SQL režīmu:

SQL vaicājums. Piemēri programmā MS Access. IZVĒLĒTIES: 1-10

SQL vaicājumā SELECT tiek izmantots, lai atlasītu no datu bāzes tabulām.

SQL vaicājums Q001. SQL vaicājuma piemērs, lai iegūtu tikai nepieciešamos laukus vēlamajā secībā:

SELECT dt, product_id, summa


NO m_ienākumiem;

SQL vaicājums Q002.Šajā SQL vaicājuma piemērā zvaigznīte (*) tiek izmantota, lai parādītu visas tabulas m_product kolonnas, citiem vārdiem sakot, lai iegūtu visus m_product relācijas laukus:

ATLASĪT*
NO m_produkts;

PieprasītSQLQ003. Paziņojums DISTINCT tiek izmantots, lai novērstu ierakstu dublikātus un iegūtu daudz unikālu ierakstu:

ATLASĪT ATŠĶIRĪGU produkta_id


NO m_ienākumiem;

SQL vaicājums Q004. Priekšraksts ORDER BY tiek izmantots, lai kārtotu (kārtotu) ierakstus pēc noteikta lauka vērtībām. Lauka nosaukums seko klauzulai ORDER BY:

ATLASĪT*
NO m_ienākumiem


PASŪTĪT PĒC cenas;

SQL vaicājums Q005. ASC priekšraksts tiek izmantots papildus priekšrakstam ORDER BY un tiek izmantots, lai definētu augošu kārtošanu. DESC priekšraksts tiek izmantots papildus priekšrakstam ORDER BY un tiek izmantots, lai definētu dilstošu kārtošanu. Gadījumā, ja nav norādīts ne ASC, ne DESC, tiek pieņemts, ka ir ASC (noklusējums):

ATLASĪT*
NO m_ienākumiem


PASŪTĪT PĒC dt DESC , cena;

SQL vaicājums Q006. Lai atlasītu nepieciešamos ierakstus no tabulas, tiek izmantotas dažādas loģiskās izteiksmes, kas izsaka atlases nosacījumu. Būla izteiksme nāk aiz WHERE klauzulas. Piemērs, kā iegūt no tabulas m_income visus ierakstus, kuru summas vērtība ir lielāka par 200:

ATLASĪT*
NO m_ienākumiem


KUR summa>200;

SQL vaicājums Q007. Lai izteiktu sarežģītus nosacījumus, izmantojiet loģiskās operācijas UN (konjunkcija), VAI (disjunkcija) un NOT (loģiskā noliegums). Piemērs, kā iegūt no tabulas m_outcome visus ierakstus, kuru summas vērtība ir 20 un cenas vērtība ir lielāka vai vienāda ar 10:

cena


NO m_outcome
KUR summa=20 UN cena>=10;

SQL vaicājums Q008. Lai apvienotu datus no divām vai vairākām tabulām, izmantojiet priekšrakstus INNER JOIN, LEFT JOIN, RIGHT JOIN. Nākamajā piemērā tiek izgūti lauki dt, product_id, summa, cena no tabulas m_ienākums un nosaukuma lauks no tabulas m_product. Tabulas m_income ieraksts ir savienots ar tabulas m_product ierakstu, ja m_ienākums.product_id vērtība ir vienāda ar m_product.id vērtību:



ON m_income.product_id=m_product.id;

SQL vaicājums Q009. Ir divas lietas, kurām jāpievērš uzmanība šajā SQL vaicājumā: 1) meklēšanas teksts ir ievietots atsevišķās pēdiņās ("); 2) datums ir formātā #Month/Day/Year#, kas ir pareizs MS. Piekļuve. Citās sistēmās datuma formāts var atšķirties.Piemērs informācijas parādīšanai par piena saņemšanu 2011. gada 12. jūnijā. Pievērsiet uzmanību datuma formātam #6/12/2011#:

SELECT dt, product_id, nosaukumu, summu, cenu


NO m_income IEKŠĒJS JOIN m_product

WHERE title="Piens" And dt=#6/12/2011#; !}

SQL vaicājums Q010. Instrukcija BETWEEN tiek izmantota, lai pārbaudītu, vai tai pieder vērtību diapazons. SQL vaicājuma piemērs, kas parāda informāciju par precēm, kas saņemtas laikā no 2011. gada 1. jūnija līdz 30. jūnijam:

ATLASĪT*
NO m_income IEKŠĒJS JOIN m_product


ON m_income.product_id=m_product.id
KUR dt STARP #6/1/2011# Un #6/30/2011#;

SQL vaicājums. Piemēri programmā MS Access. IZVĒLE: 11-20

Vienu SQL vaicājumu var ligzdot citā. Apakšvaicājums nav nekas cits kā vaicājums vaicājumā. Parasti apakšvaicājums tiek izmantots WHERE klauzulā. Bet ir arī citi veidi, kā izmantot apakšvaicājumus.

Pieprasīt Q011. Parāda informāciju par produktiem no tabulas m_product, kuru kodi ir arī tabulā m_income:

ATLASĪT*
NO m_product


WHERE id IN (SELECT product_id FROM m_income);

Pieprasīt Q012. Tiek parādīts to produktu saraksts no tabulas m_product, kuru kodi nav tabulā m_outcome:

ATLASĪT*
NO m_product


WHERE id NOT IN (SELECT product_id FROM m_outcome);

Pieprasīt Q013.Šis SQL vaicājums atgriež unikālu kodu un produktu nosaukumu sarakstu, kuriem ir kodi tabulā m_income, bet nav m_outcome tabulā:

ATLASĪT ATŠĶIRĪGU produkta_id, nosaukumu


NO m_income IEKŠĒJS JOIN m_product
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

Pieprasīt Q014. No tabulas m_category tiek parādīts unikāls kategoriju saraksts, kuru nosaukumi sākas ar burtu M:

ATLASĪT ATŠĶIRĪGU nosaukumu


NO m_product
KUR nosaukums LIKE "M*";

Pieprasīt Q015. Piemērs aritmētisko darbību veikšanai vaicājuma laukiem un vaicājuma lauku pārdēvēšanai (alias). Šajā piemērā tiek aprēķināti izdevumi = daudzums*cena un peļņa katram preces patēriņa ierakstam, pieņemot, ka peļņa ir 7 procenti no pārdošanas apjoma:


summa*cena/100*7 AS peļņa
NO m_outcome;

Pieprasīt Q016. Analizējot un vienkāršojot aritmētiskās darbības, varat palielināt vaicājuma izpildes ātrumu:

SELECT dt, product_id, summa, price, summa*price AS result_sum,


iznākuma_summa*0,07 AS peļņa
NO m_outcome;

Pieprasīt Q017. Izmantojot priekšrakstu INNER JOIN, varat apvienot datus no vairākām tabulām. Nākamajā piemērā atkarībā no ctgry_id vērtības katrs ieraksts tabulā m_ienākums tiek saskaņots ar tās kategorijas nosaukumu no tabulas m_category, kurai pieder produkts:

ATLASĪT c.title, b.title, dt, summa, cena, summa*price AS ienākumu_summa


FROM (m_ienākums KĀ IEKŠĒJS PIEVIENOJUMS m_produkts AS b ON a.product_id=b.id)
IEKŠĒJĀ JOIN m_category AS c ON b.ctgry_id=c.id
KĀRTĪJUMS PĒC c.title, b.title;

Pieprasīt Q018. Tādas funkcijas kā SUM — summa, COUNT — daudzums, AVG — vidējais aritmētiskais, MAX — maksimālā vērtība, MIN — minimālā vērtība tiek sauktas par apkopotajām funkcijām. Tie ņem vairākas vērtības un apstrādājot atgriež vienu vērtību. Lauku summas un cenas reizinājuma summas aprēķināšanas piemērs, izmantojot SUM apkopošanas funkciju:

SELECT SUM(summa*cena) AS Total_Sum


NO m_ienākumiem;

Pieprasīt Q019. Vairāku apkopošanas funkciju izmantošanas piemērs:

SELECT Sum (summa) AS Summa_Summa, AVG(summa) AS Summa_AVG,


MAX(summa) AS Summa_Max, Min(summa) AS Summa_Min,
Skaits(*) AS Total_Number
NO m_ienākumiem;

Pieprasīt Q020.Šajā piemērā tiek aprēķināta visu 2011. gada jūnijā saņemto vienību ar kodu 1 summa:

SELECT Sum(summa*cena) AS ienākumu_summa


NO m_ienākumiem
WHERE product_id=1 UN dt STARP #6/1/2011# UN #6/30/2011#;.

Pieprasīt Q021.Šis SQL vaicājums aprēķina, par cik preces ar kodu 4 vai 6 tika pārdotas:

SELECT Sum(summa*cena) kā iznākuma_summa


NO m_outcome
WHERE produkta_id=4 VAI produkta_id=6;

Pieprasīt Q022. Tiek aprēķināts, par kādu summu 2011.gada 12.jūnijā pārdotas preces ar kodu 4 vai 6:

SELECT Sum(summa*cena) AS iznākuma_summa


NO m_outcome
KUR (produkta_id=4 VAI produkta_id=6) UN dt=#6/12/2011#;

Pieprasīt Q023. Uzdevums ir šāds. Aprēķiniet kopējo summu, par kādu tika ieskaitītas kategorijas "Cepti izstrādājumi" preces.

Lai atrisinātu šo problēmu, jums jādarbojas ar trim tabulām: m_ienākums, m_produkts un m_kategorija, jo:


- tabulā m_ienākums tiek saglabāts kreditēto preču daudzums un cena;
- katras preces kategorijas kods tiek saglabāts tabulā m_product;
- kategorijas nosaukuma nosaukums tiek saglabāts tabulā m_category.

Lai atrisinātu šo problēmu, mēs izmantojam šādu algoritmu:


- kategorijas koda "Cepti izstrādājumi" noteikšana no tabulas m_category ar apakšvaicājuma palīdzību;
- m_income un m_product tabulu savienošana, lai noteiktu katra kreditētā produkta kategoriju;
- saņemšanas summas (= daudzums * cena) aprēķins precēm, kuru kategorijas kods ir vienāds ar iepriekš minētajā apakšvaicājumā definēto kodu.
ATLASĪT
NO m_product KĀ IEKŠĒJS PIEVIENOTIES m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="Ceptas preces"); !}

Pieprasīt Q024. Kategorijas "Cepti izstrādājumi" kopējās kreditēto preču summas aprēķināšanas problēma tiks atrisināta ar šādu algoritmu:
- katrs tabulas m_income ieraksts atkarībā no tā produkta_id vērtības no tabulas m_category atbilst kategorijas nosaukumam;
- atlasiet ierakstus, kuriem kategorija ir vienāda ar "Cepti produkti";
- aprēķināt ienākumu summu = daudzums * cena.

NO (m_produkts KĀ IEKŠĒJS PIEVIENOJUMS m_income AS b ON a.id=b.product_id)

WHERE c.title="Ceptas preces"; !}

Pieprasīt Q025.Šajā piemērā tiek aprēķināts, cik preču tika patērēts:

SELECT COUNT(product_id) AS product_cnt


FROM (SELECT DISTINCT product_id FROM m_outcome) AS t;

Pieprasīt Q026. Klauzulu GROUP BY izmanto, lai grupētu ierakstus. Parasti ieraksti tiek grupēti pēc viena vai vairāku lauku vērtības, un katrai grupai tiek piemērota apkopošanas darbība. Piemēram, šāds vaicājums ģenerē pārskatu par preču pārdošanu. Tas nozīmē, ka tiek ģenerēta tabula, kurā būs preču nosaukumi un summa, par kādu tās tiek pārdotas:

SELECT virsraksts, SUM(summa*cena) AS iznākuma_summa


NO m_product KĀ IEKŠĒJĀ JOIN m_outcome AS b
ON a.id=b.product_id
GROUP PĒC nosaukuma;

Pieprasīt Q027. Pārdošanas pārskats pa kategorijām. Tas ir, tiek ģenerēta tabula, kurā būs preču kategoriju nosaukumi, kopējā summa, par kādu tiek pārdotas šo kategoriju preces, un vidējais pārdošanas apjoms. Funkciju ROUND izmanto, lai noapaļotu vidējo vērtību līdz tuvākajai simtdaļai (otrā zīme aiz komata):

SELECT c.title, SUM(summa*cena) AS rezultātu_summa,


ROUND(AVG(summa*cena),2) AS iznākuma_summa_vid
FROM (m_product KĀ IEKŠĒJĀ PIEVIENOŠANĀS m_outcome AS b ON a.id=b.product_id)
IEKŠĒJĀ JOIN m_category AS c ON a.ctgry_id=c.id
GROUP BY c.title;

Pieprasīt Q028. Katrai precei tiek aprēķināts tās kopējais un vidējais čeku skaits un tiek parādīta informācija par precēm, kuru kopējais čeku skaits ir vismaz 500:

SELECT product_id, SUM(summa) AS summa_sum,


Apaļa(Vid.(summa),2) AS summa_vid
NO m_ienākumiem
GROUP BY product_id
HAVING Sum(summa)>=500;

Pieprasīt Q029.Šis vaicājums katrai precei aprēķina 2011. gada otrajā ceturksnī veikto ieņēmumu summu un vidējo summu. Ja kopējā preču saņemšanas summa nav mazāka par 1000, tad tiek parādīta informācija par šo preci:

SELECT nosaukumu, SUM(summa*cena) AS ienākumu_summa


NO m_ienākumiem a IEKŠĒJĀ PIEVIENOTIES m_product b UZ a.product_id=b.id
KUR dt starp #4/1/2011# UN #6/30/2011#
GROUP PĒC nosaukuma
IR SUMMA(summa*cena)>=1000;

Pieprasīt Q030. Dažos gadījumos ir nepieciešams saskaņot katru kādas tabulas ierakstu ar katru citas tabulas ierakstu; ko sauc par Dekarta produktu. Šāda savienojuma rezultātā izveidoto tabulu sauc par Dekarta tabulu. Piemēram, ja kādā tabulā A ir 100 ieraksti un tabulā B ir 15 ieraksti, tad to Dekarta tabula sastāvēs no 100*15=150 ierakstiem. Šis vaicājums savieno katru ierakstu tabulā m_income ar katru ierakstu tabulā m_outcome:
NO m_income, m_outcome;

Pieprasīt Q031. Piemērs ierakstu grupēšanai pēc diviem laukiem. Šis SQL vaicājums katram piegādātājam aprēķina no viņa saņemto preču daudzumu un daudzumu:


SUM(summa*cena) AS ienākumu_summa

Pieprasīt Q032. Piemērs ierakstu grupēšanai pēc diviem laukiem. Šis vaicājums katram piegādātājam aprēķina mūsu pārdoto preču daudzumu un daudzumu:

SELECT piegādātāja_id, produkta_id, SUM(summa) AS summa_summa,




GROUP BY piegādātāja_id, produkta_id;

Pieprasīt Q033.Šajā piemērā divi iepriekš minētie vaicājumi (q031 un q032) tiek izmantoti kā apakšvaicājumi. Šo vaicājumu rezultāti tiek apvienoti vienā atskaitē, izmantojot LEFT JOIN metodi. Nākamajā vaicājumā tiek parādīts pārskats par saņemto un pārdoto produktu skaitu un apjomu katram piegādātājam. Jāpievērš uzmanība tam, ka, ja kāda prece jau ir atnākusi, bet vēl nav pārdota, tad šī ieraksta šūna result_sum būs tukša. ka šis vaicājums ir tikai lietojuma piemērs attiecībā uz sarežģīti vaicājumi kā apakšvaicājumu. Performance dots pieprasījums SQL ar lielu datu apjomu ir apšaubāma:

ATLASĪT*
NO



SUM(summa*cena) AS ienākumu_summa

ON a.product_id=b.id GROUP BY BY piegādātāja_id, produkta_id) AS a
PA kreisi PIEVIENOTIES
(ATLASĪT piegādātāja_id, produkta_id, SUM(summa) AS summa_summa,
SUM(summa*cena) AS iznākuma_summa
NO m_outcome KĀ IEKŠĒJĀ JOIN m_product AS b
ON a.product_id=b.id GROUP BY BY piegādātāja_id, produkta_id) AS b
IESLĒGTS (a.product_id=b.product_id) UN (a.supplier_id=b.supplier_id);

Pieprasīt Q034.Šajā piemērā divi iepriekš minētie vaicājumi (q031 un q032) tiek izmantoti kā apakšvaicājumi. Šo vaicājumu rezultāti tiek apvienoti vienā atskaitē, izmantojot RIGTH JOIN metodi. Sekojošais vaicājums izdrukā atskaiti par katra klienta maksājumu apmēru par izmantotajām maksājumu sistēmām un veikto ieguldījumu apjomu. Nākamajā vaicājumā tiek parādīts pārskats par saņemto un pārdoto produktu skaitu un apjomu katram piegādātājam. Ņemiet vērā: ja prece jau ir pārdota, bet vēl nav saņemta, šī ieraksta šūna ienākumu_summa būs tukša. Šādu tukšu šūnu klātbūtne liecina par kļūdu pārdošanas uzskaitē, jo pirms pārdošanas vispirms ir jāsaņem atbilstošais produkts:

ATLASĪT*
NO


(ATLASĪT piegādātāja_id, produkta_id, SUM(summa) AS summa_summa,
SUM(summa*cena) AS ienākumu_summa
NO m_income KĀ IEKŠĒJS PIEVIENOTIES m_product AS b ON a.product_id=b.id
GROUP BY piegādātāja_id, produkta_id) AS a
PAREIZI PIEVIENOJIES
(ATLASĪT piegādātāja_id, produkta_id, SUM(summa) AS summa_summa,
SUM(summa*cena) AS iznākuma_summa
NO m_outcome KĀ IEKŠĒJS JOIN m_product AS b ON a.product_id=b.id
GROUP BY piegādātāja_id, produkta_id) AS b
IESLĒGTS (a.supplier_id=b.supplier_id) UN (a.product_id=b.product_id);

Pieprasīt Q035. Tiek parādīta atskaite par ienākumu un izdevumu apjomu pa precēm. Lai to izdarītu, tiek izveidots preču saraksts pēc tabulām m_income un m_outcome, pēc tam katram produktam no šī saraksta tiek aprēķināta tā ieņēmumu summa saskaņā ar tabulu m_income un tā izdevumu summa saskaņā ar tabulu m_outcome:

SELECT product_id, SUM(in_summa) AS ienākumu_summa,


SUM(out_summa) AS iznākuma_summa
NO
(SELECT product_id, summa AS in_amount, 0 AS out_amount
NO m_ienākumiem
SAVIENĪBA VISU
SELECT product_id, 0 AS in_amount, summa AS out_amount
NO m_outcome) AS t
GROUP BY product_id;

Pieprasīt Q036. Funkcija EXISTS atgriež TRUE, ja tai nodotā ​​kopa satur elementus. Funkcija EXISTS atgriež FALSE, ja tai nodotā ​​kopa ir tukša, tas ir, tai nav elementu. Šis vaicājums atgriež produktu kodus, kas ir ietverti gan tabulā m_income, gan tabulā m_outcome:

ATLASĪT ATŠĶIRĪGU produkta_id


NO m_income AS a
WHERE EXISTS(SELECT product_id FROM m_outcome AS b

Pieprasīt Q037. Tiek parādīti produktu kodi, kas ir ietverti gan tabulā m_income, gan m_outcome:

ATLASĪT ATŠĶIRĪGU produkta_id


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

Pieprasīt Q038. Tiek parādīti produktu kodi, kas ir ietverti kā tabulā m_income, bet nav ietverti tabulā m_outcome:

ATLASĪT ATŠĶIRĪGU produkta_id


NO m_income AS a
WHERE NOT EXISTS(SELECT product_id FROM m_outcome AS b
WHERE b.product_id=a.product_id);

Pieprasīt Q039. Tiek parādīts to produktu saraksts, kuriem ir vislielākais pārdošanas apjoms. Algoritms ir šāds. Katrai precei tiek aprēķināta tā pārdošanas apjoma summa. Pēc tam tiek noteikta šo summu maksimālā summa. Pēc tam katrai precei atkal tiek aprēķināta tās pārdošanas summa, un tiek parādīts kods un preču pārdošanas summa, kuras pārdošanas summa ir vienāda ar maksimālo:

SELECT product_id, SUM(summa*cena) AS summa_sum


NO m_outcome
GROUP BY product_id
IR SUMMA(summa*cena) = (ATLASĪT MAX(s_summa)
FROM (SELECT SUM(summa*cena) AS s_summa FROM m_outcome GROUP BY product_id));

Pieprasīt Q040. Rezervētais vārds IIF (nosacījuma operators) tiek izmantots, lai novērtētu loģisko izteiksmi un veiktu darbību atkarībā no rezultāta (TRUE vai FALSE). Nākamajā piemērā preces piegāde tiek uzskatīta par "mazu", ja daudzums ir mazāks par 500. Pretējā gadījumā, tas ir, saņemšanas daudzums ir lielāks vai vienāds ar 500, piegāde tiek uzskatīta par "lielu":

SELECT dt, product_id, summa,


IIF(summa NO m_ienākums;

SQL vaicājums Q041. Gadījumā, ja IIF priekšraksts tiek izmantots vairākkārt, ērtāk to aizstāt ar SWITCH priekšrakstu. SWITCH operators (vairāku izvēļu operators) tiek izmantots, lai novērtētu loģisko izteiksmi un veiktu darbību atkarībā no rezultāta. Nākamajā piemērā piegādātā partija tiek uzskatīta par "mazu", ja preču daudzums partijā ir mazāks par 500. Pretējā gadījumā, tas ir, ja preču daudzums ir lielāks vai vienāds ar 500, partija tiek uzskatīta par "lielu". ":

SELECT dt, product_id, summa,


SWITCH(summa =500"liels") AS zīme
NO m_ienākumiem;

Pieprasīt Q042. Nākamajā vaicājumā, ja preču daudzums ienākošajā partijā ir mazāks par 300, tad partija tiek uzskatīta par "mazu". Pretējā gadījumā, t.i., ja nosacījuma summa SELECT dt, product_id, summa,
IIF(summa IIF(summa NO m_ienākums;

SQL vaicājums Q043. Nākamajā vaicājumā, ja preču daudzums ienākošajā partijā ir mazāks par 300, tad partija tiek uzskatīta par "mazu". Pretējā gadījumā, t.i., ja nosacījuma summa SELECT dt, product_id, summa,
SWITCH(summa summa summa>=1000,"liels") AS atzīme
NO m_ienākumiem;

SQL vaicājums Q044. Nākamajā vaicājumā pārdošana ir sadalīta trīs grupās: maza (līdz 150), vidēja (no 150 līdz 300), liela (300 un vairāk). Tālāk katrai grupai aprēķina kopējo summu:

SELECT Kategorija, SUM(rezultāta_summa) AS Ctgry_Total


NO (ATLASĪT summa*cena AS iznākuma_summa,
IIf(summa*cena IIf(summa*cena NO m_rezultāta) AS t
GROUP BY Kategorija;

SQL vaicājums Q045. Funkciju DateAdd izmanto, lai norādītajam datumam pievienotu dienas, mēnešus vai gadus un iegūtu jaunu datumu. Nākamais pieprasījums:
1) pievienojiet 30 dienas datumam no dt lauka un displeja jauns datums laukā dt_plus_30d;
2) pievienojiet 1 mēnesi datumam no lauka dt un parādiet jauno datumu laukā dt_plus_1m:

SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m


NO m_ienākumiem;

SQL vaicājums Q046. Funkcija DateDiff ir paredzēta, lai aprēķinātu atšķirību starp diviem datumiem dažādās vienībās (dienās, mēnešos vai gados). Šis vaicājums aprēķina starpību starp datumu laukā dt un pašreizējo datumu dienās , mēnešos un gados:

SELECT dt, DateDiff("d", dt,Date()) AS pēdējā_diena,


DateDiff("m",dt,Date()) AS pēdējie_mēneši,
DatumsAtšķirība("gggg",dt,Datums()) AS pēdējie_gadi
NO m_ienākumiem;

SQL vaicājums Q047. Izmantojot funkciju DateDiff, tiek aprēķināts dienu skaits no preču saņemšanas datuma (m_ienākumu tabula) līdz pašreizējam datumam un tiek salīdzināts derīguma termiņš (m_product tabula):


DateDiff("d",dt,Date()) AS pēdējās_dienas
NO m_income KĀ IEKŠĒJĀ JOIN m_product AS b
ON a.product_id=b.id;

SQL vaicājums Q048. Tiek aprēķināts dienu skaits no preces saņemšanas dienas līdz kārtējam datumam, pēc tam tiek pārbaudīts, vai šis skaits pārsniedz derīguma termiņu:

SELECT a.id, product_id, dt, lifedays,


DateDiff("d",dt,Date()) AS pēdējās_dienas, IIf(pēdējās_dienas>dzīves dienas,"Jā","Nē") AS date_exire
NO m_income a IEKŠĒJĀ JOIN m_product b
ON a.product_id=b.id;

SQL vaicājums Q049. Tiek aprēķināts mēnešu skaits no preces saņemšanas dienas līdz kārtējam datumam. Slejā month_last1 tiek aprēķināts absolūtais mēnešu skaits, slejā month_last2 tiek aprēķināts pilno mēnešu skaits:

SELECT dt, DateDiff("m", dt,Date()) AS month_last1,


DatumsAtšķirība("m",dt,Datums())-iif(diena(dt)>diena(datums()),1,0) AS mēnesis_pēdējais2
NO m_ienākumiem;

SQL vaicājums Q050. Tiek parādīts ceturkšņa pārskats par saņemto preču daudzumu un apjomu par 2011. gadu:

SELECT kvartal, SUM(rezultāta_summa) AS Kopā


FROM (SELECT summa*cena AS rezultātu_summa, mēnesis(dt) AS m,
SLĒDZS(m =10,4) AS kvartāls
NO m_ienākums WHERE gads(dt)=2011) AS t
GROUP BY bloks;

Pieprasīt Q051. Sekojošais vaicājums palīdz noskaidrot, vai lietotājiem ir izdevies sistēmā ievadīt informāciju par preču patēriņu par summu, kas lielāka par preču saņemšanas summu:

SELECT product_id, SUM(in_sum) AS ienākumu_summa, SUM(out_sum) AS rezultātu_summa


NO (ATLASĪT produkta_id, summa*cena kā in_sum, 0 kā out_sum
no m_ienākumiem
SAVIENĪBA VISU
SELECT product_id, 0 kā in_sum, summa*price kā out_sum
no m_outcome) AS t
GROUP BY product_id
IR SUMMA(summā)
Pieprasīt Q052. Vaicājuma atgriezto rindu numerācija tiek realizēta dažādos veidos. Piemēram, varat pārnumurēt programmā MS Access sagatavotās atskaites rindas, izmantojot pašu MS Access. Varat arī pārnumurēt, izmantojot programmēšanas valodas, piemēram, VBA vai PHP. Tomēr dažreiz tas ir jādara pašā SQL vaicājumā. Tātad šāds vaicājums numurēs tabulas m_income rindas atbilstoši ID lauka vērtību augošajai secībai:

SELECT COUNT(*) kā N, b.id, b.product_id, b.amount, b.price


NO m_income a INER JOIN m_income b ON a.id GROUP BY b.id, b.product_id, b.amount, b.price;

Pieprasīt Q053. Tiek parādīti pieci labākie produkti pēc pārdošanas apjoma. Pirmo piecu ierakstu izvade tiek veikta, izmantojot TOP instrukciju:

SELECT TOP 5, product_id, summa(summa*cena) AS summa


NO m_outcome
GROUP BY product_id
PASŪTĪT PĒC summas(summa*cena) DESC;

Pieprasīt Q054. Tiek parādīti pieci labākie produkti pēc pārdošanas apjoma, un rezultātā tiek numurētas rindas:

SELECT COUNT(*) AS N, b.product_id, b.summa


NO


NO m_outcome GROUP BY product_id) AS a
IEKŠĒJĀ PIEVIENOŠANĀS
(SELECT product_id, summa(summa*price) AS summa,
summa*10000000+product_id AS id
NO m_outcome GROUP BY product_id) AS b
ON a.id>=b.id
GROUP BY b.product_id, b.summa
AR SKAITĪŠANU (*) SKAITĪT (*);

Pieprasīt Q055.Šis SQL vaicājums parāda matemātisko funkciju COS, SIN, TAN, SQRT, ^ un ABS izmantošanu MS Access SQL:

SELECT (atlasīt skaitu (*) no m_iencome) kā N, 3.1415926 kā pi, k,


2*pi*(k-1)/N kā x, COS(x) kā COS_, SIN(x) kā SIN_, TAN(x) kā TAN_,
SQR(x) kā SQRT_, x^3 kā "x^3", ABS(x) kā ABS_
NO (SELECT COUNT(*) AS k
NO m_income KĀ IEKŠĒJS JOIN m_income AS b ON a.idGROUP BY b.id) t;

SQL vaicājums. Piemēri programmā MS Access. ATJAUNINĀJUMS: 1.-10

Pieprasīt U001.Šis SQL izmaiņu vaicājums palielina cenas precēm ar kodu 3 tabulā m_income par 10%.

UPDATE m_income SET cena = cena*1.1


WHERE produkta_id=3;

Pieprasīt U002.Šis SQL atjaunināšanas vaicājums palielina visu produktu daudzumu tabulā m_income par 22 vienībām, kuru nosaukumi sākas ar vārdu "Sviests":

UPDATE m_income SET summa = summa+22


WHERE product_id IN (SELECT id FROM m_product WHERE nosaukums LIKE "Eļļa*");

Pieprasīt U003.Šis SQL izmaiņu vaicājums tabulā m_outcome samazina visu OOO Sladkoe ražoto preču cenas par 2 procentiem:

UPDATE m_outcome SET cena = cena*0,98


WHERE product_id IN
(IZVĒLIES a.id NO m_product a IEKŠĒJĀ PIEVIENOTIES m_piegādātājs b
ON a.supplier_id=b.id WHERE b.title="OOO"Сладкое"");. !}

SQL vaicājums ir vaicājums, kas izveidots, izmantojot SQL paziņojumus. SQL (strukturētā vaicājumu valoda) izmanto, lai izveidotu vaicājumus un atjauninātu un pārvaldītu relāciju datu bāzes, piemēram, Microsoft Access datu bāzes.

Kad lietotājs vaicājumu noformējuma skatā izveido vaicājumu, Microsoft Access automātiski izveido līdzvērtīgu SQL priekšrakstu. Ir vairāki vaicājumi, kurus var veikt tikai SQL režīmā. Pieredzējušiem programmētājiem bieži vien ir vieglāk uzreiz uzrakstīt izteiksmi SQL, nevis izveidot vaicājumu.

Pieprasījuma veids konstruktorā:

Izmantojot sarežģītus aprēķinus, jums secīgi jāveic vairāki pieprasījumi, lai iegūtu rezultātu. Ir skaidrs, ka šīs darbības jāveic automātiski, bez lietotāja iejaukšanās.

Šim nolūkam tiek izmantoti makro, kas sastāv no vairākām secīgi izpildītām komandām.

Aprēķini vaicājumos, iespēja veidot un rediģēt formulas.

Laukiem no vaicājuma shēmā norādītajām tabulām varat norādīt jebkuru aprēķinu.

Lai veiktu aprēķinus, vaicājumam jāpievieno papildu aprēķinātie lauki, kuru vērtības tiek aprēķinātas, pamatojoties uz citu vaicājuma lauku vērtībām.

Gala vaicājumi, grupēšana, gala funkcijas.

Galīgais vaicājums tiek izveidots, izmantojot režīmu - Kopsavilkuma vaicājums.

Var izmantot trīs tabulas, ieskaitot saišu tabulu.

Šajā gadījumā varat izsaukt konteksta izvēlni no jebkuras vaicājuma vietas (peles labā poga) un atlasīt atribūtu "grupas darbības".

Parādīsies pieprasījuma veidlapa jauna līnija Grupēšana.

Kopējās funkcijas: laukā, kuram mēs vēlamies aprēķināt kopsummas, sarakstā atlasiet funkciju "Summa", lai summētu visas atlasīto lauku vērtības. Funkcija Skaits saskaitīs lauka vērtību skaitu. informācijas rediģēšana microsoft

Vaicājums ir izsaukums DBVS, lai veiktu jebkādas datu darbības: datu daļas atlasīšana no kopējā apjoma, aprēķināto lauku pievienošana, datu lielapjoma maiņa utt.

Pieprasījumā jūs varat:

  • - atlasīt informāciju no vairākām saistītām tabulām;
  • - izmantot kompleksus atlases nosacījumus;
  • - lietotājs var pats ievadīt parametru vērtības, pievienot aprēķinātos laukus;
  • - Veikt galīgos aprēķinus.

Pieprasījumu veidi:

  • - paraugs;
  • - tabulas izveidošana;
  • - atjaunināšana (datu maiņa);
  • - ierakstu pievienošana;
  • - ierakstu dzēšana.

Vaicājumi tiek izmantoti kā veidlapu un atskaišu ierakstu avoti. Lielākoties gan veidlapās, gan atskaitēs pirms izdošanas ir jāatlasa daļa datu atbilstoši kādiem nosacījumiem un jāsakārto dati. Tas tiek darīts ar pieprasījumiem. Pieprasījumu var uzglabāt atsevišķi vai saistīt ar veidlapu vai pārskatu.

Programmā Microsoft Access ir vairāki vaicājumu veidi.