Indholdsfortegnelse:
- Kontroller databasestrukturen
- Prøv forespørgsler på en testdatabase
- Dobbeltkrydsspørgsmål, der omfatter tilmeldinger
- Spørgsmål med subselects
- Opsummer data med GROUP BY
- Se gruppebegrænsningsbegrænsninger
- Brug parenteser med AND, OR og NOT
- Privilegier til kontrol hentning
- Sikker backup af dine databaser
- Håndter fejlbetingelser yndefuldt
Video: Sofie Dossi Shocks School with Surprise 10 Minute Photo Challenge 2025
SQL SELECT-sætningen er dit værktøj til at grave op skjult information i en database. Selvom du har en klar ide om, hvad du vil hente, kan du oversætte denne ide til SQL. Hvis din formulering er bare lidt væk, kan du ende med de forkerte resultater. For at reducere dine chancer for at blive vildledt, brug følgende ti principper.
Kontroller databasestrukturen
Hvis du henter data fra en database, og dine resultater ikke virker rimelige, skal du kontrollere databasedesignet. Mange dårligt designede databaser er i brug, og hvis du arbejder sammen med en, skal du rette op på designet, inden du prøver et andet middel. Husk - godt design er en forudsætning for dataintegritet.
Prøv forespørgsler på en testdatabase
Opret en testdatabase, der har samme struktur som din produktionsdatabase, men med kun få repræsentative rækker i tabellerne. Vælg data, så du på forhånd kan vide, hvad resultaterne af dine forespørgsler skal være.
Kør hver test forespørgsel på testdataene og se om resultaterne stemmer overens med dine forventninger. Hvis de ikke gør det, kan du muligvis omformulere dine forespørgsler. Hvis en forespørgsel er korrekt formuleret, men du ender med dårlige resultater, skal du muligvis omstrukturere din database.
Bygg flere sæt testdata, og sørg for at inkludere ulige tilfælde, som tomme tabeller og ekstreme værdier i selve grænsen for tilladte intervaller. Prøv at tænke på usandsynlige scenarier og tjek for korrekt adfærd, når de opstår. I forbindelse med kontrol af usandsynlige tilfælde kan du få indsigt i problemer, der er mere tilbøjelige til at ske.
Dobbeltkrydsspørgsmål, der omfatter tilmeldinger
Tilmeldinger er notorisk modstridende. Hvis din forespørgsel indeholder en, skal du sørge for, at det gør hvad du forventer, før du tilføjer WHERE-klausuler eller andre komplicerende faktorer.
Spørgsmål med subselects
Forespørgsler med subselects tager data fra et bord og baseret på det, der hentes, skal du tage nogle data fra en anden tabel. Derfor kan sådanne forespørgsler pr. Definition virkelig være svært at få det rigtige. Sørg for, at de data, som den indre SELECT henter, er de data, som den ydre SELECT har brug for til at producere det ønskede resultat. Hvis du har to eller flere niveauer af subselects, skal du være endnu mere forsigtig.
Opsummer data med GROUP BY
Sig, at du har et bord (NATIONAL), der indeholder navnet (Player), holdet (Team) og antallet af hjemmeholdsslag (Homers) af hver baseballspiller i National League. Du kan hente team homer-summen for alle hold med en forespørgsel som denne:
SELECT Team, SUM (Homers) FRA NATIONAL GROUP BY Team;
Denne forespørgsel viser hvert hold, efterfulgt af det samlede antal hjemløb, der er ramt af alle holdets spillere.
Se gruppebegrænsningsbegrænsninger
Antag at du vil have en liste over National League power hitters. Overvej følgende forespørgsel:
SELECT Spiller, Team, Homers FRA NATIONALE HVOR Homers> = 20 GROUP BY Team;
I de fleste implementeringer returnerer denne forespørgsel en fejl. Generelt kan kun kolonner, der bruges til gruppering eller kolonner, der anvendes i en indstillet funktion, vises i valglisten. Men hvis du vil se disse data, fungerer følgende formulering:
SELECT Player, Team, Homers FRA NATIONALE HVOR Homers> = 20 GRUPP AF LAG, SPILLER, Homers;
Fordi alle de kolonner, du vil vise, vises i GROUP BY-klausulen, lykkes forespørgslen og leverer de ønskede resultater. Denne formulering sorterer først den resulterende liste af Team, derefter af Player, og endelig af Homers.
Brug parenteser med AND, OR og NOT
Sommetider, når du blander AND og OR, behandler SQL ikke udtrykket i den rækkefølge, du forventer. Brug paranteser i komplekse udtryk for at sikre, at du får de ønskede resultater. At skrive et par ekstra tastetryk er en lille pris til at betale for bedre resultater.
Parenteser hjælper også med at sikre, at NOT-søgeordet anvendes på det udtryk eller udtryk, som du vil have det til at søge.
Privilegier til kontrol hentning
Mange bruger ikke de sikkerhedsfunktioner, der er tilgængelige i deres DBMS. De ønsker ikke at forstyrre dem, fordi de tror misbrug og misbrug af data er ting, der kun sker for andre mennesker. Vent ikke på at blive brændt. Etablere og vedligeholde sikkerhed for alle databaser, der har nogen værdi.
Sikker backup af dine databaser
Understatement advarsel: Data er svært at hente efter en strømstigning, en brand, et jordskælv eller en anden katastrofe ødelægger din harddisk. (Husk, at nogle gange dør computere uden grund.) Gør hyppige sikkerhedskopier og læg backupmediet på et sikkert sted.
Hvad der udgør et sikkert sted, afhænger af, hvor kritisk dine data er. Det kan være en brandsikker i samme rum som din computer. Det kan være i en anden bygning. Det kan være i skyen. Det kan være i en konkret bunker under et bjerg, der er hærdet for at modstå et atomangreb. Bestem, hvilket sikkerhedsniveau der passer til dine data.
Håndter fejlbetingelser yndefuldt
Uanset om du laver ad hoc-forespørgsler fra en arbejdsstation eller indlejrer forespørgsler i et program, returnerer SQL-enheden en fejlmeddelelse i stedet for de ønskede resultater. På en arbejdsstation kan du bestemme, hvad du skal gøre næste, baseret på den returnerede besked.
I en ansøgning er situationen anderledes. Ansøgningsbrugeren ved nok ikke, hvilken handling der er hensigtsmæssigt. Sæt omfattende fejlhåndtering i dine applikationer for at dække enhver tænkelig fejl, der kan opstå. Oprettelse af fejlhåndteringskode kræver en stor indsats, men det er bedre end at have brugeren stirret quizzically på en frossen skærm.