Kom igång med SQL Server: 1. Simple SELECT Queries

I den här lektionsserien lär du dig att fråga Microsoft SQL Server med hjälp av SQL SELECT-angivelsen. När du har läst den här lektionen kommer du att kunna:

  • Identifiera alla tabeller i en SQL Server SSMS-databas (SQL Server Management Studio).
  • Förstå hur man listar en tabells kolumner.
  • För att visa kolumner, skapa text- och matematiska resultat och ställa in distinkta värden använder du SQL SELECT-anvisningen.
  • Lär dig några tekniker för att felsöka dina kommandon och rätta till misstag.

Viktigt! Följ exemplen i din databas och gör dem. Om du inte redan har gjort det kan du anmäla dig till min guide för att komma igång med SQL Server. Du kan få vägledning om hur du laddar ner den kostnadsfria programvaran och exempeldatabasen.

Förstå din databas

En enkel select-anvisning består av två delar. Den första delen beskriver vilka kolumner vi vill visa och den andra delen vilken tabell vi tittar på. Ett select-statement ser ut så här:

SELECT LastName FROM Person.Person

I det här exemplet är LastName kolumnen och Person tabellen. Kolumnerna kommer efter nyckelordet SELECT, medan tabellen föregås av FROM.

Tabellnamn

Du kanske undrar varför tabellen Person kallas Person. Person i ovanstående uttalande. Detta har att göra med hur objekten är organiserade på servern. Databasen kan ses som en serie inbäddade behållare. Behållarna är:

  • Server/Instans – Instansen av SQL Server som körs på datorn.
  • Databaser – En eller flera databaser som skapats på instansen.
  • Scheman – Ett sätt att logiskt gruppera tabeller och andra databasobjekt.

Det fullständigt kvalificerade namnet för en tabell är ….. Om vi verkligen vill vara tydliga kan vi använda något som

SELECT LastName FROM ...

för att göra en sökning. Som tur är skriver vi vanligtvis frågor inom ramen för en databas, så vi behöver bara ange Schema och TableName på följande sätt:

SELECT LastName FROM Person.Person

Men hur är det med parenteserna? De används om din tabell har ett mellanslag i namnet. Så

SELECT Last NameFROM Person.Person Table

skulle ge fel

SELECT FROM Person.

är OK. Mitt råd? Om du får namnge dina egna tabeller, använd inte mellanslag, parenteser är fula! Om du måste, gör som Oraclefolket och använd understrykningar. Person_Table är mycket lättare att läsa än , personligen föredrar jag PersonTable.

Användning av Object Explorer

För att kunna skriva frågor måste du veta vilka tabeller och kolumner som finns tillgängliga i dina databaser. När du använder SSMS (SQL Server Management Studio) kan du helt enkelt expandera mappen tables i databasen för att få en lista över alla tabeller som finns i din databas. När du hittar en tabell som du vill veta mer om klickar du helt enkelt på tabellens namn för att expandera den och sedan på mappen kolumner för att lista alla kolumner.

Körning av frågor i SSMS

Innan vi kommer för långt ska jag visa dig hur du kör en fråga i SSMS. Det är faktiskt väldigt enkelt. När du har startat SQL Server Management Studio vill du välja din databas. Klicka sedan på knappen New Query (ny fråga) som finns i den övre verktygsfältet. Detta visar ett frågefönster till höger. Du kan skriva vad du vill i det här fönstret, eftersom det i princip är en textredigerare. Klipp och klistra in eller skriv in ett SQL-uttalande och klicka sedan på Execute för att köra uttalandet. Resultaten visas i den nedre delen av fönstret och eventuella meddelanden, t.ex. fel, visas i fliken meddelanden.

Välj flera kolumner

För att välja mer än en kolumn är det bara att separera dem med ett kommatecken. Till exempel,

SELECT FirstName, LastNameFROM Person.Person

återger både förnamn och efternamn som resultat. Om du undrar kan du blanda fall när du skriver frågor. Det vill säga

SELECT FirstName, LastNameFROM Person.Person

fungerar lika bra som

select FirstName, LastNamefrom Person.Person

Tip! En vanlig konvention är att skriva alla nyckelord med versaler. Vissa DBA:s anser att det är lättare att läsa kommandon som är skrivna på detta sätt. Personligen gör jag inte det, men för den här bloggen ska jag försöka 🙂

Rename SQL Columns

Du kan byta namn på de kolumner som blir resultatet av dina select statements. Använd AS-anvisningen på följande sätt:

SELECT LastName as SirNameFROM Person.Person

Detta visar resultatet som ”SirName” i stället för ”LastName”. Detta är en trevlig funktion ur en fåfänga synvinkel, men det är också praktiskt när vi vill returnera ett beräkningsresultat och behöver ge det ett namn. Anta till exempel att du vill returnera LastName med stora bokstäver. Du skulle kunna skriva

SELECT UPPER(LastName) AS SirNameFROM Customers

UPPER är känt som en funktion. SQL Server har många funktioner som du kan använda för att utföra många typer av beräkningar. Vi kommer att titta på dem alla senare, men för tillfället ska du veta att du kan kedja ihop flera funktioner för att skapa ett komplext uttryck för att ge ut data på det sätt du behöver.

Komplexa kolumnuttryck

Vår tabell för anställda innehåller separata fält för förnamn och efternamn. Anta att personalavdelningen behöver se ett fullständigt namn med versaler. Hur skulle du göra detta? Enkelt! Du kan skriva

SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person

Detta uttalande kan se komplicerat ut, men när vi bryter ner det kommer du att se att det bara består av ett gäng enkla element.

  • Som du just har lärt dig används UPPER för att returnera stor bokstavsbeteckningen för en kolumn.
  • Poängen + talar om för SQL att kombinera två värden med varandra.

Allt som står inom enkla citationstecken (’) visas bokstavligen som det är. I vårt fall betyder ’ ’ att ett enkelt mellanslag ska skrivas ut. Om du läser vårt uttryck på engelska skulle det låta som ”Take the uppercase of the FirstName combine it with a space and then add the uppercase of LastName to it.”

Do Math with SQL!

Du kan också få SQL att göra matematiska trick åt dig. Den kan göra ganska komplicerad aritmetik om du låter den göra det. För idag ska jag visa dig hur du multiplicerar två tal, men du kan lika gärna addera, subtrahera eller dividera. Senare kommer vi att göra det mer komplicerat så att du kan återuppleva dina Algebra II-dagar. 🙂 Här är några vanliga matematiska operatorer som du kan använda i SQL:

  • * Multiplicera
  • / Dividera
  • + Addera
  • – Subtrahera

Vi kommer att använda tabellen OrderDetails och beräkna totalpriset genom att multiplicera enhetspriset med kvantiteten.

SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail

Biten ” UnitPrice * OrderQty” säger att vi ska multiplicera UnitPrice med Quantity.

Be Distinct and Debug

So långt har vi använt select-anvisningen för att hämta alla poster i en tabell oavsett om vissa värden upprepas eller inte. Om du vill kan du använda nyckelordet DISTINCT för att ta bort dubbletter från dina resultat. Om du till exempel bara vill få tillbaka en unik lista över anställdas titlar skulle du använda det här SQL-kommandot:

SELECT DISTINCT JobTitleFROM HumanResources.Employee

DISTINCT-kommandot fungerar också på mer än en kolumn. Om du vill kan du få en distinkt lista över jobbtitlar och kön genom att skriva

SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee

!Trivia: Nyckelordet ALL är DISTINCT:s motsvarighet och är standardbeteendet. Det är därför vi inte skriver det i våra uttalanden.

Hitta och korrigera fel

Förr eller senare kommer du att skriva fel i ett select-uttalande på kommandoraden och datorn kommer att skrika åt dig – ”Syntaxfel!” eller ”Felaktigt kolumnnamn” Vad ska du göra? Kom ihåg att select-angivelsen består av två huvuddelar: SELECT- och FROM-delen. I allmänhet tittar databasen först om dessa nyckelord finns och om de inte finns utlöser den ett syntaxfel.

Detta är bara ett fint uttryck för ”du har stavat fel på ett nyckelord eller har det i fel ordning” (t.ex. du har Distinct före Select som i DISTINCT SELECT). När nyckelorden har kontrollerats inspekteras uttalandet för att se till att du har angett en tabell. När tabellen är känd kan kolumnerna kontrolleras. Ordningen är alltså att först kontrollera nyckelord, sedan tabeller och slutligen korrekta kolumner. När ett fel visas, läs det noggrant. Det är troligt att du har stavat fel på något. Datorn kommer att tala om vad du har stavat fel inom citationstecken; det är din uppgift att sedan hitta felstavningen och korrigera den.

SQL Select Övningar

Det är viktigt att öva! Använd exempeldatabasen för att besvara de här frågorna.

  1. Hur kan du hitta alla tabellnamn i databasen AdventureWorks2012?
  2. Vilka två sätt finns det för att få fram namnen på alla kolumner i databasen Person.Person?
  3. Välj JobTitle och BirthDate för alla anställda.
  4. Vad skulle UnitPrice för varje PurchaseOrderDetail vara om det fanns en halverad rea?

Svaren finns här

Grattis! Du har just lärt dig hur man använder kommandot select för att fråga ut en databas. Fler handledningar kommer att följa, och i dessa kommer vi att fördjupa oss i några av de områden som vi glossade över idag, t.ex. matematiska operatorer och funktioner. Kom ihåg! Jag vill påminna er alla om att om ni har andra frågor som ni vill ha svar på, skriv en kommentar eller twittra mig. Jag är här för att hjälpa dig.

Lämna ett svar

Din e-postadress kommer inte publiceras.