1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER BARTHOLOMEOS] [HARVARD UNIVERSITY] 3 00:00:04,000 --> 00:00:06,000 [DIT IS CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Dus, programmeurs maken gebruik van databases als een instrument om op te slaan en te organiseren 5 00:00:11,620 --> 00:00:13,620 onze persistente data in een tabel plaatsen. 6 00:00:13,620 --> 00:00:18,960 Dit betekent dat uw gegevens worden opgeslagen op een niet-vluchtig medianen, zoals een harde schijf, 7 00:00:18,960 --> 00:00:22,940 en zelfs wanneer de computer uit is, zijn de gegevens nog steeds intact. 8 00:00:22,940 --> 00:00:29,530 En, zoals programmeurs, onze programma's maken gebruik van databases voor scenario's zoals het opslaan van 9 00:00:29,530 --> 00:00:32,890 informatie voor de gebruiker van webformulieren, het opzoeken van inventaris, 10 00:00:32,890 --> 00:00:36,210 of het actualiseren van informatie over welke websites weer te geven. 11 00:00:37,150 --> 00:00:40,070 Maar hoe kunnen we eigenlijk omgaan met onze database, 12 00:00:40,070 --> 00:00:43,150 of wat gebruiken we lezen, opslaan, verwijderen, 13 00:00:43,150 --> 00:00:46,070 en werken onze gegevens binnen deze database tabellen? 14 00:00:47,280 --> 00:00:49,700 Nou, het antwoord is dat we een speciaal type database taal te gebruiken 15 00:00:49,700 --> 00:00:53,400 die samenwerkt rechtstreeks met onze database tabellen. 16 00:00:53,400 --> 00:00:56,740 De naam is Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 of wat ik verwijzen naar als SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nu, [Se-quel], of SQL, is geen programmeertaal, 20 00:01:05,100 --> 00:01:08,580 maar in plaats daarvan, het is een taal die een standaard set van opdrachten bevat 21 00:01:08,580 --> 00:01:13,520 ophalen en gegevens manipuleren van verschillende databasebeheersystemen. 22 00:01:13,520 --> 00:01:17,630 Voor de toepassing van CS50, gaan we over vier basiscommando's: 23 00:01:17,630 --> 00:01:21,210 selecteren, invoegen, bijwerken en verwijderen. 24 00:01:21,210 --> 00:01:26,230 Verder zullen we gebruik maken van een database web-interface genaamd phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 die geïnstalleerd zijn op het toestel om onze SQL-statements te schrijven. 26 00:01:30,830 --> 00:01:33,050 Dus, om u te helpen herinneren deze commando's, 27 00:01:33,050 --> 00:01:37,080 Ik heb bracht wat cupcakes in een kast om te helpen met onze scenario's. 28 00:01:39,650 --> 00:01:42,210 Stel dat je een cupcake-database, 29 00:01:42,210 --> 00:01:44,490 waar slaat u alle informatie over uw cupcakes. 30 00:01:44,490 --> 00:01:48,220 Nu kunnen deze databases bevatten veel tafels 31 00:01:48,220 --> 00:01:50,950 en de tafels zelf kan veel kolommen. 32 00:01:50,950 --> 00:01:57,020 Binnen de database onze cupcake's, hebben we een tabel met de naam cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Deze tabel zal worden gebruikt om alle informatie over cupcakes op te slaan 34 00:02:00,500 --> 00:02:02,990 die, nou ja, in je kast. 35 00:02:02,990 --> 00:02:07,770 De kolommen die in uw tabel zijn de kenmerken van een cupcake. 36 00:02:07,770 --> 00:02:14,560 Bijvoorbeeld, de cupcake_cupboard de kolommen 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor, en CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Deze boolean-getypte kolom wordt gebruikt om te bepalen of de taart is leuk of niet leuk. 39 00:02:23,040 --> 00:02:26,560 We gaan beginnen met het schrijven van een select statement. 40 00:02:26,560 --> 00:02:32,160 SELECT-instructies worden gebruikt om gegevens van een bepaalde database tabel te halen. 41 00:02:32,160 --> 00:02:34,890 In dit scenario, we willen alles weten 42 00:02:34,890 --> 00:02:39,080 over alle cupcakes die bestaan ​​in onze kast. 43 00:02:39,080 --> 00:02:48,670 De syntax om dit te doen is "Select" space star, of *, ruimte vanuit de ruimte onze tafel, 44 00:02:48,670 --> 00:02:52,050 die cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Laten we verder gaan en uit te voeren dat. 46 00:02:56,670 --> 00:03:00,140 >> Zoals we kunnen zien, dit zijn alle cupcakes in onze kast. 47 00:03:00,140 --> 00:03:05,110 Het is belangrijk op te merken dat *, of sterretje, is een jokerteken 48 00:03:05,110 --> 00:03:08,830 dat geeft het verzamelen van alle kolommen van sommige tafel. 49 00:03:08,830 --> 00:03:13,650 Normaal gesproken kunnen we toegang krijgen tot een specifieke kolom of kolommen 50 00:03:13,650 --> 00:03:16,950 door het vervangen van * met de werkelijke kolomnaam. 51 00:03:16,950 --> 00:03:21,220 Als we willen meerdere kolommen, maar niet alle, kunnen we dit bereiken 52 00:03:21,220 --> 00:03:25,620 door het schrijven van het kolomnamen afbakening elke kolom door een komma. 53 00:03:25,620 --> 00:03:28,620 Bijvoorbeeld, laten we alleen de CakeId en CakeType in de cupcake_cupboard tabel op te halen. 54 00:03:28,620 --> 00:03:38,370 De syntax om dit te doen is: SELECT ruimte CakeID komma 55 00:03:38,370 --> 00:03:44,370 CakeType ruimte van onze tafel, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Laten we verder gaan en uit te voeren dit. 57 00:03:49,340 --> 00:03:52,670 En hier hebben we nu alleen nog de twee kolommen we gespecificeerd 58 00:03:52,670 --> 00:03:54,670 voor elke cupcake in onze kast. 59 00:03:54,670 --> 00:03:57,710 We kunnen ook verfijnen onze resultaten van de query door het specificeren van 60 00:03:57,710 --> 00:04:00,910 de "Waar"-clausule net na de tabelnaam. 61 00:04:02,000 --> 00:04:05,410 Zo lijkt er een cupcake in onze kast 62 00:04:05,410 --> 00:04:08,660 dat wil zeggen, nou ja, niet zo leuk uit. 63 00:04:08,660 --> 00:04:13,950 Laten we erachter te komen al de cupcakes in onze kast die, nou ja, niet zo leuk uit 64 00:04:13,950 --> 00:04:16,110 met behulp van de "Waar"-clausule. 65 00:04:16,110 --> 00:04:26,390 De syntax om dit te doen is: SELECT ruimte * Ruimte van Ruimte cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 ruimte waar de ruimte onze voorwaardelijke kolom, in dit geval CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 en de booleaanse waarde false. 68 00:04:36,900 --> 00:04:42,750 Het is belangrijk op te merken dat als u gebruik maakt strings, moet u deze tussen enkele aanhalingstekens. 69 00:04:42,750 --> 00:04:49,620 Dit geldt voor alle strings in SQL, of, in SQL-database termen, variant tekens 70 00:04:49,620 --> 00:04:51,620 bekend als Varchar datatype. 71 00:04:51,620 --> 00:04:57,660 In dit geval gebruiken we Waar of niet waar, dat is een logische waarde en niet een string. 72 00:04:59,120 --> 00:05:00,660 Laten we verder gaan en voer je dit commando. 73 00:05:00,660 --> 00:05:05,340 >> Lo en zie, het is zo dat we een chocolade hebben 74 00:05:05,340 --> 00:05:07,920 niet zo leuk cupcake in onze kast. 75 00:05:09,620 --> 00:05:11,460 Vervolgens gaan we een insert statement te schrijven. 76 00:05:11,460 --> 00:05:15,560 Insert statements worden gebruikt om in te voegen of toe te voegen 77 00:05:15,560 --> 00:05:17,770 extra rijen met gegevens in uw database tabel. 78 00:05:17,770 --> 00:05:23,160 Revisiting ons scenario, laten we aannemen dat we net een nieuwe cupcake gemaakt. 79 00:05:25,910 --> 00:05:30,080 Aangezien we zeer georganiseerd cupcake eters, we gaan te hebben om deze nieuwe cupcake te voegen 80 00:05:30,080 --> 00:05:32,330 in onze cupcake_cupboard tafel. 81 00:05:32,330 --> 00:05:40,690 De syntax om dit te doen is het volgende: Spatie invoegen in de ruimte onze tafel, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, ruimte (, 83 00:05:46,830 --> 00:05:51,060 en hier specificeren we de kolommen namen, gescheiden door een komma, 84 00:05:51,060 --> 00:05:59,790 CakeType komma CakeColor komma CakeIsNice) ruimte. 85 00:05:59,790 --> 00:06:06,540 Naar aanleiding van dit schrijven we het woord VALUES ruimte (en hier 86 00:06:06,540 --> 00:06:12,170 we de waarde voor elke kolom respectievelijk ook gescheiden door een komma. 87 00:06:12,170 --> 00:06:17,830 Single citaat, want ze zijn allemaal Varchar waarden die we zullen hen omringen in enkele aanhalingstekens, 88 00:06:17,830 --> 00:06:26,780 PINDAKAAS 'komma' LICHT BRUIN 'komma True. 89 00:06:26,780 --> 00:06:30,480 Nu, is het belangrijk om elke rij geven een uniek nummer om zich te identificeren. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing een kolom geeft dit als 91 00:06:33,660 --> 00:06:37,410  "Geen twee dezelfde ID ooit kan bestaan ​​in deze tabel." 92 00:06:37,410 --> 00:06:39,480 Laten we verder gaan en uit te voeren. 93 00:06:39,480 --> 00:06:45,380 Daar gaan we dan, allemaal georganiseerd. 94 00:06:49,720 --> 00:06:52,100 >> De volgende SQL-instructie die we schrijven is een update statement. 95 00:06:52,100 --> 00:06:55,650 De update statement kan worden gebruikt om gegevens te wijzigen in een kolom 96 00:06:55,650 --> 00:06:58,440 voor elke bestaande rij in de databasetabel. 97 00:06:59,670 --> 00:07:03,420 Eerder in ons scenario, met behulp van een select-statement, identificeerden we een cupcake 98 00:07:03,420 --> 00:07:08,300 binnen tafel onze cupcake_cupboard wiens CakeIsNice waarde was False. 99 00:07:08,300 --> 00:07:12,050 Laten we aannemen dat terwijl onze pindakaas cupcake was in de oven, 100 00:07:12,050 --> 00:07:15,790 hebben we onze niet-zo-leuke cupcake erg leuk. 101 00:07:18,020 --> 00:07:22,240 Omdat het zo uitzonderlijk georganiseerd, we willen dat onze cupcake deze waarde weer te geven 102 00:07:22,240 --> 00:07:24,240 in onze cupcake_cupboard tafel. 103 00:07:24,240 --> 00:07:28,710 Laten we daarom werken onze chocolade cupcake in de database terug te vinden. 104 00:07:28,710 --> 00:07:39,720 De syntaxis is: UPDATE ruimte onze tafel, cupcake_cupboard, ruimte SET ruimte 105 00:07:39,720 --> 00:07:44,240 de kolom die we willen veranderen, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Dan hier plaatsen we onze nieuwe waarde True ruimte. 107 00:07:49,210 --> 00:07:54,290 Nu, omdat we niet willen alle rijen met deze waarde bij te werken, 108 00:07:54,290 --> 00:07:57,400 willen we een "Waar" clausule die zal aanwijzen ons 109 00:07:57,400 --> 00:07:59,830 om de exacte rij die we willen wijzigen. 110 00:07:59,830 --> 00:08:03,690 In dit geval weten we dat er slechts een cupcake 111 00:08:03,690 --> 00:08:06,670 dat heeft een CakeIsNice waarde van False. 112 00:08:06,670 --> 00:08:11,030 Verder zullen we er ook voor zorgen dat we de juiste rij bijwerken 113 00:08:11,030 --> 00:08:13,030 met behulp van de "En"-clausule. 114 00:08:14,340 --> 00:08:17,270 We gebruiken de "En"-clausule op onze vraag verder te verfijnen. 115 00:08:17,270 --> 00:08:20,380 In dit geval, omdat we weten dat de cupcake is chocolade, 116 00:08:20,380 --> 00:08:23,160 we zullen deze CakeType kolom. 117 00:08:23,160 --> 00:08:31,500 Waar de ruimte onze voorwaardelijke kolomruimte CakeIsNice ruimte = False, 118 00:08:31,500 --> 00:08:38,330 en ruimte CakeType = 'CHOCOLADE.' 119 00:08:38,330 --> 00:08:41,880 Dus, dat dit alles met elkaar, deze update verklaring zegt 120 00:08:41,880 --> 00:08:44,670 vind alle cupcakes in onze cupcake kast, 121 00:08:44,670 --> 00:08:50,520 en als er een cupcake waarvan kolom CakeIsNice bevat de waarde False 122 00:08:50,520 --> 00:08:54,130 en CakeType bevat de waarde CHOCOLADE, 123 00:08:54,130 --> 00:08:58,240 willen we de specifieke rijen CakeIsNice waarde bij te werken op True. 124 00:08:58,240 --> 00:09:01,140 Dus, laten we verder gaan en uitvoeren van de verklaring. 125 00:09:03,860 --> 00:09:05,860 En nu zijn we georganiseerd. 126 00:09:06,650 --> 00:09:09,220 >> Al dat gepraat van cupcakes heeft me een beetje honger. 127 00:09:09,220 --> 00:09:11,360 Ik denk dat ik mezelf te helpen tot een. 128 00:09:11,360 --> 00:09:17,670 Maar als ik echt eet deze cupcake, zou ik in ieder geval ook te verwijderen zijn bestaan 129 00:09:17,670 --> 00:09:19,670  van onze cupcake_cupboard tafel. 130 00:09:20,650 --> 00:09:22,590 Om dit te doen, zullen we gebruik maken van de "Delete" verklaring. 131 00:09:22,590 --> 00:09:27,400 De "Delete"-instructie kan worden gebruikt om alle of sommige rijen uit de tabel te verwijderen. 132 00:09:27,400 --> 00:09:29,920 Als u een aantal specifieke rij uit de tabel, 133 00:09:29,920 --> 00:09:34,360 dan moet je zorgen voor een "Waar"-clausule, waardoor het opgeven van een kolom 134 00:09:34,360 --> 00:09:37,660 dat moet uniek zijn voor de rij die u wilt verwijderen. 135 00:09:37,660 --> 00:09:47,370 Dit is de syntax: DELETE Ruimte van Ruimte onze tafel, cupcake_cupboard, ruimte. 136 00:09:47,370 --> 00:09:51,760 Nu, op dit moment, wanneer je bent zo ver in je delete verklaring 137 00:09:51,760 --> 00:09:54,240 je wilt zijn heel voorzichtig. 138 00:09:54,240 --> 00:09:59,970 Bijvoorbeeld, als ik wil dit query uit te voeren zoals, zonder dat enige "Waar"-clausule 139 00:09:59,970 --> 00:10:04,500 Ik zou verliezen alle gegevens in dit cupcake_cupboard tabel, 140 00:10:04,500 --> 00:10:09,590 maar omdat ik nu al weet dat mijn taart-id's uniek zijn, zal ik gebruik maken van 141 00:10:09,590 --> 00:10:12,410 de Red Velvet taart ID voor mijn "Waar"-clausule. 142 00:10:14,550 --> 00:10:20,670 Waar de ruimte onze kolom CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Omdat dit een geheel getal hoeft te omringen enkele aanhalingstekens. 144 00:10:25,010 --> 00:10:27,020 Dus, laten we voeren de verklaring. 145 00:10:33,560 --> 00:10:35,990 Nou, nu we hebben afgeveegd het bestaan ​​van deze cupcake 146 00:10:35,990 --> 00:10:40,360 van onze cupcake_cupboard tafel, we hebben maar een ding over: 147 00:10:41,680 --> 00:10:43,680 Laten verdwijnen. 148 00:10:43,680 --> 00:10:46,990 Ik ben Christopher Bartholomeus. Dit is CS50.