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 [DETTA ÄR CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Så programmerare använder databaser som ett verktyg för att lagra och organisera 5 00:00:11,620 --> 00:00:13,620 våra beständiga data i tabeller. 6 00:00:13,620 --> 00:00:18,960 Detta innebär att din data lagras på icke-flyktiga medianer som en hårddisk, 7 00:00:18,960 --> 00:00:22,940 och även när datorn är avstängd, är informationen fortfarande intakt. 8 00:00:22,940 --> 00:00:29,530 Och som programmerare, våra program använder databaser för scenarier som att lagra 9 00:00:29,530 --> 00:00:32,890 användarinformation från webbformulär, leta upp lager, 10 00:00:32,890 --> 00:00:36,210 eller uppdatera information om vilka webbplatser visas. 11 00:00:37,150 --> 00:00:40,070 Men hur samverkar vi faktiskt med vår databas, 12 00:00:40,070 --> 00:00:43,150 eller vad använder vi för att läsa, lagra, ta bort, 13 00:00:43,150 --> 00:00:46,070 och uppdatera våra data inom dessa databastabeller? 14 00:00:47,280 --> 00:00:49,700 Jo, svaret är att vi använder en speciell typ av databas språk 15 00:00:49,700 --> 00:00:53,400 som interagerar direkt med våra databastabeller. 16 00:00:53,400 --> 00:00:56,740 Det namn är 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 vad jag kallar SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nu [SE-Quel] eller SQL, är inte ett programmeringsspråk, 20 00:01:05,100 --> 00:01:08,580 men i stället är det ett språk som ger en standarduppsättning av kommandon 21 00:01:08,580 --> 00:01:13,520 att hämta och manipulera data från en mängd olika databashanteringssystem. 22 00:01:13,520 --> 00:01:17,630 För att CS50, går vi över fyra grundläggande kommandon: 23 00:01:17,630 --> 00:01:21,210 välja, infoga, uppdatera och ta bort. 24 00:01:21,210 --> 00:01:26,230 Dessutom kommer vi att använda ett gränssnitt databas webb kallas phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 som installeras på maskinen för att skriva vår SQL-satser. 26 00:01:30,830 --> 00:01:33,050 Så, för att hjälpa dig att komma ihåg dessa kommandon, 27 00:01:33,050 --> 00:01:37,080 Jag har fört en del muffins i ett skåp för att hjälpa till med våra scenarier. 28 00:01:39,650 --> 00:01:42,210 Säg att du har en cupcake databas, 29 00:01:42,210 --> 00:01:44,490 där du lagrar all information om din muffins. 30 00:01:44,490 --> 00:01:48,220 Nu kan databaser innehåller många tabeller 31 00:01:48,220 --> 00:01:50,950 och tabellerna själva kan innehålla många kolumner. 32 00:01:50,950 --> 00:01:57,020 Inuti vår cupcake databas har vi en tabell som heter cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Denna tabell kommer att användas för att lagra all information om muffins 34 00:02:00,500 --> 00:02:02,990 som är, ja, i ditt skåp. 35 00:02:02,990 --> 00:02:07,770 Kolumnerna som finns i din tabell representerar attributen för en cupcake. 36 00:02:07,770 --> 00:02:14,560 Till exempel cupcake_cupboard kolumner är 37 00:02:14,560 --> 00:02:15,920 Tårta ID, CakeType, CakeColor och CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Denna boolean-maskinskrivna kolumnen används för att bestämma om kakan är trevligt eller inte trevligt. 39 00:02:23,040 --> 00:02:26,560 Vi kommer att börja med att skriva en SELECT-sats. 40 00:02:26,560 --> 00:02:32,160 Select-satser används för att hämta data från en viss databastabell. 41 00:02:32,160 --> 00:02:34,890 I det här scenariot vill vi veta allt 42 00:02:34,890 --> 00:02:39,080 om alla muffins som finns i vår skåp. 43 00:02:39,080 --> 00:02:48,670 Syntaxen att göra detta är "Välj" Space Star, eller *, utrymme från rymden vårt bord, 44 00:02:48,670 --> 00:02:52,050 vilket är cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Låt oss gå vidare och genomföra det. 46 00:02:56,670 --> 00:03:00,140 >> Som vi kan se, dessa är alla muffins i vår skåp. 47 00:03:00,140 --> 00:03:05,110 Det är viktigt att notera att * eller asterisk är ett wild card tecken 48 00:03:05,110 --> 00:03:08,830 som betecknar insamling av alla kolumnerna i vissa tabell. 49 00:03:08,830 --> 00:03:13,650 Normalt kan vi få tillgång till en viss kolumn eller kolumner 50 00:03:13,650 --> 00:03:16,950 genom att ersätta * med det verkliga kolumnnamn. 51 00:03:16,950 --> 00:03:21,220 Om vi ​​vill ha flera kolumner, men inte alla, kan vi uppnå detta 52 00:03:21,220 --> 00:03:25,620 genom att skriva kolumnnamn avgränsar varje kolumn med ett komma. 53 00:03:25,620 --> 00:03:28,620 Till exempel, låt oss bara hämta CakeId och CakeType i cupcake_cupboard tabellen. 54 00:03:28,620 --> 00:03:38,370 Syntaxen att göra detta är: SELECT utrymme CakeID komma 55 00:03:38,370 --> 00:03:44,370 CakeType utrymme från vårt bord, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Låt oss gå vidare och utföra detta. 57 00:03:49,340 --> 00:03:52,670 Och här har vi nu bara har två kolumner vi specificerade 58 00:03:52,670 --> 00:03:54,670 för varje cupcake i vår skåp. 59 00:03:54,670 --> 00:03:57,710 Vi kan också förfina våra frågeresultatet genom att ange 60 00:03:57,710 --> 00:04:00,910 "Var" klausul strax efter tabellnamnet. 61 00:04:02,000 --> 00:04:05,410 Till exempel, det verkar vara en cupcake i vår skåp 62 00:04:05,410 --> 00:04:08,660 det är väl inte så snygg. 63 00:04:08,660 --> 00:04:13,950 Låt oss räkna ut alla muffins i vår skåp som är, ja, inte så snygg 64 00:04:13,950 --> 00:04:16,110 med "Var" klausul. 65 00:04:16,110 --> 00:04:26,390 Syntaxen att göra detta är: SELECT utrymme * utrymme från rymden cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 utrymme där utrymmet vår villkorlig kolumnen, i detta fall CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 och det booleska värdet false. 68 00:04:36,900 --> 00:04:42,750 Det är viktigt att notera att om du använder strängar måste du bifoga den i enkla citattecken. 69 00:04:42,750 --> 00:04:49,620 Detta gäller för alla strängar i SQL, eller i SQL-databas fråga, variant tecken 70 00:04:49,620 --> 00:04:51,620 kallas Varchar datatyp. 71 00:04:51,620 --> 00:04:57,660 I det här fallet använder vi Sant eller falskt, vilket är ett booleskt värde och inte en sträng. 72 00:04:59,120 --> 00:05:00,660 Låt oss gå vidare och utföra detta kommando. 73 00:05:00,660 --> 00:05:05,340 >> Hör och häpna, är det så att vi har 1 choklad 74 00:05:05,340 --> 00:05:07,920 inte så trevligt cupcake i vår skåp. 75 00:05:09,620 --> 00:05:11,460 Därefter kommer vi att skriva en INSERT-sats. 76 00:05:11,460 --> 00:05:15,560 Infoga uttalanden används för att infoga eller lägga 77 00:05:15,560 --> 00:05:17,770 ytterligare rader med data i din databastabell. 78 00:05:17,770 --> 00:05:23,160 Återbesök vårt scenario, låt oss anta att vi bara har gjort en helt ny cupcake. 79 00:05:25,910 --> 00:05:30,080 Eftersom vi är mycket organiserade cupcake eaters, vi kommer att behöva sätta in denna nya cupcake 80 00:05:30,080 --> 00:05:32,330 i vår cupcake_cupboard bord. 81 00:05:32,330 --> 00:05:40,690 Syntaxen att göra detta är: Infoga utrymme i rymden vårt bord, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, mellanslag (, 83 00:05:46,830 --> 00:05:51,060 och här har vi anger kolumner namn, avgränsade med ett kommatecken, 84 00:05:51,060 --> 00:05:59,790 CakeType komma CakeColor komma CakeIsNice) utrymme. 85 00:05:59,790 --> 00:06:06,540 Därefter skriver vi ordet VALUES utrymmet (och här 86 00:06:06,540 --> 00:06:12,170 Vi anger värdet för varje kolumn respektive också avgränsas med ett kommatecken. 87 00:06:12,170 --> 00:06:17,830 Enda anbud, eftersom de alla är Varchar värden vi omger dem i enkla citattecken, 88 00:06:17,830 --> 00:06:26,780 JORDNÖTSSMÖR "komma" ljusbrunt "komma True. 89 00:06:26,780 --> 00:06:30,480 Nu är det viktigt att ge varje rad ett unikt nummer för att identifiera sig själv. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing en kolonn ger detta som 91 00:06:33,660 --> 00:06:37,410  "Inga två samma ID någonsin kan existera i denna tabell." 92 00:06:37,410 --> 00:06:39,480 Låt oss gå vidare och köra. 93 00:06:39,480 --> 00:06:45,380 Sådär, alla organiserade. 94 00:06:49,720 --> 00:06:52,100 >> Nästa SQL-sats som vi kommer att skriva är en uppdatering uttalande. 95 00:06:52,100 --> 00:06:55,650 Uppdateringen uttalande kan användas för att modifiera data i en kolumn 96 00:06:55,650 --> 00:06:58,440 för varje existerande raden i din databastabell. 97 00:06:59,670 --> 00:07:03,420 Tidigare i vårt scenario, med SELECT, identifierade vi en cupcake 98 00:07:03,420 --> 00:07:08,300 inom vår cupcake_cupboard bord vars CakeIsNice värde var falskt. 99 00:07:08,300 --> 00:07:12,050 Låt oss anta att medan vår jordnötssmör cupcake var i ugnen, 100 00:07:12,050 --> 00:07:15,790 Vi gjorde vår inte så trevligt cupcake mycket trevligt. 101 00:07:18,020 --> 00:07:22,240 Är så ovanligt organiserat, vill vi att våra muffin för att återspegla detta värde 102 00:07:22,240 --> 00:07:24,240 i vår cupcake_cupboard bord. 103 00:07:24,240 --> 00:07:28,710 Därför, låt oss uppdatera vår choklad cupcake i databasen för att återspegla detta. 104 00:07:28,710 --> 00:07:39,720 Syntaxen är: UPDATE utrymme vårt bord, cupcake_cupboard, utrymmet utrymme 105 00:07:39,720 --> 00:07:44,240 den kolumn som vi vill ändra, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Så här vi sätter vår nya värdet True utrymme. 107 00:07:49,210 --> 00:07:54,290 Nu, eftersom vi inte vill uppdatera alla rader med detta värde, 108 00:07:54,290 --> 00:07:57,400 Vi vill ge en "Var" klausul som sätter fingret oss 109 00:07:57,400 --> 00:07:59,830 den exakta rad som vi vill ändra. 110 00:07:59,830 --> 00:08:03,690 I det här fallet vet vi att det bara finns en muffin 111 00:08:03,690 --> 00:08:06,670 som har ett CakeIsNice värdet false. 112 00:08:06,670 --> 00:08:11,030 Dessutom kommer vi också se till att vi uppdaterar rätt rad 113 00:08:11,030 --> 00:08:13,030 genom att använda "Och" klausul. 114 00:08:14,340 --> 00:08:17,270 Vi använder "Och" klausul att förfina vår fråga ytterligare. 115 00:08:17,270 --> 00:08:20,380 I det här fallet, eftersom vi vet att cupcake är choklad, 116 00:08:20,380 --> 00:08:23,160 Vi kommer att använda denna CakeType kolumn. 117 00:08:23,160 --> 00:08:31,500 Om utrymmet vår villkorlig kolumn utrymme CakeIsNice utrymme = False, 118 00:08:31,500 --> 00:08:38,330 och utrymme CakeType = "choklad". 119 00:08:38,330 --> 00:08:41,880 Så sätter ihop allt, säger uppdateringen uttalande 120 00:08:41,880 --> 00:08:44,670 hitta alla cupcakes i vår cupcake skåp, 121 00:08:44,670 --> 00:08:50,520 och om det finns en cupcake vars kolumn CakeIsNice innehåller värdet False 122 00:08:50,520 --> 00:08:54,130 och CakeType innehåller värdet choklad, 123 00:08:54,130 --> 00:08:58,240 Vi vill uppdatera specifika rader CakeIsNice värde till True. 124 00:08:58,240 --> 00:09:01,140 Så, låt oss gå vidare och köra uttalande. 125 00:09:03,860 --> 00:09:05,860 Och nu är vi organiserade. 126 00:09:06,650 --> 00:09:09,220 >> Allt detta prat om cupcakes har gjort mig lite hungrig. 127 00:09:09,220 --> 00:09:11,360 Jag tror att jag ska hjälpa mig till en. 128 00:09:11,360 --> 00:09:17,670 Men om jag verkligen äta denna cupcake skulle jag åtminstone också ta bort dess existens 129 00:09:17,670 --> 00:09:19,670  från vår cupcake_cupboard bord. 130 00:09:20,650 --> 00:09:22,590 För att göra detta, kommer vi att använda "Radera" uttalande. 131 00:09:22,590 --> 00:09:27,400 "Radera" uttalande kan användas för att ta bort alla eller några rader från tabellen. 132 00:09:27,400 --> 00:09:29,920 Om du vill ta bort vissa specifika raden i tabellen, 133 00:09:29,920 --> 00:09:34,360 då måste du ge en "Var" klausul, vilket anger en kolumn 134 00:09:34,360 --> 00:09:37,660 som bör vara unika för den rad som du vill ta bort. 135 00:09:37,660 --> 00:09:47,370 Detta är syntaxen: DELETE utrymme från rymden vårt bord, cupcake_cupboard, rymden. 136 00:09:47,370 --> 00:09:51,760 Nu, vid denna punkt, när du är så här långt i din delete 137 00:09:51,760 --> 00:09:54,240 du vill vara mycket försiktig. 138 00:09:54,240 --> 00:09:59,970 Till exempel, om jag vill köra den här frågan som är utan att några "Där" klausul 139 00:09:59,970 --> 00:10:04,500 Jag skulle förlora alla data i denna cupcake_cupboard tabellen, 140 00:10:04,500 --> 00:10:09,590 men eftersom jag redan vet att min kaka ID är unikt, jag använder 141 00:10:09,590 --> 00:10:12,410 Red Velvet tårta ID för min "Där" klausul. 142 00:10:14,550 --> 00:10:20,670 Om utrymmet vår kolumn CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Eftersom detta är ett heltal värde finns det inget behov att omge det med enkla citationstecken. 144 00:10:25,010 --> 00:10:27,020 Så, låt oss köra uttalande. 145 00:10:33,560 --> 00:10:35,990 Nåväl, nu när vi har torkas existensen av denna cupcake 146 00:10:35,990 --> 00:10:40,360 från vår cupcake_cupboard bord har vi bara en sak kvar: 147 00:10:41,680 --> 00:10:43,680 Gör det försvinna. 148 00:10:43,680 --> 00:10:46,990 Jag är Christopher Bartholomew. Detta är CS50.