sql upit u ms pristupu. Uvod. Kako poslati upit bazi podataka u VBA Access sintaksi naredbe SELECT

Lekcija će pokriti jezik upita: SELECT sql izraz - za odabir podataka

Odaberite SQL upit je namijenjen za normalno uzorkovanje iz baze podataka. One. ako samo trebamo primiti podatke bez ikakve obrade s njima i bez izmjena u bazi podataka, onda možemo bezbedno koristiti ovaj alat.

SELECT Sintaksa iskaza

SELECT * FROM ime_tablice;

Ovo je najjednostavnija opcija za rad sa operatorom, kada biramo sve zapise iz tabele baze podataka.

Simbol * označava preuzimanje svih zapisa iz tabele. Međutim, stupci i redovi skupa rezultata nisu uređeni.

Pogledajmo primjere sql upiti odaberite:

primjer: Ako ste kreirali lokalnu bazu podataka i popunili tabele, kao u onoj o kojoj smo ranije govorili (ili ste koristili uslugu sqlFiddle), onda pokrenite sledeći primer.
Potrebno je da izaberete sve zapise iz tabele nastavnika

SELECT * FROM table_name LIMIT 2,3;

U primjeru, iz tabele su odabrana 3 zapisa, počevši od zapisa 2.
Ovaj upit je posebno potreban kada kreirate blok navigacijskih stranica.

To poredajte polja skupa rezultata, trebaju biti navedeni odvojeni zarezima u traženom redoslijedu nakon riječi SELECT:

IZABERI ime, zarplata, premija OD nastavnika ORDER BY name;

Odaberite vrijednosti polja za naziv, zarplata, premia i sortirajte po polju imena (abecednim redom)


primjer: DB "Prodavnica računara". Odaberite informacije o brzini i memoriji računara. Želite sortirati skup rezultata prema brzini procesora uzlaznim redoslijedom.

ODABERITE `Speed`, `Memory` OD `pc` ORDER ZA 1 ASC

rezultat:

Možete sortirati po dva polja:

IZABERI naziv, zarplata, premija OD nastavnika ORDER BY name DESC;

Odaberite vrijednosti polja za naziv, zarplatu, premia i sortirajte po polju imena u opadajućem redoslijedu


Uklanjanje duplih vrijednosti u SQL-u

U slučaju kada trebate dobiti jedinstvene nizove, možete koristiti ključna riječ DISTINCT.

DISTINCT(prevedeno sa engleskog RAZLIKA) - argument koji eliminira dvostruke vrijednosti:

Primjer baze podataka “Institut”: treba znati moguće opcije veličina premija. Ako ne koristite Distinct , rezultat će biti dva identične vrijednosti. Duplicirane vrijednosti u sql-u možete ukloniti unosom Distinct - kao rezultat toga, duple vrijednosti se ne ponavljaju.

    SELECT Speed, Memory FROM PC;

    rezultat:

    U PC tabeli primarni ključ je polje koda. Budući da ovo polje nije prisutno u upitu, postoje dupli redovi u gornjem skupu rezultata.

    Kada trebate dobiti jedinstvene stringove (na primjer, zanimaju nas samo različite kombinacije brzine procesora i memorije, a ne karakteristike svih dostupnih računara), onda trebamo koristiti Distinct:

    SELECT DISTINCT Speed, Memory FROM PC;

    SELECT DISTINCT Speed, Memory FROM PC;

    rezultat:

    sql odaberite zadatak 1_1. DB "Institut" Pokrenite upit da odaberete id i ime iz tabele nastavnika. Sortirajte imena nastavnika u opadajućem redoslijedu

    SQL jezik: gdje uvjet

    Uslov je ispunjen rečenicom
    GDJE
    koji je napisan iza klauzule FROM.

    U ovom slučaju, samo oni zapisi za koje je vrijednost predikata TRUE bit će uključeni u skup rezultata.

    Primjer baze podataka “Institut”: Iz tabele nastavnika ispisati podatke nastavnika čije je prezime Ivanov

    Višestruki uvjeti u SQL-u

    Predikati (uslovi) se mogu sastojati od jednog izraza ili bilo koje kombinacije izraza konstruisanih pomoću Booleovih operatora:

  1. I
  2. ili NE
  3. Primjer baze podataka “Institut”: prikazati šifru nastavnika čija je plata 10000 i bonus 500

    Relacioni operatori pronađeni u uslovima:
    = Jednako
    >Više od
    >= Veće ili jednako
    Nije jednako

    Između u SQL-u (između)

    Predikat BETWEEN provjerava da li vrijednosti izraza koji se testira spadaju u raspon specificiran graničnim izrazima spojenim funkcijskom riječju AND.

    sintaksa:

    <Проверяемое выражение>IZMEĐU<Начальное выражение>I<Конечное выражение>

    Primjer baze podataka "Institut": Odštampajte ime i platu nastavnika čija je plata između 5000 i 10000.

    Primjer baze podataka "Institut": Prikažite ime i platu nastavnika čija plata nije u rasponu od 5000 do 10000.

    Predikat IN

    IN predikat određuje da li će vrijednost izraza koji se testira biti pronađena u skupu vrijednosti koji je eksplicitno definiran.

    sintaksa:

    < Проверяемое выражение>[ NE ] U (< набор значений> )

    <Проверяемое выражение>IN (<набор значений>)

    Primjer baze podataka "Institut": prikazati imena nastavnika čija je plata 5000, 10000 ili 11000

    Primjer baze podataka "Institut": prikazati imena nastavnika čija plata nije među vrijednostima: 5000, 10000 ili 11000

    sql odaberite zadatak 1_3. DB "Institut" Prikažite ime, platu i bonus nastavnika čiji je bonus od 2000 do 5000 rubalja.

SQL - Lekcija 4. Dohvaćanje podataka - SELECT izraz

Dakle, u našoj bazi foruma postoje tri tabele: korisnici (korisnici), teme (teme) i postovi (poruke). I želimo da vidimo koje podatke sadrže. Za to postoji operator u SQL-u SELECT. Sintaksa za njegovo korištenje je sljedeća:

SELECT what_select FROM where_select;


Umjesto “what_select” moramo navesti ili naziv kolone čije vrijednosti želimo vidjeti, ili nazive nekoliko kolona odvojenih zarezima, ili simbol zvjezdice (*), što znači odabir svih stupaca tabele . Umjesto "where_select" trebali biste navesti ime tablice.

Pogledajmo prvo sve kolone iz tabele korisnika:

SELECT * FROM korisnika;

To su svi naši podaci koje smo unijeli u ovu tabelu. Ali pretpostavimo da želimo pogledati samo stupac id_user (na primjer, u prošloj lekciji, da bismo popunili tablicu tema, morali smo znati koji se id_users nalaze u tablici korisnika). Da bismo to učinili, u upitu ćemo navesti naziv ove kolone:

SELECT id_user FROM korisnika;

Pa, ako želimo vidjeti, na primjer, imena i e-mailove naših korisnika, onda ćemo navesti kolone od interesa odvojene zarezima:

SELECT ime, email OD korisnika;

Slično, možete vidjeti koje podatke sadrže naše druge tabele. Da vidimo koje teme imamo:

SELECT * IZ tema;

Sada imamo samo 4 teme, ali šta ako ih ima 100? Želio bih da budu prikazani, na primjer, po abecednom redu. U SQL-u postoji ključna riječ za ovo ORDER BY nakon čega slijedi naziv kolone po kojoj će se izvršiti sortiranje. Sintaksa je sljedeća:

SELECT column_name FROM table_name ORDER BY sort_column_name;



Podrazumevano je sortiranje u rastućem redoslijedu, ali to se može promijeniti dodavanjem ključne riječi DESC

Sada su naši podaci sortirani u opadajućem redoslijedu.

Sortiranje se može izvršiti po nekoliko kolona odjednom. Na primjer, sljedeći upit će sortirati podatke prema stupcu topic_name, a ako postoji više identičnih redova u ovoj koloni, kolona id_author će biti sortirana u opadajućem redoslijedu:

Uporedite rezultat sa rezultatom prethodnog upita.

Vrlo često nam nisu potrebne sve informacije iz tabele. Na primjer, želimo da saznamo koje je teme kreirao korisnik sveta (id=4). U SQL-u postoji ključna riječ za ovo GDJE, sintaksa za takav zahtjev je sljedeća:

Za naš primjer, uvjet je korisnički ID, tj. Potrebni su nam samo oni redovi čija kolona id_author sadrži 4 (korisnički ID sveta):

Ili želimo da znamo ko je kreirao temu "bicikli":

Naravno, bilo bi zgodnije da se umjesto ID-a autora prikazuje njegovo ime, ali se imena pohranjuju u drugoj tabeli. U narednim lekcijama naučit ćemo kako odabrati podatke iz više tabela. U međuvremenu, hajde da saznamo koji se uslovi mogu postaviti pomoću ključne reči WHERE.

Operater Opis
= (jednako) Odabiru se vrijednosti jednake navedenoj vrijednosti

primjer:

SELECT * FROM topic WHERE id_author=4;

rezultat:

> (više) Odabrane su vrijednosti veće od navedenih

primjer:

SELECT * FROM topic WHERE id_author>2;

rezultat:

< (меньше) Odabrane su vrijednosti manje od navedenih

primjer:

SELECT * FROM topic WHERE id_author
rezultat:

>= (veće ili jednako) Odabiru se vrijednosti veće i jednake navedenoj vrijednosti

primjer:

SELECT * FROM topic WHERE id_author>=2;

rezultat:

<= (меньше или равно) Odabiru se vrijednosti manje i jednake navedenoj vrijednosti

primjer:

SELECT * FROM topic WHERE id_author
rezultat:

!= (nije jednako) Odabiru se vrijednosti koje nisu jednake navedenoj vrijednosti

primjer:

SELECT * FROM topic WHERE id_author!=1;

rezultat:

NIJE NULL Odabire redove koji imaju vrijednosti u navedenom polju

primjer:

SELECT * FROM topics WHERE id_author NIJE NULL;

rezultat:

IS NULL Odabire redove koji nemaju vrijednost u navedenom polju

primjer:

SELECT * FROM topics WHERE id_author JE NULL;

rezultat:

Prazan set - nema takvih linija.

IZMEĐU (između) Odabiru se vrijednosti između navedenih vrijednosti

primjer:

SELECT * FROM topics WHERE id_author IZMEĐU 1 I 3;

rezultat:

IN (sadržana vrijednost) Odabiru se vrijednosti koje odgovaraju navedenim vrijednostima

primjer:

SELECT * FROM topics WHERE id_author IN (1, 4);

rezultat:

NOT IN (vrijednost nije sadržana) Odabrane su vrijednosti koje nisu navedene

primjer:

SELECT * FROM topics WHERE id_author NOT IN (1, 4);

rezultat:

LIKE (podudaranje) Odabrane su vrijednosti koje odgovaraju uzorku

primjer:

SELECT * FROM topics WHERE topic_name LIKE "led%";

rezultat:

Mogući metaznakovi za LIKE operator će biti razmotreni u nastavku.

NOT LIKE (ne odgovara) Odabiru se vrijednosti koje ne odgovaraju uzorku

primjer:

SELECT * FROM topics WHERE topic_name NIJE LIKE "led%";

rezultat:

LIKE metaznakovi operatora

Pretraživanje pomoću metaznakova može se izvršiti samo u tekstualnim poljima.

Najčešći metaznak je % . To znači bilo koji simbol. Na primjer, ako želimo pronaći riječi koje počinju slovima "vel", onda ćemo napisati LIKE "vel%", a ako želimo pronaći riječi koje sadrže znakove "club", onda ćemo napisati LIKE "% club%". na primjer:

Drugi često korišteni metaznak je _ . Za razliku od %, koji označava nekoliko znakova ili ih nema, donja crta označava tačno jedan znak. na primjer:

Obratite pažnju na razmak između metaznaka i “ribe” ako ga preskočite, zahtjev neće raditi, jer metakarakter _ označava tačno jedan znak, a razmak je takođe znak.

Za danas je dosta. U sljedećoj lekciji naučit ćemo kako pisati upite prema dvije ili više tablica. U međuvremenu, pokušajte postaviti vlastite upite prema tabeli postova.

Ova lekcija je posvećena SQL upiti u bazu podataka na VBA pristup. Pogledaćemo kako se INSERT, UPDATE, DELETE upiti prave bazi podataka u VBA, a takođe ćemo naučiti kako da dobijemo određenu vrednost iz SELECT upita.

Oni koji programiraju VBA pristup a dok rade sa bazom podataka SQL servera, vrlo često se susreću sa tako jednostavnim i neophodnim zadatkom kao što je slanje SQL upita bazi podataka, bilo da se radi o INSERT, UPDATE ili jednostavnom SQL SELECT upitu. A pošto smo mi programeri početnici, trebali bismo i ovo moći, pa ćemo danas učiniti upravo to.

Već smo se dotakli teme dobijanja podataka sa SQL servera, gde smo pisali kod u VBA za dobijanje ovih podataka, na primer, u članku o Učitavanju podataka u tekstualnu datoteku iz MSSql 2008, ili smo se dotakli i toga malo u materijalu Prijenos podataka iz Accessa u Word i Excel predložak, ali na ovaj ili onaj način, ovo smo pogledali površno, a danas predlažem da o tome malo detaljnije govorimo.

Napomena! Svi dole navedeni primjeri su uzeti u obzir korištenjem Access 2003 ADP projekta i MSSql 2008 baze podataka.

Izvorni podaci za primjere

Recimo da imamo tabelu test_table, koja će sadržavati brojeve i nazive mjeseci u godini (upiti izvedeni pomoću Management Studio)

KREIRAJ TABELU .( NOT NULL, (50) NULL) ON GO

Kao što sam već rekao, koristićemo ADP projekat konfigurisan za rad sa MS SQL 2008, u kojem sam napravio test formu i dodao dugme za početak sa potpisom "trčati", koji će nam trebati da testiramo naš kod, tj. Napisat ćemo sav kod u obrađivaču događaja " Pritiskom na dugme».

Upiti bazi podataka INSERT, UPDATE, DELETE u VBA

Da ne bismo odlagali predugo, počnimo odmah, recimo da moramo dodati red u našu testnu tablicu ( kod je komentirao)/

Private Sub start_Click() "Deklarirajte varijablu za pohranjivanje stringa upita Dim sql_query As String "Upišite upit koji nam je potreban sql_query = "INSERT INTO test_table (id, name_mon) VRIJEDNOSTI ("6", "June")" "Izvrši it DoCmd RunSQL sql_query End Sub

U ovom slučaju, upit se izvršava korištenjem trenutnih parametara povezivanja baze podataka. Možemo provjeriti da li su podaci dodani ili ne.

Kao što vidite, podaci su ubačeni.

Da bismo izbrisali jedan red, pišemo sljedeći kod.

Private Sub start_Click() "Deklarirajte varijablu za pohranjivanje stringa upita Dim sql_query As String "Napišite upit za brisanje u njega sql_query = "IZBRIŠI test_table GDJE id = 6" "Pokreni je DoCmd.RunSQL sql_query End Sub

Ako provjerimo, vidjet ćemo da je željena linija izbrisana.

Da biste ažurirali podatke, napišite zahtjev za ažuriranje u varijablu sql_query, nadam se da je značenje jasno.

SELECT upit bazi podataka u VBA

Ovdje su stvari malo zanimljivije nego kod drugih SQL konstrukcija.

Prvo, recimo da treba da dobijemo sve podatke iz tabele, a mi ćemo ih, na primer, obraditi i prikazati u poruci, a vi, naravno, možete ih koristiti u druge svrhe, za to pišemo sledeće kod

Private Sub start_Click() "Deklariraj varijable "Za skup zapisa iz baze podataka Dim RS As ADODB.Recordset "String upita Dim sql_query As String "String za prikaz sažetih podataka u poruci Dim str As String "Kreiraj novi objekat za zapise set RS = Novi ADODB .Recordset "Linija upita sql_query = "SELECT id, name_mon FROM test_table" "Pokreni upit koristeći trenutne postavke veze projekta RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Provjeri zapise dok ne ( RS.EOF) "Popunite varijablu da prikažete poruku str = str & RS.Fields("id") & "-" & RS.Fields("name_mon") & vbnewline "idite na sljedeći zapis RS.MoveNext Wend " Izlaz poruke msgbox str End Sub

Ovdje već koristimo VBA pristupne petlje za ponavljanje kroz sve vrijednosti u našem skupu zapisa.

Ali često je potrebno dobiti ne sve vrijednosti iz skupa zapisa, već samo jedan, na primjer, naziv mjeseca po njegovom kodu. A da bismo to učinili, nekako je skupo koristiti petlju, tako da možemo jednostavno napisati upit koji će vratiti samo jednu vrijednost i pristupiti joj, na primjer, dobićemo ime mjeseca koristeći kod 5

Private Sub start_Click() "Deklariraj varijable" Za skup zapisa iz baze podataka Dim RS As ADODB.Recordset "String upita Dim sql_query As String "String za prikaz konačne vrijednosti Dim str As String "Kreiraj novi objekat za skup zapisa RS = Novi ADODB.Recordset "Linija upita sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "Pokreni upit koristeći trenutne postavke veze projekta RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Nabavite našu vrijednost str = RS. Polja(0) msgbox str Kraj pod

Radi univerzalnosti, ovdje smo se već obratili ne imenom ćelije, već njenim indeksom, tj. 0, a ovo je prva vrijednost u Recordset, na kraju smo dobili vrijednost "maj".

Kao što vidite, sve je prilično jednostavno. Ako često trebate dobiti određenu vrijednost iz baze podataka ( kao u zadnjem primjeru), onda preporučujem da ispišete sav kod u posebnu funkciju (Kako napisati funkciju u VBA Access 2003) sa jednim ulaznim parametrom, na primjer, kodom mjeseca ( ako uzmemo u obzir naš primjer) i jednostavno, tamo gdje je potrebno prikazati ovu vrijednost, pozvati funkciju koja nam je potrebna sa potrebnim parametrom i to je to, time ćemo značajno smanjiti VBA kod i poboljšati percepciju našeg programa.

To je sve za danas. Sretno!

Pravila: uglaste zagrade označavaju [opcioni dio] konstrukcije. Vertikalna traka označava izbor između opcija (var1|var2). Elipsa označava moguće ponavljanje nekoliko puta - 1 put, 2 puta [, …]

SELECT izraz

Naređuje mehanizmu baze podataka Microsoft Accessa da vrati informacije iz baze podataka kao skup zapisa.

Sintaksa

ODABIR [ predikat] { * | sto.* | [sto.]polje1

[, [sto.]polje2 [, ...]]}
OD izraz_tablice [, ...]




SELECT izraz uključuje sljedeće elemente.

Element

Opis

Predikat

Jedan od sljedećih predikata: SVE, DISTINCT, DISTINCTROW ili TOP. Predikati se koriste za ograničavanje broja vraćenih zapisa. Ako predikat nije dat, default je SVE.

Označava da su sva polja izabrana iz navedene tabele ili tabela

Table

Ime tabele iz čijih polja se biraju zapisi

polje1, polje2

Imena polja koja sadrže podatke za preuzimanje. Ako je navedeno više polja, podaci će se dohvatiti onim redoslijedom kako su njihova imena navedena

nadimak1, nadimak2

Imena koja se koriste kao naslovi kolona umjesto originalnih naziva kolona stolovi

izraz_tablice

Jedno ili više imena tablica koje sadrže podatke koje treba dohvatiti.

vanjska_baza podataka

Ime baze podataka koja sadrži tablice navedene u komponenti izraz_tablice ako nisu u trenutnoj bazi podataka

Bilješke

Da bi izvršio ovu operaciju, mehanizam baze podataka Microsoft Accessa pretražuje navedene tabele(e), preuzima željene kolone, bira redove koji ispunjavaju navedene uslove i sortira ili grupiše rezultirajuće redove po navedenom redosledu.

SELECT izrazi ne mijenjaju podatke baze podataka.

SELECT izraz je obično prva riječ SQL izraza (SQL izraz (string). Izraz koji definira SQL naredbu, kao što je SELECT, UPDATE ili DELETE, i uključuje klauzule, kao što su WHERE ili ORDER BY. SQL izrazi/ stringovi se obično koriste u upitima i statističkim funkcijama.). Većina SQL izraza su ili SELECT izrazi ili SELECT...INTO izrazi.

Minimalna sintaksa za SELECT izraz je sljedeća:

SELECT polja OD sto

Možete koristiti zvjezdicu (*) da odaberete sva polja u tabeli. Sljedeći primjer odabire sva polja u tabeli Zaposleni.

SELECT * FROM Employees;

Ako je ime polja uključeno u više tabela u klauzuli FROM, prethodite mu ime tablice i izraz «.» (tačka). U sljedećem primjeru, polje "Odjel" je prisutno u tabelama "Zaposleni" i "Nadređeni". SQL izraz odabire odjele iz tablice Zaposlenici i imena supervizora iz tablice Supervizori.

SELECT Employees. Odjeljenje, načelnici. Izvršni naziv FROM Employees INNER JOIN Rukovodioci WHERE Employees. Odjel = Menadžeri. Department;

Kada kreirate objekat RecordSet, ime polja tabele koristi se od strane mehanizma baze podataka Microsoft Accessa kao ime objekta "Field" u objektu RecordSet. Ako ime polja treba da se promeni ili nije obezbeđeno izrazom koji generiše polje, koristite rezervisanu reč (Rezervisana reč. Reč koja je element jezika, kao što je Visual Basic. Rezervisane reči uključuju imena naredbi, ugrađene funkcije i tipovi podataka, metode, operatori i objekti.) AS. Sljedeći primjer pokazuje kako se zaglavlje "Day" koristi za imenovanje vraćenog objekta Polje u primljenom objektu RecordSet.

IZABERITE rođendan KAO Dan OD zaposlenih;

Kada radite sa agregatnim funkcijama ili upitima koji vraćaju dvosmislena ili identična imena objekata Polje, trebali biste koristiti AS klauzulu da kreirate drugačije ime objekta Polje. U sljedećem primjeru, vraćeni objekt Polje u primljenom objektu RecordSet dobija naziv "Popis".

SELECT COUNT(EmployeeCode) KAO CENsus FROM Employees;

Kada radite s SELECT izrazom, možete koristiti dodatne klauzule da dodatno ograničite i organizirate dohvaćene podatke. Za više informacija pogledajte temu pomoći za ponudu koju koristite.

FROM klauzula

Određuje tablice i upite koji sadrže polja navedena u SELECT izrazu.

Sintaksa

SELECT field_list
OD izraz_tablice

SELECT izraz koji sadrži klauzulu FROM uključuje sljedeće elemente:

Element

Opis

field_list

izraz_tablice

Izraz koji definira jednu ili više tablica - izvora podataka. Izraz može biti ime tablice, pohranjeno ime upita ili rezultatski izraz konstruiran korištenjem operatora INNER JOIN, LEFT JOIN ili RIGHT JOIN

vanjska_baza podataka

Puna putanja do vanjske baze podataka koja sadrži sve tablice navedene u izraz_tablice

Bilješke


Potrebno je prisustvo klauzule FROM nakon SELECT izraza.

Redoslijed u kojem su navedene tabele izraz_tablice nije bitno.

Korišćenje povezanih tabela (Povezana tabela. Tabela koja je sačuvana u datoteci koja nije deo otvorene baze podataka, ali je dostupna iz Microsoft Access-a. Korisnik može dodavati, brisati i menjati zapise u povezanoj tabeli, ali ne može promeniti njenu strukturu .) umjesto klauzule IN, možete učiniti proces preuzimanja podataka iz vanjske baze podataka lakšim i efikasnijim.

Primjer ispod pokazuje kako dohvatiti podatke iz tabele Zaposleni.

SELECT Prezime, Ime

FROM Employees;

Označava zapise odabrane za SQL upite (SQL (Structured Query Language). Strukturirani upiti i programski jezik baze podataka koji se široko koristi za pristup, postavljanje upita, ažuriranje i manipulaciju podacima u relacijskim DBMS-ovima.)

Sintaksa

ODABIR ]]
OD sto

SELECT izraz koji sadrži ove predikate uključuje sljedeće komponente:

Komponenta

Opis

Podrazumijeva se ako nisu uključeni predikati. Mehanizam baze podataka Microsoft Accessa odabire sve zapise koji odgovaraju uvjetima SQL izraza (SQL izraz (string). Izraz koji definira SQL naredbu, kao što je SELECT, UPDATE ili DELETE, i uključuje klauzule, kao što su WHERE ili ORDER BY SQL izrazi/nizovi se obično koriste u upitima i statističkim funkcijama). Sljedeća dva identična primjera pokazuju kako vratiti sve zapise iz tabele Zaposleni.

OD zaposlenih

ORDER BY EmployeeCode;

OD zaposlenih

ORDER BY EmployeeCode;

Isključuje zapise koji sadrže duple podatke u odabranim poljima. Samo jedinstvene vrijednosti svakog od polja navedenih u naredbi SELECT uključene su u rezultate upita. Na primjer, neki zaposlenici navedeni u tabeli Zaposleni mogu imati isto prezime. Ako dva zapisa sadrže prezime "Ivanov" u polju Prezime, sljedeći SQL izraz vraća samo jedan zapis koji sadrži prezime "Ivanov".

SELECT DISTINCT Prezime

Ako je DISTINCT komponenta izostavljena, upit vraća oba zapisa s prezimenom "Ivanov".

Ako klauzula SELECT sadrži više polja, kombinacija svih vrijednosti polja uključuje se u rezultate upita samo ako su jedinstvene za taj zapis.

Rezultati upita koji koristi komponentu DISTINCT se ne ažuriraju kako bi odražavali naknadne promjene koje su napravili drugi korisnici.

Isključuje podatke iz zapisa koji se ponavljaju u cijelosti i ne sadrže pojedinačna polja s istim podacima. Pretpostavimo da je kreiran upit koji povezuje tabele “Kupci” i “Narudžbe” koristeći polje “Klijentski kod”. Tabela Kupci ne sadrži duplirana polja ID-a kupca, ali ona postoje u tabeli Narudžbe jer svaki kupac može imati više narudžbi. Sljedeća SQL izjava pokazuje kako koristiti komponentu DISTINCTROW za popis organizacija koje su napravile barem jednu narudžbu, bez spominjanja detalja tih narudžbi.

SELECT DISTINCTROW Title FROM Customers INNER JOIN Narudžbe

ON Clients. CustomerId = Narudžbe. Klijentski kod

ORDER BY Title;

Ako je komponenta DISTINCTROW izostavljena, upit rezultira više redova za svaku organizaciju koja je naručila više puta.

Komponenta DISTINCTROW ima efekta samo kada se biraju polja iz nekih tabela koje se koriste u upitu. Komponenta DISTINCTROW se zanemaruje ako upit uključuje samo jednu tablicu ili ako se polja preuzimaju iz svih tablica.

TOP n

Vraća navedeni broj zapisa koji su među prvim ili posljednjim zapisima u rasponu navedenom u ORDER BY klauzuli. Recimo da želite prikazati imena 25 najboljih učenika iz razreda 1994.

Ime, Prezime

GDJE Godina mature = 2003

ORDER BY GradePointAverage DESC;

Ako ne uključite klauzulu ORDER BY, upit će vratiti nasumični skup od 25 zapisa iz tabele Studenti koji zadovoljavaju klauzulu WHERE.

Predikat TOP ne uključuje izbor između jednakih vrijednosti. Ako su 25. i 26. zapisi u prethodnom primjeru imali isti GPA, upit bi vratio 26 zapisa.

Također možete koristiti PERCENT rezerviranu riječ da dohvatite neki postotak prvog ili posljednjeg zapisa u rasponu navedenom u ORDER BY klauzuli. Pretpostavimo da umjesto prvih 25, želite da prikažete donjih 10% učenika u diplomskoj klasi.

IZABERITE TOP 10 POSTO

Ime, Prezime

GDJE Godina mature = 2003

ORDER BY GradePointAverage ASC;

ASC predikat specificira izlaz vrijednosti iz donjeg dijela raspona. Vrijednost koja slijedi nakon predikata TOP mora biti tip podataka Integer Osnovni tip podataka koji se koristi za pohranjivanje cjelobrojnih vrijednosti. .

Predikat TOP ne utiče na to da li se upit može ažurirati.

sto

Ime tabele iz koje se preuzimaju zapisi.

Vidi također

SELECT izraz

FROM klauzula

WHERE klauzula

Određuje koji se zapisi iz tablica navedenih u klauzuli FROM obrađuju naredbama SELECT, UPDATE ili DELETE.

Sintaksa

SELECT field_list
OD izraz_tablice
GDJE izbor_uslovi

SELECT izraz koji sadrži klauzulu WHERE uključuje sljedeće dijelove.

Part

Opis

field_list

Ime polja ili polja koja se preuzimaju zajedno sa bilo kojim pseudonimom (Alias ​​(SQL). Alternativno ime za tabelu ili polje u izrazu. Aliasi se obično koriste kao kraći nazivi tabela ili polja radi lakšeg kasnijeg referenciranja u programe, za sprečavanje dvosmislenih referenci i za dobijanje opisnijih imena prilikom prikazivanja rezultata upita.), predikate (ALL, DISTINCT, DISTINCTROW ili TOP) ili sa bilo kojim drugim parametrom naredbe SELECT.

izraz_tablice

Ime tabele ili tabela iz kojih se preuzimaju podaci.

izbor_uslovi

Izraz (Izraz. Kombinacija matematičkih i logičkih operatora, konstanti, funkcija, imena polja, kontrola i svojstava koja rezultira jednom vrijednošću. Izraz može izvoditi proračune, obraditi tekst ili potvrditi podatke.) koji se moraju podudarati s uključenim zapisima. u rezultatima upita.

Bilješke

Mehanizam baze podataka Microsoft Accessa bira zapise koji ispunjavaju uslove navedene u klauzuli WHERE. Ako klauzula WHERE nije navedena, upit vraća sve redove u tablici. Ako upit specificira više tablica, ali ne specificira klauzulu WHERE ili JOIN, upit proizvodi kartezijanski proizvod (kartezijanski proizvod. Rezultat je izvršavanja SQL SELECT naredbe koja ima klauzulu FROM koja upućuje na dvije ili više tablica i nema WHERE ili JOIN klauzula koja specificira metod spajanja.) tabela.

Klauzula WHERE nije potrebna, ali ako se koristi, mora slijediti klauzulu FROM. Na primjer, možete odabrati sve zaposlenike iz odjela prodaje (WHERE odjel = "Prodaja") ili sve kupce između 18 i 30 godina (WHERE Dob između 18 i 30).

Ako se klauzula JOIN ne koristi za operaciju SQL spajanja na više tablica, rezultirajući objekt Record set biće nemoguće ažurirati.

Klauzula WHERE je slična klauzuli HAVING i specificira odabrane zapise. Nakon što su zapisi grupisani pomoću GROUP BY klauzule, klauzula HAVING također određuje zapis koji će biti prikazan.

Klauzula WHERE se koristi za isključivanje zapisa koji ne moraju biti grupisani pomoću GROUP BY klauzule.

Koristite različite izraze da odredite koje zapise vraća SQL izraz. Na primjer, sljedeći SQL izraz odabire sve zaposlenike čija plaća prelazi RUR.

ODABIR Prezime, Plata OD Zaposlenih GDJE Plata > 21000;

WHERE klauzula može sadržavati do 40 izraza povezanih logičkim operatorima (na primjer, I I ILI).

Ako unesete ime polja koje sadrži razmake ili interpunkciju, morate ga staviti u uglaste zagrade (). Na primjer, tabela s informacijama o klijentima može sadržavati informacije o određenim kupcima.

ODABIR [Omiljeni restoran kupaca]

Određivanje argumenta izbor_uslovi, literali datuma (Datumski literal. Bilo koji niz znakova u važećem formatu, zatvoren znakovima brojeva (#). Važeći formati su format datuma naveden u postavkama jezika i standarda i Univerzalni format datuma.) moraju biti predstavljeni u američkom formatu. , čak i ako se koristi format datuma koji nije u SAD-u. Na primjer, datum "10. maj 1996." je napisan kao 10/5/96 u UK i kao 05/10/1996 u Rusiji. Ne zaboravite priložiti literale datuma u znakove brojeva (#), kao što je prikazano u primjerima ispod.

Da biste pronašli zapise za 10. maj 1996. u bazi podataka UK, koristite sljedeću SQL naredbu:

SELECT * FROM Orders WHERE Datum isporuke = #10.05.1996#;

Također možete koristiti funkciju DateValue, koji prepoznaje međunarodne postavke koje je postavio Microsoft Windows®. Na primjer, za Rusiju koristite ovaj kod:

SELECT * FROM Orders WHERE Datum isporuke = DateValue("05/10/1996");

A sljedeći kod je za UK:

SELECT * FROM Orders WHERE Datum isporuke = DateValue("10/5/96");

Napomena. Ako je kolona navedena u redu kriterija odabira tipa GUID (ID replike (GUID). Polje od 16 bajta u bazi podataka Microsoft Accessa koje se koristi za jedinstvenu identifikaciju replikacije. GUID-ovi se koriste za identifikaciju replika, skupova replika, tabela, zapisa i drugi objekti U Microsoft Access bazama podataka, GUID kodovi se nazivaju kodovi replika.), uslovi odabira koriste malo drugačiju sintaksu.

WHERE ReplicaID = (GUID (AB-CDEF0ABCDEF))

Provjerite jesu li ugniježđene zagrade i crtice pravilno postavljene.

Izvorna stranica: http://office. /ru-ru/access/HA.aspx? pid=CH

GROUP BY klauzula

Kombinira zapise sa istim vrijednostima koje se nalaze na navedenoj listi polja u jedan zapis. Vrijednost sažetka se kreira za svaki zapis ako je SQL funkcija agregacije uključena u SELECT izraz, kao što je Sum ili Count.

Sintaksa

SELECT field_list
OD sto
GDJE izbor_uvjet

SELECT izraz koji sadrži GROUP BY klauzulu uključuje sljedeće elemente:

Element

Opis

field_list

Imena polja koja se preuzimaju zajedno sa bilo kojim pseudonimom (Alias ​​(SQL). Alternativno ime za tabelu ili polje u izrazu. Aliasi se obično koriste kao kraći nazivi tabela ili polja radi lakšeg naknadnog pozivanja u programima, da bi se spriječile dvosmislene reference i da bi se dobila informativnija imena pri prikazivanju rezultata upita.) i SQL statističke funkcije, predikati (ALL, DISTINCT, DISTINCTROW ili TOP) ili drugi parametri SELECT izraza

sto

izbor_uslovi

Uvjet odabira. Ako izraz sadrži klauzulu WHERE, nakon što se primijeni na zapise, vrijednosti će biti grupirane od strane mehanizma baze podataka Microsoft Accessa.

group_field_list

group_field_list

Bilješke

Klauzula GROUP BY nije obavezna.

Ako SQL statističke funkcije nisu uključene u SELECT izraz, zbirne vrijednosti se ne izračunavaju.

GROUP BY vrijednosti polja koje su Null (Null. Vrijednost koja se može unijeti u polje ili koristiti u izrazima i upitima za označavanje podataka koji nedostaju ili nepoznatih. U Visual Basicu, Null ključna riječ specificira Null vrijednost. Neka polja, kao što su kao polja primarnog ključa, ne mogu sadržavati Null vrijednosti.), grupisane su i nisu izostavljene. Međutim, vrijednosti Null nisu evaluirane nijednom od SQL statističkih funkcija.

Klauzula WHERE se koristi za isključivanje redova koji ne moraju biti grupisani. Klauzula HAVING se koristi za filtriranje zapisa nakon grupiranja.

Polja sa liste polja GROUP BY koja ne sadrže tip podataka Memo (tip podataka MEMO Field. Tip podataka polja u bazi podataka Microsoft Accessa. MEMO polje može sadržavati do 65535 znakova.) ili OLE objekt (tip podataka OLE Object Field Tip podataka polja koji se koristi za spremanje objekata iz drugih aplikacija koje su povezane ili ugrađene u bazu podataka Microsoft Access.) može referencirati bilo koje polje u bilo kojoj tablici navedenoj u klauzuli FROM, čak i ako to polje nije uključeno u naredbu SELECT). . Da biste to učinili, dovoljno je imati barem jednu SQL statističku funkciju u SELECT izrazu. Mehanizam baze podataka Microsoft Accessa ne dozvoljava grupisanje po poljima koja sadrže podatke o MEMO polju ili OLE objektu.

Sva polja na listi polja SELECT moraju ili biti sadržana u klauzuli GROUP BY ili biti argumenti za SQL funkciju agregacije.

Vidi također

SELECT izraz

SELECT...INTO izraz

Predikati ALL, DISTINCT, DISTINCTROW, TOP

FROM klauzula

HAVING ponudu

ORDER BY klauzula

WHERE klauzula

SQL statističke funkcije

Izvorna stranica: http://office. /ru-ru/access/HA.aspx? pid=CH

HAVING ponudu

Definira grupirane zapise koji bi se trebali pojaviti u SELECT izrazu s GROUP BY klauzulom. Nakon što su zapisi grupisani pomoću GROUP BY klauzule, klauzula HAVING će pokazati one koji ispunjavaju njene uslove.

Sintaksa

SELECT field_list
OD sto
GDJE izbor_uslovi
GROUP BY group_field_list

SELECT izraz koji sadrži klauzulu HAVING uključuje sljedeće elemente:

Element

Opis

field_list

Imena polja koja se učitavaju zajedno sa bilo kojim pseudonimom (Alias ​​(SQL). Alternativno ime za tabelu ili polje u izrazu. Aliasi se obično koriste kao kraći nazivi tabela ili polja radi lakšeg kasnijeg referenciranja u programima, kako bi se sprečilo dvosmislene reference, i za dobivanje informativnijih imena prilikom prikazivanja rezultata upita.) i SQL statističke funkcije, predikate (ALL, DISTINCT, DISTINCTROW ili TOP) ili s drugim parametrima naredbe SELECT.

sto

Naziv tabele iz koje se učitavaju zapisi

izbor_uvjet

Uvjet odabira. Ako izraz sadrži klauzulu WHERE, mehanizam baze podataka Microsoft Accessa će grupirati vrijednosti nakon što se primijeni na zapise.

group_field_list

Imena polja (do 10) koja se koriste za grupisanje zapisa. Redoslijed imena u group_field_list određuje nivo grupisanja - od najvišeg do najnižeg

stanje_grupe

Izraz koji specificira zapise koji će se prikazati

Bilješke

Klauzula HAVING je opciona.

Klauzula HAVING slična je klauzuli WHERE koja određuje izbor zapisa. Nakon grupisanja zapisa sa GROUP BY klauzulom, klauzula HAVING određuje zapise koji će biti prikazani.

SELECT TypeCode,

zbroj (na zalihama)

IZ proizvoda

GROUP BY TypeCode

IMAJUĆI Sumu (Na zalihama) > 100 I kao "TEL*";

Klauzula HAVING može sadržavati do 40 izraza povezanih logičkim operatorima kao što su I I Or.

Izvorna stranica: http://office. /ru-ru/access/HA.aspx? pid=CH

ORDER BY klauzula

Sortira zapise vraćene upitom uzlaznim ili silaznim redoslijedom navedenih polja.

Sintaksa

SELECT field_list
OD sto
GDJE izbor_uvjet
[, polje2 ][, ...]]]

SELECT izraz koji sadrži ORDER BY klauzulu uključuje sljedeće elemente.

Element

Opis

field_list

Imena polja koja se preuzimaju zajedno sa bilo kojim pseudonimom (Alias ​​(SQL). Alternativno ime za tabelu ili polje u izrazu. Pseudonimi se obično koriste kao kraći nazivi tabela ili polja radi lakšeg kasnijeg upućivanja u programima, kako bi se sprečilo dvosmislene reference, i za dobivanje informativnijih imena prilikom prikazivanja rezultata upita.) i SQL statističke funkcije, predikate (ALL, DISTINCT, DISTINCTROW ili TOP) ili s drugim parametrima naredbe SELECT.

sto

Naziv tabele iz koje se preuzimaju zapisi

izbor_uslovi

Uslovi odabira. Ako izraz sadrži klauzulu WHERE, nakon što se primijeni na zapise, mehanizam baze podataka Microsoft Accessa će naručiti vrijednosti zapisa

polje1, polje2

Imena polja po kojima se sortiraju zapisi.

Bilješke

Klauzula ORDER BY je opciona. Treba ga koristiti kada trebate prikazati podatke u sortiranom obliku.

Zadani redoslijed sortiranja je (Sort Red. Način uređenja podataka na osnovu njihovih vrijednosti i tipa. Podaci se mogu sortirati po abecednom redu, numeričkim vrijednostima ili datumu. Redoslijed sortiranja može biti rastući (0 do 100, A do Z) ili silazno (od 100 do 0, od Z do A).) uzlazno (od A do Z, od 0 do 9). Donji primjeri pokazuju sortiranje imena zaposlenika po prezimenu.

SELECT Prezime, Ime

OD zaposlenih

ORDER BY Prezime;

SELECT Prezime, Ime

OD zaposlenih

ORDER BY Prezime ASC;

Za sortiranje polja u opadajućem redoslijedu (Z do A, 9 do 0), dodajte rezerviranu riječ DESC imenu svakog polja. Sljedeći primjer pokazuje sortiranje u opadajućem redoslijedu na osnovu plata zaposlenika.

SELECT Prezime, Plata

OD zaposlenih

ORDER BY PLAY DESC, Prezime;

Ako u klauzuli ORDER BY navedete polja koja sadrže podatke tipa MEMO Field (MEMO Field tip podataka. Tip podataka polja u bazi podataka Microsoft Accessa. MEMO polje može sadržavati do 65.535 znakova.) ili OLE Polje objekta (OLE Object Tip podataka polja " tip podataka polja koji se koristi za spremanje objekata iz drugih aplikacija povezanih ili ugrađenih u Microsoft Access bazu podataka.), ovo će generirati grešku. Mehanizam baze podataka Microsoft Accessa ne može sortirati ove tipove polja.

Klauzula ORDER BY je obično posljednja klauzula u SQL izrazu (SQL izraz (niz). Izraz koji definira SQL naredbu, kao što je SELECT, UPDATE ili DELETE, i uključuje klauzule, kao što su WHERE ili ORDER BY. SQL izrazi /stringovi se obično koriste u upitima i statističkim funkcijama.).

Možete uključiti dodatna polja u klauzulu ORDER BY. Zapisi se prvo sortiraju prema polju koje je prvo navedeno u klauzuli ORDER BY. Zapisi sa istim vrijednostima u prvom polju se zatim sortiraju po polju koje je specificirano u drugom i tako dalje.
Vidi također

SELECT izraz

SELECT...INTO izraz

Predikati ALL, DISTINCT, DISTINCTROW, TOP

FROM klauzula

GROUP BY klauzula

HAVING ponudu

WHERE klauzula

SQL statističke funkcije

Izvorna stranica: http://office. /ru-ru/access/HA.aspx? pid=CH

INNER JOIN operacija

Spaja zapise iz dvije tablice ako povezujuća polja ovih tablica sadrže iste vrijednosti.

Sintaksa

OD tabela1 INNER JOIN tabela 2 ON tabela1.polje1 tablica operatora poređenja2.polje2

Operacija INNER JOIN sastoji se od sljedećih elemenata:

Element

Opis

tabela1, tabela 2

Imena tabela koje sadrže zapise za spajanje

polje1, polje2

Imena polja koja se povezuju. Nenumerička polja moraju biti istog tipa podataka (Tip podataka. Karakteristika polja koja definira tip podataka koje polje može sadržavati. Tipovi podataka uključuju: Boolean, Integer, Long, Currency, Single, Double, Date, String, i Variant (podrazumevano).) i sadrže podatke istog tipa. Međutim, nazivi ovih polja mogu biti različiti

operator_poređenja

Bilo koji operator poređenja: (=,<, >, <=, >= ili<>)

Uzorci SQL upita mogu se koristiti za učenje i vježbanje pisanja SQL upita u MS Accessu.

Jedan SQL upit može biti ugniježđen u drugi. Potupit nije ništa drugo do upit unutar upita. Obično se potupit koristi u klauzuli WHERE. Ali postoje i drugi načini korištenja potupita.

Upit Q011. Prikazuju se informacije o proizvodima iz tabele m_product, čiji se kodovi takođe nalaze u tabeli m_income:

ODABIR *
IZ m_product
WHERE id IN (SELECT product_id FROM m_income);

Zahtjev Q012. Prikazuje se lista proizvoda iz tabele m_product čiji se kodovi ne nalaze u tabeli m_outcome:

ODABIR *
IZ m_product
GDJE ID NIJE IN (IZABIR proizvod_id IZ m_outcome);

Zahtjev Q013. Ovaj SQL upit prikazuje jedinstvenu listu kodova i imena proizvoda koji se nalaze u tablici m_income, ali ne i u tablici m_outcome:

ODABIR DISTINCT ID proizvoda, naslov
FROM m_income INNER JOIN m_product
UKLJUČENO m_income.product_id=m_product.id
WHERE product_id NIJE IN (IZABIR product_id FROM m_outcome);

Upit Q014. Jedinstvena lista kategorija čija imena počinju slovom M prikazuje se iz tabele m_category:

SELECT DISTINCT naslov
IZ m_product
WHERE naslov LIKE "M*";

Upit Q015. Primjer izvođenja aritmetičkih operacija nad poljima u upitu i preimenovanja polja u upitu (alias). Ovaj primjer izračunava trošak = količina*cijena i profit za svaki unos troškova stavke, pod pretpostavkom da je profit 7 posto od prodaje:


iznos*cijena/100*7 AS profit
FROM m_outcome;

Upit Q016. Analizom i pojednostavljenjem aritmetičkih operacija možete povećati brzinu izvršenja upita:

SELECT dt, product_id, amount, price, amount*price AS outcome_sum,
outcome_sum*0,07 AS profit
FROM m_outcome;

Upit Q017. Možete koristiti izraz INNER JOIN za spajanje podataka iz više tablica. U sljedećem primjeru, ovisno o vrijednosti ctgry_id, svaki unos u tablici m_income odgovara nazivu kategorije iz tablice m_category kojoj proizvod pripada:

SELECT c.title, b.title, dt, iznos, cijena, iznos*cijena AS prihod_suma
FROM (m_income KAO INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ORDER BY c.title, b.title;

Zahtjev Q018. Funkcije kao što su SUM - zbir, COUNT - količina, AVG - aritmetička srednja vrijednost, MAX - maksimalna vrijednost, MIN - minimalna vrijednost nazivaju se agregatnim funkcijama. Prihvataju mnoge vrijednosti i nakon obrade vraćaju jednu vrijednost. Primjer izračunavanja zbira proizvoda iznosa polja i cijene pomoću agregatne funkcije SUM.