[Powered by Google Translate] [SQL] [CHRISTOPHER Bartholomew] [Harvard University] [DETTA ÄR CS50] [CS50 TV] Så programmerare använder databaser som ett verktyg för att lagra och organisera våra beständiga data i tabeller. Detta innebär att din data lagras på icke-flyktiga medianer som en hårddisk, och även när datorn är avstängd, är informationen fortfarande intakt. Och som programmerare, våra program använder databaser för scenarier som att lagra användarinformation från webbformulär, leta upp lager, eller uppdatera information om vilka webbplatser visas. Men hur samverkar vi faktiskt med vår databas, eller vad använder vi för att läsa, lagra, ta bort, och uppdatera våra data inom dessa databastabeller? Jo, svaret är att vi använder en speciell typ av databas språk som interagerar direkt med våra databastabeller. Det namn är Structured Query Language, [Structured Query Language] eller vad jag kallar SQL. Nu [SE-Quel] eller SQL, är inte ett programmeringsspråk, men i stället är det ett språk som ger en standarduppsättning av kommandon att hämta och manipulera data från en mängd olika databashanteringssystem. För att CS50, går vi över fyra grundläggande kommandon: välja, infoga, uppdatera och ta bort. Dessutom kommer vi att använda ett gränssnitt databas webb kallas phpMyAdmin, som installeras på maskinen för att skriva vår SQL-satser. Så, för att hjälpa dig att komma ihåg dessa kommandon, Jag har fört en del muffins i ett skåp för att hjälpa till med våra scenarier. Säg att du har en cupcake databas, där du lagrar all information om din muffins. Nu kan databaser innehåller många tabeller och tabellerna själva kan innehålla många kolumner. Inuti vår cupcake databas har vi en tabell som heter cupcake_cupboard. Denna tabell kommer att användas för att lagra all information om muffins som är, ja, i ditt skåp. Kolumnerna som finns i din tabell representerar attributen för en cupcake. Till exempel cupcake_cupboard kolumner är Tårta ID, CakeType, CakeColor och CakeIsNice. Denna boolean-maskinskrivna kolumnen används för att bestämma om kakan är trevligt eller inte trevligt. Vi kommer att börja med att skriva en SELECT-sats. Select-satser används för att hämta data från en viss databastabell. I det här scenariot vill vi veta allt om alla muffins som finns i vår skåp. Syntaxen att göra detta är "Välj" Space Star, eller *, utrymme från rymden vårt bord, vilket är cupcake_cupboard. Låt oss gå vidare och genomföra det. Som vi kan se, dessa är alla muffins i vår skåp. Det är viktigt att notera att * eller asterisk är ett wild card tecken som betecknar insamling av alla kolumnerna i vissa tabell. Normalt kan vi få tillgång till en viss kolumn eller kolumner genom att ersätta * med det verkliga kolumnnamn. Om vi ​​vill ha flera kolumner, men inte alla, kan vi uppnå detta genom att skriva kolumnnamn avgränsar varje kolumn med ett komma. Till exempel, låt oss bara hämta CakeId och CakeType i cupcake_cupboard tabellen. Syntaxen att göra detta är: SELECT utrymme CakeID komma CakeType utrymme från vårt bord, cupcake_cupboard. Låt oss gå vidare och utföra detta. Och här har vi nu bara har två kolumner vi specificerade för varje cupcake i vår skåp. Vi kan också förfina våra frågeresultatet genom att ange "Var" klausul strax efter tabellnamnet. Till exempel, det verkar vara en cupcake i vår skåp det är väl inte så snygg. Låt oss räkna ut alla muffins i vår skåp som är, ja, inte så snygg med "Var" klausul. Syntaxen att göra detta är: SELECT utrymme * utrymme från rymden cupcake_cupboard utrymme där utrymmet vår villkorlig kolumnen, i detta fall CakeIsNice =, och det booleska värdet false. Det är viktigt att notera att om du använder strängar måste du bifoga den i enkla citattecken. Detta gäller för alla strängar i SQL, eller i SQL-databas fråga, variant tecken kallas Varchar datatyp. I det här fallet använder vi Sant eller falskt, vilket är ett booleskt värde och inte en sträng. Låt oss gå vidare och utföra detta kommando. Hör och häpna, är det så att vi har 1 choklad inte så trevligt cupcake i vår skåp. Därefter kommer vi att skriva en INSERT-sats. Infoga uttalanden används för att infoga eller lägga ytterligare rader med data i din databastabell. Återbesök vårt scenario, låt oss anta att vi bara har gjort en helt ny cupcake. Eftersom vi är mycket organiserade cupcake eaters, vi kommer att behöva sätta in denna nya cupcake i vår cupcake_cupboard bord. Syntaxen att göra detta är: Infoga utrymme i rymden vårt bord, cupcake_cupboard, mellanslag (, och här har vi anger kolumner namn, avgränsade med ett kommatecken, CakeType komma CakeColor komma CakeIsNice) utrymme. Därefter skriver vi ordet VALUES utrymmet (och här Vi anger värdet för varje kolumn respektive också avgränsas med ett kommatecken. Enda anbud, eftersom de alla är Varchar värden vi omger dem i enkla citattecken, JORDNÖTSSMÖR "komma" ljusbrunt "komma True. Nu är det viktigt att ge varje rad ett unikt nummer för att identifiera sig själv. Autoincrementing en kolonn ger detta som  "Inga två samma ID någonsin kan existera i denna tabell." Låt oss gå vidare och köra. Sådär, alla organiserade. Nästa SQL-sats som vi kommer att skriva är en uppdatering uttalande. Uppdateringen uttalande kan användas för att modifiera data i en kolumn för varje existerande raden i din databastabell. Tidigare i vårt scenario, med SELECT, identifierade vi en cupcake inom vår cupcake_cupboard bord vars CakeIsNice värde var falskt. Låt oss anta att medan vår jordnötssmör cupcake var i ugnen, Vi gjorde vår inte så trevligt cupcake mycket trevligt. Är så ovanligt organiserat, vill vi att våra muffin för att återspegla detta värde i vår cupcake_cupboard bord. Därför, låt oss uppdatera vår choklad cupcake i databasen för att återspegla detta. Syntaxen är: UPDATE utrymme vårt bord, cupcake_cupboard, utrymmet utrymme den kolumn som vi vill ändra, CakeIsNice =. Så här vi sätter vår nya värdet True utrymme. Nu, eftersom vi inte vill uppdatera alla rader med detta värde, Vi vill ge en "Var" klausul som sätter fingret oss den exakta rad som vi vill ändra. I det här fallet vet vi att det bara finns en muffin som har ett CakeIsNice värdet false. Dessutom kommer vi också se till att vi uppdaterar rätt rad genom att använda "Och" klausul. Vi använder "Och" klausul att förfina vår fråga ytterligare. I det här fallet, eftersom vi vet att cupcake är choklad, Vi kommer att använda denna CakeType kolumn. Om utrymmet vår villkorlig kolumn utrymme CakeIsNice utrymme = False, och utrymme CakeType = "choklad". Så sätter ihop allt, säger uppdateringen uttalande hitta alla cupcakes i vår cupcake skåp, och om det finns en cupcake vars kolumn CakeIsNice innehåller värdet False och CakeType innehåller värdet choklad, Vi vill uppdatera specifika rader CakeIsNice värde till True. Så, låt oss gå vidare och köra uttalande. Och nu är vi organiserade. Allt detta prat om cupcakes har gjort mig lite hungrig. Jag tror att jag ska hjälpa mig till en. Men om jag verkligen äta denna cupcake skulle jag åtminstone också ta bort dess existens  från vår cupcake_cupboard bord. För att göra detta, kommer vi att använda "Radera" uttalande. "Radera" uttalande kan användas för att ta bort alla eller några rader från tabellen. Om du vill ta bort vissa specifika raden i tabellen, då måste du ge en "Var" klausul, vilket anger en kolumn som bör vara unika för den rad som du vill ta bort. Detta är syntaxen: DELETE utrymme från rymden vårt bord, cupcake_cupboard, rymden. Nu, vid denna punkt, när du är så här långt i din delete du vill vara mycket försiktig. Till exempel, om jag vill köra den här frågan som är utan att några "Där" klausul Jag skulle förlora alla data i denna cupcake_cupboard tabellen, men eftersom jag redan vet att min kaka ID är unikt, jag använder Red Velvet tårta ID för min "Där" klausul. Om utrymmet vår kolumn CakeID = 1. Eftersom detta är ett heltal värde finns det inget behov att omge det med enkla citationstecken. Så, låt oss köra uttalande. Nåväl, nu när vi har torkas existensen av denna cupcake från vår cupcake_cupboard bord har vi bara en sak kvar: Gör det försvinna. Jag är Christopher Bartholomew. Detta är CS50.