[Powered by Google Translate] [SQL] [CHRISTOPHER Bartholomæos] [Harvard University] [DETTE ER CS50] [CS50 TV] Så programmører bruger databaser som et værktøj til at gemme og organisere vores vedholdende data i tabeller. Det betyder, at dine data er gemt på ikke-flygtige medianer såsom en harddisk, og selv når computeren er slukket, dataene er stadig intakt. Og som programmører, udnytte vores programmer databaser for scenarier såsom opbevaring brugeroplysninger fra webformularer, kigge op opgørelse, eller opdatering af oplysninger om, hvilke websteder vise. Men hvordan får vi faktisk interagerer med vores database, eller hvad kan vi bruge til at læse, gemme, slette, og opdatere vores data inden for disse databasetabeller? Tja, svaret er, at vi bruger en speciel type database sprog som interagerer direkte med vores database tabeller. Det navn er Structured Query Language, [Structured Query Language] eller hvad jeg kalder SQL. Nu [Se-quel] eller SQL, er ikke et programmeringssprog, men i stedet, det er et sprog, der giver et standard sæt af kommandoer at hente og manipulere data fra en lang række database management systemer. I forbindelse med CS50, vil vi gå over fire grundlæggende kommandoer: vælge, indsætte, opdatere og slette. Derudover vil vi benytte en database web interface kaldet phpMyAdmin, som er installeret på apparatet til at skrive vores SQL-sætninger. Så for at hjælpe dig at huske disse kommandoer, Jeg har bragt nogle cupcakes i et skab til at hjælpe med vores scenarier. Sige, at du har en cupcake database, hvor du gemmer alle oplysninger om dine cupcakes. Nu kan databaser indeholder mange tabeller og tabellerne selv kan indeholde mange kolonner. Inde vores cupcake database, har vi en tabel kaldet cupcake_cupboard. Denne tabel vil blive brugt til at gemme alle oplysninger om cupcakes der er godt i dit skab. De kolonner, der er inde i din tabel, viser attributterne for en cupcake. For eksempel er det cupcake_cupboard kolonner Kage ID, CakeType, CakeColor, og CakeIsNice. Denne boolean-typebestemmes kolonne anvendes til at afgøre, om kagen er rart eller ikke rart. Vi vil starte med at skrive en SELECT-sætning. Vælg udsagn bruges til at hente data fra en bestemt database tabel. I dette scenario vil vi vide alt om alle cupcakes der eksisterer i vores skab. Syntaksen at gøre dette er "Select" Space Star, eller *, plads fra rummet vores tabel, som er cupcake_cupboard. Lad os gå videre og gennemføre det. Som vi kan se, disse er alle cupcakes i vores skab. Det er vigtigt at bemærke, at *, eller en stjerne, er et wild card karakter der betegner indsamling af alle kolonnerne i nogle tabel. Normalt kan vi få adgang til en bestemt kolonne eller kolonner ved at erstatte * med det faktiske kolonnenavn. Hvis vi ønsker flere kolonner, men ikke alle, kan vi opnå dette ved at skrive kolonnenavnene afgrænser hver kolonne med et komma. For eksempel, lad os kun hente den CakeId og CakeType i cupcake_cupboard tabellen. Syntaksen at gøre dette er: SELECT plads CakeID komma CakeType plads fra vores bord, cupcake_cupboard. Lad os gå videre og udføre dette. Og her har vi nu kun har de to kolonner vi specificeret for hver cupcake i vores skab. Vi kan også forfine vores forespørgselsresultater ved at angive "Hvor" klausul lige efter tabelnavnet. For eksempel synes der at være en cupcake i vores skab det er, ja, ikke så nice leder. Lad os finde ud af alle de cupcakes i vores skab, der er, tja, ikke så nice leder bruge "Hvor" klausul. Syntaksen at gøre dette er: SELECT space * plads fra rummet cupcake_cupboard rum, hvor pladsen vores betinget kolonne, i dette tilfælde CakeIsNice =, og den booleske værdi False. Det er vigtigt at bemærke, at hvis du bruger strenge, skal du vedlægge det i enkelte anførselstegn. Dette gælder for alle strenge i SQL, eller, i SQL-database vilkår, variant tegn kendt som Varchar datatype. I dette tilfælde bruger vi Sandt eller falsk, hvilket er en boolesk værdi og ikke en streng. Lad os gå videre og udføre denne kommando. Lo og se, det er sådan, at vi har 1 chokolade ikke så rart cupcake i vores skab. Dernæst vil vi skrive et indstik erklæring. Indsæt udsagn bruges til at indsætte eller tilføje yderligere rækker af data i din database tabel. Revurdering vores scenarie, lad os antage, at vi lige har lavet en helt ny cupcake. Da vi er meget organiseret cupcake spise, vil vi nødt til at indsætte denne nye cupcake i vores cupcake_cupboard tabel. Syntaksen til at gøre dette, er dette: Indsæt mellemrum i rummet vores tabel, cupcake_cupboard, space (, og her er vi angiver kolonnerne navne, afgrænset af et komma, CakeType komma CakeColor komma CakeIsNice) plads. Efter dette, skriver vi ordet VÆRDIER plads (og her vi angive værdien for hver kolonne henholdsvis også afgrænset af et komma. Single citat, fordi de er alle Varchar værdier vi vil omgive dem i anførselstegn, JORDNØDDESMØR 'komma' Light Brown 'komma True. Nu er det vigtigt at give hver række et unikt nummer til at identificere sig selv. Autoincrementing en kolonne giver dette som  "Ikke to af de samme ID'er nogensinde kan eksistere i denne tabel." Lad os gå videre og udføre. Der vi går, al organiseret. Den næste SQL-sætning, at vi vil skrive er en opdatering erklæring. Opdateringen erklæring kan bruges til at ændre data i en kolonne for enhver eksisterende række i din database tabel. Tidligere i vores scenarie, ved hjælp af en SELECT-sætning, vi identificeret en cupcake inden for vores cupcake_cupboard bord, hvis CakeIsNice værdi var False. Lad os antage, at mens vores jordnøddesmør cupcake var i ovnen, Vi gjorde vores ikke-så-flot cupcake meget rart. Bliver så usædvanligt organiseret, vi ønsker, at vores cupcake at afspejle denne værdi i vores cupcake_cupboard tabel. Derfor, lad os opdatere vores chokolade cupcake i databasen for at afspejle dette. Syntaksen er: UPDATE plads vores bord, cupcake_cupboard, space SET plads søjlen, som vi ønsker at ændre, CakeIsNice =. Så her er vi placere vores nye værdien Sand plads. Nu, da vi ikke ønsker at opdatere alle rækker med denne værdi, vi ønsker at give en "Hvor" klausul, der vil lokalisere os til den nøjagtige række, vi ønsker at ændre. I dette tilfælde, ved vi, at der kun er en cupcake der har en CakeIsNice værdi False. Desuden vil vi også sikre, at vi er ved at opdatere den rigtige række ved at bruge "Og"-klausul. Vi bruger "Og"-klausul til at forfine vores forespørgsel videre. I dette tilfælde har vi da ved, at cupcake er chokolade, Vi vil bruge denne CakeType kolonne. Hvor pladsen vores betinget spalteplads CakeIsNice space = False, og rum CakeType = "chokolade". Så sætte det hele sammen, denne opdatering erklæring siger finde alle de cupcakes i vores cupcake skab, og hvis der er en cupcake hvis spalte CakeIsNice indeholder værdien False og CakeType indeholder værdien CHOCOLATE, vi ønsker at opdatere de specifikke rækker CakeIsNice værdi til True. Så lad os gå videre og udføre redegørelsen. Og nu er vi organiseret. Al den snak om cupcakes har gjort mig en smule sulten. Jeg tror jeg skal hjælpe mig til én. Men hvis jeg rent faktisk spiser denne cupcake, vil jeg i det mindste også fjerne dens eksistens  fra vores cupcake_cupboard tabel. For at gøre dette, vil vi bruge "Slet" erklæring. "Slet" sætning kan bruges til at fjerne alle eller nogle rækker fra tabellen. Hvis du ønsker at fjerne nogle specifikke række fra tabellen, så skal du give en "Hvor" klausul, således specificere en kolonne der bør være unikke for den række, du vil fjerne. Dette er syntaksen: DELETE plads fra rummet vores bord, cupcake_cupboard, plads. Nu, på dette punkt, når du er så langt i din delete erklæring du ønsker at være meget forsigtig. For eksempel, som om jeg vil køre denne forespørgsel er uden at give nogle "Hvor" klausul Jeg ville miste alle data i denne cupcake_cupboard tabel, men fordi jeg ved allerede, at min kage ID'er er unikke, vil jeg bruge Red Velvet kage ID for min "Hvor" klausul. Hvor pladsen vores kolonne, CakeID = 1. Da dette er en heltalsværdi er der ingen grund til at omgive det i enkelte anførselstegn. Så lad os udføre redegørelsen. Nå, nu hvor vi har udslettet eksistensen af ​​denne cupcake fra vores cupcake_cupboard tabel har vi kun én ting tilbage: Gør det forsvinde. Jeg er Christopher Bartholomew. Det er CS50.