De Structured Query Language (SQL) ger databasanvändare möjlighet att skapa anpassade frågor för att extrahera information från databaser. I en tidigare artikel undersökte vi extrahera information från en databas med SQL SELECT-frågor. Låt oss utöka den diskussionen och utforska hur du kan utföra avancerade frågor för att hämta data som matchar specifika villkor.
Låt oss överväga ett exempel baserat på det vanliga Nordanvind databas, som ofta levereras med databasprodukter som en självstudie.
Här är ett utdrag från databasens produkttabell:
Serienummer | Produktnamn | Leverantörs-ID | QuantityPerUnit | Enhetspris | EnheterInStock |
---|---|---|---|---|---|
1 | Chai | 1 | 10 lådor x 20 påsar | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz flaskor | 19.00 | 17 |
3 | Anis-sirap | 1 | 12 - 550 ml flaskor | 10.00 | 13 |
4 | Kock Anton's Cajun-kryddor | 2 | 48 - 6 oz burkar | 22.00 | 53 |
5 | Kock Anton's Gumbo Mix | 2 | 36 lådor | 21.35 | 0 |
6 | Farmor's Boysenberry Spread | 3 | 12 - 8 oz burkar | 25.00 | 120 |
7 | Farbror Bobs organiska torkade päron | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Enkla gränsvillkor
De första begränsningarna vi lägger till vår fråga innebär enkla gränsvillkor. Vi kan specificera dessa i WHERE-paragrafen i SELECT-frågan med hjälp av enkla tillståndsuttalanden konstruerade med standardoperatörer, som ,> = och <=.
Låt oss först prova en enkel fråga som låter oss extrahera en lista över alla produkter i databasen som har en enhetspris på mer än 20.00:
VÄLJ produktnamn, enhetspris
FRÅN produkter
VAR UnitPris> 20.00
Detta ger en lista med fyra produkter, som visas nedan:
Produktnamn Enhetspris
Kock Anton's Gumbo Mix 21.35
Kock Anton's Cajun-kryddor 22.00
Farmor's Boysenberry Spread 25.00
Farbror Bobs organiska torkade päron 30.00
Vi kan också använda WHERE-satsen med strängvärden. Detta motsvarar i grunden tecken till siffror, där A representerar värdet 1 och Z representerar värdet 26. Vi kan till exempel visa alla produkter med namn som börjar med U, V, W, X, Y eller Z med följande fråga:
VÄLJ Produktnamn
FRÅN produkter
VAR Produktnamn> = 'T'
Vilket ger resultatet:
Produktnamn
Farbror Bobs organiska torkade päron
Uttrycka intervall med gränser
WHERE-klausulen tillåter oss också att implementera ett intervallvillkor på ett värde genom att använda flera villkor. Om vi till exempel vill ta vår fråga ovan och begränsa resultaten till produkter med priser mellan 15.00 och 20.00, kan vi använda följande fråga:
VÄLJ produktnamn, enhetspris
FRÅN produkter
VAR UnitPrice> 15.00 AND UnitPrice <20.00
Detta ger resultatet som visas nedan:
Produktnamn Enhetspris
Chai 18.00
Chang 19.00
Uttrycka intervall MELLAN
SQL ger också en genväg MELLAN syntax som minskar antalet villkor som vi behöver inkludera och gör frågan mer läsbar. I stället för att använda de två WHERE-villkoren ovan kan vi till exempel uttrycka samma fråga som:
VÄLJ produktnamn, enhetspris
FRÅN produkter
VAR UnitPris MELLAN 15.00 OCH 20.00
Som med våra andra villkor, fungerar också MELLAN strängvärden. Om vi ville ta fram en lista över alla länder som börjar med V, W eller X kan vi använda frågan:
VÄLJ Produktnamn
FRÅN produkter
VAR Produktnamn MELLAN "A" och "D"
Vilket ger resultatet:
Produktnamn
Anis-sirap
Chai
Chang
Kock Anton's Gumbo Mix
Kock Anton's Cajun-kryddor
WHERE-klausulen är en kraftfull del av SQL-språket som låter dig begränsa resultat till värden som faller inom angivna intervall. Det används ofta för att uttrycka affärslogik och bör vara en del av varje databasproffs verktygslåda. Det är ofta bra att införliva vanliga klausuler i ett lagrat förfarande för att göra det tillgängligt för dem utan SQL-kunskap.