Regler: hakparenteser indikerar [valfri del] av konstruktionen. En vertikal stapel indikerar ett val mellan alternativ (var1|var2). Ellipsen innebär möjlig upprepning flera gånger - 1 gång, 2 gånger [, …]
Instruerar databasmotorn Microsoft Access returnera information från databasen som en uppsättning poster.
Syntax
VÄLJ [ predikat] { * | tabell.* | [tabell.]fält1
[, [tabell.]fält2 [, ...]]}
FRÅN tabelluttryck [, ...]
SELECT-satsen innehåller följande element.
Element | Beskrivning |
Predikat | Ett av följande predikat: ALL, DISTINCT, DISTINCTROW eller TOP. Predikat används för att begränsa antalet poster som returneras. Om inget predikat anges är standardvärdet ALLA. |
Indikerar att alla fält är valda från den eller de angivna tabellerna |
|
Tabell | Namnet på tabellen från vars fält posterna är valda |
fält1, fält2 | Namnen på fälten som innehåller data som ska hämtas. Om flera fält är specificerade kommer data att hämtas i den ordning deras namn är listade |
smeknamn1, smeknamn2 | Namn som används som kolumnrubriker istället för ursprungliga kolumnnamn tabeller |
tabelluttryck | Ett eller flera tabellnamn som innehåller data som ska hämtas. |
extern_databas | Namnet på databasen som innehåller de tabeller som anges i komponenten tabelluttryck om de inte finns i den aktuella databasen |
Anteckningar
För att utföra den här åtgärden söker Microsoft Access-databasmotorn i de angivna tabellerna, hämtar de önskade kolumnerna, väljer de rader som uppfyller de angivna villkoren och sorterar eller grupperar de resulterande raderna i angiven ordning.
SELECT-satser ändrar inte databasdata.
En SELECT-sats är vanligtvis det första ordet i en SQL-sats (SQL-sats (sträng). Ett uttryck som definierar ett SQL-kommando, såsom SELECT, UPDATE eller DELETE, och inkluderar satser, såsom WHERE eller ORDER BY. SQL-satser/ strängar används ofta i frågor och i statistiska funktioner.). De flesta SQL-satser är antingen SELECT-satser eller SELECT...INTO-satser.
Minsta syntax för en SELECT-sats är följande:
VÄLJ fält FRÅN tabell
Du kan använda en asterisk (*) för att markera alla fält i en tabell. Följande exempel markerar alla fält i tabellen Anställda.
VÄLJ * FRÅN Anställda;
Om fältnamnet ingår i flera tabeller i FROM-satsen, föregå det med tabellnamnet och satsen «.» (punkt). I följande exempel finns fältet "Avdelning" i tabellerna "Anställda" och "Ledare". SQL-satsen väljer avdelningar från tabellen Anställda och chefsnamn från tabellen Arbetsledare.
VÄLJ medarbetare. Avdelningschefer. Verkställande namn FRÅN Anställda INNER JOIN Befattningshavare VAR Anställda. Avdelning = Chefer. Avdelning;
När du skapar ett RecordSet-objekt används tabellfältsnamnet av Microsoft Access-databasmotorn som namnet på "Field"-objektet i objektet Rekorduppsättning. Om fältnamnet behöver ändras eller inte tillhandahålls av uttrycket som genererar fältet, använd ett reserverat ord (Reserverat ord. Ett ord som är en del av ett språk, som t.ex. Visual Basic. Reserverade ord inkluderar namn på instruktioner, inbyggda funktioner och datatyper, metoder, operatorer och objekt.) AS. Följande exempel visar hur rubriken "Dag" används för att namnge det returnerade objektet Fält i det mottagna objektet Rekorduppsättning.
VÄLJ födelsedag SOM dag FRÅN anställda;
När du arbetar med aggregerade funktioner eller frågor som returnerar tvetydiga eller identiska objektnamn Fält, bör du använda AS-satsen för att skapa ett annat objektnamn Fält. I följande exempel, det returnerade objektet Fält i det mottagna objektet Rekorduppsättning får namnet "Census".
VÄLJ ANTAL(EmployeeCode) SOM Census FROM Anställda;
När du arbetar med en SELECT-sats kan du använda ytterligare satser för att ytterligare begränsa och organisera den data som hämtas. ytterligare information se hjälpämnet för den klausul du använder.
Anger tabeller och frågor som innehåller fälten i SELECT-satsen.
Syntax
VÄLJ field_list
FRÅN tabelluttryck
En SELECT-sats som innehåller en FROM-sats innehåller följande element:
Element | Beskrivning |
field_list | |
tabelluttryck | Ett uttryck som definierar en eller flera tabeller - datakällor. Uttrycket kan vara ett tabellnamn, ett lagrat frågenamn eller ett resultatuttryck konstruerat med operatorerna INNER JOIN, LEFT JOIN eller RIGHT JOIN |
extern_databas | Den fullständiga sökvägen till den externa databasen som innehåller alla tabeller som anges i tabelluttryck |
Anteckningar
Närvaron av en FROM-sats efter en SELECT-sats krävs.
I vilken ordning tabellerna är listade tabelluttryck spelar ingen roll.
Använda länkade tabeller (Länkad tabell. En tabell som sparas i en fil som inte är en del av den öppna databasen men är tillgänglig från Microsoft Access. Användaren kan lägga till, ta bort och ändra poster i den länkade tabellen, men kan inte ändra dess struktur .) istället för klausulen IN kan du göra processen att extrahera data från yttre bas data enklare och mer effektivt.
Exemplet nedan visar hur man hämtar data från tabellen Anställda.
VÄLJ Efternamn, Förnamn
FRÅN Anställda;
Indikerar de poster som valts för SQL-frågor ( SQL-språk(Structured Query Language). Ett strukturerat fråge- och databasprogrammeringsspråk som används ofta för att komma åt, fråga, uppdatera och hantera data i relationella DBMS.
Syntax
VÄLJ ]]
FRÅN tabell
SELECT-satsen som innehåller dessa predikat innehåller följande komponenter:
Komponent | Beskrivning |
Underförstått om inga predikat ingår. Microsoft Access-databasmotorn väljer alla poster som matchar villkoren för en SQL-sats (SQL-sats (sträng). Ett uttryck som definierar ett SQL-kommando, som SELECT, UPDATE eller DELETE, och inkluderar satser, som WHERE eller ORDER BY . SQL-satser/strängar används vanligtvis i frågor och statistiska funktioner). Följande två identiska exempel visar hur man returnerar alla poster från tabellen Anställda. FRÅN Anställda BESTÄLLNING EFTER Anställdskod; FRÅN Anställda BESTÄLLNING EFTER Anställdskod; |
|
Utesluter poster som innehåller dubbletter av data i de valda fälten. Frågeresultat inkluderar endast unika värden vart och ett av fälten i SELECT-satsen. Till exempel kan vissa anställda som anges i tabellen Anställda ha samma efternamn. Om två poster innehåller efternamnet "Ivanov" i fältet Efternamn, returnerar följande SQL-sats endast en post som innehåller efternamnet "Ivanov". VÄLJ DISTINCT Efternamn Om DISTINCT-komponenten utelämnas returnerar frågan båda posterna med efternamnet "Ivanov". Om SELECT-satsen innehåller flera fält, inkluderas kombinationen av alla fältvärden i frågeresultaten endast om den är unik för den posten. Resultaten av en fråga som använder DISTINCT-komponenten uppdateras inte för att återspegla efterföljande ändringar som gjorts av andra användare. |
|
Utesluter data från poster som upprepas i sin helhet istället för att innehålla enskilda fält med samma data. Låt oss anta att en fråga har skapats som kopplar samman tabellerna "Kunder" och "Beställningar" med hjälp av fältet "Kundkod". Tabellen Kunder innehåller inte dubbletter av kund-ID-fält, men de finns i tabellen Order eftersom varje kund kan ha flera order. Följande SQL-sats visar hur du använder DISTINCTROW-komponenten för att lista organisationer som har gjort minst en beställning, utan att nämna detaljerna för dessa beställningar. VÄLJ DISTINCTROW Titel FRÅN Kunder INNER JOIN Beställningar ON-klienter. CustomerId = Orders. Kundkod BESTÄLL EFTER Titel; Om DISTINCTROW-komponenten utelämnas resulterar frågan i flera rader för varje organisation som beställt flera gånger. DISTINCTROW-komponenten träder bara i kraft när man väljer fält från några av tabellerna som används i frågan. DISTINCTROW-komponenten ignoreras om frågan endast innehåller en tabell eller om fält hämtas från alla tabeller. |
|
TOPP n | Returnerar det angivna antalet poster som är bland de första eller senaste inläggen intervall som anges av ORDER BY-satsen. Låt oss säga att du vill visa namnen på de 25 bästa eleverna från klassen 1994. Förnamn Efternamn WHERE Graduation Year = 2003 ORDER BY GradePointAverage DESC; Om du inte inkluderar ORDER BY-satsen, returnerar frågan en slumpmässig uppsättning av 25 poster från tabellen Studenter som uppfyller WHERE-satsen. Predikatet TOP innebär inte ett val mellan lika värden. Om de 25:e och 26:e posterna i föregående exempel hade samma GPA, skulle frågan returnera 26 poster. Du kan också använda det reserverade ordet PERCENT för att hämta en viss procentandel av de första eller sista posterna i intervallet som anges av ORDER BY-satsen. Anta att du istället för de 25 bästa vill visa de lägsta 10 % av eleverna i avgångsklassen. VÄLJ TOP 10 PROCENT Förnamn Efternamn WHERE Graduation Year = 2003 ORDER BY GradePointAverage ASC; ASC-predikatet specificerar utmatningen av värden från den nedre delen av intervallet. Värdet som följer TOP-predikatet måste vara ett värde av typen Integer (Integer data type. Den grundläggande datatypen som används för att lagra heltalsvärden. Typ variabel Heltal lagras som ett 64-bitars (8-byte) nummer i intervallet -32768 till 32767.) utan tecken. TOP-predikatet påverkar inte om frågan kan uppdateras. |
tabell | Namnet på tabellen från vilken poster hämtas. |
se även
SELECT-sats
FRÅN klausul
Bestämmer vilka poster från tabellerna som listas i FROM-satsen som bearbetas av SELECT-, UPDATE- eller DELETE-satser.
Syntax
VÄLJ field_list
FRÅN tabelluttryck
VAR urvalsvillkor
En SELECT-sats som innehåller en WHERE-sats innehåller följande delar.
Del | Beskrivning |
field_list | Namnet på fältet eller fälten som hämtas tillsammans med eventuella alias (Alias (SQL). Ett alternativt namn för en tabell eller ett fält i ett uttryck. Alias används vanligtvis som kortare tabell- eller fältnamn för att underlätta efterföljande referens i program, för att förhindra tvetydiga referenser och för att erhålla mer beskrivande namn vid visning av frågeresultat.), predikat (ALL, DISTINCT, DISTINCTROW eller TOP), eller med någon annan parameter i SELECT-satsen. |
tabelluttryck | Namnet på den eller de tabeller som data hämtas från. |
urvalsvillkor | Uttryck (Uttryck. En kombination av matematiska och logiska operatorer, konstanter, funktioner, fältnamn, kontroller och egenskaper som resulterar i ett enda värde. Uttrycket kan utföra beräkningar, bearbeta text eller validera data.) som måste matcha de poster som ingår i frågeresultat. |
Anteckningar
Microsoft Access-databasmotorn väljer poster som uppfyller villkoren i WHERE-satsen. Om WHERE-satsen inte anges returnerar frågan alla rader i tabellen. Om en fråga anger flera tabeller men inte anger en WHERE- eller JOIN-sats, producerar frågan en kartesisk produkt (kartesisk produkt. Är resultatet av exekvering av en SQL SELECT-sats som har en FROM-sats som refererar till två eller flera tabeller och ingen WHERE eller JOIN-sats som anger metod för sammanfogning.) tabeller.
WHERE-satsen krävs inte, men om den används måste den följa FROM-satsen. Du kan till exempel välja alla anställda från försäljningsavdelningen (WHERE Department = "Försäljning") eller alla kunder mellan 18 och 30 år (WHERE Age Between 18 And 30).
Om en JOIN-sats inte används för en SQL join-operation på flera tabeller, kommer det resulterande objektet Rekord satt det kommer att vara omöjligt att uppdatera.
WHERE-satsen liknar HAVING-satsen och specificerar de valda posterna. Efter att posterna har grupperats av GROUP BY-satsen bestämmer HAVING-satsen också posten som ska visas.
WHERE-satsen används för att utesluta poster som inte behöver grupperas med GROUP BY-satsen.
Använd olika uttryck för att avgöra vilka poster som returneras av SQL-satsen. Till exempel väljer följande SQL-sats alla anställda vars lön överstiger RUR.
VÄLJ Efternamn, Lön FRÅN Anställda VAR Lön > 21000;
WHERE-satsen kan innehålla upp till 40 uttryck kopplade av logiska operatorer (t.ex. OCH Och ELLER).
Om du anger ett fältnamn som innehåller mellanslag eller skiljetecken måste du ha det inom hakparenteser (). Till exempel kan en kundinformationstabell innehålla information om specifika kunder.
VÄLJ [Kundens favoritrestaurang]
Ange ett argument urvalsvillkor, date literals (Date literal. Vilken sekvens av tecken som helst i ett giltigt format, inneslutna i siffertecken (#). Giltiga format är datumformatet som anges i inställningarna för språk och standarder, och universellt format dates.) bör presenteras i USA-format, även om du använder en icke-amerikansk version av Microsoft Access-databasmotorn. Till exempel är datumet "10 maj 1996" skrivet som 10/5/96 i Storbritannien och som 05/10/1996 i Ryssland. Kom ihåg att bifoga bokstaver av datum i siffertecken (#), som visas i exemplen nedan.
För att hitta poster för den 10 maj 1996 i den brittiska databasen, använd följande instruktioner SQL:
VÄLJ * FRÅN beställningar VAR Leveransdatum = #10.05.1996#;
Du kan också använda funktionen DatumValue, som känner igen de internationella parametrarna Microsoft Windows®. Använd till exempel denna kod för Ryssland:
SELECT * FROM Orders WHERE Leveransdatum = DateValue("05/10/1996");
Och följande kod är för Storbritannien:
SELECT * FROM Orders WHERE Leveransdatum = DateValue("10/5/96");
Notera. Om kolumnen som anges i urvalskriterieraden är av typen GUID (Replica ID (GUID). Ett 16-byte fält i en Microsoft Access-databas som används för att unikt identifiera replikering. GUID:n används för att identifiera repliker, replikuppsättningar, tabeller, poster och andra objekt I Microsoft Access-databaser kallas GUID-koder replikakoder.), använder urvalsvillkoren en något annorlunda syntax.
WHERE ReplicaID = (GUID (AB-CDEF0ABCDEF))
Se till att kapslade parenteser och bindestreck är korrekt placerade.
Källsida: http://office. /ru-ru/access/HA.aspx? pid=CH
Kombinerar poster med samma värden som finns i den angivna listan med fält till en post. Ett sammanfattande värde skapas för varje post om en SQL-aggregationsfunktion ingår i SELECT-satsen, som t.ex Belopp eller Räkna.
Syntax
VÄLJ field_list
FRÅN tabell
VAR selection_condition
En SELECT-sats som innehåller en GROUP BY-sats innehåller följande element:
Element | Beskrivning |
field_list | Namnen på fälten som hämtas tillsammans med eventuella alias (Alias (SQL). Ett alternativt namn för en tabell eller ett fält i ett uttryck. Alias används vanligtvis som kortare tabell- eller fältnamn för att underlätta efterföljande referens i program, för att förhindra tvetydiga referenser och för att få mer informativa namn vid visning av frågeresultat.) och SQL-statistiska funktioner, predikat (ALL, DISTINCT, DISTINCTROW eller TOP) eller andra SELECT-satsparametrar |
tabell | |
urvalsvillkor | Urvalsvillkor. Om uttalandet innehåller en WHERE-sats, kommer värdena att grupperas av Microsoft Access-databasmotorn efter att den har tillämpats på posterna. |
group_field_list | group_field_list |
Anteckningar
GROUP BY-satsen är valfri.
Om SQL-statistiska funktioner inte ingår i SELECT-satsen, beräknas inte summavärden.
GROUP BY-fältvärden som är Null (Null. Ett värde som kan anges i ett fält eller användas i uttryck och frågor för att indikera saknade eller okända data. I Visual Basic nyckelord Null anger ett Null-värde. Vissa fält, till exempel primärnyckelfält, kan inte innehålla nollvärden.) är grupperade och utelämnas inte. Däremot värdena Null utvärderas inte av någon av SQL-statistikfunktionerna.
WHERE-satsen används för att utesluta rader som inte behöver grupperas. HAVING-satsen används för att filtrera poster efter gruppering.
Fält från fältlistan GROUP BY som inte innehåller Memo-datatyp (MEMO-fältdatatyp. En fältdatatyp i en Microsoft Access-databas. Ett MEMO-fält kan innehålla upp till 65535 tecken.) eller OLE-objekt (OLE-objektfältdatatyp. ). En fältdatatyp som används för att spara objekt från andra applikationer som är länkade till eller inbäddade i en Microsoft Access-databas.) kan referera till vilket fält som helst i vilken tabell som helst som anges i FROM-satsen, även om fältet inte ingår i SELECT-satsen. För att göra detta räcker det att ha minst en SQL-statistisk funktion i SELECT-satsen. Microsoft Access-databasmotorn tillåter inte gruppering efter fält som innehåller MEMO-fält- eller OLE-objektdata.
Alla fält i SELECT-fältlistan måste antingen ingå i en GROUP BY-sats eller vara argument till en SQL-aggregationsfunktion.
se även
SELECT-sats
SELECT...INTO-satsen
Predikater ALL, DISTINCT, DISTINCTROW, TOP
FRÅN klausul
HA erbjudande
ORDER BY klausul
WHERE klausul
SQL statistiska funktioner
Källsida: http://office. /ru-ru/access/HA.aspx? pid=CH
Definierar grupperade poster som ska visas i en SELECT-sats med en GROUP BY-sats. Efter att posterna har grupperats av GROUP BY-satsen kommer HAVING-satsen att visa de som uppfyller dess villkor.
Syntax
VÄLJ field_list
FRÅN tabell
VAR urvalsvillkor
GRUPP AV group_field_list
En SELECT-sats som innehåller en HAVING-sats innehåller följande element:
Element | Beskrivning |
field_list | Namnen på fälten som laddas tillsammans med eventuella alias (Alias (SQL). Ett alternativt namn för en tabell eller ett fält i ett uttryck. Alias används vanligtvis som kortare tabell- eller fältnamn för att underlätta efterföljande referens i program, för att förhindra tvetydiga referenser och för att få mer informativa namn vid visning av frågeresultat.) och SQL-statistiska funktioner, predikat (ALL, DISTINCT, DISTINCTROW eller TOP) eller med andra parametrar i SELECT-satsen. |
tabell | Namn på tabellen från vilken poster laddas |
selection_condition | Urvalsvillkor. Om uttalandet innehåller en WHERE-sats, kommer Microsoft Access-databasmotorn att gruppera värdena efter att den har applicerats på posterna. |
group_field_list | Namn på fält (upp till 10) som används för att gruppera poster. Namnordningen i group_field_list bestämmer nivån på grupperingen - från högsta till lägsta |
group_condition | Ett uttryck som anger vilka poster som ska visas |
Anteckningar
HAVING-satsen är valfri.
HAVING-satsen liknar WHERE-satsen som bestämmer urvalet av poster. Efter att ha grupperat poster med GROUP BY-satsen bestämmer HAVING-satsen vilka poster som ska visas.
VÄLJ typkod,
Summa (I lager)
FRÅN produkter
GRUPPER EFTER Typkod
HA Summa(InStock) > 100 Och som "TEL*";
HAVING-satsen kan innehålla upp till 40 uttryck länkade av logiska operatorer som t.ex Och Och Eller.
Källsida: http://office. /ru-ru/access/HA.aspx? pid=CH
Sorterar posterna som returneras av frågan i stigande eller fallande ordning av värdena i det eller de angivna fälten.
Syntax
VÄLJ field_list
FRÅN tabell
VAR selection_condition
[, fält2 ][, ...]]]
En SELECT-sats som innehåller en ORDER BY-sats innehåller följande element.
Element | Beskrivning |
field_list | Namnen på fälten som hämtas tillsammans med eventuella alias (Alias (SQL). Ett alternativt namn för en tabell eller ett fält i ett uttryck. Alias används vanligtvis som kortare tabell- eller fältnamn för att underlätta efterföljande referens i program, för att förhindra tvetydiga referenser och för att få mer informativa namn vid visning av frågeresultat.) och SQL-statistiska funktioner, predikat (ALL, DISTINCT, DISTINCTROW eller TOP) eller med andra parametrar i SELECT-satsen. |
tabell | Namn på tabellen från vilken poster hämtas |
urvalsvillkor | Urvalsvillkor. Om uttalandet innehåller en WHERE-sats, kommer Microsoft Access-databasmotorn efter att ha tillämpats på posterna att beställa posternas värden |
fält1, fält2 | Namn på de fält som poster sorteras efter. |
Anteckningar
ORDER BY-satsen är valfri. Den ska användas när du behöver visa data i sorterad form.
Standardsorteringsordningen är sorteringsordning Ett sätt att ordna data baserat på dess värden och typ Data kan sorteras alfabetiskt efter numeriska värden eller efter datum. Sorteringsordningen kan vara stigande (0 till 100, A till Ö) eller fallande (100 till 0, Ö till A (A till Ö, 0 till 9). Exemplen nedan visar sortering av anställdas namn efter efternamn.
VÄLJ Efternamn, Förnamn
FRÅN Anställda
BESTÄLL EFTER Efternamn;
VÄLJ Efternamn, Förnamn
FRÅN Anställda
BESTÄLL EFTER Efternamn ASC;
För att sortera fält i fallande ordning (Z till A, 9 till 0), lägg till det reserverade ordet DESC till namnet på varje fält. Följande exempel visar sortering i fallande ordning baserat på anställdas löner.
VÄLJ Efternamn, Lön
FRÅN Anställda
BESTÄLLNING EFTER Lön DESC, Efternamn;
Om du anger fält i ORDER BY-satsen som innehåller data av typen MEMO Field (Memo Field-datatyp. En fältdatatyp i en Microsoft Access-databas. Ett MEMO-fält kan innehålla upp till 65 535 tecken.) eller OLE Object Field (OLE Object Field) Fältdatatyp " fältdatatyp som används för att spara objekt från andra applikationer som är länkade eller inbäddade i en Microsoft Access-databas.), kommer detta att generera ett fel. Microsoft Access-databasmotorn kan inte sortera dessa fälttyper.
ORDER BY-satsen är vanligtvis den sista satsen i en SQL-sats (SQL-sats (sträng). Ett uttryck som definierar ett SQL-kommando, såsom SELECT, UPDATE eller DELETE, och inkluderar satser, såsom WHERE eller ORDER BY. SQL-satser /strängar används ofta i frågor och statistiska funktioner.).
Du kan inkludera ytterligare fält i ORDER BY-satsen. Posterna sorteras först efter det fält som anges först i ORDER BY-satsen. Poster med samma värden i det första fältet sorteras sedan efter det fält som anges av det andra, och så vidare.
se även
SELECT-sats
SELECT...INTO-satsen
Predikater ALL, DISTINCT, DISTINCTROW, TOP
FRÅN klausul
GROUP BY-klausul
HA erbjudande
WHERE klausul
SQL statistiska funktioner
Källsida: http://office. /ru-ru/access/HA.aspx? pid=CH
Sammanfogar poster från två tabeller om de anslutande fälten i dessa tabeller innehåller samma värden.
Syntax
FRÅN bord 1 INRE KOPPLING Tabell 2 PÅ bord 1.fält1 jämförelseoperator tabell2.fält2
Operationen INNER JOIN består av följande delar:
Element | Beskrivning |
bord 1, Tabell 2 | Namn på tabellerna som innehåller de poster som ska sammanfogas |
fält1, fält2 | Namn på fälten som ska länkas. Icke-numeriska fält måste vara av samma datatyp (Data Type. En fältkarakteristik som definierar vilken typ av data som fältet kan innehålla. Datatyper inkluderar: Boolean, Heltal, Long, Currency, Single, Double, Date, String, och Variant (standard) och innehåller data av samma typ. Namnen på dessa fält kan dock vara annorlunda |
comparison_operator | Vilken jämförelseoperator som helst: (=,<, >, <=, >= eller<>) |
SELECT-satsen instruerar Microsoft Access-databasmotorn att returnera information från databasen som en uppsättning poster.
VÄLJ [ predikat] { * | tabell.* | [tabell.]fält1 [, [tabell.]fält2 [, ...]]}
FRÅN tabelluttryck [, ...]
SELECT-satsen innehåller följande element.
Element | Beskrivning |
---|---|
predikat |
Ett av följande predikat: ALL, DISTINCT, DISTINCTROW eller TOP. Predikat används för att begränsa antalet poster som returneras. Om inget predikat anges är standardvärdet ALLA. |
Indikerar att alla fält är valda från den eller de angivna tabellerna. |
|
tabell |
Namnet på tabellen som innehåller fälten med de valda posterna. |
fält1, fält2 |
Namnen på fälten som innehåller data som ska hämtas. Om flera fält är specificerade kommer data att hämtas i den ordning deras namn är listade. |
smeknamn1, smeknamn2 |
Namn som används som kolumnrubriker istället för de ursprungliga kolumnnamnen i tabell. |
tabelluttryck |
Ett eller flera tabellnamn som innehåller data som ska hämtas. |
extern_databas |
Namnet på databasen som innehåller de tabeller som anges i komponenten tabelluttryck, om de inte finns i den aktuella databasen. |
För att utföra den här åtgärden söker Microsoft Access-databasmotorn efter den eller de angivna tabellerna, hämtar de angivna kolumnerna, väljer de rader som uppfyller villkoret och sorterar de resulterande raderna i angiven ordning.
SELECT-satser ändrar inte data i databasen.
SELECT är vanligtvis det första ordet i en SQL-sats. SELECT och SELECT...INTO är de vanligaste SQL-satserna.
Minsta syntax för en SELECT-sats är följande:
VÄLJ fält FRÅN tabell
Du kan använda en asterisk (*) för att markera alla fält i en tabell. Exemplet nedan visar att tabellen Anställda har alla fält markerade.
VÄLJ * FRÅN Anställda;
Om fältnamnet ingår i flera tabeller i FROM-satsen, föregå det med tabellnamnet och satsen . (punkt). I följande exempel visas fältet "Avdelning" i två tabeller samtidigt: "Anställda" och "Lederare". Du kan använda en SQL-sats för att välja avdelningar från tabellen Anställda och chefsnamn från tabellen Chefer.
SELECT Employees.Department, Supervisors.SupvName FROM Anställda INNER JOIN Supervisors WHERE Employees.Department = Supervisors.Department;
När ett RecordSet-objekt skapas används tabellfältsnamnet av Microsoft Access Database Engine som namn på "Field"-objektet i objektet Rekorduppsättning. Om fältnamnet behöver ändras eller inte tillhandahålls av uttrycket som genererar fältet, använd det reserverade ordet AS. Följande exempel visar hur rubriken BirthDate används för att namnge det returnerade objektet Fält i det mottagna objektet Rekorduppsättning.
SELECT BirthDate AS Birth FROM Anställda;
När du använder aggregerade funktioner eller frågor som returnerar tvetydiga eller dubbla objektnamn Fält måste du använda AS-satsen för att tilldela objektet Fält ett annat namn. I exemplet nedan, det returnerade objektet Fält i det mottagna objektet Rekorduppsättning namnet "Antal_anställda" tilldelas.
VÄLJ ANTAL (Anställd-ID) SOM Antal anställda FRÅN anställda;
När du arbetar med en SELECT-sats kan du använda ytterligare satser för att ytterligare begränsa och organisera den data som hämtas. Mer information finns i hjälpämnet för erbjudandet du använder.
Laboratoriearbete nr 1
SQL: DATAEXTRAKT - kommandoVÄLJ
Målet med arbetet:
· användning av operatorer IN, MELLAN, GILLA, ÄR NULL.
Träning№1. Skapa en fråga för att välja i SQL-läge alla värden i fälten FÖRNAMN och EFTERNAMN från tabellen STUDENTER.
VÄLJ FÖRNAMN, EFTERNAMN
FRÅN ELEVER;
Träning№2 . Skapa en fråga för att välja i SQL-läge alla kolumner i tabellen STUDENTS.
VÄLJ *
FRÅN ELEVER;
Uppgift nr 3. Skapa en fråga för att välja i SQL-läge namnen på städer där eleverna bor, information om vilka finns i tabellen PERSONUPPGIFTER.
VÄLJ DISTINKT STAD
FRÅN [PERSONUPPGIFTER];
Uppgift nr 4. Skapa en urvalsfråga i SQL-läge som hämtar namnen på alla elever med efternamnet Ivanov, information om vilken finns i STUDENTS-tabellen.
VÄLJ EFTERNAMN, FÖRNAMN
FRÅN ELEVER
WHERE LAST NAME="Ivanov";
Uppgift nr 5. Skapa en urvalsfråga i SQL-läge för att få för- och efternamn på studenter som studerar i UIT-22-gruppen på en budgetform av utbildning.
VÄLJ EFTERNAMN, FÖRNAMN
FRÅN ELEVER
WHERE GROUP="UIT-22" OCH BUDGET=true;
Uppgift nr 6. Skapa en fråga i SQL-läge. för ett urval från EXAMINATIONStabellen, information om elever som endast har betyg 4 och 5.
VÄLJ *
FRÅN [FÖRÄNDRAEXAMEN]
VARKVALITETIN(4,5);
Uppgift nr 7. Skapa ett zanpoc- och SQL-läge för att välja information om elever som har provbetyget 3 i ämnet IOSU.
VÄLJ *
FRÅN [FÖRÄNDRAEXAMEN]
VARARTIKEL=" IOSU"OchKVALITETInte i (4,5);
Uppgift nr 8. Skapa en fråga i SQL-läge för att välja poster för objekt vars timmar är mellan 100 och 130.
VÄLJ *
FRÅNFÖREMÅL
VARKOLLA PÅMELLAN 100 OCH 130;
Uppgift nr 9. Skapa en fråga i SQL-läge för att välja information från STUDENTS-tabellen om elever vars efternamn börjar, till exempel med bokstaven "C".
VÄLJ *
FRÅNSTUDENTER
VAREFTERNAMNTYCKA OM"MED*";
Slutsats: Under laboratoriearbete bekantade sig med SQL-instruktioner, lärde sig att skapa enkla SQL-frågor i Access med hjälp av kommandot SELECT med IN, BETWEEN, LIKE-operatorerna.
Exempel på SQL-frågor kan användas för att lära sig och öva på att skriva SQL-frågor i MS Access.
En SQL-fråga kan kapslas i en annan. En underfråga är inget annat än en fråga i en fråga. Vanligtvis används en underfråga i WHERE-satsen. Men det finns andra sätt att använda underfrågor.
Fråga Q011. Information om produkter från tabellen m_product visas, vars koder också finns i tabellen m_inkomst:
VÄLJ *
FRÅN m_product
WHERE id IN (VÄLJ product_id FROM m_income);
Begär Q012. En lista över produkter från tabellen m_product visas, vars koder inte finns i tabellen m_outcome:
VÄLJ *
FRÅN m_product
WHERE id NOT IN (SELECT product_id FROM m_outcome);
Begär Q013. Den här SQL-frågan visar en unik lista över produktkoder och namn som finns i tabellen m_inkomst men inte i tabellen m_utfall:
SELECT DISTINCT product_id, title
FRÅN m_inkomst INNER JOIN m_product
PÅ m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);
Fråga Q014. En unik lista över kategorier vars namn börjar med bokstaven M visas från tabellen m_category:
VÄLJ DISTINKT titel
FRÅN m_product
WHERE titel SOM "M*";
Fråga Q015. Ett exempel på att utföra aritmetiska operationer på fält i en fråga och byta namn på fält i en fråga (alias). Det här exemplet beräknar kostnad = kvantitet*pris och vinst för varje post utgiftspost, förutsatt att vinsten är 7 procent av försäljningen:
belopp*pris/100*7 AS-vinst
FROM m_outcome;
Fråga Q016. Efter att ha analyserat och förenklat aritmetiska operationer, kan du öka hastigheten för exekvering av frågor:
SELECT dt, product_id, amount, price, amount*price AS outcome_sum,
utfallssumma*0,07 AS vinst
FROM m_outcome;
Begär Q017. Du kan använda INNER JOIN-satsen för att sammanfoga data från flera tabeller. I följande exempel, beroende på värdet av ctgry_id, matchas varje post i tabellen m_inkomst med namnet på kategorin från tabellen m_category som produkten tillhör:
VÄLJ c.titel, b.titel, dt, summa, pris, summa*pris AS inkomst_summa
FROM (m_income AS a INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
BESTÄLLNING AV c.title, b.title;
Begär Q018. Funktioner som SUMMA - summa, COUNT - kvantitet, AVG - aritmetiskt medelvärde, MAX - maxvärde, MIN - minimivärde kallas aggregerade funktioner. De accepterar många värden och efter bearbetning returnerar de ett enda värde. Ett exempel på att beräkna summan av produkten av belopps- och prisfälten med hjälp av aggregerad funktion BELOPP.
Denna lektion är tillägnad SQL-frågor till databasen på VBA-åtkomst. Vi kommer att titta på hur man gör detta i VBA INFOGA frågor, UPPDATERA, DELETE till databasen, och lär dig också hur du får ett specifikt värde från en SELECT-fråga.
De som programmerar in VBA-åtkomst och när du arbetar med basen SQL-data servrar ställs ofta inför en så enkel och nödvändig uppgift som att skicka en SQL-fråga till en databas, vare sig det är INSERT, UPDATE eller en enkel SQL SELECT-fråga. Och eftersom vi är novisa programmerare borde vi också kunna göra detta, så idag kommer vi att göra just det.
Vi har redan berört ämnet att hämta data från en SQL-server, där vi skrev kod i VBA för att erhålla denna data, till exempel i artikeln om att ladda upp data till en textfil från MSSql 2008, eller så berörde vi det också en lite i materialet Laddar upp data från Access till en Word- och Excel-mall, men på ett eller annat sätt, tittade vi på detta ytligt, och idag föreslår jag att prata om detta lite mer detaljerat.
Notera! Alla exemplen nedan anses använda Access 2003 ADP-projektet och MSSql 2008-databasen Om du inte vet vad ett ADP-projekt är, så tittade vi på detta i materialet Hur man skapar och konfigurerar ett Access ADP-projekt.
Låt oss säga att vi har en tabell test_table, som kommer att innehålla numren och namnen på årets månader (förfrågningar exekveras med Management Studio)
SKAPA TABELL .( INTE NULL, (50) NULL) PÅ GÅR
Som jag redan har sagt kommer vi att använda ett ADP-projekt konfigurerat för att fungera med MS SQL 2008, där jag skapade ett testformulär och lade till en startknapp med en signatur "Springa", som vi kommer att behöva för att testa vår kod, dvs. Vi kommer att skriva all kod i händelsehanteraren " Knapptryckning».
För att inte försena för länge, låt oss börja direkt, låt oss säga att vi måste lägga till en rad i vår testtabell ( kod kommenterade)/
Private Sub start_Click() "Deklarera en variabel för att lagra frågesträngen Dim sql_query As String "Skriv in frågan vi behöver i den sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6", "juni")" "Execute it DoCmd RunSQL sql_query End Sub
I det här fallet exekveras begäran med de aktuella databasanslutningsparametrarna. Vi kan kontrollera om uppgifterna har lagts till eller inte.
Som du kan se har uppgifterna infogats.
För att radera en rad skriver vi följande kod.
Private Sub start_Click() "Deklarera en variabel för att lagra frågesträngen Dim sql_query As String "Skriv en raderingsfråga i den sql_query = "DELETE test_table WHERE id = 6" "Kör den DoCmd.RunSQL sql_query End Sub
Om vi kontrollerar kommer vi att se att den önskade raden har raderats.
För att uppdatera data, skriv till variabeln sql_query uppdateringsbegäran, jag hoppas att innebörden är klar.
Här är saker lite mer intressanta än med andra SQL-konstruktioner.
Först, låt oss säga att vi behöver få all data från tabellen, och till exempel kommer vi att bearbeta den och visa den i ett meddelande, och du kan naturligtvis använda den för andra ändamål, för detta skriver vi följande koda
Private Sub start_Click() "Deklarera variabler "För en uppsättning poster från databasen Dim RS As ADODB.Recordset "Frågesträng Dim sql_query As String "Sträng för att visa sammanfattande data i ett meddelande Dim str As String "Skapa ett nytt objekt för poster set RS = New ADODB .Recordset "Query line sql_query = "SELECT id, name_mon FROM test_table" "Kör frågan med de aktuella projektanslutningsinställningarna RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Loop through the records While Not ( RS.EOF) "Fyll variabeln för att visa meddelandet str = str & RS.Fields("id") & "-" & RS.Fields("name_mon") & vbnewline "gå till nästa post RS.MoveNext Wend " Skriv ut meddelandet msgbox str End Sub
Här använder vi redan VBA Access-loopar för att iterera genom alla värden i vårt rekorduppsättning.
Men ganska ofta är det nödvändigt att inte få alla värden från en uppsättning poster, utan bara en, till exempel månadens namn genom dess kod. Och för att göra detta är det ganska dyrt att använda en loop, så vi kan helt enkelt skriva en fråga som bara returnerar ett värde och komma åt det, till exempel får vi månadens namn med kod 5
Private Sub start_Click() "Deklarera variabler" För en uppsättning poster från databasen Dim RS As ADODB.Recordset "Frågesträng Dim sql_query As String "String för att visa slutvärdet Dim str As String "Skapa ett nytt objekt för postuppsättningen RS = Ny ADODB.Recordset "Query line sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "Kör frågan med de aktuella projektanslutningsinställningarna RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Hämta vårt värde str = RS. Fields(0) msgbox str End Sub
För universalitet, här har vi redan adresserat inte med cellnamnet, utan med dess index, d.v.s. 0, och detta är det allra första värdet i Rekorduppsättning, till slut fick vi värdet "Maj".
Som du kan se är allt ganska enkelt. Om du ofta behöver få ett specifikt värde från databasen ( som i det sista exemplet), så rekommenderar jag att mata ut all kod till en separat funktion (Hur man skriver en funktion i VBA Access 2003) med en ingångsparameter, till exempel månadskoden ( om vi betraktar vårt exempel) och helt enkelt, där det är nödvändigt att visa detta värde, ring funktionen vi behöver med den önskade parametern och det är det, genom att göra detta kommer vi att avsevärt minska VBA-koden och förbättra uppfattningen av vårt program.
Det är allt för idag. Lycka till!