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.
- I
- ili NE
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:
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 |
>= (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 |
!= (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.