Datu paraugu ņemšana Access datu bāzē, izmantojot sql vaicājumus. Ilustrēta apmācība par SQL iesācējiem Piekļuvē vaicājums SQL valodā

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 programmatūras sistēmu izstrādātājiem ir daudz "balto plankumu", jo vienu un to pašu terminu interpretācijas atšķiras. 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, lai 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 kuru 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 visu procesuālo programmēšanas valodu funkciju, 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 Server — 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.

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 vaicā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 jebkādus aprēķinus.

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 funkciju "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.

DBVS piekļuve

Microsoft Access ir relāciju veids DBVS, kas saprātīgi līdzsvaro visus mūsdienu datu bāzes pārvaldības sistēmām raksturīgos rīkus un iespējas. Relāciju datu bāze ļauj vieglāk atrast, analizēt, uzturēt un aizsargāt datus, jo tie tiek glabāti vienuviet. Piekļuve tulkojumā no angļu valodas nozīmē "piekļuve". MS Access ir viena no jaudīgākajām, elastīgākajām un vienkāršākajām DBVS. Tajā var izveidot lielāko daļu aplikāciju, neierakstot nevienu programmas rindiņu, bet, ja nepieciešams izveidot kaut ko ļoti sarežģītu, tad šim gadījumam MS Access nodrošina jaudīgu programmēšanas valodu - Visual Basic Application.

Microsoft Access DBVS popularitāte ir saistīta ar šādiem iemesliem:

Pieejamība pētījumā un saprotamība ļauj Access būt vienam no labākās sistēmasātra datu bāzes pārvaldības lietojumprogrammu izveide;

Spēja izmantot OLE tehnoloģiju;

Integrācija ar Microsoft Office pakotni;

Pilns Web tehnoloģiju atbalsts;

Vizuālās tehnoloģijas ļauj pastāvīgi redzēt savu darbību rezultātus un tos labot;

Liela "meistaru" komplekta klātbūtne objektu attīstībai.

Galvenie objektu veidi, ar kuriem programma strādā, ir: tabula, vaicājums, forma, atskaite, lapa, makro, modulis.

Tabula ir objekts, ko izmanto datu glabāšanai. Katrā tabulā ir informācija par objektu noteikta veida. Tabulā ir lauki (kolonnas), kas glabā dažāda veida datus, un ieraksti (rindas). Katrai tabulai ir jādefinē primārā atslēga (viens lauks, kas ir katram ierakstam unikāla vērtība vai vairāki lauki, kuru kumulatīvā vērtība katram ierakstam ir unikāla), kas ir unikāls identifikators katram tabulas ierakstam.

Lai palielinātu datu piekļuves ātrumu, atsevišķi tabulas lauki (vai to kombinācija) var tikt deklarēti par indeksiem. Indekss ir rīks, kas paātrina meklēšanu un kārtošanu tabulā, izmantojot atslēgas vērtības, kas ļauj nodrošināt tabulas rindu unikalitāti. Tabulas primārā atslēga tiek indeksēta automātiski. Nav atļauts izveidot indeksus laukiem ar dažiem datu tipiem.

Vaicājums ir objekts, kas ļauj lietotājam iegūt vajadzīgos datus no vienas vai vairākām tabulām. Varat arī izmantot vaicājumus, lai izveidotu jaunas tabulas, izmantojot datus no vienas vai vairākām jau esošām tabulām. Visizplatītākais vaicājuma veids ir atlases vaicājums. Atlasīšanas vaicājums atlasa datus no vienas vai vairākām tabulām, pamatojoties uz noteiktiem nosacījumiem, un pēc tam parāda tos vēlamajā secībā.

Veidlapa ir objekts, kas galvenokārt paredzēts datu ievadīšanai, parādīšanai ekrānā vai lietojumprogrammas darbības kontrolei.

Atskaite - objekts, kas paredzēts, lai izveidotu dokumentu, ko vēlāk var izdrukāt vai iekļaut citas lietojumprogrammas dokumentā.

vizuālās attīstības programmēšanas bāze

Lapa — tiek izmantota, lai piekļūtu datiem pašreizējā Access datu bāzē.

Makro ir objekts, kas ir vienas vai vairāku darbību strukturēts apraksts, kas Access jāveic, reaģējot uz konkrētu notikumu.

Modulis ir objekts, kurā ir Microsoft Visual Basic programmas, kas ļauj sadalīt procesu mazākos posmos un atklāt tās kļūdas, kuras nevarēja atrast, izmantojot makro.

DBVS palaiž ar Sākt — Programmas — Microsoft Access. Palaidiet komandu Fails - jauns.

Interfeiss darbam ar datu bāzes objektiem ir vienots. Katram no tiem ir standarta darbības režīmi: Izveidot (veidot objektu struktūru); Konstruktors (objektu struktūras maiņa); Atvērt (View, Run - paredzēts darbam ar datu bāzes objektiem).

SQL vaicājumu valoda

SQL (Structured Query Language – strukturētā vaicājuma valoda) kopš 1986. gada. ir standarta relāciju datu bāzes valoda. Jo īpaši to izmanto Access un Excel lietojumprogrammās.

SQL ir informatīvi loģiska valoda, kas paredzēta saglabāto datu aprakstīšanai, saglabāto datu iegūšanai un datu modificēšanai. Sākotnēji SQL bija galvenais veids, kā lietotājs strādāja ar datu bāzi, un tas bija neliels komandu (operatoru) kopums, kas ļāva izveidot tabulas, pievienot tabulām jaunus ierakstus, izvilkt ierakstus no tabulām, dzēst ierakstus un mainīt tabulu struktūras. Pieaugošās sarežģītības dēļ SQL valoda ir kļuvusi par piemērotāku programmēšanas valodu, un lietotāji ir varējuši izmantot vizuālo vaicājumu veidotājus.

SQL valoda ir operatoru kopa:

datu definēšanas operatori (Data Definition Language, DDL);

datu manipulācijas operatori (Data Manipulation Language, DML);

datu piekļuves definīciju operatori (Data Control Language, DCL);

Darījumu kontroles valodas (TCL) paziņojumi.

Vaicājumi programmā MS Access tiek saglabāti un ieviesti, izmantojot SQL valodu. Lai gan lielāko daļu vaicājumu var izveidot, izmantojot grafiskos rīkus (veidņu vaicājumus), tie tiek saglabāti kā SQL priekšraksti. Dažos gadījumos (piemēram, apakšvaicājumos) var izmantot tikai SQL.

SQL ir neprocedūra valoda. Tā vienkārši deklarē, kas ir jādara, un izpilde tiek uzticēta DBVS (datu bāzes pārvaldības sistēmai).

SQL izmanto trīs vērtību loģiku. Kopā ar tradicionālajiem Būla vērtībām TRUE un FALSE tiek izmantots NULL (UNKNOWN vai NAV DATU).

Darbības tiek veiktas ar veselām datu kopām, nevis atsevišķiem elementiem, kā tas ir citās programmēšanas valodās.

SQL vaicājums sastāv no priekšrakstiem. Katrā instrukcijā var būt vairāki punkti.

Laika gaitā procesam var būt nepieciešams migrēt Microsoft Office Access (Access) failu servera datu bāzi uz klienta-servera DBVS formātu. Parasti šim nolūkam izmanto ODBC. Tomēr pārsūtīšanai uz Microsoft SQL Server (MS SQL), Access un MS SQL DBVS ir ērti specializēti rīki.

Ir trīs veidi, kā pārsūtīt datubāzi no Access uz MS SQL. Apsveriet tos visus vienkāršas datu bāzes piemērā, kas sastāv no divām tabulām un viena vaicājuma.

Datu bāzes pārsūtīšana, izmantojotAccess ("Vednis konvertēšanai formātāSQLserveris")

Lai sāktu pārsūtīšanu, cilnes "Darbs ar datu bāzēm" apgabalā "Datu kustība" ir jānoklikšķina uz pogas "SQL Server".

Atvērtajā logā jāizvēlas, kur dati tiks pārsūtīti.

Ir divas iespējas:

  1. Eksportēt uz esošu MS SQL datu bāzi;
  2. Izveidojiet jaunu datu bāzi (noklusējums).

Mēs iestatām servera nosaukumu, uz kuru pārsūtīsim datu bāzi, izveidojamās datu bāzes nosaukumu un norādām savienojuma lietotājvārdu un paroli.

Lai atlasītu vienu tabulu, izmantojiet pogu ">" un, lai atlasītu visas tabulas, izmantojiet pogu ">>". Lai atteiktu pārskaitījumu, pogas "<» и «<<» соответственно.

Pēc tabulu atlasīšanas varat iestatīt papildu opcijas to pārsūtīšanai. Jo īpaši Access modernās versijas var eksportēt ne tikai pašas datu tabulas, bet arī attiecības starp tām. Tas ievērojami samazina datu bāzu migrēšanai nepieciešamo laiku, jo pēc migrācijas tās nav jāveido no jauna.

  • Izveidot jaunu klienta-servera lietojumprogrammu ar Access lietotāja interfeisu;
  • Iekļaut migrētās tabulas avota datu bāzē kā ārējās (noklusējums);
  • Nedariet neko ar avota datu bāzi.

Kad visa nepieciešamā informācija ir savākta, varat atgriezties pie kādas no iepriekšējām verifikācijas darbībām vai sākt pārsūtīšanas procesu, noklikšķinot uz pogas "Pabeigt".

Pārsūtīšanas procesa gaita ir skaidri parādīta īpašā logā.

Kad migrēšana ir pabeigta, varat atvērt SQL Server Management Studio un redzēt rezultātu.

Šī metode ir visvienkāršākā un ērtākā, taču diemžēl tā ļauj pārsūtīt tikai tabulas un to pavadošos elementus (indeksi, attiecības utt.).

Datu bāzes importēšanaPiekļuve nozīmēMicrosoftSQLserveris

MS SQL var importēt datus no dažādiem avotiem. Taču tiešs imports no Access ir iespējams tikai vecā formāta (.mdb) datu bāzēm.

Detalizētus norādījumus par šādu datu bāzu importēšanu var atrast.

Jaunu formātu datubāzu importēšana (2007. gadā un jaunāki) ir daudz grūtāka.

Ir divi veidi, kā atrisināt šo problēmu:

  • Vispirms eksportējiet Access datu bāzi vecajā formātā.
    Šajā gadījumā varat viegli izmantot instrukcijas, kas sniegtas augstāk esošajā saitē;
  • Izmantojot ODBC.
    Datu avota izveide Access datu bāzei ar sekojošu savienojumu caur to no MS SQL Server.

Diemžēl ODBC pieeja ir diezgan sarežģīta Windows 64 bitu versijās.

Iemesls ir tāds, ka MS SQL 64 bitu versijas ir iesaiņotas ar SQL Server Management Studio 32 bitu versijām. Šis apstāklis ​​nozīmē, ka Access datu bāzes, kurām datu avoti tika izveidoti, pamatojoties uz 64 bitu draiveriem, nevar importēt, izmantojot šo programmu.

Atkal ir divas izejas (tas nozīmē tikai metodes, kas izmanto grafisko interfeisu):

  • Izmantojiet Windows, MS SQL, Office 32 bitu versijas;
  • Izmantojiet tikai 32 bitu Access un konfigurējiet datu avotu, izmantojot 32 bitu ODBC pārvaldnieku (parasti C:\Windows\SysWOW64\odbcad32.exe);
  • Izmantojiet alternatīvu programmatūru darbam ar MS SQL.

Tomēr, pat ja jums joprojām izdodas izveidot importēšanas procesu, ieguvumi no tā var būt daudz mazāki nekā iztērētais laiks un pūles.

Importējot tiek pārsūtītas tikai pašas tabulas un to saturs un nekas cits (salīdzināt ar iepriekšējās metodes iespējām).

Jāņem vērā arī tas, ka ar tiešu importēšanu no Access, problēma ar vaicājumu eksportēšanu ir daļēji atrisināta (nav piekļuves vaicājumiem, izmantojot ODBC). Bet pēc noklusējuma vaicājumi tiek importēti MS SQL datu bāzē parastu tabulu veidā.

Par laimi, ir iespējams precīzi noregulēt importēšanas parametrus, un jūs varat manuāli aizstāt SQL vaicājumu, lai izveidotu tabulu ar vaicājumu, lai izveidotu skatu.

Lai to izdarītu, logā, kas redzams iepriekš atlasītā Access vaicājuma ekrānuzņēmumā, noklikšķiniet uz pogas "Mainīt".

Atvērtajā logā noklikšķiniet uz pogas "Mainīt SQL ...".

Tiks atvērts SQL vaicājuma rediģēšanas logs, kurā faktiski ir jāaizstāj automātiski ģenerētais vaicājums

ar savējo.

Rezultātā vaicājums no Access tiks pārsūtīts uz MS SQL datu bāzi pareizi, kā skats, nevis tabula.

Protams, šādi iestatījumi ir rūpīgs roku darbs, kas prasa arī noteiktas zināšanas un prasmes, bet tomēr, kā saka, "labāk nekā nekas".

Tāpēc šī Access datu bāzu pārsūtīšanas metode uz MS SQL ir vairāk piemērota kvalificētiem speciālistiem abās DBVS.

Tālāk ir sniegts piemērs Access datu bāzes importēšanai, izmantojot ODBC Windows 32 bitu versijā. Windows 64 bitu versijā, izmantojot Access 32 bitu versiju, importēšana ir līdzīga, taču datu avots tiek izveidots 32 bitu ODBC pārvaldniekā.

Mēs izveidojam datu avotu.

Atvērtajā logā ievadiet tā nosaukumu.

Pēc tam noklikšķiniet uz pogas "Atlasīt" un norādiet, ar kuru Access datu bāzi vēlaties izveidot savienojumu.

Kad ir norādīts avota nosaukums un datu bāzes fails, atliek noklikšķināt uz pogas “Ok” un datu avots vajadzīgajai Access datu bāzei ir gatavs.

Tagad varat pāriet tieši uz datu bāzes importēšanu MS SQL.

Lai to izdarītu, tās datu bāzes konteksta izvēlnē, kurā vēlaties importēt, atlasiet vienumus "Uzdevumi" -\u003e "Importēt datus".

Tiks atvērts "Datu importēšanas un eksportēšanas vednis".

Nolaižamajā sarakstā "Datu avots" ir jāatlasa ".Net Framework Data Provider for Odbc" (ja tas nav atlasīts pēc noklusējuma) un tabulas rindā Dsn norādiet iepriekš izveidotā datu avota nosaukumu programmai Access. datu bāze. Savienojuma virkne ("Savienojuma virkne") tiks ģenerēta automātiski.

Tālāk jānorāda, kura datu bāze, kura MS SQL importēšanas instance. Lai to izdarītu, pēc noklikšķināšanas uz pogas "Tālāk" nolaižamajā sarakstā "Galamērķis" atlasiet "Microsoft SQL Server Native Client" (kā parādīts zemāk esošajā ekrānuzņēmumā) vai "Microsoft OLE DB Provider for SQL Server", norādiet vēlamo datu bāzes lietotājvārdu un paroli savienojumiem.

Pēc tam jums jāizvēlas importējamās tabulas. Kā minēts iepriekš, izmantojot ODBC, Access vaicājumu importēšana nav pieejama. Tāpēc atšķirībā no iepriekšējā ekrānuzņēmuma ar importējamo objektu sarakstu, šajā sarakstā būs tikai tabulas.

Ar izvēles rūtiņu palīdzību var atlasīt gan visas tabulas vienlaikus (kas tiek darīts šajā piemērā), gan dažas no tām atsevišķi.

Pēc tam tiks parādīts logs ar importēšanas procesa galīgajiem iestatījumiem. Atstāsim visas noklusējuma vērtības.

Pēc noklikšķināšanas uz pogas "Pabeigt" importēšanas process tiks pabeigts. Ja viss ir izdarīts pareizi un importēšana ir veiksmīga, logā ar informāciju par importēšanu nebūs kļūdu (skatiet ekrānuzņēmumu zemāk).

Lai pabeigtu vedņa darbību, vienkārši noklikšķiniet uz pogas "Aizvērt".

Rezultātu var redzēt SQL Server Management Studio.

Datu bāzes pārsūtīšana no sāniem ar līdzekļiemODBC

Šī metode ir universāla datu eksportēšanai no Access uz jebkuru citu DBVS. Pietiek ar to, ka tas atbalsta darbu ar ODBC.

Šāda eksporta piemērs jau iepriekš tika apspriests rakstā ""

PriekšJAUNKUNDZESQL dota iespēja migrēt datu bāzi noPiekļuve nav nepieciešama, jo tiek eksportētas tikai tabulas ar datiem, un vaicājumi tiek eksportēti tikai kā parastas tabulas.

Tomēr šī pārnesamība joprojām ir pieejama (2014. gada versija nebija izņēmums). Tāpēc apskatīsim arī to.

Vispirms izveidosim datu avotu darbam ar MS SQL (lai tas būtu pielāgots DSN).

Norādiet avota draiveri.

Pēc tam sāksies tā izveides un konfigurēšanas process.

Iestatiet datu avota nosaukumu un norādiet MS SQL instances nosaukumu, ar kuru vēlaties izveidot savienojumu.

Pēc tam mēs norādām datu bāzi, uz kuru plānojam pārsūtīt tabulu vai vaicājumu. Pārsūtīt, izmantojotODBC var izpildīt tikai jau esošā datu bāzē. Tāpēc, ja datus nepieciešams pārsūtīt uz jaunu datu bāzi, vispirms tā ir jāizveido.

Pēc noklikšķināšanas uz pogas "Pabeigt" tiks parādīts logs ar kopsavilkuma informāciju par veidojamo datu avotu.

Lai datu avots beidzot tiktu izveidots, vienkārši noklikšķiniet uz pogas “OK”. Bet labāk vispirms pārbaudīt tā veiktspēju, noklikšķinot uz pogas "Pārbaudīt datu avotu".

Ja viss ir izdarīts pareizi, tiks parādīts ziņojums par veiksmīgu verifikāciju.

Tagad, kad ir datu avots, mēs varam pāriet tieši uz migrācijas procesu. Piemēram, mēs eksportēsim no datu bāzes vienu vaicājumu "Kontakti vaicājums".

Lai to izdarītu, atlasiet to ar peli un noklikšķiniet uz pogas "Papildu" cilnes "Ārējie dati" apgabalā "Eksportēt". Nolaižamajā izvēlnē atlasiet "ODBC datu bāze".

Šajā gadījumā tiek atstāta sākotnējā vērtība.

Pēc noklikšķināšanas uz pogas "Ok" ir jāizvēlas izveidotais datu avots.

Pēc tam ievadiet lietotājvārdu un paroli, lai izveidotu savienojumu ar serveri.

Pēc pogas "Ok" nospiešanas tiks veikta eksportēšana.

Tomēr, kā minēts iepriekš, vaicājuma gadījumā eksportēšanas rezultāts nav pareizs.

Skata "Kontaktu pieprasījums" vietā MS SQL datubāzē tika izveidota tabula ar tādu pašu nosaukumu.

Turklāt, pat ja eksportējat tikai tabulas, pēc eksportēšanas ir jāveic daudz papildu darbību (saišu atjaunošana utt.). Tāpēc aprakstītā metode datu bāzu pārsūtīšanai no Access uz MS SQL praktiski vairs netiek izmantota.

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, tiek izmantotas loģiskās darbības UN (konjunkcija), VAI (disjunkcija) un NOT (loģiskā noliegšana). 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.Šajā SQL vaicājumā ir jāpievērš uzmanība divām lietām: 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 būt atšķirīgs.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. Piemērs lauku summas un cenas reizinājuma summas aprēķināšanai, izmantojot agregāta funkcija SUMMA:

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 ienā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. Šī SQL vaicājuma veiktspēja 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ŠĒJS 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 investīciju 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. Lai novērtētu, tiek izmantots rezervētais vārds IIF (nosacījuma paziņojums). Būla izteiksme un veikt vienu vai otru 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. Dienu skaits no preču saņemšanas dienas (tabula m_ienākums) līdz Šodienas datums izmantojot funkciju DateDiff, un tiek salīdzināts derīguma termiņš (tabula m_product):


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. Pieci labākie produkti tiek parādīti 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"Сладкое"");. !}