1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER Bartholomew] [Harvard University] 3 00:00:04,000 --> 00:00:06,000 [Dette er CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Så, programmerere bruke databaser som et verktøy for å lagre og organisere 5 00:00:11,620 --> 00:00:13,620 våre vedvarende data i tabeller. 6 00:00:13,620 --> 00:00:18,960 Dette betyr at dataene er lagret på ikke-flyktige median for eksempel en harddisk, 7 00:00:18,960 --> 00:00:22,940 og selv når datamaskinen er slått av, er dataene fortsatt intakt. 8 00:00:22,940 --> 00:00:29,530 Og, som programmerere, våre programmer utnytte databaser for scenarier som lagring 9 00:00:29,530 --> 00:00:32,890 bruker informasjon fra webskjemaer, ser opp inventar, 10 00:00:32,890 --> 00:00:36,210 eller oppdatering av informasjon om hvilke nettsteder vise. 11 00:00:37,150 --> 00:00:40,070 Men hvordan gjør vi faktisk bruker vår database, 12 00:00:40,070 --> 00:00:43,150 eller hva bruker vi å lese, lagre, slette, 13 00:00:43,150 --> 00:00:46,070 og oppdatere våre data innenfor disse databasetabeller? 14 00:00:47,280 --> 00:00:49,700 Vel, svaret er at vi bruker en spesiell type database språk 15 00:00:49,700 --> 00:00:53,400 som samhandler direkte med våre databasetabeller. 16 00:00:53,400 --> 00:00:56,740 Det navnet er Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 eller hva jeg refererer til som SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nå [Se-Quel], eller SQL, er ikke et programmeringsspråk, 20 00:01:05,100 --> 00:01:08,580 men i stedet er det et språk som gir et standard sett med kommandoer 21 00:01:08,580 --> 00:01:13,520 å hente og manipulere data fra en rekke database management system. 22 00:01:13,520 --> 00:01:17,630 For hensikten med CS50, vil vi gå over fire grunnleggende kommandoer: 23 00:01:17,630 --> 00:01:21,210 velge, sette inn, oppdatere og slette. 24 00:01:21,210 --> 00:01:26,230 Videre vil vi benytte en database web-grensesnitt kalt phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 som er installert på maskinen for å skrive våre SQL-setninger. 26 00:01:30,830 --> 00:01:33,050 Så, for å hjelpe deg å huske disse kommandoene, 27 00:01:33,050 --> 00:01:37,080 Jeg har tatt noen cupcakes i et skap for å hjelpe til med våre scenarier. 28 00:01:39,650 --> 00:01:42,210 Si du har en cupcake database, 29 00:01:42,210 --> 00:01:44,490 der du lagrer all informasjon om din cupcakes. 30 00:01:44,490 --> 00:01:48,220 Nå kan databaser inneholde mange tabeller 31 00:01:48,220 --> 00:01:50,950 og selve tabellene kan inneholde mange kolonner. 32 00:01:50,950 --> 00:01:57,020 Inne vår cupcake database, har vi en tabell som kalles cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Denne tabellen vil bli brukt til å lagre all informasjon om cupcakes 34 00:02:00,500 --> 00:02:02,990 som er, vel, i skapet. 35 00:02:02,990 --> 00:02:07,770 Kolonnene som er inne tabellen representerer attributtene for en cupcake. 36 00:02:07,770 --> 00:02:14,560 For eksempel, cupcake_cupboard spalter er 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor, og CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Dette boolsk-skrev kolonnen brukes til å avgjøre om kaken er fin eller ikke hyggelig. 39 00:02:23,040 --> 00:02:26,560 Vi kommer til å starte med å skrive en utvalgt uttalelse. 40 00:02:26,560 --> 00:02:32,160 Velg uttalelser brukes til å hente data fra en bestemt database tabell. 41 00:02:32,160 --> 00:02:34,890 I dette scenariet, ønsker vi å vite alt 42 00:02:34,890 --> 00:02:39,080 om alle cupcakes som finnes i skapet. 43 00:02:39,080 --> 00:02:48,670 Syntaksen som skal gjøre dette på er "Select" Space Star, eller *, plass fra verdensrommet vårt bord, 44 00:02:48,670 --> 00:02:52,050 som er cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 La oss gå videre og utføre det. 46 00:02:56,670 --> 00:03:00,140 >> Som vi kan se, disse er alle cupcakes i skapet. 47 00:03:00,140 --> 00:03:05,110 Det er viktig å merke seg at *, eller en stjerne, er et wild card karakter 48 00:03:05,110 --> 00:03:08,830 som betegner samlingen av alle kolonnene i noen tabell. 49 00:03:08,830 --> 00:03:13,650 Normalt kan vi få tilgang til en bestemt kolonne eller kolonner 50 00:03:13,650 --> 00:03:16,950 ved å erstatte * med selve kolonnenavnet. 51 00:03:16,950 --> 00:03:21,220 Hvis vi ønsker flere kolonner, men ikke alle, kan vi oppnå dette 52 00:03:21,220 --> 00:03:25,620 ved å skrive kolonnenavnene avgrensende hver kolonne med komma. 53 00:03:25,620 --> 00:03:28,620 For eksempel, la oss bare hente CakeId og CakeType i cupcake_cupboard tabellen. 54 00:03:28,620 --> 00:03:38,370 Syntaksen som skal gjøre dette på er: SELECT plass CakeID komma 55 00:03:38,370 --> 00:03:44,370 CakeType plass fra vårt bord, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 La oss gå videre og utføre dette. 57 00:03:49,340 --> 00:03:52,670 Og her har vi nå bare har to kolonner vi spesifisert 58 00:03:52,670 --> 00:03:54,670 for hver cupcake i skapet. 59 00:03:54,670 --> 00:03:57,710 Vi kan også avgrense våre spørringsresultatene ved å angi 60 00:03:57,710 --> 00:04:00,910 "Hvor"-klausulen like etter tabellen navn. 61 00:04:02,000 --> 00:04:05,410 For eksempel, det synes å være en cupcake i skapet 62 00:04:05,410 --> 00:04:08,660 som er, vel, ikke så hyggelig ser. 63 00:04:08,660 --> 00:04:13,950 La oss finne ut alle cupcakes i skapet som er, vel, ikke så hyggelig ser 64 00:04:13,950 --> 00:04:16,110 bruke "Hvor" klausul. 65 00:04:16,110 --> 00:04:26,390 Syntaksen som skal gjøre dette på er: SELECT plass * plass fra verdensrommet cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 plass der plass vårt betinget kolonne, i dette tilfellet CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 og boolean verdi av False. 68 00:04:36,900 --> 00:04:42,750 Det er viktig å merke seg at hvis du bruker strenger, må du legge den i enkle anførselstegn. 69 00:04:42,750 --> 00:04:49,620 Dette er sant for alle strenger i SQL, eller, i SQL database vilkår, variant tegn 70 00:04:49,620 --> 00:04:51,620 kjent som VARCHAR datatype. 71 00:04:51,620 --> 00:04:57,660 I dette tilfellet bruker vi Sant eller usant, som er en boolsk verdi og ikke en streng. 72 00:04:59,120 --> 00:05:00,660 La oss gå videre og utføre denne kommandoen. 73 00:05:00,660 --> 00:05:05,340 >> Lo og se, er det slik at vi har en sjokolade 74 00:05:05,340 --> 00:05:07,920 ikke så fint cupcake i skapet. 75 00:05:09,620 --> 00:05:11,460 Deretter skal vi skrive et innstikk uttalelse. 76 00:05:11,460 --> 00:05:15,560 Sett uttalelser blir brukt til å sette eller legge 77 00:05:15,560 --> 00:05:17,770 flere rader med data i databasen tabellen. 78 00:05:17,770 --> 00:05:23,160 Revisiting vårt scenario, la oss anta at vi har nettopp laget en helt ny cupcake. 79 00:05:25,910 --> 00:05:30,080 Siden vi er veldig organisert cupcake eaters, vi nødt til å sette inn denne nye cupcake 80 00:05:30,080 --> 00:05:32,330 i vår cupcake_cupboard tabellen. 81 00:05:32,330 --> 00:05:40,690 Syntaksen som skal gjøre dette på er dette: Sett inn mellomrom i verdensrommet vårt bord, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, plass (, 83 00:05:46,830 --> 00:05:51,060 og her er vi angi kolonner navn, avgrenset av et komma, 84 00:05:51,060 --> 00:05:59,790 CakeType komma CakeColor komma CakeIsNice) plass. 85 00:05:59,790 --> 00:06:06,540 Etter dette skriver vi ordet VALUES plass (og her 86 00:06:06,540 --> 00:06:12,170 Vi angi verdien for hver kolonne henholdsvis også avgrenset med komma. 87 00:06:12,170 --> 00:06:17,830 Enkelt sitat, fordi de er alle VARCHAR verdier vi vil omgi dem i enkle anførselstegn, 88 00:06:17,830 --> 00:06:26,780 Peanøttsmør 'komma' LIGHT BROWN 'komma True. 89 00:06:26,780 --> 00:06:30,480 Nå er det viktig å gi hver rad et unikt nummer for å identifisere seg selv. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing en kolonne gir dette som 91 00:06:33,660 --> 00:06:37,410  "Ingen det samme IDer kan noensinne eksistere i denne tabellen." 92 00:06:37,410 --> 00:06:39,480 La oss gå videre og utføre. 93 00:06:39,480 --> 00:06:45,380 Der vi går, alle organisert. 94 00:06:49,720 --> 00:06:52,100 >> Den neste SQL-setning som vi vil skrive er en oppdatering uttalelse. 95 00:06:52,100 --> 00:06:55,650 Oppdateringen setningen kan brukes for å modifisere data i en kolonne 96 00:06:55,650 --> 00:06:58,440 for eksisterende rad i databasen tabellen. 97 00:06:59,670 --> 00:07:03,420 Tidligere i vårt scenario, med en utvalgt uttalelse, identifiserte vi en cupcake 98 00:07:03,420 --> 00:07:08,300 innenfor vår cupcake_cupboard bord som CakeIsNice verdi var falsk. 99 00:07:08,300 --> 00:07:12,050 La oss anta at mens vår peanøttsmør cupcake var i ovnen, 100 00:07:12,050 --> 00:07:15,790 Vi har gjort vårt ikke-så-hyggelig cupcake veldig hyggelig. 101 00:07:18,020 --> 00:07:22,240 Blir så eksepsjonelt organisert, ønsker vi at vår cupcake å reflektere denne verdien 102 00:07:22,240 --> 00:07:24,240 i vår cupcake_cupboard tabellen. 103 00:07:24,240 --> 00:07:28,710 Derfor, la oss oppdatere vår sjokolade cupcake i databasen for å reflektere dette. 104 00:07:28,710 --> 00:07:39,720 Syntaksen er: UPDATE plass vårt bord, cupcake_cupboard, plass SET plass 105 00:07:39,720 --> 00:07:44,240 kolonnen som vi ønsker å endre, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Så her vi setter vår nye verdien SANN plass. 107 00:07:49,210 --> 00:07:54,290 Nå, fordi vi ikke ønsker å oppdatere alle rader med denne verdien, 108 00:07:54,290 --> 00:07:57,400 vi ønsker å gi en "Hvor" klausul som vil finne oss 109 00:07:57,400 --> 00:07:59,830 den eksakte rad at vi ønsker å endre. 110 00:07:59,830 --> 00:08:03,690 I dette tilfellet, vet vi at det er bare én cupcake 111 00:08:03,690 --> 00:08:06,670 som har en CakeIsNice verdi False. 112 00:08:06,670 --> 00:08:11,030 Videre vil vi også sikre at vi oppdaterer riktig rad 113 00:08:11,030 --> 00:08:13,030 ved å bruke "Og"-klausulen. 114 00:08:14,340 --> 00:08:17,270 Vi bruker "Og"-klausulen å forbedre vår søket ytterligere. 115 00:08:17,270 --> 00:08:20,380 I dette tilfellet, fordi vi vet at cupcake er sjokolade, 116 00:08:20,380 --> 00:08:23,160 Vi vil bruke denne CakeType kolonnen. 117 00:08:23,160 --> 00:08:31,500 HVOR vår plass betinget kolonne plass CakeIsNice plass = False, 118 00:08:31,500 --> 00:08:38,330 og plass CakeType = 'Chocolate. 119 00:08:38,330 --> 00:08:41,880 Så å sette det hele sammen, sier denne oppdateringen uttalelse 120 00:08:41,880 --> 00:08:44,670 finne alle cupcakes i vår cupcake skap, 121 00:08:44,670 --> 00:08:50,520 og hvis det er en cupcake som kolonne CakeIsNice inneholder verdien False 122 00:08:50,520 --> 00:08:54,130 og CakeType inneholder verdien CHOCOLATE, 123 00:08:54,130 --> 00:08:58,240 Vi vil oppdatere den spesifikke rader CakeIsNice verdi til True. 124 00:08:58,240 --> 00:09:01,140 Så, la oss gå videre og utføre setningen. 125 00:09:03,860 --> 00:09:05,860 Og nå er vi organisert. 126 00:09:06,650 --> 00:09:09,220 >> Alt dette snakket om cupcakes har gjort meg litt sulten. 127 00:09:09,220 --> 00:09:11,360 Jeg tror jeg skal hjelpe meg selv til en. 128 00:09:11,360 --> 00:09:17,670 Men hvis jeg spiser faktisk denne cupcake, bør jeg i det minste også fjerne dens eksistens 129 00:09:17,670 --> 00:09:19,670  fra vår cupcake_cupboard bord. 130 00:09:20,650 --> 00:09:22,590 For å gjøre dette, vil vi bruke "Slett" statement. 131 00:09:22,590 --> 00:09:27,400 "Delete"-utsagn kan brukes til å fjerne alle eller noen rader fra tabellen. 132 00:09:27,400 --> 00:09:29,920 Hvis du ønsker å fjerne noen bestemt rad fra tabellen, 133 00:09:29,920 --> 00:09:34,360 må du gi en "Hvor" klausulen, og dermed spesifisere en kolonne 134 00:09:34,360 --> 00:09:37,660 som bør være unikt i raden du ønsker å fjerne. 135 00:09:37,660 --> 00:09:47,370 Dette er syntaksen: SLETT plass fra vår plass bord, cupcake_cupboard, plass. 136 00:09:47,370 --> 00:09:51,760 Nå, på dette punktet, når du er så langt i din delete uttalelse 137 00:09:51,760 --> 00:09:54,240 Vil du være svært forsiktig. 138 00:09:54,240 --> 00:09:59,970 For eksempel, hvis jeg ønsker å kjøre denne spørringen er som uten å gi noen "Hvor" klausul 139 00:09:59,970 --> 00:10:04,500 Jeg ville miste alle data i denne cupcake_cupboard tabellen, 140 00:10:04,500 --> 00:10:09,590 men fordi jeg allerede vet at mine kake-IDer er unike, vil jeg bruke 141 00:10:09,590 --> 00:10:12,410 Red Velvet kake ID for min "Hvor" klausul. 142 00:10:14,550 --> 00:10:20,670 HVOR vår plass kolonne, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Fordi dette er et helt tall verdi er det ikke behov for å omgi den i enkle anførselstegn. 144 00:10:25,010 --> 00:10:27,020 Så, la oss utføre setningen. 145 00:10:33,560 --> 00:10:35,990 Vel, nå som vi har tørket eksistensen av denne cupcake 146 00:10:35,990 --> 00:10:40,360 fra vår cupcake_cupboard bord, vi har bare én ting igjen: 147 00:10:41,680 --> 00:10:43,680 Gjøre det forsvinne. 148 00:10:43,680 --> 00:10:46,990 Jeg er Christopher Bartholomew. Dette er CS50.