Innehållsförteckning:
- Verifiera databasstrukturen
- Prova frågor i en testdatabas
- Dubbelkontrollera frågor som inkluderar anslutningar
- Trefaldiga sökfrågor med underselektioner
- Sammanfatta data med GROUP BY
- Titta på GROUP BY-klausulbegränsningar
- Använd parentes med OCH, ELLER, och INTE
- Privata behörigheter för kontroll
- Säkerhetskopiera dina databaser
- Hantera felförhållanden elegant Oavsett om du gör ad hoc-frågor från en arbetsstation eller inbäddade sökfrågor i en applikation, returnerar SQL ibland ett felmeddelande istället för de önskade resultaten. På en arbetsstation kan du bestämma vad du ska göra nästa, baserat på meddelandet som returnerats.
Video: SQL Tutorial 12 Advanced Subqueries returning multiple columns 2024
SQL SELECT-satsen är ditt verktyg för att gräva upp dold information i en databas. Även om du har en klar uppfattning om vad du vill hämta, kan det vara en utmaning att översätta den här idéen till SQL. Om din formulering är bara en liten bit, kan du sluta med fela resultat. För att minska dina chanser att bli vilseledda, använd följande tio principer.
Verifiera databasstrukturen
Om du hämtar data från en databas och dina resultat inte verkar rimliga, kolla databasdesignen. Många dåligt utformade databaser används, och om du arbetar med en, fixar du designen innan du försöker göra något annat. Kom ihåg - bra design är en förutsättning för dataintegritet.
Prova frågor i en testdatabas
Skapa en testdatabas som har samma struktur som din produktionsdatabas, men med bara några representativa rader i tabellerna. Välj data så att du på förhand vet vad resultaten av dina frågor borde vara.
Kör varje testfråga på testdata och se om resultaten matchar dina förväntningar. Om de inte gör det kan du behöva omformulera dina frågor. Om en fråga är korrekt formulerad men du slutar med dåliga resultat, kan du behöva omstrukturera din databas.
Bygg flera uppsättningar testdata och var noga med att inkludera udda fall, till exempel tomma tabeller och extrema värden vid gränsen för tillåtna gränser. Försök att tänka på osannolika scenarier och kontrollera efter korrekt beteende när de inträffar. Under kontrollen av osannolika fall kan du få insikt i problem som är mer benägna att hända.
Dubbelkontrollera frågor som inkluderar anslutningar
Anslutningar är notoriskt kontraintuitiva. Om din fråga innehåller en, se till att den gör vad du förväntar dig innan du lägger till WHERE-klausuler eller andra komplicerade faktorer.
Trefaldiga sökfrågor med underselektioner
Frågor med undernycklar tar data från ett bord och, baserat på vad som hämtas, ta några data från en annan tabell. Därför kan sådana frågor, per definition, vara svåra att få rätt. Se till att de data som den inre SELECT hämtar är den data som den yttre SELECT behöver för att producera önskat resultat. Om du har två eller flera nivåer av delselektioner, måste du vara ännu mer försiktig.
Sammanfatta data med GROUP BY
Säg att du har ett bord (NATIONAL) som innehåller namnet (spelare), laget (Team) och antalet hemlöpningar (Homers) av varje basebollspelare i National League. Du kan hämta teamhemmersumman för alla lag med en fråga så här:
SELECT Team, SUM (Homers) FRÅN NATIONAL GROUP BY Team;
Denna fråga listar varje lag, följt av det totala antalet hemlöpningar som träffats av alla lagets spelare.
Titta på GROUP BY-klausulbegränsningar
Antag att du vill ha en lista med National League power hitters. Tänk på följande fråga:
VÄLJ Spelare, Team, Homers FRÅN NATIONELLA VÄRARE Homers> = 20 GROUP BY Team;
I de flesta implementeringar returnerar den här frågan ett fel. Vanligtvis kan endast kolumner som används för gruppering eller kolumner som används i en uppsättning funktion visas i väljlistan. Men om du vill se dessa data fungerar följande formulering:
SELECT spelare, lag, homers FRÅN NATIONELLA VÄRARE Homers> = 20 GRUPP AV LAG, SPELARE, HEMERS;
Eftersom alla kolumner du vill visa visas i GROUP BY-klausulen, lyckas frågan och ger de önskade resultaten. Denna formulering sorterar den resulterande listan först av Team, sedan av Player, och slutligen av Homers.
Använd parentes med OCH, ELLER, och INTE
Ibland när du mixar OCH och ELLER, bearbetar SQL inte uttrycket i den ordning du förväntar dig. Använd parenteser i komplexa uttryck för att se till att du får de önskade resultaten. Att skriva några extra tangenttryckningar är ett litet pris för att betala för bättre resultat.
Parentes hjälper också till att se till att NORD-sökordet tillämpas på termen eller uttrycket som du vill att den ska tillämpas på.
Privata behörigheter för kontroll
Många använder inte säkerhetsfunktionerna i deras DBMS. De vill inte störa dem eftersom de tycker att missbruk och missbruk av data är saker som bara händer med andra människor. Vänta inte att bli bränd. Upprätta och behålla säkerhet för alla databaser som har något värde.
Säkerhetskopiera dina databaser
Understatement alert: Data är svårt att hämta efter en strömkälla, en brand, en jordbävning eller någon annan katastrof förstör din hårddisk. (Kom ihåg, ibland dör datorer utan bra skäl.) Gör frekventa säkerhetskopior och sätt backupmedia på ett säkert ställe.
Vad som utgör en säker plats beror på hur kritisk din data är. Det kan vara ett brandsäkert kassaskåp i samma rum som din dator. Det kan vara i en annan byggnad. Det kan vara i molnet. Det kan vara i en konkret bunker under ett berg som har härdat för att motstå en kärnvapenattack. Bestäm vilken säkerhetsnivå som är lämplig för dina data.
Hantera felförhållanden elegant Oavsett om du gör ad hoc-frågor från en arbetsstation eller inbäddade sökfrågor i en applikation, returnerar SQL ibland ett felmeddelande istället för de önskade resultaten. På en arbetsstation kan du bestämma vad du ska göra nästa, baserat på meddelandet som returnerats.
I en ansökan är situationen annorlunda. Applikationsanvändaren vet förmodligen inte vilken åtgärd som är lämplig. Lägg omfattande felhantering i dina applikationer för att täcka alla tänkbara fel som kan uppstå. Att skapa felhanteringskod kräver stor insats, men det är bättre än att användaren stirrar quizically på en frusen skärm.