Innholdsfortegnelse:
- Verifiser databasestrukturen
- Prøv søk på en testdatabase
- Dobbeltsjekk spørringer som inkluderer tilmeldinger
- Spørreundersøkelser med underselekter
- Oppsummer data med GROUP BY
- Se gruppebegrensningsbegrensninger
- Bruk parenteser med AND, OR og NOT
- Privilegier for kontrollopphenting
- Sikkerhetskopier databasene dine
- Behandle feilvilkår grasiøst
Video: SQL Tutorial 12 Advanced Subqueries returning multiple columns 2024
SQL SELECT-setningen er ditt verktøy for å grave opp skjult informasjon i en database. Selv om du har en klar ide om hva du vil hente, kan det være en utfordring å oversette den ideen til SQL. Hvis formuleringen din bare er litt av, kan du ende opp med feil resultat. For å redusere sjansene dine for å bli villedet, bruk følgende ti prinsipper.
Verifiser databasestrukturen
Hvis du henter data fra en database, og resultatene dine ikke virker rimelige, sjekk databasedesignet. Mange dårlige designdatabaser er i bruk, og hvis du jobber med en, fikser du designet før du prøver noe annet. Husk - god design er en forutsetning for dataintegritet.
Prøv søk på en testdatabase
Opprett en testdatabase som har samme struktur som produksjonsdatabasen, men med bare noen få representative rader i tabellene. Velg dataene slik at du vet på forhånd hva resultatene av dine spørsmål skal være.
Kjør hver testforespørsel på testdataene og se om resultatene stemmer overens med dine forventninger. Hvis de ikke gjør det, må du kanskje reformulere dine spørsmål. Hvis en forespørsel er riktig formulert, men du ender opp med dårlige resultater, må du kanskje omstrukturere databasen.
Bygg flere sett med testdata, og sørg for å inkludere merkelige tilfeller, som tomme tabeller og ekstreme verdier i den høyeste grensen for tillatte områder. Prøv å tenke på usannsynlige scenarier og sjekk for riktig oppførsel når de oppstår. I løpet av å sjekke for usannsynlige tilfeller kan du få innsikt i problemer som er mer sannsynlig å skje.
Dobbeltsjekk spørringer som inkluderer tilmeldinger
Forbindelser er notorisk counterintuitive. Hvis spørringen inneholder en, må du sørge for at det gjør hva du forventer før du legger til WHERE klausuler eller andre kompliserende faktorer.
Spørreundersøkelser med underselekter
Spørringer med undervelger tar data fra ett bord og, basert på det som hentes, ta noen data fra en annen tabell. Derfor, etter definisjon, kan slike spørsmål virkelig være vanskelig å få riktig. Pass på at dataene som den indre SELECT henter, er dataene som den ytre SELECT trenger for å produsere ønsket resultat. Hvis du har to eller flere nivåer av undervalg, må du være enda mer forsiktig.
Oppsummer data med GROUP BY
Si at du har et bord (NATIONAL) som inneholder navnet (Spiller), lag (Lag) og antall hjemmebane treffer (Homers) av hver baseballspiller i National League. Du kan hente team homer totalt for alle lag med en spørring som dette:
SELECT Team, SUM (Homers) FRA NATIONAL GROUP BY Team;
Denne spørringen viser hvert lag, etterfulgt av det totale antall hjemmekinoer som er rammet av alle lagets spillere.
Se gruppebegrensningsbegrensninger
Anta at du vil ha en liste over National League power hitters. Tenk på følgende spørring:
SELECT spiller, lag, homers fra nasjonalt hvor homers> = 20 gruppe etter lag;
I de fleste implementeringer returnerer dette spørsmålet en feil. Vanligvis kan bare kolonner som brukes for gruppering eller kolonner som brukes i en angitt funksjon, vises i valglisten. Men hvis du vil se disse dataene, virker følgende formulering:
SELECT spiller, lag, homers fra nasjonalt hvor homers> = 20 gruppe av lag, spiller, homers;
Fordi alle kolonnene du vil vise, vises i GROUP BY-klausulen, lykkes spørringen og leverer de ønskede resultatene. Denne formuleringen sorterer den resulterende listen først av Team, deretter av Player, og til slutt av Homers.
Bruk parenteser med AND, OR og NOT
Noen ganger når du blander AND og OR, behandler ikke SQL uttrykket i den rekkefølgen du forventer. Bruk parenteser i komplekse uttrykk for å sikre at du får de ønskede resultatene. Å skrive noen ekstra tastetrykk er en liten pris å betale for bedre resultater.
Parenteser bidrar også til å sikre at IKKE-søkeordet blir brukt på uttrykket eller uttrykket som du vil at det skal søke på.
Privilegier for kontrollopphenting
Mange bruker ikke sikkerhetsfunksjonene som er tilgjengelige i deres DBMS. De vil ikke bry seg med dem fordi de tror misbruk og misbruk av data er ting som bare skjer med andre mennesker. Ikke vent å bli brent. Opprett og opprettholder sikkerhet for alle databaser som har noen verdi.
Sikkerhetskopier databasene dine
Understatementvarsling: Data er vanskelig å hente etter at en strømkilde, en brann, et jordskjelv eller en annen katastrofe ødelegger harddisken din. (Husk at noen ganger dør datamaskiner uten grund.) Gjør hyppige sikkerhetskopier og legg backupmediet på et trygt sted.
Det som er et trygt sted, avhenger av hvor kritisk dataene dine er. Det kan være en brannskikkelig safe i samme rom som datamaskinen din. Det kan være i en annen bygning. Det kan være i skyen. Det kan være i en konkret bunker under et fjell som har blitt herdet for å motstå et atomangrep. Bestem hvilket sikkerhetsnivå som passer for dine data.
Behandle feilvilkår grasiøst
Enten du lager ad hoc-spørringer fra en arbeidsstasjon eller innebygd søk i et program, returnerer SQL-en og annen gang en feilmelding i stedet for de ønskede resultatene. På en arbeidsstasjon kan du bestemme hva du skal gjøre neste, basert på meldingen som returneres.
I en applikasjon er situasjonen annerledes. Applikasjonsbrukeren vet sannsynligvis ikke hvilken handling som passer. Sett omfattende feilbehandling i dine applikasjoner for å dekke alle tenkelige feil som kan oppstå. Å lage feilhåndteringskode krever mye arbeid, men det er bedre enn å ha brukeren stirret quizzically på en frossen skjerm.