1 00:00:00,000 --> 00:00:03,493 >> [Muziek] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: In onze video's op web ontwikkeling onderwerpen, 4 00:00:07,100 --> 00:00:10,560 we hebben het concept van de een database een paar keer, toch? 5 00:00:10,560 --> 00:00:12,700 Dus een database die u bent waarschijnlijk bekend met uit 6 00:00:12,700 --> 00:00:15,780 zeggen dat het gebruik van Microsoft Excel of Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Het is eigenlijk gewoon een georganiseerde set van tabellen, rijen en kolommen. 8 00:00:20,650 --> 00:00:23,140 >> En een databank waarin onze website winkels 9 00:00:23,140 --> 00:00:26,760 belangrijke informatie voor onze website goed te laten werken. 10 00:00:26,760 --> 00:00:30,150 Nogmaals, een heel bekend voorbeeld hier is het opslaan van gebruikersnamen en wachtwoorden 11 00:00:30,150 --> 00:00:32,824 in een database, zodat wanneer een gebruiker inlogt op onze website, 12 00:00:32,824 --> 00:00:36,690 de database kan worden opgevraagd om te zien indien die gebruiker in de database. 13 00:00:36,690 --> 00:00:39,260 En als ze zijn, controleren of hun wachtwoord correct is. 14 00:00:39,260 --> 00:00:43,420 En als hun wachtwoord correct is, dan kunnen we hen wat pagina te geven 15 00:00:43,420 --> 00:00:45,370 ze vraagt. 16 00:00:45,370 --> 00:00:48,590 >> Dus je bent waarschijnlijk, nogmaals, bekend met dit idee van Excel of Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 We hebben databases, tabellen, rijen en kolommen. 19 00:00:52,980 --> 00:00:56,450 En dat is echt een soort van de fundamentele set 20 00:00:56,450 --> 00:00:58,470 hiërarchische uitsplitsing hier. 21 00:00:58,470 --> 00:00:59,800 Dus hier is een Excel-spreadsheet. 22 00:00:59,800 --> 00:01:02,640 En als je ooit deze geopend of een ander soortgelijk programma 23 00:01:02,640 --> 00:01:06,780 je weet dat deze zijn hier rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Deze kolommen zijn. 25 00:01:08,760 --> 00:01:11,790 >> Misschien hier beneden, hoewel je misschien deze functie niet vreselijk much-- gebruiken 26 00:01:11,790 --> 00:01:15,370 Ik zal in-- zoomen we Dit idee van een blad. 27 00:01:15,370 --> 00:01:17,930 Dus misschien deze bladen, indien Ik afwisselend heen en weer, 28 00:01:17,930 --> 00:01:21,600 zijn verschillende tabellen die bestaan ​​in mijn database. 29 00:01:21,600 --> 00:01:25,210 En als we het voorbeeld allen blijven weg, de naam van deze databank 30 00:01:25,210 --> 00:01:26,940 is Boek 1. 31 00:01:26,940 --> 00:01:28,710 Misschien heb ik Boek 2 en Boek 3. 32 00:01:28,710 --> 00:01:33,270 Dus elke Excel-bestand is een databank, elk blad is een tabel, 33 00:01:33,270 --> 00:01:39,530 en de binnenkant van elke tafel heb ik Dit idee van rijen en kolommen. 34 00:01:39,530 --> 00:01:41,900 >> Dus hoe kan ik werken met deze database? 35 00:01:41,900 --> 00:01:43,630 Hoe kan ik de informatie uit te halen? 36 00:01:43,630 --> 00:01:47,540 Wel is er een taal genaamd SQL-- die ik meestal gewoon Sequel-- bellen 37 00:01:47,540 --> 00:01:50,010 en het staat voor de Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 En het is een programmeertaal, maar het is een vrij beperkt programmering 39 00:01:52,981 --> 00:01:53,480 taal. 40 00:01:53,480 --> 00:01:56,407 Het is niet helemaal zoals anderen dat we hebben gewerkt. 41 00:01:56,407 --> 00:01:58,240 Maar het doel van deze programmeertaal 42 00:01:58,240 --> 00:02:01,570 is te vragen een databank, Vraag informatie over een database, 43 00:02:01,570 --> 00:02:04,480 vinden van informatie in een gegevensbestand, enzovoort. 44 00:02:04,480 --> 00:02:08,449 >> We hebben ook in CS50-- en het is een zeer gemeenschappelijk platform, het heet MySQL. 45 00:02:08,449 --> 00:02:10,600 Dat is wat we gebruiken in de cursus. 46 00:02:10,600 --> 00:02:12,880 Het is een open source platform dat voorziet in 47 00:02:12,880 --> 00:02:16,732 een zogenaamde relationele database-- een database, effectief. 48 00:02:16,732 --> 00:02:18,440 We hoeven niet te krijgen te veel in detail 49 00:02:18,440 --> 00:02:20,930 wat een relationele database. 50 00:02:20,930 --> 00:02:24,650 Maar de SQL-taal is zeer bedreven in het werken 51 00:02:24,650 --> 00:02:29,760 met MySQL en andere soortgelijke stijlen van de relationele databases. 52 00:02:29,760 --> 00:02:34,010 >> En vele installaties MySQL komen met iets 53 00:02:34,010 --> 00:02:37,760 genaamd phpMyAdmin, die is een grafische user 54 00:02:37,760 --> 00:02:40,970 interface-- een GUI-- dat maakt het een beetje meer 55 00:02:40,970 --> 00:02:44,410 gebruiksvriendelijk te voeren database queries, 56 00:02:44,410 --> 00:02:48,980 omdat de databases worden niet alleen gebruikt door geavanceerde programmeurs, toch? 57 00:02:48,980 --> 00:02:51,510 Soms zijn er deze kleine bedrijven, 58 00:02:51,510 --> 00:02:53,900 en ze kunnen zich niet veroorloven om het huren van een team van programmeurs, 59 00:02:53,900 --> 00:02:56,700 maar ze moeten nog steeds op te slaan in een database. 60 00:02:56,700 --> 00:02:59,300 >> Zoiets als phpMyAdmin maakt het zeer eenvoudig voor iemand 61 00:02:59,300 --> 00:03:03,630 wie nooit naar geprogrammeerde pick-up en vertrouwd te raken met de manier waarop 62 00:03:03,630 --> 00:03:07,710 werken met een database. 63 00:03:07,710 --> 00:03:11,800 Het probleem is, phpMyAdmin, terwijl Het is een fantastische tool voor het leren 64 00:03:11,800 --> 00:03:14,850 over databases, is handmatig. 65 00:03:14,850 --> 00:03:18,050 Je gaat te hebben om in te loggen het en commando's uitvoeren en het type 66 00:03:18,050 --> 00:03:19,910 dingen in de hand. 67 00:03:19,910 --> 00:03:23,160 >> En zoals we weten uit Bijvoorbeeld op PHP web programmeren, 68 00:03:23,160 --> 00:03:26,550 handmatig te hoeven doen dingen op onze website, 69 00:03:26,550 --> 00:03:30,970 als we willen een dynamische, actieve responsieve website, misschien niet de beste aanpak. 70 00:03:30,970 --> 00:03:33,980 We willen een manier te vinden dit misschien een of andere manier te automatiseren. 71 00:03:33,980 --> 00:03:37,864 En SQL zal ons in staat stellen om dit te doen. 72 00:03:37,864 --> 00:03:39,780 Dus toen we gaan begint te werken met SQL, 73 00:03:39,780 --> 00:03:41,220 moeten we eerst een hebben database werken. 74 00:03:41,220 --> 00:03:42,510 Een database iets wat je waarschijnlijk 75 00:03:42,510 --> 00:03:45,350 zal doen in phpMyAdmin, omdat je hoeft alleen maar om het een keer te doen, 76 00:03:45,350 --> 00:03:49,690 en de syntax daarvoor is een stuk eenvoudiger. 77 00:03:49,690 --> 00:03:51,940 Het is een stuk makkelijker om het te doen in een grafische gebruikersinterface 78 00:03:51,940 --> 00:03:53,520 dan uit te typen als een opdracht. 79 00:03:53,520 --> 00:03:55,186 Het commando kan een beetje lastig te krijgen. 80 00:03:55,186 --> 00:03:58,889 Ook het creëren van een tafel nogal een beetje omslachtig ook. 81 00:03:58,889 --> 00:04:01,930 En dus dingen zoals het maken van een database en het creëren van een tafel, die je bent 82 00:04:01,930 --> 00:04:06,270 waarschijnlijk alleen maar once-- doen eenmaal per tafel, een keer per database-- 83 00:04:06,270 --> 00:04:09,040 het OK is om dat te doen in een grafische interface. 84 00:04:09,040 --> 00:04:11,570 In het proces van het creëren van een tafel, je zult 85 00:04:11,570 --> 00:04:14,840 moeten ook alle opgeven kolommen die zal zijn in die tabel. 86 00:04:14,840 --> 00:04:18,149 Wat voor soort informatie te doen u wilt opslaan in de tabel? 87 00:04:18,149 --> 00:04:24,520 Misschien de naam van een gebruiker en datum van geboorte, wachtwoord, gebruikersnaam ID-nummer, en misschien 88 00:04:24,520 --> 00:04:26,170 stad en staat, toch? 89 00:04:26,170 --> 00:04:30,080 >> En voor elke keer als we willen een gebruiker toe te voegen de database, we willen alle zes te krijgen 90 00:04:30,080 --> 00:04:31,890 van die stukjes informatie. 91 00:04:31,890 --> 00:04:34,840 En dat doen we door het toevoegen van rijen aan de tabel. 92 00:04:34,840 --> 00:04:37,800 Dus we eerst een database te maken, dan creëren we een tafel. 93 00:04:37,800 --> 00:04:40,100 Bij het maken een tafel, we zijn gevraagd 94 00:04:40,100 --> 00:04:44,280 elke kolom geven dat willen we in deze tabel. 95 00:04:44,280 --> 00:04:47,247 En vervolgens als we beginnen te voegen gegevens aan de database 96 00:04:47,247 --> 00:04:49,580 en opvragen van de database meer generally-- niet alleen toe te voegen: 97 00:04:49,580 --> 00:04:51,610 maar alles wat we doen-- we zullen omgaan 98 00:04:51,610 --> 00:04:58,870 met rijen van de tabel, dat een gebruikersinformatie's van de hele set. 99 00:04:58,870 --> 00:05:03,210 >> Dus elke SQL kolom staat die gegevens van een bepaald gegevenstype. 100 00:05:03,210 --> 00:05:06,560 Dus we soort van dit geëlimineerd idee van data types in PHP, 101 00:05:06,560 --> 00:05:08,747 maar ze zijn hier terug in SQL. 102 00:05:08,747 --> 00:05:10,080 En er is een heleboel soorten data. 103 00:05:10,080 --> 00:05:13,420 Hier is slechts 20 van hen, maar het is niet eens allemaal. 104 00:05:13,420 --> 00:05:16,240 Dus we hebben ideeën zoals INTs-- Integers-- weten we waarschijnlijk 105 00:05:16,240 --> 00:05:17,760 Deze informatie integers kan bevatten. 106 00:05:17,760 --> 00:05:21,077 En er zijn variaties thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Misschien hebben we niet altijd nodig vier beten. 108 00:05:22,660 --> 00:05:26,800 Misschien moeten we acht bytes, en dus hebben we kunnen deze variaties op integers 109 00:05:26,800 --> 00:05:28,510 om een ​​beetje meer ruimte efficiënt. 110 00:05:28,510 --> 00:05:31,899 We kunnen decimale getallen doen, we kan doen floating point getallen. 111 00:05:31,899 --> 00:05:32,940 Deze zijn redelijk vergelijkbaar. 112 00:05:32,940 --> 00:05:34,773 Er zijn enkele verschillen, en als je zou 113 00:05:34,773 --> 00:05:37,330 graag opzoeken van de SQL soort gids, je 114 00:05:37,330 --> 00:05:40,670 kan zien wat de lichte verschillen daartussen. 115 00:05:40,670 --> 00:05:43,250 >> Misschien willen we opslaan informatie over datum en tijd. 116 00:05:43,250 --> 00:05:47,047 Misschien zijn we het bijhouden van wanneer de gebruiker toegetreden tot onze website, 117 00:05:47,047 --> 00:05:48,880 en dus misschien willen we aan een kolom die moet 118 00:05:48,880 --> 00:05:52,820 een datum tijd of een tijdstempel die geeft aan wanneer de gebruiker daadwerkelijk 119 00:05:52,820 --> 00:05:54,130 ingeschreven. 120 00:05:54,130 --> 00:05:56,132 We kunnen geometrieën en regelstrings doen. 121 00:05:56,132 --> 00:05:57,340 Dit is eigenlijk best cool. 122 00:05:57,340 --> 00:06:01,410 We konden in kaart een geografische gebied met gebruikmaking 123 00:06:01,410 --> 00:06:05,110 GIS-coördinaten te plotten uit een gebied. 124 00:06:05,110 --> 00:06:08,580 Dus eigenlijk kan opslaan dat soort informatie in een SQL kolom. 125 00:06:08,580 --> 00:06:11,390 >> TEXT is gewoon gigantisch blobs van tekst, misschien. 126 00:06:11,390 --> 00:06:12,840 ENUMs zijn soort interessant. 127 00:06:12,840 --> 00:06:16,080 Ze eigenlijk bestaan ​​in C. We doen niet praten over hen, omdat ze niet 128 00:06:16,080 --> 00:06:19,110 verschrikkelijk veel gebruikte, althans CS50. 129 00:06:19,110 --> 00:06:22,680 Maar het is een opgesomd type gegevens, die kan voor beperkte waarden. 130 00:06:22,680 --> 00:06:25,940 >> Een heel goed voorbeeld zou zijn een enum creëren waarbij de zeven 131 00:06:25,940 --> 00:06:29,394 mogelijke waarden zijn zondag, maandag, Dinsdag, woensdag, donderdag, vrijdag, 132 00:06:29,394 --> 00:06:30,060 Zaterdag, toch? 133 00:06:30,060 --> 00:06:33,311 Dat soort gegevens Dag van Week niet bestaat, 134 00:06:33,311 --> 00:06:35,310 maar we konden een creëren opgesomd soort gegevens zoals 135 00:06:35,310 --> 00:06:39,400 dat die kolom alleen maar kan vasthouden zo'n zeven mogelijke waarden. 136 00:06:39,400 --> 00:06:44,300 We hebben allemaal opgesomd mogelijke waarden. 137 00:06:44,300 --> 00:06:47,630 >> Dan hebben we CHAR en VARCHAR, en ik heb deze kleur groen 138 00:06:47,630 --> 00:06:49,505 omdat we eigenlijk gaan om een ​​tweede te nemen 139 00:06:49,505 --> 00:06:51,950 om te praten over het verschil tussen deze twee dingen. 140 00:06:51,950 --> 00:06:55,780 Dus CHAR, in tegenstelling tot C waarbij CHAR was een enkel teken, 141 00:06:55,780 --> 00:07:00,730 in een SQL CHAR betreft een vaste lengte string. 142 00:07:00,730 --> 00:07:02,620 En als we deze creëren kolom, we eigenlijk 143 00:07:02,620 --> 00:07:05,070 kan de lengte van de string opgeven. 144 00:07:05,070 --> 00:07:08,080 >> In dit voorbeeld, We zouden kunnen zeggen CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Dat betekent dat elke element van die kolom 146 00:07:11,190 --> 00:07:13,910 bestaat uit 10 bytes van gegevens. 147 00:07:13,910 --> 00:07:15,770 Niet meer niet minder. 148 00:07:15,770 --> 00:07:21,780 Dus als we proberen en in een 15 bit of een 15 karakter element 149 00:07:21,780 --> 00:07:25,340 of de waarde in deze kolom, we alleen de eerste 10. 150 00:07:25,340 --> 00:07:27,290 Als we in de twee karakter lange waarde, 151 00:07:27,290 --> 00:07:30,700 we gaan naar de twee hebben personages, en dan acht nul beten. 152 00:07:30,700 --> 00:07:34,990 We zullen nooit efficiënter zijn dan dat. 153 00:07:34,990 --> 00:07:37,727 >> Een VARCHAR is een soort ons begrip tekenreeks 154 00:07:37,727 --> 00:07:39,560 die we kennen met van C of PHP. 155 00:07:39,560 --> 00:07:40,830 Het is een variabele lengte string. 156 00:07:40,830 --> 00:07:42,560 En als je te maken deze column, je gewoon 157 00:07:42,560 --> 00:07:44,860 geeft u de maximaal mogelijke lengtes. 158 00:07:44,860 --> 00:07:49,065 Dus misschien 99, of algemeen 255. 159 00:07:49,065 --> 00:07:50,440 Dat zou de maximale lengte. 160 00:07:50,440 --> 00:07:52,890 En dus als we het opslaan 15 tekenreeks, 161 00:07:52,890 --> 00:07:56,157 we zouden gebruiken 15 bytes, misschien 16 bytes voor de null-terminator. 162 00:07:56,157 --> 00:07:57,990 Als we het opslaan van een drie tekenreeks, 163 00:07:57,990 --> 00:08:01,120 we gebruik van drie of vier bytes. 164 00:08:01,120 --> 00:08:03,050 Maar we zouden niet de volledige 99. 165 00:08:03,050 --> 00:08:05,190 >> Dus waarom zouden we hebben allebei? 166 00:08:05,190 --> 00:08:08,210 Nou, als we nodig hebben om erachter te komen hoe lang iets met een VARCHAR, 167 00:08:08,210 --> 00:08:10,680 we moeten soort iterate overheen net als wij deden in C 168 00:08:10,680 --> 00:08:12,230 en erachter te komen waar het stopt. 169 00:08:12,230 --> 00:08:15,920 Terwijl als we weten dat alles in deze kolom is 10 bytes, misschien 170 00:08:15,920 --> 00:08:19,220 We weten dat de informatie kunnen we springen 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 en altijd de begin van de string. 172 00:08:21,790 --> 00:08:25,210 >> Dus kunnen we sommige hebben verspilde ruimte met een char, 173 00:08:25,210 --> 00:08:28,510 maar misschien is er een trade off van het hebben van een betere snelheid 174 00:08:28,510 --> 00:08:30,160 in het navigeren in de database. 175 00:08:30,160 --> 00:08:32,330 Maar misschien willen we de flexibiliteit van een VARCHAR 176 00:08:32,330 --> 00:08:36,710 in plaats van having-- Als onze CHAR was 255, maar de meeste van onze gebruikers 177 00:08:36,710 --> 00:08:40,537 waren alleen invoeren drie of vier bytes waarde van informatie of drie of vier 178 00:08:40,537 --> 00:08:41,870 karakters waarde van informatie. 179 00:08:41,870 --> 00:08:44,324 >> Maar sommige gebruikers werd met behulp het geheel 255, misschien 180 00:08:44,324 --> 00:08:45,990 VARCHAR zouden er meer geschikt. 181 00:08:45,990 --> 00:08:49,840 Het is een soort van een afweging, en veelal ten behoeve van de CS50, 182 00:08:49,840 --> 00:08:54,107 je hoeft niet te veel zorgen over te maken Of u nu een CHAR of VARCHAR gebruiken. 183 00:08:54,107 --> 00:08:57,190 Maar in de praktijk, deze dingen toe doen omdat al deze kolommen 184 00:08:57,190 --> 00:08:59,300 nemen werkelijke fysieke ruimte. 185 00:08:59,300 --> 00:09:04,150 En fysieke ruimte, in de echte wereld, komt op een premie. 186 00:09:04,150 --> 00:09:06,800 >> Dus een andere overweging als je het bouwen van een tafel 187 00:09:06,800 --> 00:09:09,840 is een kolom te halen wat heet een primaire sleutel. 188 00:09:09,840 --> 00:09:14,350 En een primaire sleutel is een kolom waar elke enkele waarde is uniek. 189 00:09:14,350 --> 00:09:19,980 En dat betekent dat u gemakkelijk kiezen uit een enkele rij gewoon door te kijken 190 00:09:19,980 --> 00:09:22,450 op de primaire sleutel van die rij. 191 00:09:22,450 --> 00:09:24,580 Zodat u bijvoorbeeld algemeen, met gebruikers, 192 00:09:24,580 --> 00:09:27,210 wil niet dat twee gebruikers die hebben hetzelfde gebruikers-ID-nummer. 193 00:09:27,210 --> 00:09:28,960 En dus misschien heb je veel informatie, 194 00:09:28,960 --> 00:09:30,793 en misschien twee kunnen gebruikers hebben dezelfde name-- 195 00:09:30,793 --> 00:09:32,650 je hebt John Smith en John Smith. 196 00:09:32,650 --> 00:09:34,520 Dat is niet per se een probleem, want er zijn meerdere mensen 197 00:09:34,520 --> 00:09:35,830 in de wereld genaamd John Smith. 198 00:09:35,830 --> 00:09:40,766 Maar we hebben maar één gebruiker ID-nummer 10, een gebruikers-ID nummer 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 We hebben geen twee gebruikers met hetzelfde nummer, 200 00:09:42,640 --> 00:09:46,010 en dus misschien gebruikers-ID-nummers zou een goede primaire sleutel zijn. 201 00:09:46,010 --> 00:09:48,610 >> We hebben geen dubbel werk te hebben, En we kunnen nu een unieke 202 00:09:48,610 --> 00:09:52,619 identificeren elke rij net door naar die kolom. 203 00:09:52,619 --> 00:09:55,410 Het kiezen van primaire sleutels daadwerkelijk kan maakt volgende tabel operaties 204 00:09:55,410 --> 00:09:59,710 een stuk makkelijker, want je kunt benutten het feit dat bepaalde rijen 205 00:09:59,710 --> 00:10:02,720 uniek, of een bepaalde kolom van uw database of tafel 206 00:10:02,720 --> 00:10:06,030 uniek te halen zal zijn uit bepaalde rijen. 207 00:10:06,030 --> 00:10:08,790 >> U kunt ook een gezamenlijke primaire sleutel, die u gelegenheid kunnen vinden 208 00:10:08,790 --> 00:10:11,720 te gebruiken, dat is gewoon een combinatie van twee kolommen die 209 00:10:11,720 --> 00:10:13,280 is gegarandeerd uniek. 210 00:10:13,280 --> 00:10:16,410 Dus misschien heb je een kolom die is As en B, 211 00:10:16,410 --> 00:10:19,290 een kolom die één, twee, en drie, maar je zult alleen ooit 212 00:10:19,290 --> 00:10:23,660 A1 een enkele, één A2, enzovoort, enzovoort. 213 00:10:23,660 --> 00:10:28,980 Maar je zou een B2 hebben, een C2, of A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Dus je zou kunnen hebben meerdere As, multiple Bs, meerdere degenen, meerdere tweeën, 215 00:10:32,840 --> 00:10:38,567 maar je kunt alleen maar een hebben één A1, B2, C3, enzovoort. 216 00:10:38,567 --> 00:10:40,400 Dus zoals ik al zei, SQL is een programmeertaal, 217 00:10:40,400 --> 00:10:42,024 maar het heeft een vrij beperkte woordenschat. 218 00:10:42,024 --> 00:10:44,880 Het is niet zo uitgebreid als C en PHP en andere talen 219 00:10:44,880 --> 00:10:46,350 dat we praten in de loop. 220 00:10:46,350 --> 00:10:49,960 Het is meer een breedsprakig taal dan wat we 221 00:10:49,960 --> 00:10:52,789 gaan om over te praten in dit video, omdat in deze video 222 00:10:52,789 --> 00:10:54,830 We gaan om te praten over vier operaties die we 223 00:10:54,830 --> 00:10:55,720 kan uitvoeren op een tafel. 224 00:10:55,720 --> 00:10:56,761 >> Er zijn meer dan dit. 225 00:10:56,761 --> 00:10:58,730 We kunnen meer doen dan dit, maar voor onze doeleinden, 226 00:10:58,730 --> 00:11:02,250 we over het algemeen gaan gebruiken slechts vier operations-- insert, 227 00:11:02,250 --> 00:11:05,360 selecteren, te werken en te verwijderen. 228 00:11:05,360 --> 00:11:08,750 En je kunt waarschijnlijk intuïtief raden wat al vier van deze dingen te doen. 229 00:11:08,750 --> 00:11:12,520 Maar we zullen in een beetje te gaan van detail op elk een. 230 00:11:12,520 --> 00:11:15,780 >> Dus voor de doeleinden van deze video, laten we aannemen 231 00:11:15,780 --> 00:11:18,870 hebben we de volgende twee tabellen in een database. 232 00:11:18,870 --> 00:11:23,460 We hebben een lijst genoemd Gebruikers die heeft vier columns-- ID-nummer, gebruikersnaam, 233 00:11:23,460 --> 00:11:25,350 wachtwoord en volledige naam. 234 00:11:25,350 --> 00:11:27,430 En we hebben een tweede tabel in dezelfde database 235 00:11:27,430 --> 00:11:32,129 genaamd Moeders die net slaat informatie over een gebruikersnaam en een moeder. 236 00:11:32,129 --> 00:11:33,920 Dus voor alle voorbeelden in deze video, zullen we 237 00:11:33,920 --> 00:11:37,945 worden deze databank en latere updates aan het. 238 00:11:37,945 --> 00:11:40,070 Dus laten we zeggen dat we willen informatie toe te voegen aan een tabel. 239 00:11:40,070 --> 00:11:44,460 Dat is wat de insert operatie doet. 240 00:11:44,460 --> 00:11:46,550 Bij het verklaren van alle deze opdrachten, ga ik 241 00:11:46,550 --> 00:11:48,860 om u een algemene skelet te gebruiken. 242 00:11:48,860 --> 00:11:51,661 Omdat het in principe, de queries gaan kijken redelijk vergelijkbaar, 243 00:11:51,661 --> 00:11:54,660 we gaan gewoon te veranderen enigszins verschillende gegevens 244 00:11:54,660 --> 00:11:56,750 om verschillende dingen te doen met de tafel. 245 00:11:56,750 --> 00:11:59,200 >> Dus voor INSERT, het skelet lijkt dit een soort van. 246 00:11:59,200 --> 00:12:02,230 We willen invoegen in een bepaalde tabel. 247 00:12:02,230 --> 00:12:05,290 Dan hebben we een open haakje en een lijst van de kolommen 248 00:12:05,290 --> 00:12:08,070 dat we willen waarden in kunt plaatsen. 249 00:12:08,070 --> 00:12:10,974 Close haakjes, de volgende waarden, en dan 250 00:12:10,974 --> 00:12:13,390 weer, geven we de waarden We willen in de tafel te zetten. 251 00:12:13,390 --> 00:12:15,950 >> Dus een voorbeeld zou de volgende zijn. 252 00:12:15,950 --> 00:12:19,170 Ik wil invoegen in de tabel de gebruikers de volgende columns-- 253 00:12:19,170 --> 00:12:21,010 gebruikersnaam, wachtwoord, en fullname. 254 00:12:21,010 --> 00:12:25,282 Zodat een nieuwe rij waar ik het zetten in die drie kolommen en we zijn 255 00:12:25,282 --> 00:12:30,030 gaan in de waarden gezet Newman, USMAIL, en Newman. 256 00:12:30,030 --> 00:12:32,730 Dus in dit geval, ik ben zetten de kleine Newman 257 00:12:32,730 --> 00:12:38,710 in de kolom gebruikersnaam, wachtwoord USMAIL, en de volledige naam hoofdstad N 258 00:12:38,710 --> 00:12:41,940 Newman in de kolom fullname. 259 00:12:41,940 --> 00:12:44,240 >> Dus hier is wat de database leek eerder. 260 00:12:44,240 --> 00:12:48,250 Hier is wat de tafel gebruikers op het top leek voordat we dit deden. 261 00:12:48,250 --> 00:12:50,760 Daarna voeren we query, krijgen we dit. 262 00:12:50,760 --> 00:12:54,790 We hebben een nieuwe rij toegevoegd aan de tabel. 263 00:12:54,790 --> 00:12:56,810 Maar let op dit ene dat ik niet opgeven, 264 00:12:56,810 --> 00:12:59,880 maar een of andere manier heb ik een waarde gekregen voor, dat deze 12 hier. 265 00:12:59,880 --> 00:13:02,820 Ik heb niet gezegd dat ik wilde zet ID-nummer in. 266 00:13:02,820 --> 00:13:04,900 Ik wilde gebruikersnaam te zetten, wachtwoord fullname. 267 00:13:04,900 --> 00:13:06,440 En ik deed dat, dat is prima. 268 00:13:06,440 --> 00:13:07,760 >> Maar ik kreeg ook deze 12. 269 00:13:07,760 --> 00:13:09,490 Waarom heb ik deze 12? 270 00:13:09,490 --> 00:13:12,904 Nou, het blijkt dat wanneer u definieert 271 00:13:12,904 --> 00:13:15,570 een kolom die gaat worden uw primaire sleutel, die meestal, 272 00:13:15,570 --> 00:13:16,510 zoals ik al zei, een ID-nummer. 273 00:13:16,510 --> 00:13:18,718 Het is niet altijd noodzakelijk gaan naar een ID-nummer zijn, 274 00:13:18,718 --> 00:13:22,380 maar het is meestal een goed idee om zijn een soort van integer waarde. 275 00:13:22,380 --> 00:13:25,950 Heb je een optie in phpMyAdmin als je het maken van uw database 276 00:13:25,950 --> 00:13:31,130 of uw tafel om die set kolom zoals automatische opeenvolging. 277 00:13:31,130 --> 00:13:34,520 >> Dat is een heel goed idee wanneer je werkt met een primaire sleutel, 278 00:13:34,520 --> 00:13:39,330 omdat u elke waarde wilt in die kolom uniek. 279 00:13:39,330 --> 00:13:43,310 En als je vergeet te specificeren het voor meer dan een persoon, 280 00:13:43,310 --> 00:13:46,240 je hebt nu een situatie waarin die kolom is niet langer uniek. 281 00:13:46,240 --> 00:13:50,200 Je hebt twee blanks, dus je kunt geen meer uniek te identificeren een column-- 282 00:13:50,200 --> 00:13:54,150 of u kunt niet meer uniek identificeren van een rij op basis van die kolom. 283 00:13:54,150 --> 00:13:57,010 Het verloor al zijn waarde als primaire sleutel. 284 00:13:57,010 --> 00:14:02,010 >> En dus blijkbaar wat ik heb gedaan hier is geconfigureerd de gebruikers-ID 285 00:14:02,010 --> 00:14:07,790 kolom op auto increment zodat elke keer dat ik informatie toe te voegen aan de tafel, 286 00:14:07,790 --> 00:14:12,220 het zal me automatisch geven een waarde voor de primaire sleutel. 287 00:14:12,220 --> 00:14:15,570 Dus ik kan nooit vergeten om het te doen, omdat de database zal het voor mij. 288 00:14:15,570 --> 00:14:16,587 Dus dat is wel leuk. 289 00:14:16,587 --> 00:14:18,670 En dus dat is waarom we 12 daar, want ik heb 290 00:14:18,670 --> 00:14:21,772 ingesteld die kolom tot auto increment. 291 00:14:21,772 --> 00:14:23,730 Als ik voegde iemand anders het zou zijn 13, als ik toegevoegd 292 00:14:23,730 --> 00:14:27,890 iemand anders het zou zijn 14, en ga zo maar door. 293 00:14:27,890 --> 00:14:30,190 >> Dus laten we gewoon doen nog één inbrengen. 294 00:14:30,190 --> 00:14:34,530 We zullen voegen in de tabel moeders, in Vooral de gebruikersnaam en moeder 295 00:14:34,530 --> 00:14:37,390 kolom de waarden kramer en Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 En dus moesten we dit al eerder. 297 00:14:39,140 --> 00:14:41,800 Na voeren we dat SQL-query, hebben we dit. 298 00:14:41,800 --> 00:14:47,290 We hebben toegevoegd Kramer en Babs Kramer naar de tafel moeders. 299 00:14:47,290 --> 00:14:48,350 >> Dus dat is het invoegen. 300 00:14:48,350 --> 00:14:51,850 SELECT is wat we gebruiken om te extraheren informatie van de tafel. 301 00:14:51,850 --> 00:14:54,390 Dus dit is hoe we informatie uit de database. 302 00:14:54,390 --> 00:14:59,589 En zo SELECT commando's zullen worden heel vaak gebruikt in de programmering. 303 00:14:59,589 --> 00:15:02,130 De algemene framework-- de algemene skelet ziet er als volgt uit. 304 00:15:02,130 --> 00:15:06,550 Selecteer een set van kolommen uit een tafel, en vervolgens eventueel 305 00:15:06,550 --> 00:15:11,090 kunt u een Staat- specificeren of wat wij meestal noemen een predikaat, 306 00:15:11,090 --> 00:15:13,010 gewoonlijk de term die wij in SQL. 307 00:15:13,010 --> 00:15:16,490 >> Maar het is eigenlijk wat bijzonder rijen die u wilt krijgen. 308 00:15:16,490 --> 00:15:19,100 Als u wilt, in plaats van het krijgen van alles, smal het neer, 309 00:15:19,100 --> 00:15:20,060 dit is waar je dat zou doen. 310 00:15:20,060 --> 00:15:22,777 En vervolgens eventueel, kunt u ook bestelling op een bepaalde kolom. 311 00:15:22,777 --> 00:15:25,860 Dus misschien je dingen wilt naargelang hebben alfabetisch op basis van één kolom 312 00:15:25,860 --> 00:15:27,540 of alfabetisch op basis van een ander. 313 00:15:27,540 --> 00:15:30,610 >> Nogmaals, WHERE en ORDER BY zijn optioneel. 314 00:15:30,610 --> 00:15:32,681 Maar ze zullen waarschijnlijk useful-- bijzonder 315 00:15:32,681 --> 00:15:34,680 Waar zal nuttig zijn verfijnen zodat je niet 316 00:15:34,680 --> 00:15:37,460 krijg je hele database back en hebben om het te verwerken, krijg je alleen maar 317 00:15:37,460 --> 00:15:39,300 de stukken van het dat u de zorg over. 318 00:15:39,300 --> 00:15:44,932 Dus bijvoorbeeld, ik zou willen selecteren ID-nummer en de volledige naam van de gebruikers. 319 00:15:44,932 --> 00:15:46,140 Dus wat kan dit eruit? 320 00:15:46,140 --> 00:15:48,270 Dus hier is mijn gebruikers table. 321 00:15:48,270 --> 00:15:51,080 Ik wil idnum selecteren en FullName van gebruikers. 322 00:15:51,080 --> 00:15:52,300 Wat moet ik krijgen? 323 00:15:52,300 --> 00:15:53,580 Ik ga om dit te krijgen. 324 00:15:53,580 --> 00:15:56,930 Ik heb niet versmallen het neer, dus ik ben het verkrijgen van de ID-nummer voor elke rij 325 00:15:56,930 --> 00:16:00,850 en ik krijg de volledige naam van elke rij. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Wat als ik wil om het wachtwoord te selecteren van gebruikers WHERE-- dus nu 328 00:16:05,640 --> 00:16:10,370 Ik ben het toevoegen van een aandoening, een predicate-- waarbij idnum minder dan 12. 329 00:16:10,370 --> 00:16:13,660 Dus hier is mijn-database opnieuw, mijn gebruikers table de top. 330 00:16:13,660 --> 00:16:17,030 Wat ga ik krijg als ik wil selecteert u die informatie, het wachtwoord, 331 00:16:17,030 --> 00:16:21,550 waar de gebruikers-ID of idnum is minder dan 12? 332 00:16:21,550 --> 00:16:24,910 Ik ga om dit te krijgen informatie terug, toch? 333 00:16:24,910 --> 00:16:29,170 Het gebeurt dat idnum is 10, minder dan 12, ID nummer 11 minder dan 12. 334 00:16:29,170 --> 00:16:32,160 Ik krijg het wachtwoord voor die rijen. 335 00:16:32,160 --> 00:16:33,914 Dat is wat ik vroeg voor. 336 00:16:33,914 --> 00:16:34,580 Hoe zit het met deze? 337 00:16:34,580 --> 00:16:39,170 Wat als ik wil ster uit de te selecteren moms tafel waar gebruikersnaam gelijk Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, selecteer ster is de speciale soort wild card zogenaamde 339 00:16:43,780 --> 00:16:45,670 die we gebruiken om alles te krijgen. 340 00:16:45,670 --> 00:16:48,620 Dus ze select zeggen gebruikersnaam komma moeder, die 341 00:16:48,620 --> 00:16:51,060 gebeurde de enige te zijn twee kolommen van deze tabel, 342 00:16:51,060 --> 00:16:53,260 Ik kan het gewoon selecteren ster en alles 343 00:16:53,260 --> 00:16:55,030 waar de gebruikersnaam gelijk Jerry. 344 00:16:55,030 --> 00:16:59,380 En dat is wat ik zou krijgen als ik die specifieke zoekopdracht. 345 00:16:59,380 --> 00:17:01,810 >> Nu zijn databanken groot, omdat zij toestaan 346 00:17:01,810 --> 00:17:06,074 ons de informatie misschien organiseren iets efficiënter dan we 347 00:17:06,074 --> 00:17:06,740 misschien anders. 348 00:17:06,740 --> 00:17:10,240 We hebben niet noodzakelijk te slaan alle relevante stukje informatie 349 00:17:10,240 --> 00:17:12,230 over een gebruiker in dezelfde tabel. 350 00:17:12,230 --> 00:17:13,730 We hadden twee tafels daar. 351 00:17:13,730 --> 00:17:15,734 >> We moeten slaan ieders naam van de moeder, 352 00:17:15,734 --> 00:17:18,900 en misschien hebben we niet de sociale zekerheid nummer, we hebben hun geboortedatum. 353 00:17:18,900 --> 00:17:21,819 Dat hoeft niet altijd nodig worden in dezelfde tabel. 354 00:17:21,819 --> 00:17:25,339 Zolang we kunnen definiëren relaties tussen de tables-- 355 00:17:25,339 --> 00:17:28,440 en dat is waar dat relationele databank termijn soort komt 356 00:17:28,440 --> 00:17:32,130 in play-- zolang we kunnen definiëren relaties tussen de tabellen, 357 00:17:32,130 --> 00:17:35,545 kunnen we een soort hokjes of abstracte dingen een bepaalde manier, 358 00:17:35,545 --> 00:17:37,670 waar we alleen de echt belangrijke informatie 359 00:17:37,670 --> 00:17:39,270 we de zorg over in de tabel van de gebruiker. 360 00:17:39,270 --> 00:17:43,220 En dan hebben we aanvullende informatie of extra informatie in andere tabellen 361 00:17:43,220 --> 00:17:48,260 dat we terug kunnen verbinden met de belangrijkste gebruikers tafel in een bepaalde manier. 362 00:17:48,260 --> 00:17:52,200 >> Dus hier hebben we deze twee tabellen, maar er is een relatie tussen hen, 363 00:17:52,200 --> 00:17:53,010 rechts? 364 00:17:53,010 --> 00:17:55,070 Het lijkt alsof gebruikersnaam misschien iets zijn 365 00:17:55,070 --> 00:17:59,909 die bestaat in gemeenschappelijke tussen deze twee tabellen. 366 00:17:59,909 --> 00:18:01,700 Dus wat als we nu hebben een situatie waarin we 367 00:18:01,700 --> 00:18:06,046 willen de volledige naam van een gebruiker te krijgen van de tafel van de gebruiker, en hun moeder 368 00:18:06,046 --> 00:18:07,170 naam van de moeder tafel? 369 00:18:07,170 --> 00:18:10,960 We niet een manier om te krijgen dat zoals het nu is, toch? 370 00:18:10,960 --> 00:18:17,790 Er is geen enkele tabel bevat zowel de volledige naam en de naam van de moeder. 371 00:18:17,790 --> 00:18:20,400 We hebben geen die optie van wat we tot nu toe hebben gezien. 372 00:18:20,400 --> 00:18:22,950 >> En dus moeten we introduceren het idee van een JOIN. 373 00:18:22,950 --> 00:18:24,857 En voegt zich bij zijn waarschijnlijk de meest complex-- 374 00:18:24,857 --> 00:18:27,940 het is echt het meest complexe operatie gaan we over praten in de video. 375 00:18:27,940 --> 00:18:30,040 Ze zijn een beetje ingewikkeld, maar als je eenmaal onder de knie krijgen van het, 376 00:18:30,040 --> 00:18:31,248 ze zijn eigenlijk niet zo slecht. 377 00:18:31,248 --> 00:18:32,820 Het is gewoon een speciaal geval van een SELECT. 378 00:18:32,820 --> 00:18:37,120 We gaan om een ​​set van te selecteren kolommen uit een tabel mee 379 00:18:37,120 --> 00:18:40,650 in een tweede tabel op sommige predikaat. 380 00:18:40,650 --> 00:18:45,340 >> In dit geval, na te denken over het leuk dit-- tafel één is een cirkel over hier, 381 00:18:45,340 --> 00:18:47,530 tabel twee is een andere cirkel hier. 382 00:18:47,530 --> 00:18:49,410 En dat predikaat deel in het midden, het is 383 00:18:49,410 --> 00:18:51,701 soort als als je denkt over een Venn diagram, wat 384 00:18:51,701 --> 00:18:52,670 hebben ze met elkaar gemeen? 385 00:18:52,670 --> 00:18:55,960 Wij willen deze twee tabellen koppelen op basis van wat ze gemeen hebben 386 00:18:55,960 --> 00:19:01,230 en maak deze hypothetische tafel dat is de fusie van de twee samen. 387 00:19:01,230 --> 00:19:03,480 Dus we zullen zien in een voorbeeld en misschien dat zal helpen 388 00:19:03,480 --> 00:19:04,521 duidelijk dat een beetje. 389 00:19:04,521 --> 00:19:09,260 Dus misschien dat u wilt selecteren USER.FULLNAME en moms.mother 390 00:19:09,260 --> 00:19:13,220 van gebruikers mee in de moms tafel in elke situatie 391 00:19:13,220 --> 00:19:16,790 waar de kolom gebruikersnaam hetzelfde daartussen. 392 00:19:16,790 --> 00:19:19,240 En dit is een nieuwe syntax hier, deze gebruiker. 393 00:19:19,240 --> 00:19:20,460 en moeders .. 394 00:19:20,460 --> 00:19:26,697 Als ik doe meerdere tabellen samen, kan ik een tafel te geven. 395 00:19:26,697 --> 00:19:29,530 Ik kan onderscheiden in het bijzonder op dat op op de bodem daar. 396 00:19:29,530 --> 00:19:33,220 Ik kan de gebruikersnaam onderscheiden kolom van de tabel gebruikers 397 00:19:33,220 --> 00:19:36,010 uit de kolom van de gebruikersnaam moms tafel, die otherwise-- zijn 398 00:19:36,010 --> 00:19:38,070 als we net zei gebruikersnaam gelijk gebruikersnaam, die niet echt 399 00:19:38,070 --> 00:19:38,970 alles betekenen. 400 00:19:38,970 --> 00:19:41,440 Wij willen doen waar ze passen. 401 00:19:41,440 --> 00:19:46,080 >> Dus ik kan de tafel en het specificeren kolomnaam bij een situatie 402 00:19:46,080 --> 00:19:48,370 wanneer het onduidelijk zou waar ik het over heb. 403 00:19:48,370 --> 00:19:51,880 Dus dat is alles wat ik doe is ik ben zegt deze kolom van deze tabel, 404 00:19:51,880 --> 00:19:54,020 en zeer expliciet. 405 00:19:54,020 --> 00:19:56,810 Dus nogmaals, ik ben het selecteren van de volledige naam en de naam van de moeder 406 00:19:56,810 --> 00:20:00,950 Uit de tabel gebruikers met elkaar verbonden de tabel moeders in elke situatie 407 00:20:00,950 --> 00:20:05,960 waar ze delen dat column-- ze delen die gebruikersnaam begrip. 408 00:20:05,960 --> 00:20:08,580 >> Dus hier zijn de tafels we eerder hadden. 409 00:20:08,580 --> 00:20:12,210 Dit is de toestand van onze databank zoals het nu bestaat. 410 00:20:12,210 --> 00:20:16,390 De informatie die we extraheren Hierdoor te beginnen. 411 00:20:16,390 --> 00:20:19,820 Dit is de nieuwe tafel gaan we maken combineren van deze met elkaar. 412 00:20:19,820 --> 00:20:23,585 En let we niet markeren Newmans rij in tabel van de gebruiker, 413 00:20:23,585 --> 00:20:25,960 en we zijn niet markeren Kramer rij in de tabel moeders 414 00:20:25,960 --> 00:20:31,250 omdat geen van beide bestaat in zowel sets-- in beide tabellen. 415 00:20:31,250 --> 00:20:36,260 >> De enige informatie die gemeen tussen hen Jerry in beide tabellen 416 00:20:36,260 --> 00:20:39,100 en gcostanza is in beide tabellen. 417 00:20:39,100 --> 00:20:42,620 En dus toen we de SQL JOIN, wat we get-- en doen we eigenlijk dit. 418 00:20:42,620 --> 00:20:44,830 Het is een soort van een tijdelijke variabele. 419 00:20:44,830 --> 00:20:47,330 Het is als een hypothetische fusie van de twee tafels. 420 00:20:47,330 --> 00:20:49,930 We eigenlijk iets te krijgen als dit waar 421 00:20:49,930 --> 00:20:54,730 we samen hebben samengevoegd de tabellen op de informatie die ze gemeen hebben. 422 00:20:54,730 --> 00:20:58,334 >> Zo merken dat users.username en moms.username kolom 423 00:20:58,334 --> 00:20:59,250 Het is precies hetzelfde. 424 00:20:59,250 --> 00:21:01,820 Dat was de informatie die was consistent gebruikers 425 00:21:01,820 --> 00:21:02,890 tafel en de tafel moeders. 426 00:21:02,890 --> 00:21:04,270 En dus hebben we samengevoegd ze samen. 427 00:21:04,270 --> 00:21:06,919 We weggegooid Kramer, omdat hij niet bestaan ​​in de gebruikerstabel, 428 00:21:06,919 --> 00:21:09,710 en we weggegooid Newman, omdat hij niet bestaan ​​in de tabel moeders. 429 00:21:09,710 --> 00:21:16,450 Dus dit is de hypothetische fusie met behulp van de JOIN werking van SELECT. 430 00:21:16,450 --> 00:21:21,250 >> En dan waren we op zoek naar de volledige naam van de gebruiker en de moeder van de gebruiker, 431 00:21:21,250 --> 00:21:24,999 en dus dit is de informatie die we zouden krijgen van de totale vraag 432 00:21:24,999 --> 00:21:26,040 dat we gemaakt met SELECT. 433 00:21:26,040 --> 00:21:28,873 Dus we lid geworden van de tafels bij elkaar en we deze twee kolommen geëxtraheerd, 434 00:21:28,873 --> 00:21:31,610 en dus dat is wat we zouden krijgen. 435 00:21:31,610 --> 00:21:33,370 Maar SQL JOINs een soort ingewikkeld. 436 00:21:33,370 --> 00:21:36,770 U zult waarschijnlijk hen niet te veel, maar gewoon een idee van het skelet 437 00:21:36,770 --> 00:21:41,992 dat je zou kunnen gebruiken om te fuseren twee tafels samen als u nodig. 438 00:21:41,992 --> 00:21:43,700 De laatste twee zijn een iets eenvoudiger dat beloof ik. 439 00:21:43,700 --> 00:21:48,040 Dus updaten, kunnen we UPDATE gebruiken voor gegevens in een tabel. 440 00:21:48,040 --> 00:21:53,880 Het algemene formaat is UPDATE sommige tafel, SET enkele kolom een ​​bepaalde waarde 441 00:21:53,880 --> 00:21:55,540 Waar sommige predikaat is voldaan. 442 00:21:55,540 --> 00:21:57,850 Dus bijvoorbeeld, zouden we willen om de tafel gebruikers actualiseren 443 00:21:57,850 --> 00:22:04,400 en stel het wachtwoord in om yada yada, waar de ID-nummer is 10. 444 00:22:04,400 --> 00:22:06,400 >> Dus in dit geval, we zijn bijwerken van de tabel gebruikers. 445 00:22:06,400 --> 00:22:08,275 Het ID-nummer is 10 voor die eerste rij daar, 446 00:22:08,275 --> 00:22:10,690 en we willen de update wachtwoord yada yada. 447 00:22:10,690 --> 00:22:12,170 En dat is wat er zou gebeuren. 448 00:22:12,170 --> 00:22:13,628 Het is vrij eenvoudig, toch? 449 00:22:13,628 --> 00:22:17,990 Het is gewoon een heel simpel wijziging van de tafel. 450 00:22:17,990 --> 00:22:22,250 >> DELETE wordt de operatie hebben we gebruikt om uit een tabel te verwijderen informatie. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabel WHERE sommige predikaat is voldaan. 452 00:22:24,817 --> 00:22:26,900 We willen verwijderen uit de gebruikers table bijvoorbeeld 453 00:22:26,900 --> 00:22:28,254 waar de gebruikersnaam is Newman. 454 00:22:28,254 --> 00:22:31,420 U kunt waarschijnlijk wel raden wat er gaat hier gebeuren nadat we dat SQL uitvoeren 455 00:22:31,420 --> 00:22:35,790 query, Newman is verdwenen uit de tabel. 456 00:22:35,790 --> 00:22:40,460 >> Dus al deze handelingen, zoals ik al heb gezegd, zijn zeer eenvoudig te doen in phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Het is een zeer gebruiksvriendelijke interface. 458 00:22:43,020 --> 00:22:45,930 Maar het vereist handmatige inspanning. 459 00:22:45,930 --> 00:22:47,840 We willen niet handmatige inspanning in dienst. 460 00:22:47,840 --> 00:22:51,280 We willen dat onze programma's om doet dit voor ons, toch? 461 00:22:51,280 --> 00:22:53,190 Dus we zouden willen doen dit programmatisch. 462 00:22:53,190 --> 00:22:56,410 We willen SQL te nemen en hebben iets anders om dit voor ons doen. 463 00:22:56,410 --> 00:23:02,710 >> Maar wat hebben we gezien dat toestaat ons programmatisch iets te doen? 464 00:23:02,710 --> 00:23:03,690 We hebben gezien PHP, toch? 465 00:23:03,690 --> 00:23:05,760 Het introduceert een aantal dynamiek in onze programma's. 466 00:23:05,760 --> 00:23:10,430 En zo gelukkig, SQL en PHP spelen heel mooi samen. 467 00:23:10,430 --> 00:23:13,230 Er is een functie in PHP genaamd query, die kan worden gebruikt. 468 00:23:13,230 --> 00:23:15,870 En u kunt doorgeven als parameter of het argument 469 00:23:15,870 --> 00:23:19,210 een SQL-query query je zou willen voeren. 470 00:23:19,210 --> 00:23:23,250 En PHP zal het te doen op uw rekening. 471 00:23:23,250 --> 00:23:25,564 >> Dus nadat u hebt aangesloten om uw database met PHP, 472 00:23:25,564 --> 00:23:26,980 er twee voorverkiezingen u dit doet. 473 00:23:26,980 --> 00:23:29,230 Er is iets genaamd MySQLi en iets genaamd BOB. 474 00:23:29,230 --> 00:23:31,063 We zullen niet in een enorm gaan hoeveelheid detail daar. 475 00:23:31,063 --> 00:23:32,957 In CS50 maken we gebruik van de BOB. 476 00:23:32,957 --> 00:23:34,790 Nadat u hebt aangesloten om uw database, u 477 00:23:34,790 --> 00:23:40,980 kan dan vragen uw database door het passeren van de queries argumenten 478 00:23:40,980 --> 00:23:42,730 PHP functies. 479 00:23:42,730 --> 00:23:46,460 En als je dat doet, slaat u de resultaat in een associatieve array. 480 00:23:46,460 --> 00:23:50,290 >> En we weten hoe te werken met associatieve arrays in PHP. 481 00:23:50,290 --> 00:23:52,630 Dus ik misschien iets te zeggen zoals dit-- $ results-- 482 00:23:52,630 --> 00:23:55,470 Dit is in PHP-- gelijk query. 483 00:23:55,470 --> 00:23:57,660 En vervolgens binnen de vraag functie die argument 484 00:23:57,660 --> 00:24:00,130 dat ik langs om te vragen dat lijkt op SQL. 485 00:24:00,130 --> 00:24:01,160 En dat is SQL. 486 00:24:01,160 --> 00:24:05,700 Dat is de query string die ik zou willen uitvoeren op mijn database. 487 00:24:05,700 --> 00:24:09,250 >> En zo in het rood, dit is PHP. 488 00:24:09,250 --> 00:24:11,890 Dit is SQL dat ik integreren in PHP door 489 00:24:11,890 --> 00:24:15,020 Het argument om de query-functie. 490 00:24:15,020 --> 00:24:19,640 Ik wil fullname kiezen uit gebruikers, waar ID-nummer is gelijk aan 10. 491 00:24:19,640 --> 00:24:22,560 En dan misschien nadat ik dat gedaan hebt, Ik zou zoiets zeggen. 492 00:24:22,560 --> 00:24:25,550 Ik wil uitprinten bericht Bedankt voor aanmelden. 493 00:24:25,550 --> 00:24:32,530 >> En ik wil het interpolate-- Ik wil te interpoleren $ resultaten fullname. 494 00:24:32,530 --> 00:24:36,280 En dus dat is hoe ik werk met dat associatieve array die ik terug. 495 00:24:36,280 --> 00:24:39,730 $ resultaten fullname zou eigenlijk uiteindelijk uit te printen, 496 00:24:39,730 --> 00:24:42,870 bedankt voor het inloggen, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Dat was de volledige naam waarbij idnum is gelijk aan 10. 498 00:24:46,570 --> 00:24:48,850 >> En dus alles wat ik doe wordt ik now-- ik opgeslagen 499 00:24:48,850 --> 00:24:52,780 mijn vraag, de resultaten van mijn zoekopdracht en resulteert in een associatieve array, 500 00:24:52,780 --> 00:24:56,330 en fullname is de naam van de kolom ik kreeg voor. 501 00:24:56,330 --> 00:25:01,010 Dus dat is mijn sleutel in de resultaten associatieve array die ik wil. 502 00:25:01,010 --> 00:25:05,930 Dus bedankt voor het inloggen, $ resultaten, fullname zal uitprinten, zal vasthouden 503 00:25:05,930 --> 00:25:08,654 precies tussen de gekrulde bretels, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 En ik wil printen het bericht Bedankt voor het aanmelden Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nu, we waarschijnlijk niet te moeilijk code dat soort dingen in, toch? 506 00:25:16,652 --> 00:25:19,860 Willen we misschien iets zoals print doen f, waar we kunnen vervangen en misschien 507 00:25:19,860 --> 00:25:22,443 verzamelt verschillende soorten informatie, of misschien hebben de query-proces 508 00:25:22,443 --> 00:25:23,370 verschillende informatie. 509 00:25:23,370 --> 00:25:27,920 En zo query, de query functie heeft dit begrip soort vervangingen 510 00:25:27,920 --> 00:25:32,310 vergelijkbaar met drukken f procent s en c procent, is vraagtekens. 511 00:25:32,310 --> 00:25:34,290 >> En we kunnen vraag gebruiken merken zeer analoog 512 00:25:34,290 --> 00:25:38,400 afdrukken f om vervangende variabelen. 513 00:25:38,400 --> 00:25:44,120 Dus misschien uw gebruikersnaam ingelogd eerder, en je hun gebruikers-ID-nummer opgeslagen 514 00:25:44,120 --> 00:25:51,710 in $ _SESSION van PHP super globaal in de sleutel-ID. 515 00:25:51,710 --> 00:25:55,947 Dus misschien nadat ze ingelogd zijn, u $ _SESSION ID gelijk aan 10 ingesteld, 516 00:25:55,947 --> 00:25:58,280 extrapolatie van het voorbeeld we zagen slechts een seconde geleden. 517 00:25:58,280 --> 00:26:01,960 >> En dus toen we daadwerkelijk uit te voeren Deze query de resultaten nu, 518 00:26:01,960 --> 00:26:08,440 het zou aansluiten 10, of wat dan ook de $ _SESSION ID-waarde is. 519 00:26:08,440 --> 00:26:10,790 En zo dat ons toelaat om een beetje meer dynamiek. 520 00:26:10,790 --> 00:26:12,699 We zijn niet moeilijk codering dingen in het meer. 521 00:26:12,699 --> 00:26:14,490 We besparen informatie ergens en dan 522 00:26:14,490 --> 00:26:18,924 we kunnen die informatie weer te gebruiken soort generaliseren wat we willen doen, 523 00:26:18,924 --> 00:26:21,090 en gewoon plug-in en verandering het gedrag van onze pagina 524 00:26:21,090 --> 00:26:26,489 gebaseerd op wat de gebruiker ID nummer eigenlijk is nadat ze ingelogd. 525 00:26:26,489 --> 00:26:28,530 Het is ook mogelijk, hoewel, dat de resultaten ingesteld 526 00:26:28,530 --> 00:26:30,840 kan bestaan ​​uit meerdere rijen. 527 00:26:30,840 --> 00:26:33,990 In dat geval heb je een array van arrays-- 528 00:26:33,990 --> 00:26:35,334 een array van associatieve arrays. 529 00:26:35,334 --> 00:26:37,000 En je hoeft alleen maar te herhalen doorheen. 530 00:26:37,000 --> 00:26:41,950 En we weten hoe we herhalen door middel van een array in PHP, toch? 531 00:26:41,950 --> 00:26:45,600 Dus hier is waarschijnlijk de meest complexe wat we tot nu toe hebben gezien. 532 00:26:45,600 --> 00:26:49,640 Het integreert eigenlijk drie talen samen. 533 00:26:49,640 --> 00:26:52,920 >> Hier in rood, dit is een HTML. 534 00:26:52,920 --> 00:26:56,872 Ik ben blijkbaar starting-- dit is een fragment van een aantal HTML die ik heb. 535 00:26:56,872 --> 00:26:59,580 Ik ben het starten van een nieuwe paragraaf die zegt dat de moeders van Seinfeld TV's. 536 00:26:59,580 --> 00:27:02,350 En dan onmiddellijk daarna Ik begin een tafel. 537 00:27:02,350 --> 00:27:06,060 En dan na dat ik hebben een aantal PHP, toch? 538 00:27:06,060 --> 00:27:08,229 Ik heb dit alles PHP code in. 539 00:27:08,229 --> 00:27:09,645 Ik ben blijkbaar te gaan maken van een query. 540 00:27:09,645 --> 00:27:14,180 En om de query te maken, ga ik worden met behulp van SELECT moeders uit moeders. 541 00:27:14,180 --> 00:27:15,970 >> Dus dit is getting-- dit is SQL. 542 00:27:15,970 --> 00:27:17,300 Dus het de blauwe is SQL. 543 00:27:17,300 --> 00:27:19,680 De rode zagen we een tweede geleden was HTML. 544 00:27:19,680 --> 00:27:21,360 En het groen is hier PHP. 545 00:27:21,360 --> 00:27:23,400 Dus ik ben het maken van een query mijn gegevensbestand, ik ben 546 00:27:23,400 --> 00:27:26,040 alle selecteren moeders in de tabel moeders. 547 00:27:26,040 --> 00:27:30,710 Niet alleen het verkleinen van het naar beneden om bepaalde rij, ik vraag voor hen allen. 548 00:27:30,710 --> 00:27:33,290 >> Dan controleer ik als het resultaat niet gelijken gelijk vals. 549 00:27:33,290 --> 00:27:37,410 Dit is gewoon mijn manier om te controleren soort van als de resultaten niet gelijk is aan nul, 550 00:27:37,410 --> 00:27:40,260 dat we c bijvoorbeeld zou zien. 551 00:27:40,260 --> 00:27:44,000 In principe is dit gewoon het controleren om ervoor te zeker dat het eigenlijk data terug. 552 00:27:44,000 --> 00:27:47,041 Want ik wil niet beginnen met afdrukken uit gegevens als ik geen gegevens op te halen. 553 00:27:47,041 --> 00:27:50,690 Dan voor elke resultaten als gevolg van de foreach syntax van PHP, alles wat ik doe 554 00:27:50,690 --> 00:27:53,399 is het afdrukken van $ result moeders. 555 00:27:53,399 --> 00:27:55,940 En dus ik ga naar een set te krijgen van alle moeders van each-- 556 00:27:55,940 --> 00:27:59,980 het is een array van associatieve arrays-- en ik ben printen 557 00:27:59,980 --> 00:28:03,649 ieder als zijn eigen rij van een tabel. 558 00:28:03,649 --> 00:28:05,690 En dat is echt mooi veel allen daar is aan het. 559 00:28:05,690 --> 00:28:07,750 Ik weet dat er een beetje wat hier aan de hand 560 00:28:07,750 --> 00:28:13,210 In dit laatste voorbeeld reeksen arrays-- arrays associatieve arrays. 561 00:28:13,210 --> 00:28:17,340 Maar het is echt gewoon koken in SQL om het maken van een query, 562 00:28:17,340 --> 00:28:21,102 Meestal selecteren nadat we hebben al zet informatie in de tabel, 563 00:28:21,102 --> 00:28:22,310 en dan is het gewoon uit te trekken. 564 00:28:22,310 --> 00:28:25,710 >> En dit is dat we zouden trekken in dit specifieke geval. 565 00:28:25,710 --> 00:28:31,120 We zouden alle afzonderlijke extraheren moeders van de tafel moeders. 566 00:28:31,120 --> 00:28:35,970 We hebben een hele reeks van hen, en we willen door middel van herhalen en uit te printen 567 00:28:35,970 --> 00:28:37,630 elke. 568 00:28:37,630 --> 00:28:40,510 Dus nogmaals, dit is waarschijnlijk de meest ingewikkelde voorbeeld 569 00:28:40,510 --> 00:28:44,510 we hebben gezien, omdat we het mengen van drie verschillende talen samen, toch? 570 00:28:44,510 --> 00:28:50,100 >> Nogmaals, we HTML hier in rood, vermengd met een aantal SQL hier in blauw, 571 00:28:50,100 --> 00:28:52,049 gemengd met wat PHP in het groen. 572 00:28:52,049 --> 00:28:53,840 Maar al deze spelen mooi in elkaar, het is 573 00:28:53,840 --> 00:28:57,060 gewoon een kwestie van het ontwikkelen goede gewoonten, zodat je kunt krijgen 574 00:28:57,060 --> 00:28:58,780 ze samen te werken zoals u dat wilt. 575 00:28:58,780 --> 00:29:03,790 En de enige manier om echt te doen is om te oefenen, oefenen, oefenen. 576 00:29:03,790 --> 00:29:06,740 Ik ben Doug Lloyd, dit is CS50. 577 00:29:06,740 --> 00:29:08,647