[Powered by Google Translate] [SQL] [CHRISTOPHER Bartholomew] [Harvard University] [Dette er CS50] [CS50 TV] Så, programmerere bruke databaser som et verktøy for å lagre og organisere våre vedvarende data i tabeller. Dette betyr at dataene er lagret på ikke-flyktige median for eksempel en harddisk, og selv når datamaskinen er slått av, er dataene fortsatt intakt. Og, som programmerere, våre programmer utnytte databaser for scenarier som lagring bruker informasjon fra webskjemaer, ser opp inventar, eller oppdatering av informasjon om hvilke nettsteder vise. Men hvordan gjør vi faktisk bruker vår database, eller hva bruker vi å lese, lagre, slette, og oppdatere våre data innenfor disse databasetabeller? Vel, svaret er at vi bruker en spesiell type database språk som samhandler direkte med våre databasetabeller. Det navnet er Structured Query Language, [Structured Query Language] eller hva jeg refererer til som SQL. Nå [Se-Quel], eller SQL, er ikke et programmeringsspråk, men i stedet er det et språk som gir et standard sett med kommandoer å hente og manipulere data fra en rekke database management system. For hensikten med CS50, vil vi gå over fire grunnleggende kommandoer: velge, sette inn, oppdatere og slette. Videre vil vi benytte en database web-grensesnitt kalt phpMyAdmin, som er installert på maskinen for å skrive våre SQL-setninger. Så, for å hjelpe deg å huske disse kommandoene, Jeg har tatt noen cupcakes i et skap for å hjelpe til med våre scenarier. Si du har en cupcake database, der du lagrer all informasjon om din cupcakes. Nå kan databaser inneholde mange tabeller og selve tabellene kan inneholde mange kolonner. Inne vår cupcake database, har vi en tabell som kalles cupcake_cupboard. Denne tabellen vil bli brukt til å lagre all informasjon om cupcakes som er, vel, i skapet. Kolonnene som er inne tabellen representerer attributtene for en cupcake. For eksempel, cupcake_cupboard spalter er Cake ID, CakeType, CakeColor, og CakeIsNice. Dette boolsk-skrev kolonnen brukes til å avgjøre om kaken er fin eller ikke hyggelig. Vi kommer til å starte med å skrive en utvalgt uttalelse. Velg uttalelser brukes til å hente data fra en bestemt database tabell. I dette scenariet, ønsker vi å vite alt om alle cupcakes som finnes i skapet. Syntaksen som skal gjøre dette på er "Select" Space Star, eller *, plass fra verdensrommet vårt bord, som er cupcake_cupboard. La oss gå videre og utføre det. Som vi kan se, disse er alle cupcakes i skapet. Det er viktig å merke seg at *, eller en stjerne, er et wild card karakter som betegner samlingen av alle kolonnene i noen tabell. Normalt kan vi få tilgang til en bestemt kolonne eller kolonner ved å erstatte * med selve kolonnenavnet. Hvis vi ønsker flere kolonner, men ikke alle, kan vi oppnå dette ved å skrive kolonnenavnene avgrensende hver kolonne med komma. For eksempel, la oss bare hente CakeId og CakeType i cupcake_cupboard tabellen. Syntaksen som skal gjøre dette på er: SELECT plass CakeID komma CakeType plass fra vårt bord, cupcake_cupboard. La oss gå videre og utføre dette. Og her har vi nå bare har to kolonner vi spesifisert for hver cupcake i skapet. Vi kan også avgrense våre spørringsresultatene ved å angi "Hvor"-klausulen like etter tabellen navn. For eksempel, det synes å være en cupcake i skapet som er, vel, ikke så hyggelig ser. La oss finne ut alle cupcakes i skapet som er, vel, ikke så hyggelig ser bruke "Hvor" klausul. Syntaksen som skal gjøre dette på er: SELECT plass * plass fra verdensrommet cupcake_cupboard plass der plass vårt betinget kolonne, i dette tilfellet CakeIsNice =, og boolean verdi av False. Det er viktig å merke seg at hvis du bruker strenger, må du legge den i enkle anførselstegn. Dette er sant for alle strenger i SQL, eller, i SQL database vilkår, variant tegn kjent som VARCHAR datatype. I dette tilfellet bruker vi Sant eller usant, som er en boolsk verdi og ikke en streng. La oss gå videre og utføre denne kommandoen. Lo og se, er det slik at vi har en sjokolade ikke så fint cupcake i skapet. Deretter skal vi skrive et innstikk uttalelse. Sett uttalelser blir brukt til å sette eller legge flere rader med data i databasen tabellen. Revisiting vårt scenario, la oss anta at vi har nettopp laget en helt ny cupcake. Siden vi er veldig organisert cupcake eaters, vi nødt til å sette inn denne nye cupcake i vår cupcake_cupboard tabellen. Syntaksen som skal gjøre dette på er dette: Sett inn mellomrom i verdensrommet vårt bord, cupcake_cupboard, plass (, og her er vi angi kolonner navn, avgrenset av et komma, CakeType komma CakeColor komma CakeIsNice) plass. Etter dette skriver vi ordet VALUES plass (og her Vi angi verdien for hver kolonne henholdsvis også avgrenset med komma. Enkelt sitat, fordi de er alle VARCHAR verdier vi vil omgi dem i enkle anførselstegn, Peanøttsmør 'komma' LIGHT BROWN 'komma True. Nå er det viktig å gi hver rad et unikt nummer for å identifisere seg selv. Autoincrementing en kolonne gir dette som  "Ingen det samme IDer kan noensinne eksistere i denne tabellen." La oss gå videre og utføre. Der vi går, alle organisert. Den neste SQL-setning som vi vil skrive er en oppdatering uttalelse. Oppdateringen setningen kan brukes for å modifisere data i en kolonne for eksisterende rad i databasen tabellen. Tidligere i vårt scenario, med en utvalgt uttalelse, identifiserte vi en cupcake innenfor vår cupcake_cupboard bord som CakeIsNice verdi var falsk. La oss anta at mens vår peanøttsmør cupcake var i ovnen, Vi har gjort vårt ikke-så-hyggelig cupcake veldig hyggelig. Blir så eksepsjonelt organisert, ønsker vi at vår cupcake å reflektere denne verdien i vår cupcake_cupboard tabellen. Derfor, la oss oppdatere vår sjokolade cupcake i databasen for å reflektere dette. Syntaksen er: UPDATE plass vårt bord, cupcake_cupboard, plass SET plass kolonnen som vi ønsker å endre, CakeIsNice =. Så her vi setter vår nye verdien SANN plass. Nå, fordi vi ikke ønsker å oppdatere alle rader med denne verdien, vi ønsker å gi en "Hvor" klausul som vil finne oss den eksakte rad at vi ønsker å endre. I dette tilfellet, vet vi at det er bare én cupcake som har en CakeIsNice verdi False. Videre vil vi også sikre at vi oppdaterer riktig rad ved å bruke "Og"-klausulen. Vi bruker "Og"-klausulen å forbedre vår søket ytterligere. I dette tilfellet, fordi vi vet at cupcake er sjokolade, Vi vil bruke denne CakeType kolonnen. HVOR vår plass betinget kolonne plass CakeIsNice plass = False, og plass CakeType = 'Chocolate. Så å sette det hele sammen, sier denne oppdateringen uttalelse finne alle cupcakes i vår cupcake skap, og hvis det er en cupcake som kolonne CakeIsNice inneholder verdien False og CakeType inneholder verdien CHOCOLATE, Vi vil oppdatere den spesifikke rader CakeIsNice verdi til True. Så, la oss gå videre og utføre setningen. Og nå er vi organisert. Alt dette snakket om cupcakes har gjort meg litt sulten. Jeg tror jeg skal hjelpe meg selv til en. Men hvis jeg spiser faktisk denne cupcake, bør jeg i det minste også fjerne dens eksistens  fra vår cupcake_cupboard bord. For å gjøre dette, vil vi bruke "Slett" statement. "Delete"-utsagn kan brukes til å fjerne alle eller noen rader fra tabellen. Hvis du ønsker å fjerne noen bestemt rad fra tabellen, må du gi en "Hvor" klausulen, og dermed spesifisere en kolonne som bør være unikt i raden du ønsker å fjerne. Dette er syntaksen: SLETT plass fra vår plass bord, cupcake_cupboard, plass. Nå, på dette punktet, når du er så langt i din delete uttalelse Vil du være svært forsiktig. For eksempel, hvis jeg ønsker å kjøre denne spørringen er som uten å gi noen "Hvor" klausul Jeg ville miste alle data i denne cupcake_cupboard tabellen, men fordi jeg allerede vet at mine kake-IDer er unike, vil jeg bruke Red Velvet kake ID for min "Hvor" klausul. HVOR vår plass kolonne, CakeID = 1. Fordi dette er et helt tall verdi er det ikke behov for å omgi den i enkle anførselstegn. Så, la oss utføre setningen. Vel, nå som vi har tørket eksistensen av denne cupcake fra vår cupcake_cupboard bord, vi har bare én ting igjen: Gjøre det forsvinne. Jeg er Christopher Bartholomew. Dette er CS50.