1 00:00:00,000 --> 00:00:03,493 >> [Speel van musiek] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: In ons video's op die web ontwikkeling onderwerpe, 4 00:00:07,100 --> 00:00:10,560 ons het genoem die konsep van 'n databasis 'n paar keer, reg? 5 00:00:10,560 --> 00:00:12,700 So 'n databasis is jy waarskynlik vertroud met van 6 00:00:12,700 --> 00:00:15,780 sê die gebruik van Microsoft Excel of Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Dit is regtig net 'n georganiseerde stel tafels, rye en kolomme. 8 00:00:20,650 --> 00:00:23,140 >> En 'n databasis is waar ons webwerf winkels 9 00:00:23,140 --> 00:00:26,760 inligting wat belangrik vir ons webwerf om behoorlik te werk. 10 00:00:26,760 --> 00:00:30,150 Weereens, 'n baie algemene voorbeeld hier is die stoor gebruikersname en wagwoorde 11 00:00:30,150 --> 00:00:32,824 in 'n databasis, sodat wanneer 'n gebruiker inteken in ons webwerf, 12 00:00:32,824 --> 00:00:36,690 die databasis kan bevraagteken word om te sien As die gebruiker bestaan ​​in die databasis. 13 00:00:36,690 --> 00:00:39,260 En as hulle is, kontroleer dat hul wagwoord korrek is. 14 00:00:39,260 --> 00:00:43,420 En as hul wagwoord korrek is, dan kan ons hulle ook al page gee 15 00:00:43,420 --> 00:00:45,370 hulle versoek. 16 00:00:45,370 --> 00:00:48,590 >> So is jy waarskynlik weer, bekende met hierdie idee van Excel of Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Ons het databasisse, tafels, rye en kolomme. 19 00:00:52,980 --> 00:00:56,450 En dit is regtig soort van die fundamentele stel 20 00:00:56,450 --> 00:00:58,470 van hiërargiese verdeling hier. 21 00:00:58,470 --> 00:00:59,800 So hier is 'n Excel spreadsheet. 22 00:00:59,800 --> 00:01:02,640 En as jy al ooit hierdie geopen of 'n ander soortgelyke program 23 00:01:02,640 --> 00:01:06,780 jy weet dat hierdie hier is rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Dit is kolomme. 25 00:01:08,760 --> 00:01:11,790 >> Miskien af ​​hier, maar jy kan hierdie funksie nie vreeslik much-- gebruik 26 00:01:11,790 --> 00:01:15,370 Ek sal in-- zoom ons het hierdie idee van 'n vel. 27 00:01:15,370 --> 00:01:17,930 So miskien hierdie velle, as Ek wissel heen en weer, 28 00:01:17,930 --> 00:01:21,600 verskillende tabelle wat bestaan ​​in my databasis. 29 00:01:21,600 --> 00:01:25,210 En as ons die voorbeeld al voortgaan die weg, die naam van die databasis 30 00:01:25,210 --> 00:01:26,940 is Boek 1. 31 00:01:26,940 --> 00:01:28,710 Miskien het ek Boek 2 en Boek 3. 32 00:01:28,710 --> 00:01:33,270 So elke Excel lêer is 'n databasis, elke vel is 'n tafel, 33 00:01:33,270 --> 00:01:39,530 en binnekant van elke tafel het ek hierdie idee van rye en kolomme. 34 00:01:39,530 --> 00:01:41,900 >> So hoe kan ek werk met hierdie databasis? 35 00:01:41,900 --> 00:01:43,630 Hoe kan ek inligting van dit te kry? 36 00:01:43,630 --> 00:01:47,540 Wel daar is 'n taal, die sogenaamde SQL-- wat ek gewoonlik net Sequel-- noem 37 00:01:47,540 --> 00:01:50,010 en dit staan ​​vir die Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 En dit is 'n programmeertaal, maar dit is 'n redelik beperk programmering 39 00:01:52,981 --> 00:01:53,480 taal. 40 00:01:53,480 --> 00:01:56,407 Dit is nie heeltemal soos ander dat ons gewerk het met. 41 00:01:56,407 --> 00:01:58,240 Maar die doel van hierdie programmeertaal 42 00:01:58,240 --> 00:02:01,570 is om 'n navraag van 'n databasis te vra inligting van 'n databasis, 43 00:02:01,570 --> 00:02:04,480 vind inligting in 'n databasis, en so aan. 44 00:02:04,480 --> 00:02:08,449 >> Ons het ook in CS50-- en dit is 'n baie algemene platform, is dit genoem MySQL. 45 00:02:08,449 --> 00:02:10,600 Dit is wat ons gebruik in die kursus. 46 00:02:10,600 --> 00:02:12,880 Dit is 'n oop bron platform wat bepaal 47 00:02:12,880 --> 00:02:16,732 'n sogenaamde relasionele database-- 'n databasis, effektief. 48 00:02:16,732 --> 00:02:18,440 Ons hoef nie te kry in te veel detail 49 00:02:18,440 --> 00:02:20,930 oor wat 'n relasionele databasis is. 50 00:02:20,930 --> 00:02:24,650 Maar die SQL taal is baie meesters in die werk 51 00:02:24,650 --> 00:02:29,760 met MySQL en ander soortgelyke style van relasionele databasisse. 52 00:02:29,760 --> 00:02:34,010 >> En baie installasies van MySQL kom met iets 53 00:02:34,010 --> 00:02:37,760 genoem phpMyAdmin, wat is 'n grafiese gebruikerskoppelvlak 54 00:02:37,760 --> 00:02:40,970 interface-- n GUI-- dat maak dit 'n bietjie meer 55 00:02:40,970 --> 00:02:44,410 gebruikersvriendelik te voer databasis navrae, 56 00:02:44,410 --> 00:02:48,980 omdat databasisse is nie net gebruik deur gevorderde programmeerders, reg? 57 00:02:48,980 --> 00:02:51,510 Soms is daar hierdie klein besighede, 58 00:02:51,510 --> 00:02:53,900 en hulle kan nie bekostig om huur 'n span van programmeerders, 59 00:02:53,900 --> 00:02:56,700 maar hulle moet nog steeds om te stoor inligting in 'n databasis. 60 00:02:56,700 --> 00:02:59,300 >> Iets soos phpMyAdmin maak dit baie maklik vir iemand 61 00:02:59,300 --> 00:03:03,630 wat nog nooit tevore geprogrammeer haal en vertroud te raak met die manier waarop 62 00:03:03,630 --> 00:03:07,710 om te werk met 'n databasis. 63 00:03:07,710 --> 00:03:11,800 Die probleem is, phpMyAdmin, terwyl dit is 'n fantastiese instrument vir leer 64 00:03:11,800 --> 00:03:14,850 oor databasisse, is dit handleiding. 65 00:03:14,850 --> 00:03:18,050 Jy gaan hê om aan te meld in dit en voer opdragte en tipe 66 00:03:18,050 --> 00:03:19,910 dinge in die hand. 67 00:03:19,910 --> 00:03:23,160 >> En soos ons weet uit ons voorbeeld op PHP web ontwikkeling, 68 00:03:23,160 --> 00:03:26,550 om te hand te doen dinge op ons webwerf, 69 00:03:26,550 --> 00:03:30,970 as ons wil 'n dinamiese, aktiewe reageer webwerf, miskien nie die beste benadering. 70 00:03:30,970 --> 00:03:33,980 Ons wil graag 'n manier om uit te vind hierdie dalk een of ander manier te outomatiseer. 71 00:03:33,980 --> 00:03:37,864 En SQL sal ons in staat stel om dit te doen. 72 00:03:37,864 --> 00:03:39,780 So wanneer ons gaan begin werk met SQL, 73 00:03:39,780 --> 00:03:41,220 moet ons eers 'n het databasis te werk. 74 00:03:41,220 --> 00:03:42,510 Skep van 'n databasis iets wat jy waarskynlik 75 00:03:42,510 --> 00:03:45,350 sal doen in phpMyAdmin, want jy sal net nodig om dit weer te doen, 76 00:03:45,350 --> 00:03:49,690 en die sintaksis om dit te doen is 'n baie meer eenvoudig. 77 00:03:49,690 --> 00:03:51,940 Dit is 'n baie makliker om dit te doen in 'n grafiese gebruikerskoppelvlak 78 00:03:51,940 --> 00:03:53,520 as uit tik dit as 'n opdrag. 79 00:03:53,520 --> 00:03:55,186 Die opdrag kan 'n bietjie omslagtig te kry. 80 00:03:55,186 --> 00:03:58,889 Net so, die skep van 'n tafel kan kry nogal 'n bietjie omslagtig as well. 81 00:03:58,889 --> 00:04:01,930 En so goed soos die skep van 'n databasis en die skep van 'n tafel, wat jy 82 00:04:01,930 --> 00:04:06,270 waarskynlik net gaan once-- doen een keer per tafel, een keer per database-- 83 00:04:06,270 --> 00:04:09,040 dit is OK om dit te doen in 'n grafiese koppelvlak. 84 00:04:09,040 --> 00:04:11,570 In die proses van skep van 'n tafel, jy sal 85 00:04:11,570 --> 00:04:14,840 het ook al die spesifiseer kolomme wat sal wees in daardie tafel. 86 00:04:14,840 --> 00:04:18,149 Watter soort inligting het jy wil om te stoor in die tabel? 87 00:04:18,149 --> 00:04:24,520 Miskien se naam 'n gebruiker en datum van geboorte, wagwoord gebruiker ID-nommer, en miskien 88 00:04:24,520 --> 00:04:26,170 stad en die staat, reg? 89 00:04:26,170 --> 00:04:30,080 >> En elke keer as ons wil 'n gebruiker by te voeg die databasis, ons wil al ses kry 90 00:04:30,080 --> 00:04:31,890 van daardie stukkies inligting. 91 00:04:31,890 --> 00:04:34,840 En ons doen deur die byvoeging rye na die tafel. 92 00:04:34,840 --> 00:04:37,800 Sodat ons eers 'n databasis te skep, dan skep ons 'n tafel. 93 00:04:37,800 --> 00:04:40,100 As deel van die skep van 'n tafel, ons vra 94 00:04:40,100 --> 00:04:44,280 elke kolom spesifiseer dat Ons wil graag in hierdie tabel. 95 00:04:44,280 --> 00:04:47,247 En dan as ons begin om by te voeg inligting aan die databasis 96 00:04:47,247 --> 00:04:49,580 en navraag die databasis van meer generally-- nie net toe te voeg, 97 00:04:49,580 --> 00:04:51,610 maar alles wat ons do-- ons sal die hantering 98 00:04:51,610 --> 00:04:58,870 met rye van die tabel, wat een inligting gebruiker van die hele stel. 99 00:04:58,870 --> 00:05:03,210 >> So elke SQL kolom in staat is om hou data van 'n spesifieke tipe data. 100 00:05:03,210 --> 00:05:06,560 Sodat ons soort van hierdie uitgeskakel idee van tipes data in PHP, 101 00:05:06,560 --> 00:05:08,747 maar hulle is weer hier in SQL. 102 00:05:08,747 --> 00:05:10,080 En daar is 'n baie tipes data. 103 00:05:10,080 --> 00:05:13,420 Hier is net 20 van hulle, maar dit is nie eens almal van hulle. 104 00:05:13,420 --> 00:05:16,240 So het ons idees soos INTs-- Integers-- ons weet waarskynlik 105 00:05:16,240 --> 00:05:17,760 dat hierdie kolom heelgetalle kan hou. 106 00:05:17,760 --> 00:05:21,077 En daar is variasies thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Miskien het ons nie altyd nodig vier byt. 108 00:05:22,660 --> 00:05:26,800 Miskien moet ons agt grepe, en so het ons kan hierdie variasies op heelgetalle gebruik 109 00:05:26,800 --> 00:05:28,510 om 'n bietjie meer ruimte doeltreffend. 110 00:05:28,510 --> 00:05:31,899 Ons kan desimale getalle te doen, ons kan doen swaai punt nommers. 111 00:05:31,899 --> 00:05:32,940 Dit is redelik soortgelyk. 112 00:05:32,940 --> 00:05:34,773 Daar is 'n paar verskille, en as jy sou 113 00:05:34,773 --> 00:05:37,330 wil om te kyk die SQL soort gids, jy 114 00:05:37,330 --> 00:05:40,670 kan sien wat die effense verskille tussen hulle. 115 00:05:40,670 --> 00:05:43,250 >> Miskien wil ons stoor inligting oor die datum en tyd. 116 00:05:43,250 --> 00:05:47,047 Miskien is ons die dop van wanneer die gebruiker by ons webwerf, 117 00:05:47,047 --> 00:05:48,880 en so miskien wil ons om 'n kolom wat het 118 00:05:48,880 --> 00:05:52,820 'n datum, tyd of 'n tyd stempel wat dui wanneer die gebruiker eintlik 119 00:05:52,820 --> 00:05:54,130 onderteken. 120 00:05:54,130 --> 00:05:56,132 Ons kan geometrieën en linestrings doen. 121 00:05:56,132 --> 00:05:57,340 Dit is eintlik pretty cool. 122 00:05:57,340 --> 00:06:01,410 Ons kon kaart uit 'n geografiese gebied met behulp van 123 00:06:01,410 --> 00:06:05,110 GIS koördineer te erf uit 'n gebied. 124 00:06:05,110 --> 00:06:08,580 So eintlik kan stoor daardie soort van inligting in 'n SQL kolom. 125 00:06:08,580 --> 00:06:11,390 >> Die teks is net reuse druppels van die teks, miskien. 126 00:06:11,390 --> 00:06:12,840 ENUMs is soort van interessant. 127 00:06:12,840 --> 00:06:16,080 Hulle het eintlik bestaan ​​in C. Ons doen nie praat oor hulle, want hulle is nie 128 00:06:16,080 --> 00:06:19,110 vreeslik algemeen gebruik, ten minste CS50. 129 00:06:19,110 --> 00:06:22,680 Maar dit is 'n versyferde data tipe, wat in staat is om te hou beperk waardes. 130 00:06:22,680 --> 00:06:25,940 >> 'N baie goeie voorbeeld hier sou wees om 'n enum skep waar die sewe 131 00:06:25,940 --> 00:06:29,394 Moontlike waardes is Sondag, Maandag, Dinsdag, Woensdag, Donderdag, Vrydag, 132 00:06:29,394 --> 00:06:30,060 Saterdag, reg? 133 00:06:30,060 --> 00:06:33,311 Dat die tipe data Dag van Week bestaan ​​nie, 134 00:06:33,311 --> 00:06:35,310 maar ons kan 'n te skep vervat tipe data soos 135 00:06:35,310 --> 00:06:39,400 dat kolom net ooit kan hou een van die sewe moontlike waardes. 136 00:06:39,400 --> 00:06:44,300 Ons het almal vervat van die moontlike waardes. 137 00:06:44,300 --> 00:06:47,630 >> Dan het ons CHAR en VARCHAR, en ek het hierdie groen kleur 138 00:06:47,630 --> 00:06:49,505 want ons is eintlik gaan om 'n tweede neem 139 00:06:49,505 --> 00:06:51,950 om te praat oor die verskil tussen hierdie twee dinge. 140 00:06:51,950 --> 00:06:55,780 So CHAR, in teenstelling met C waar CHAR was 'n enkele karakter, 141 00:06:55,780 --> 00:07:00,730 in SQL n CHAR verwys na 'n vaste lengte string. 142 00:07:00,730 --> 00:07:02,620 En toe ons dit skep kolom, het ons eintlik 143 00:07:02,620 --> 00:07:05,070 kan die lengte van die string te spesifiseer. 144 00:07:05,070 --> 00:07:08,080 >> So in hierdie voorbeeld, Ons kan sê CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Dit beteken dat elke element van daardie kolom 146 00:07:11,190 --> 00:07:13,910 sal bestaan ​​uit 10 grepe van inligting. 147 00:07:13,910 --> 00:07:15,770 Nie meer nie, niks minder nie. 148 00:07:15,770 --> 00:07:21,780 So as ons probeer en sit in 'n 15 bietjie of 'n 15 karakter element 149 00:07:21,780 --> 00:07:25,340 of waarde in hierdie kolom, ons net die eerste 10. 150 00:07:25,340 --> 00:07:27,290 As ons in die twee karakter lang waarde 151 00:07:27,290 --> 00:07:30,700 ons gaan die twee het karakters, en dan agt nul byt. 152 00:07:30,700 --> 00:07:34,990 Ons sal nooit meer doeltreffend as dit. 153 00:07:34,990 --> 00:07:37,727 >> A VARCHAR is soort van soos ons idee van 'n string 154 00:07:37,727 --> 00:07:39,560 dat ons vertroud met van C of van PHP. 155 00:07:39,560 --> 00:07:40,830 Dit is 'n veranderlike lengte string. 156 00:07:40,830 --> 00:07:42,560 En wanneer jy skep hierdie kolom, jy moet net 157 00:07:42,560 --> 00:07:44,860 spesifiseer die maksimum moontlike lengtes. 158 00:07:44,860 --> 00:07:49,065 So miskien 99 of 255 algemeen. 159 00:07:49,065 --> 00:07:50,440 Dit sou die maksimum lengte wees. 160 00:07:50,440 --> 00:07:52,890 En so as ons die stoor 15 karakter string, 161 00:07:52,890 --> 00:07:56,157 ons sal gebruik 15 grepe, miskien 16 grepe vir die null terminator. 162 00:07:56,157 --> 00:07:57,990 As ons 'n stoor drie karakter string, 163 00:07:57,990 --> 00:08:01,120 ons sal gebruik drie of vier grepe. 164 00:08:01,120 --> 00:08:03,050 Maar ons sal nie die volle 99. 165 00:08:03,050 --> 00:08:05,190 >> So hoekom sou ons albei? 166 00:08:05,190 --> 00:08:08,210 Wel, as ons moet uitvind hoe lang iets met 'n VARCHAR, 167 00:08:08,210 --> 00:08:10,680 ons het soort iteraat oor dit net soos ons gedoen het in C 168 00:08:10,680 --> 00:08:12,230 en uit te vind waar dit tot stilstand kom. 169 00:08:12,230 --> 00:08:15,920 Terwyl as ons weet dat alles in hierdie kolom is 10 grepe, miskien 170 00:08:15,920 --> 00:08:19,220 ons weet dat die inligting, kan ons spring 10 grepe, 10 grepe, 10 grepe, 10 grepe, 171 00:08:19,220 --> 00:08:21,790 en altyd die begin van die string. 172 00:08:21,790 --> 00:08:25,210 >> So kan ons 'n paar het vermors ruimte met 'n CHAR, 173 00:08:25,210 --> 00:08:28,510 maar miskien is daar 'n handel af van 'n beter spoed 174 00:08:28,510 --> 00:08:30,160 in opgevolg deur die databasis. 175 00:08:30,160 --> 00:08:32,330 Maar miskien wil ons die buigsaamheid van 'n VARCHAR 176 00:08:32,330 --> 00:08:36,710 in plaas van having-- As ons CHAR was 255, maar die meeste van ons gebruikers 177 00:08:36,710 --> 00:08:40,537 is net die skryf van drie of vier grepe waarde van inligting of drie of vier 178 00:08:40,537 --> 00:08:41,870 karakters werd van inligting. 179 00:08:41,870 --> 00:08:44,324 >> Maar sommige gebruikers is deur gebruik te maak die hele 255, miskien 180 00:08:44,324 --> 00:08:45,990 VARCHAR sou daar meer gepas wees. 181 00:08:45,990 --> 00:08:49,840 Dit is soort van 'n kompromis, en algemeen vir doeleindes van CS50, 182 00:08:49,840 --> 00:08:54,107 jy hoef nie te veel bekommerd wees oor Of jy nou 'CHAR of 'n VARCHAR gebruik. 183 00:08:54,107 --> 00:08:57,190 Maar in die werklike wêreld, hierdie dinge nie saak nie, want al hierdie kolomme 184 00:08:57,190 --> 00:08:59,300 neem werklike fisiese ruimte. 185 00:08:59,300 --> 00:09:04,150 En fisiese ruimte, in die werklike wêreld, kom teen 'n premie. 186 00:09:04,150 --> 00:09:06,800 >> So een ander oorweging wanneer jy die bou van 'n tafel 187 00:09:06,800 --> 00:09:09,840 is om een ​​kolom kies om te wees wat genoem word 'n primêre sleutel. 188 00:09:09,840 --> 00:09:14,350 En 'n primêre sleutel is 'n kolom waar elke enkele waarde is uniek. 189 00:09:14,350 --> 00:09:19,980 En dit beteken dat jy kan maklik kies uit 'n enkele ry net deur te kyk 190 00:09:19,980 --> 00:09:22,450 op die primêre sleutel van daardie ry. 191 00:09:22,450 --> 00:09:24,580 So byvoorbeeld, kan jy algemeen, met die gebruikers, 192 00:09:24,580 --> 00:09:27,210 wil nie twee gebruikers wat het dieselfde gebruiker ID nommer. 193 00:09:27,210 --> 00:09:28,960 En so miskien het jy baie van die inligting, 194 00:09:28,960 --> 00:09:30,793 en miskien twee gebruikers kan het dieselfde name-- 195 00:09:30,793 --> 00:09:32,650 jy het John Smith en John Smith. 196 00:09:32,650 --> 00:09:34,520 Dit is nie noodwendig 'n probleem, want daar is verskeie mense 197 00:09:34,520 --> 00:09:35,830 in die wêreld vernoem John Smith. 198 00:09:35,830 --> 00:09:40,766 Maar ons het net een gebruiker ID-nommer 10, 'n gebruiker ID-nommer 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Ons het nie 'twee gebruikers met dieselfde nommer, 200 00:09:42,640 --> 00:09:46,010 en so miskien gebruiker ID-nommers sou 'n goeie primêre sleutel wees. 201 00:09:46,010 --> 00:09:48,610 >> Ons het nie enige duplisering het, en ons kan nou uniek 202 00:09:48,610 --> 00:09:52,619 identifiseer elke enkele ry net deur te kyk na wat kolom. 203 00:09:52,619 --> 00:09:55,410 Die keuse van primêre sleutels kan eintlik maak daaropvolgende tabel bedrywighede 204 00:09:55,410 --> 00:09:59,710 'n baie makliker, want jy kan hefboom die feit dat sekere rye sal 205 00:09:59,710 --> 00:10:02,720 uniek wees, of 'n sekere kolom van jou databasis of tafel 206 00:10:02,720 --> 00:10:06,030 unieke te haal sal wees uit bepaalde rye. 207 00:10:06,030 --> 00:10:08,790 >> Jy kan ook 'n gesamentlike primêre sleutel, wat julle aanleiding kan vind 208 00:10:08,790 --> 00:10:11,720 te gebruik, wat net 'n kombinasie van twee kolomme wat 209 00:10:11,720 --> 00:10:13,280 gewaarborg om uniek te wees. 210 00:10:13,280 --> 00:10:16,410 So miskien het jy 'n kolom wat se en Bs, 211 00:10:16,410 --> 00:10:19,290 een kolom wat een, twee, en drie, maar jy sal altyd net 212 00:10:19,290 --> 00:10:23,660 'n enkele A1, 'n enkele A2, en so aan en so aan. 213 00:10:23,660 --> 00:10:28,980 Maar jy kan 'n B2 het, 'n C2, of 'n A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 So jy kan verskeie As, verskeie Bs, verskeie kinders, verskeie twees, 215 00:10:32,840 --> 00:10:38,567 maar jy kan net al ooit 'n het enkele A1, B2, C3, en so aan. 216 00:10:38,567 --> 00:10:40,400 So as ek gesê het, is 'n SQL programmeertaal, 217 00:10:40,400 --> 00:10:42,024 maar dit het 'n redelik beperkte woordeskat. 218 00:10:42,024 --> 00:10:44,880 Dit is nie heeltemal so uitgestrekte as C en PHP en ander tale 219 00:10:44,880 --> 00:10:46,350 dat ons praat in die kursus. 220 00:10:46,350 --> 00:10:49,960 Dit is meer 'n verbose taal as wat ons is 221 00:10:49,960 --> 00:10:52,789 gaan oor om te praat in hierdie video, want in hierdie video 222 00:10:52,789 --> 00:10:54,830 ons gaan om te praat oor vier operasies wat ons 223 00:10:54,830 --> 00:10:55,720 kan verrig op 'n tafel. 224 00:10:55,720 --> 00:10:56,761 >> Daar is meer as dit. 225 00:10:56,761 --> 00:10:58,730 Ons kan meer as dit te doen, maar vir ons doeleindes, 226 00:10:58,730 --> 00:11:02,250 ons oor die algemeen gaan word met behulp net vier operations-- insetsel, 227 00:11:02,250 --> 00:11:05,360 kies, te verander en verwyder. 228 00:11:05,360 --> 00:11:08,750 En jy kan waarskynlik intuïtief raai wat al vier hierdie dinge te doen. 229 00:11:08,750 --> 00:11:12,520 Maar ons sal 'n bietjie te gaan in detail oor elkeen. 230 00:11:12,520 --> 00:11:15,780 >> So vir doeleindes van hierdie video, laat ons veronderstel 231 00:11:15,780 --> 00:11:18,870 ons het die volgende twee tafels in 'n enkele databasis. 232 00:11:18,870 --> 00:11:23,460 Ons het 'n tabel genaamd Gebruikers wat vier columns-- ID-nommer, gebruikersnaam, 233 00:11:23,460 --> 00:11:25,350 wagwoord en volle naam. 234 00:11:25,350 --> 00:11:27,430 En ons het 'n tweede tafel in dieselfde databasis 235 00:11:27,430 --> 00:11:32,129 genoem Mammas wat net stoor inligting oor 'n gebruikersnaam en 'n ma. 236 00:11:32,129 --> 00:11:33,920 So vir al voorbeelde in hierdie video, sal ons 237 00:11:33,920 --> 00:11:37,945 gebruik word om hierdie databasis en daaropvolgende updates om dit te. 238 00:11:37,945 --> 00:11:40,070 So kom ons sê ons wil voeg inligting aan 'n tafel. 239 00:11:40,070 --> 00:11:44,460 Dit is wat die insetsel werking nie. 240 00:11:44,460 --> 00:11:46,550 In verduidelik al hierdie opdragte, ek gaan 241 00:11:46,550 --> 00:11:48,860 om jou te gee 'n algemene geraamte te gebruik. 242 00:11:48,860 --> 00:11:51,661 Omdat basies, die navrae gaan kyk mooi soortgelyke, 243 00:11:51,661 --> 00:11:54,660 ons net gaan verander effens verskillende stukkies inligting 244 00:11:54,660 --> 00:11:56,750 om verskillende dinge te doen met die tafel. 245 00:11:56,750 --> 00:11:59,200 >> So vir INSERT, die geraamte lyk dit soort van soos. 246 00:11:59,200 --> 00:12:02,230 Ons wil voeg in 'n bepaalde tafel. 247 00:12:02,230 --> 00:12:05,290 Dan het ons 'n oop hakies en 'n lys van kolomme 248 00:12:05,290 --> 00:12:08,070 wat ons wil waardes in te sit. 249 00:12:08,070 --> 00:12:10,974 Close hakies, die volgende waardes, en dan 250 00:12:10,974 --> 00:12:13,390 weer ons lys die waardes ons wil in die tabel om te sit. 251 00:12:13,390 --> 00:12:15,950 >> So 'n voorbeeld van hierdie sou die volgende wees. 252 00:12:15,950 --> 00:12:19,170 Ek wil voeg in die tafel gebruikers die volgende columns-- 253 00:12:19,170 --> 00:12:21,010 gebruikersnaam, wagwoord en die volle naam. 254 00:12:21,010 --> 00:12:25,282 So 'n nuwe ry waar ek sit in die drie kolomme en ons is 255 00:12:25,282 --> 00:12:30,030 gaan in die waardes te sit Newman, USMAIL en Newman. 256 00:12:30,030 --> 00:12:32,730 So in hierdie geval, is ek om die klein Newman 257 00:12:32,730 --> 00:12:38,710 in die kolom gebruikersnaam, wagwoord USMAIL en die volle naam kapitaal N 258 00:12:38,710 --> 00:12:41,940 Newman in die kolom die volle naam. 259 00:12:41,940 --> 00:12:44,240 >> So hier is wat die databasis lyk soos tevore. 260 00:12:44,240 --> 00:12:48,250 Hier is wat die tafel gebruikers op die top lyk soos voordat ons dit gedoen het. 261 00:12:48,250 --> 00:12:50,760 Na hierdie voer ons navraag, kry ons hierdie. 262 00:12:50,760 --> 00:12:54,790 Ons het 'n nuwe ry by die tafel. 263 00:12:54,790 --> 00:12:56,810 Maar let hierdie een ding dat ek nie spesifiseer, 264 00:12:56,810 --> 00:12:59,880 maar een of ander manier het ek nie 'n waarde het Want wat is die 12 reg hier. 265 00:12:59,880 --> 00:13:02,820 Ek het nie gesê ek wou sit ID nommer in daar. 266 00:13:02,820 --> 00:13:04,900 Ek wou gebruikersnaam sit, wagwoord volle naam. 267 00:13:04,900 --> 00:13:06,440 En ek het dit gedoen, is dit goed. 268 00:13:06,440 --> 00:13:07,760 >> Maar ek het dit ook 12. 269 00:13:07,760 --> 00:13:09,490 Hoekom het ek hierdie 12? 270 00:13:09,490 --> 00:13:12,904 Wel, dit blyk dat wanneer jy definieer 271 00:13:12,904 --> 00:13:15,570 'n kolom wat gaan wees om jou primêre sleutel, wat is gewoonlik, 272 00:13:15,570 --> 00:13:16,510 soos ek gesê het, 'n ID-nommer. 273 00:13:16,510 --> 00:13:18,718 Dit is nie altyd noodwendig gaan 'n ID-nommer wees, 274 00:13:18,718 --> 00:13:22,380 maar dit is gewoonlik 'n goeie idee om wees 'n soort van heelgetal waarde. 275 00:13:22,380 --> 00:13:25,950 Jy het 'n opsie in phpMyAdmin wanneer jy skep jou databasis 276 00:13:25,950 --> 00:13:31,130 of jou tafel om dit te stel kolom as die motor die verhoog. 277 00:13:31,130 --> 00:13:34,520 >> Wat is 'n baie goeie idee wanneer jy werk met 'n primêre sleutel, 278 00:13:34,520 --> 00:13:39,330 omdat jy elke waarde wil in daardie kolom te wees uniek. 279 00:13:39,330 --> 00:13:43,310 En as jy vergeet om te spesifiseer dit vir meer as een persoon, 280 00:13:43,310 --> 00:13:46,240 jy het nou 'n situasie waar daardie kolom is nie meer uniek. 281 00:13:46,240 --> 00:13:50,200 Jy het twee spasies, so jy kan nie meer uniek identifiseer column-- 282 00:13:50,200 --> 00:13:54,150 of jy kan nie meer uniek identifiseer 'n ry gebaseer op wat kolom. 283 00:13:54,150 --> 00:13:57,010 Dit het al van sy waarde as 'n primêre sleutel. 284 00:13:57,010 --> 00:14:02,010 >> En so glo wat ek gedoen het hier is ingestel die gebruiker ID 285 00:14:02,010 --> 00:14:07,790 kolom motor inkrement sodat elke keer as ek inligting by te voeg om die tafel, 286 00:14:07,790 --> 00:14:12,220 dit sal my outomaties gee 'n waarde vir die primêre sleutel. 287 00:14:12,220 --> 00:14:15,570 So ek kan nooit vergeet om dit te doen nie, omdat die databasis sal dit doen vir my. 288 00:14:15,570 --> 00:14:16,587 So dit is soort van mooi. 289 00:14:16,587 --> 00:14:18,670 En so dit is hoekom ons kry 12 daar, want ek het 290 00:14:18,670 --> 00:14:21,772 stel dat kolom tot motor inkrement. 291 00:14:21,772 --> 00:14:23,730 As ek iemand anders bygevoeg dit sou wees 13, as ek bygevoeg 292 00:14:23,730 --> 00:14:27,890 iemand anders dit sou wees 14, en so aan. 293 00:14:27,890 --> 00:14:30,190 >> So laat ons net doen een inplanting. 294 00:14:30,190 --> 00:14:34,530 Ons sal voeg in die tafel mammas, in die besonder, die gebruikersnaam en moeder 295 00:14:34,530 --> 00:14:37,390 kolom, die waardes Kramer en Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 En so het ons dit voor. 297 00:14:39,140 --> 00:14:41,800 Na voer ons dat SQL navraag, ons het hierdie. 298 00:14:41,800 --> 00:14:47,290 Ons het bygevoeg Kramer en Babs Kramer na die tafel mammas. 299 00:14:47,290 --> 00:14:48,350 >> So dit is die inbring. 300 00:14:48,350 --> 00:14:51,850 SELECT is wat ons gebruik om te onttrek inligting uit die tabel. 301 00:14:51,850 --> 00:14:54,390 So dit is hoe ons inligting uit die databasis. 302 00:14:54,390 --> 00:14:59,589 En so SELECT opdragte gaan wees baie dikwels gebruik in programmering. 303 00:14:59,589 --> 00:15:02,130 Die algemene framework-- die algemene geraamte lyk. 304 00:15:02,130 --> 00:15:06,550 Kies 'n stel van kolomme van 'n tafel, en dan opsioneel 305 00:15:06,550 --> 00:15:11,090 jy kan 'n condition-- spesifiseer of wat ons noem 'n tipies gesegde, 306 00:15:11,090 --> 00:15:13,010 is gewoonlik die term wat ons gebruik in SQL. 307 00:15:13,010 --> 00:15:16,490 >> Maar dit is basies wat spesifieke rye wat jy wil te kry. 308 00:15:16,490 --> 00:15:19,100 As jy wil, in plaas van om alles, smal dit af, 309 00:15:19,100 --> 00:15:20,060 dit is waar jy dit sou doen. 310 00:15:20,060 --> 00:15:22,777 En dan opsioneel, jy kan ook bestel deur 'n bepaalde kolom. 311 00:15:22,777 --> 00:15:25,860 So miskien het jy wil dinge gesorteer het alfabeties gebaseer op een kolom 312 00:15:25,860 --> 00:15:27,540 of alfabeties gebaseer op 'n ander. 313 00:15:27,540 --> 00:15:30,610 >> Weereens, waar en ORDER BY is opsioneel. 314 00:15:30,610 --> 00:15:32,681 Maar hulle sal waarskynlik useful-- veral 315 00:15:32,681 --> 00:15:34,680 WAAR sal nuttig te wees vernou sodat jy dit nie doen nie 316 00:15:34,680 --> 00:15:37,460 kry jou hele databasis terug en het om dit te verwerk, kry jy net 317 00:15:37,460 --> 00:15:39,300 die stukke dat jy omgee. 318 00:15:39,300 --> 00:15:44,932 So byvoorbeeld, ek wil dalk om te kies ID-nommer en die volle naam van die gebruikers. 319 00:15:44,932 --> 00:15:46,140 So, wat kan dit lyk? 320 00:15:46,140 --> 00:15:48,270 So hier is my gebruikers tafel. 321 00:15:48,270 --> 00:15:51,080 Ek wil idnum kies en die volle naam van die gebruikers. 322 00:15:51,080 --> 00:15:52,300 Wat gaan ek kry? 323 00:15:52,300 --> 00:15:53,580 Ek gaan om dit te kry. 324 00:15:53,580 --> 00:15:56,930 Ek het nie vernou dit af, so ek is kry die ID nommer vir elke ry 325 00:15:56,930 --> 00:16:00,850 en ek kry die volle noem van elke ry. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Wat gebeur as ek wil wagwoord kies Gebruikers WHERE-- so nou 328 00:16:05,640 --> 00:16:10,370 Ek is die toevoeging van 'n toestand, 'n predicate-- waar idnum is minder as 12. 329 00:16:10,370 --> 00:16:13,660 So hier is my databasis weer my gebruikers die tafel van die top. 330 00:16:13,660 --> 00:16:17,030 Wat gaan ek kry as ek wil kies dat die inligting, die wagwoord, 331 00:16:17,030 --> 00:16:21,550 waar die gebruiker ID of idnum is minder as 12? 332 00:16:21,550 --> 00:16:24,910 Ek gaan om dit te kry inligting terug, reg? 333 00:16:24,910 --> 00:16:29,170 Dit gebeur dat idnum is 10 minder as 12, ID-nommer 11 minder as 12. 334 00:16:29,170 --> 00:16:32,160 Ek kry die wagwoord vir diegene rye. 335 00:16:32,160 --> 00:16:33,914 Dit is wat ek gevra het. 336 00:16:33,914 --> 00:16:34,580 Wat van hierdie? 337 00:16:34,580 --> 00:16:39,170 Wat gebeur as ek wil sterre uit die kies mammas tafel waar gebruikersnaam gelyk Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, kies ster is die spesiale soort van wild card sogenaamde 339 00:16:43,780 --> 00:16:45,670 wat ons gebruik om alles te kry. 340 00:16:45,670 --> 00:16:48,620 So hulle is kies sê gebruikersnaam komma ma, wat 341 00:16:48,620 --> 00:16:51,060 gebeur die enigste te wees twee kolomme van die tabel, 342 00:16:51,060 --> 00:16:53,260 Ek kan net kies ster en kry alles 343 00:16:53,260 --> 00:16:55,030 waar die gebruikersnaam gelyk Jerry. 344 00:16:55,030 --> 00:16:59,380 En so dit is wat ek sou kry As ek daardie spesifieke navraag. 345 00:16:59,380 --> 00:17:01,810 >> Nou, databasisse groot omdat hulle toelaat 346 00:17:01,810 --> 00:17:06,074 om inligting te organiseer dalk 'n bietjie meer doeltreffend as wat ons 347 00:17:06,074 --> 00:17:06,740 anders kan. 348 00:17:06,740 --> 00:17:10,240 Ons hoef nie noodwendig te slaan elke stukkie inligting relevant 349 00:17:10,240 --> 00:17:12,230 oor 'n gebruiker in dieselfde tafel. 350 00:17:12,230 --> 00:17:13,730 Ons het twee tafels daar. 351 00:17:13,730 --> 00:17:15,734 >> Ons moet stoor naam almal se ma se, 352 00:17:15,734 --> 00:17:18,900 en miskien het ons nie sosiale sekerheid nommer, ons het die datum van geboorte. 353 00:17:18,900 --> 00:17:21,819 Dit is nie altyd nodig te wees in dieselfde tafel. 354 00:17:21,819 --> 00:17:25,339 Solank as wat ons kan definieer verhoudings tussen die tables-- 355 00:17:25,339 --> 00:17:28,440 en dit is waar dat relasionele databasis termyn soort kom 356 00:17:28,440 --> 00:17:32,130 in play-- solank ons ​​kan definieer verwantskappe tussen die tabelle, 357 00:17:32,130 --> 00:17:35,545 kan ons soort van kompartemente of abstrakte dinge 'n manier, 358 00:17:35,545 --> 00:17:37,670 waar ons het net die regtig belangrike inligting 359 00:17:37,670 --> 00:17:39,270 ons omgee in tabel van die gebruiker. 360 00:17:39,270 --> 00:17:43,220 En dan het ons aanvullende inligting of ekstra inligting in ander tafels 361 00:17:43,220 --> 00:17:48,260 dat ons terug kan koppel aan die hoof gebruikers tafel in 'n bepaalde manier. 362 00:17:48,260 --> 00:17:52,200 >> So hier het ons hierdie twee tafels, maar daar is 'n verhouding tussen hulle, 363 00:17:52,200 --> 00:17:53,010 reg? 364 00:17:53,010 --> 00:17:55,070 Dit lyk asof gebruikersnaam dalk iets wees 365 00:17:55,070 --> 00:17:59,909 wat bestaan ​​in gemeen tussen hierdie twee verskillende tafels. 366 00:17:59,909 --> 00:18:01,700 So wat as ons nou 'n situasie waar ons 367 00:18:01,700 --> 00:18:06,046 wil volle naam 'n gebruiker se kry van tafel van die gebruiker se en hul ma se 368 00:18:06,046 --> 00:18:07,170 noem van die moeder tafel? 369 00:18:07,170 --> 00:18:10,960 Ons het nie 'n manier om te kry dat as dit nou is, reg? 370 00:18:10,960 --> 00:18:17,790 Daar is nie 'n enkele tabel bevat beide volle naam en die naam moeder. 371 00:18:17,790 --> 00:18:20,400 Ons het nie daardie opsie van wat ons tot dusver gesien het. 372 00:18:20,400 --> 00:18:22,950 >> En so het ons in te voer die idee van 'n sluit. 373 00:18:22,950 --> 00:18:24,857 En sluit aan by is waarskynlik die mees complex-- 374 00:18:24,857 --> 00:18:27,940 dit is regtig mees komplekse werking ons gaan om te praat oor in die video. 375 00:18:27,940 --> 00:18:30,040 Hulle is 'n bietjie ingewikkeld, maar sodra jy die hang kry dit, 376 00:18:30,040 --> 00:18:31,248 hulle is eintlik nie te sleg nie. 377 00:18:31,248 --> 00:18:32,820 Dit is net 'n spesiale geval van 'n te kies. 378 00:18:32,820 --> 00:18:37,120 Ons gaan 'n stel van te kies kolomme van 'n tafel by 379 00:18:37,120 --> 00:18:40,650 in 'n tweede tabel op sommige gesegde. 380 00:18:40,650 --> 00:18:45,340 >> In hierdie geval, dink oor dit graag this-- tafel een is een sirkel hier, 381 00:18:45,340 --> 00:18:47,530 Tabel Twee is 'n ander sirkel hier. 382 00:18:47,530 --> 00:18:49,410 En dat gesegde deel in die middel, dit is 383 00:18:49,410 --> 00:18:51,701 soort van soos as jy dink oor as 'n Venn-diagram, wat 384 00:18:51,701 --> 00:18:52,670 het hulle in gemeen? 385 00:18:52,670 --> 00:18:55,960 Ons wil hierdie twee tabelle gebaseer op wat hulle in gemeen het 386 00:18:55,960 --> 00:19:01,230 en die skep van hierdie hipotetiese tafel dit is die samesmelting van die twee saam. 387 00:19:01,230 --> 00:19:03,480 So sal ons sien dit in 'n voorbeeld en miskien sal help 388 00:19:03,480 --> 00:19:04,521 duidelik dit 'n bietjie. 389 00:19:04,521 --> 00:19:09,260 So miskien het jy wil om te kies user.fullname en moms.mother 390 00:19:09,260 --> 00:19:13,220 Gebruikers by die mammas tafel in elke situasie 391 00:19:13,220 --> 00:19:16,790 waar die kolom gebruikersnaam is dieselfde tussen hulle. 392 00:19:16,790 --> 00:19:19,240 En dit is 'n nuwe hier sintaks, hierdie gebruiker. 393 00:19:19,240 --> 00:19:20,460 en mammas .. 394 00:19:20,460 --> 00:19:26,697 As ek doen verskeie tafels saam, ek kan 'n tafel te spesifiseer. 395 00:19:26,697 --> 00:19:29,530 Ek kan onderskei in die besonder op wat op die heel onderste daar. 396 00:19:29,530 --> 00:19:33,220 Ek kan die gebruikersnaam onderskei kolom van die tabel gebruikers 397 00:19:33,220 --> 00:19:36,010 uit die rekening van die kolom mammas tafel, wat otherwise-- is 398 00:19:36,010 --> 00:19:38,070 as ons net sê gebruikersnaam gelyk gebruikersnaam, wat nie regtig 399 00:19:38,070 --> 00:19:38,970 beteken nie. 400 00:19:38,970 --> 00:19:41,440 Ons wil om dit te doen waar hulle pas. 401 00:19:41,440 --> 00:19:46,080 >> So kan ek die tafel en die spesifiseer kolom naam in die geval van 'n situasie 402 00:19:46,080 --> 00:19:48,370 waar dit onduidelik sou wees wat ek praat. 403 00:19:48,370 --> 00:19:51,880 So dit is al wat ek doen is daar ek is sê hierdie kolom van die tabel, 404 00:19:51,880 --> 00:19:54,020 en dat dit baie duidelik. 405 00:19:54,020 --> 00:19:56,810 So weer, ek kies die volle naam en die naam van die moeder se 406 00:19:56,810 --> 00:20:00,950 van die tafel gebruikers met mekaar verbind met die tabel mammas in elke situasie 407 00:20:00,950 --> 00:20:05,960 waar hulle deel wat column-- hulle deel wat gebruikersnaam idee. 408 00:20:05,960 --> 00:20:08,580 >> So hier is die tafels wat ons voorheen gehad het. 409 00:20:08,580 --> 00:20:12,210 Dit is die toestand van ons databasis soos dit nou bestaan. 410 00:20:12,210 --> 00:20:16,390 Die inligting wat ons onttrek is dit om te begin met. 411 00:20:16,390 --> 00:20:19,820 Dit is die nuwe tabel ons gaan skep die kombinasie van hierdie saam. 412 00:20:19,820 --> 00:20:23,585 En sien ons is nie die klem op Newman se ry in die tafel van die gebruiker se 413 00:20:23,585 --> 00:20:25,960 en ons is nie die klem op Kramer se ry in die tabel mammas 414 00:20:25,960 --> 00:20:31,250 want nie een bestaan ​​in beide sets-- in beide tabelle. 415 00:20:31,250 --> 00:20:36,260 >> Die enigste inligting wat in die algemeen tussen hulle is Jerry is in beide tafels 416 00:20:36,260 --> 00:20:39,100 en gcostanza is in beide tabelle. 417 00:20:39,100 --> 00:20:42,620 En so wanneer ons dit doen die SQL te sluit, wat ons get-- en ons doen eintlik kry hierdie. 418 00:20:42,620 --> 00:20:44,830 Dit is soort van 'n tydelike veranderlike. 419 00:20:44,830 --> 00:20:47,330 Dit is soos 'n hipotetiese samesmelting van die twee tafels. 420 00:20:47,330 --> 00:20:49,930 Ons het eintlik iets te kry soos hierdie, waar 421 00:20:49,930 --> 00:20:54,730 ons het saam saamgesmelt die tafels op die inligting wat hulle in gemeen het. 422 00:20:54,730 --> 00:20:58,334 >> So sien dat users.username en moms.username kolom 423 00:20:58,334 --> 00:20:59,250 dit is presies dieselfde. 424 00:20:59,250 --> 00:21:01,820 Dit was die inligting wat was in ooreenstemming van die gebruikers 425 00:21:01,820 --> 00:21:02,890 tafel en die tafel mammas. 426 00:21:02,890 --> 00:21:04,270 En so het ons saamgevoeg hulle saam. 427 00:21:04,270 --> 00:21:06,919 Ons weggegooi Kramer omdat hy nie bestaan ​​het nie in die tabel gebruikers, 428 00:21:06,919 --> 00:21:09,710 en ons weggegooi Newman, want Hy het nie bestaan ​​nie in die tabel mammas. 429 00:21:09,710 --> 00:21:16,450 So, dit is die hipotetiese samesmelting die gebruik van die JOIN werking van te kies. 430 00:21:16,450 --> 00:21:21,250 >> En dan is ons op soek na die volle naam gebruiker en moeder van die gebruiker 431 00:21:21,250 --> 00:21:24,999 en so is dit die inligting wat sou ons kry van die algehele navraag 432 00:21:24,999 --> 00:21:26,040 dat ons met kies. 433 00:21:26,040 --> 00:21:28,873 Sodat ons by die tafels saam en ons die twee kolomme onttrek, 434 00:21:28,873 --> 00:21:31,610 en so dit is wat ons sou kry. 435 00:21:31,610 --> 00:21:33,370 Maar SQL sluit 'n soort van ingewikkeld. 436 00:21:33,370 --> 00:21:36,770 Jy sal waarskynlik nie doen nie te veel, maar net 'n idee van die skelet 437 00:21:36,770 --> 00:21:41,992 wat jy kan gebruik om saam te smelt twee tafels saam as jy nodig het om. 438 00:21:41,992 --> 00:21:43,700 Die laaste twee is 'n bietjie eenvoudiger Ek belowe. 439 00:21:43,700 --> 00:21:48,040 So opdatering, kan ons UPDATE gebruik om inligting te verander in 'n tabel. 440 00:21:48,040 --> 00:21:53,880 Die algemene formaat is UPDATE paar tafel, SET sommige kolom om waarde 441 00:21:53,880 --> 00:21:55,540 Waar sommige gesegde tevrede is. 442 00:21:55,540 --> 00:21:57,850 So byvoorbeeld, kan ons wil na die tafel gebruikers werk 443 00:21:57,850 --> 00:22:04,400 en stel die wagwoord om yada yada, waar die ID-nommer is 10. 444 00:22:04,400 --> 00:22:06,400 >> So in hierdie geval, ons is opdatering van die tafel gebruikers. 445 00:22:06,400 --> 00:22:08,275 Die ID-nommer is 10 vir dat die eerste ry daar, 446 00:22:08,275 --> 00:22:10,690 en ons wil hê dat die werk wagwoord yada yada. 447 00:22:10,690 --> 00:22:12,170 En so dit is wat sou gebeur. 448 00:22:12,170 --> 00:22:13,628 Dit is redelik eenvoudig, reg? 449 00:22:13,628 --> 00:22:17,990 Dit is net 'n baie eenvoudige verandering aan die tafel. 450 00:22:17,990 --> 00:22:22,250 >> DELETE is die operasie ons gebruik om te vanaf 'n tabel te verwyder inligting. 451 00:22:22,250 --> 00:22:24,817 Verwyder uit tabel WHERE sommige gesegde tevrede is. 452 00:22:24,817 --> 00:22:26,900 Ons wil verwyder uit die gebruikers tafel byvoorbeeld 453 00:22:26,900 --> 00:22:28,254 waar die gebruikersnaam is Newman. 454 00:22:28,254 --> 00:22:31,420 Jy kan seker raai wat gaan hier gebeur nadat ons dat SQL 455 00:22:31,420 --> 00:22:35,790 navraag, Newman is weg van die tafel. 456 00:22:35,790 --> 00:22:40,460 >> So al hierdie bedrywighede, soos ek gesê het, is baie maklik om te doen in phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Dit is 'n baie gebruikersvriendelike koppelvlak. 458 00:22:43,020 --> 00:22:45,930 Maar dit vereis handleiding moeite. 459 00:22:45,930 --> 00:22:47,840 Ons wil nie die handleiding moeite diens. 460 00:22:47,840 --> 00:22:51,280 Ons wil ons programme om doen dit vir ons, reg? 461 00:22:51,280 --> 00:22:53,190 Sodat ons kan wil doen hierdie programmaties. 462 00:22:53,190 --> 00:22:56,410 Ons wil SQL inkorporeer en iets anders om dit vir ons te doen. 463 00:22:56,410 --> 00:23:02,710 >> Maar wat het ons gesien dat toelaat ons programmaties iets te doen? 464 00:23:02,710 --> 00:23:03,690 Ons het gesien PHP, reg? 465 00:23:03,690 --> 00:23:05,760 Dit stel 'n paar dinamika in ons programme. 466 00:23:05,760 --> 00:23:10,430 En so gelukkig, SQL en PHP speel baie mooi saam. 467 00:23:10,430 --> 00:23:13,230 Daar is 'n funksie in PHP genoem navraag, wat gebruik kan word. 468 00:23:13,230 --> 00:23:15,870 En jy kan slaag as die parameter of die argument 469 00:23:15,870 --> 00:23:19,210 'n SQL navraag navraag wat jy wil uit te voer. 470 00:23:19,210 --> 00:23:23,250 En PHP sal dit doen namens jou. 471 00:23:23,250 --> 00:23:25,564 >> So nadat jy verbind om jou databasis met PHP, 472 00:23:25,564 --> 00:23:26,980 daar is twee primêre jy dit doen. 473 00:23:26,980 --> 00:23:29,230 Daar is iets genoem MySQLi en iets genaamd BOB. 474 00:23:29,230 --> 00:23:31,063 Ons sal nie in 'n groot gaan bedrag detail daar. 475 00:23:31,063 --> 00:23:32,957 In CS50 gebruik ons ​​BOB. 476 00:23:32,957 --> 00:23:34,790 Nadat jy verbind om jou databasis, jy 477 00:23:34,790 --> 00:23:40,980 kan dan navrae jou databasis deur verby die navrae as argumente 478 00:23:40,980 --> 00:23:42,730 PHP funksies. 479 00:23:42,730 --> 00:23:46,460 En wanneer jy dit doen, slaan jy die resultaat in 'n assosiatiewe skikking. 480 00:23:46,460 --> 00:23:50,290 >> En ons weet hoe om te werk met assosiatiewe skikkings in PHP. 481 00:23:50,290 --> 00:23:52,630 So ek dalk iets sê soos this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 dit is in PHP-- gelyk navraag. 483 00:23:55,470 --> 00:23:57,660 En dan binnekant van die navraag funksie wat argument 484 00:23:57,660 --> 00:24:00,130 dat ek verby om 'n navraag wat lyk soos SQL. 485 00:24:00,130 --> 00:24:01,160 En in die feit dat is SQL. 486 00:24:01,160 --> 00:24:05,700 Dit is die vraag wat ek nie wil string wil uit te voer op my databasis. 487 00:24:05,700 --> 00:24:09,250 >> En so in die rooi, dit is PHP. 488 00:24:09,250 --> 00:24:11,890 Dit is SQL dat ek die integrasie in PHP deur 489 00:24:11,890 --> 00:24:15,020 dit die argument om die navraag te funksioneer. 490 00:24:15,020 --> 00:24:19,640 Ek wil die volle naam kies uit gebruikers waar ID-nommer gelyk aan 10. 491 00:24:19,640 --> 00:24:22,560 En dan miskien nadat ek dit gedoen het, Ek kan iets soos hierdie te sê. 492 00:24:22,560 --> 00:24:25,550 Ek wil om uit te druk die Dankie vir die boodskap in te teken. 493 00:24:25,550 --> 00:24:32,530 >> En ek wil dit interpolate-- Ek wil om interpoleer $ resultate volle naam. 494 00:24:32,530 --> 00:24:36,280 En so dit is hoe ek werk met wat assosiatiewe skikking wat ek terug. 495 00:24:36,280 --> 00:24:39,730 $ resultate volle naam sou basies beland uit te druk, 496 00:24:39,730 --> 00:24:42,870 Dankie vir die aanteken in, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Dit was die volle naam waar idnum gelyk aan 10. 498 00:24:46,570 --> 00:24:48,850 >> En so al wat ek doen is ek now-- Ek gestoor 499 00:24:48,850 --> 00:24:52,780 my navraag, is die resultate van my navraag en die resultate in 'n assosiatiewe skikking, 500 00:24:52,780 --> 00:24:56,330 en die volle naam is die naam van die kolom ek besig was om vir. 501 00:24:56,330 --> 00:25:01,010 So dit is my sleutel in die resultate assosiatiewe skikking wat ek wil. 502 00:25:01,010 --> 00:25:05,930 So Dankie vir afteken, $ resultate, die volle naam sal druk, sal vashou 503 00:25:05,930 --> 00:25:08,654 reg in tussen die krullerige draadjies, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 En ek sal graag die druk van die boodskap Dankie vir die aanteken in Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nou, ons het waarskynlik nie wil hê om hard te kode dinge soos wat in, reg? 506 00:25:16,652 --> 00:25:19,860 Wil ons dalk iets soos gedrukte doen f, waar ons kan vervang en miskien 507 00:25:19,860 --> 00:25:22,443 versamel verskillende inligting, of miskien het die navraag proses 508 00:25:22,443 --> 00:25:23,370 verskillende inligting. 509 00:25:23,370 --> 00:25:27,920 En so navraag, die navraag funksie het hierdie idee van soort substitusies 510 00:25:27,920 --> 00:25:32,310 baie soortgelyk aan druk f persent s en persent c, is vraagtekens. 511 00:25:32,310 --> 00:25:34,290 >> En ons kan die vraag gebruik punte baie analoog 512 00:25:34,290 --> 00:25:38,400 druk f om plaasvervanger veranderlikes. 513 00:25:38,400 --> 00:25:44,120 So miskien is jou gebruiker aangemeld vroeër, en jy hul gebruiker ID-nommer gered 514 00:25:44,120 --> 00:25:51,710 in $ _session van PHP super globale in die sleutel ID. 515 00:25:51,710 --> 00:25:55,947 So miskien nadat hulle aangeteken het, jy $ _session ID gelyk aan 10 stel, 516 00:25:55,947 --> 00:25:58,280 ekstrapolasie van die voorbeeld ons het net gesien 'n tweede gelede. 517 00:25:58,280 --> 00:26:01,960 >> En so wanneer ons eintlik voer Hierdie navraag die resultate nou, 518 00:26:01,960 --> 00:26:08,440 dit sou prop in 10, of wat ook al die $ _session ID waarde is. 519 00:26:08,440 --> 00:26:10,790 En sodat ons toelaat om 'n bietjie meer dinamiese. 520 00:26:10,790 --> 00:26:12,699 Ons is nie hard kodering dinge in nie. 521 00:26:12,699 --> 00:26:14,490 Ons spaar inligting iewers en dan 522 00:26:14,490 --> 00:26:18,924 ons kan daardie inligting weer te gebruik soort veralgemeen wat ons wil doen, 523 00:26:18,924 --> 00:26:21,090 en net plug-in en verandering die gedrag van ons blad 524 00:26:21,090 --> 00:26:26,489 gebaseer op wat die gebruiker se ID-nommer eintlik is nadat hulle in geteken nie. 525 00:26:26,489 --> 00:26:28,530 Dit is ook moontlik, al is, dat jou resultate stel 526 00:26:28,530 --> 00:26:30,840 kan bestaan ​​uit verskeie rye. 527 00:26:30,840 --> 00:26:33,990 In welke geval, jy het 'n verskeidenheid van arrays-- 528 00:26:33,990 --> 00:26:35,334 'n verskeidenheid van assosiatiewe skikkings. 529 00:26:35,334 --> 00:26:37,000 En jy moet net Itereer deur dit. 530 00:26:37,000 --> 00:26:41,950 En ons weet hoe om Itereer deur 'n verskeidenheid in PHP, reg? 531 00:26:41,950 --> 00:26:45,600 So hier is waarskynlik die mees komplekse ding wat ons tot dusver gesien het. 532 00:26:45,600 --> 00:26:49,640 Dit integreer eintlik drie tale saam. 533 00:26:49,640 --> 00:26:52,920 >> Hier in rooi, dit is 'n HTML. 534 00:26:52,920 --> 00:26:56,872 Ek glo dit is starting-- 'n uittreksel van 'n paar HTML wat ek het. 535 00:26:56,872 --> 00:26:59,580 Ek begin 'n nuwe paragraaf wat sê die mammas van Seinfeld TV's. 536 00:26:59,580 --> 00:27:02,350 En dan onmiddellik daarna Ek begin 'n tafel. 537 00:27:02,350 --> 00:27:06,060 En dan na dit, ek het 'n paar PHP, reg? 538 00:27:06,060 --> 00:27:08,229 Ek het al van hierdie PHP-kode daar. 539 00:27:08,229 --> 00:27:09,645 Ek glo gaan maak 'n navraag. 540 00:27:09,645 --> 00:27:14,180 En om die navraag te maak, gaan ek gebruik word om SELECT moeders UIT mammas. 541 00:27:14,180 --> 00:27:15,970 >> So dit is getting-- dit is SQL. 542 00:27:15,970 --> 00:27:17,300 So het die die blou is SQL. 543 00:27:17,300 --> 00:27:19,680 Die rooi sien ons 'n tweede gelede was HTML. 544 00:27:19,680 --> 00:27:21,360 En die groen hier is PHP. 545 00:27:21,360 --> 00:27:23,400 So ek maak 'n navraag om my databasis, ek is 546 00:27:23,400 --> 00:27:26,040 al die kies moeders in die tabel mammas. 547 00:27:26,040 --> 00:27:30,710 Nie net vernouing dit af na die besonder ry, ek vra vir almal van hulle. 548 00:27:30,710 --> 00:27:33,290 >> Toe ek kyk of resultaat is nie gelykes gelyk onwaar. 549 00:27:33,290 --> 00:27:37,410 Dit is net my manier van kontrole soort van as die resultate is nie gelyk aan nul 550 00:27:37,410 --> 00:27:40,260 dat ons c byvoorbeeld sou sien. 551 00:27:40,260 --> 00:27:44,000 Basies dit is net die nagaan om te maak seker dat dit eintlik het data terug. 552 00:27:44,000 --> 00:27:47,041 Want ek wil nie begin met drukwerk uit data as ek nie enige inligting te kry. 553 00:27:47,041 --> 00:27:50,690 Dan vir elke resultate as gevolg van die foreach sintaksis van PHP, al wat ek doen 554 00:27:50,690 --> 00:27:53,399 is uit te druk $ gevolg moeders. 555 00:27:53,399 --> 00:27:55,940 En so ek gaan om 'n stel te kry van al die moeders van each-- 556 00:27:55,940 --> 00:27:59,980 dit is 'n verskeidenheid van assosiatiewe arrays-- en ek druk uit 557 00:27:59,980 --> 00:28:03,649 elkeen as sy eie ry van 'n tafel. 558 00:28:03,649 --> 00:28:05,690 En dit is baie mooi veel al wat daar is om dit. 559 00:28:05,690 --> 00:28:07,750 Ek weet daar is 'n bietjie bietjie gaan hier 560 00:28:07,750 --> 00:28:13,210 in hierdie laaste voorbeeld met skikkings van arrays-- skikkings van assosiatiewe skikkings. 561 00:28:13,210 --> 00:28:17,340 Maar is dit regtig nie net kook in SQL te maak van 'n navraag, 562 00:28:17,340 --> 00:28:21,102 gewoonlik kies nadat ons reeds sit inligting in die tabel 563 00:28:21,102 --> 00:28:22,310 en dan is dit net uit te trek. 564 00:28:22,310 --> 00:28:25,710 >> En dit is wat ons sou trek in hierdie spesifieke geval. 565 00:28:25,710 --> 00:28:31,120 Ons wil al die individuele onttrek moeders van die tafel mammas. 566 00:28:31,120 --> 00:28:35,970 Ons het 'n hele reeks van hulle, en ons wil deur Itereer en druk 567 00:28:35,970 --> 00:28:37,630 elke een. 568 00:28:37,630 --> 00:28:40,510 So weer, is dit waarskynlik die mees ingewikkelde byvoorbeeld 569 00:28:40,510 --> 00:28:44,510 ons gesien omdat ons meng drie verskillende tale saam, reg? 570 00:28:44,510 --> 00:28:50,100 >> Weereens, ons het HTML hier in rooi, gemeng met 'n paar SQL hier in blou, 571 00:28:50,100 --> 00:28:52,049 gemeng met 'n paar PHP in die groen. 572 00:28:52,049 --> 00:28:53,840 Maar al hierdie speel mooi saam, dit is 573 00:28:53,840 --> 00:28:57,060 net 'n kwessie van die ontwikkeling van goeie gewoontes sodat jy kan kry 574 00:28:57,060 --> 00:28:58,780 om saam te werk om die manier waarop jy wil. 575 00:28:58,780 --> 00:29:03,790 En die enigste manier om werklik te doen wat is om te oefen, oefen, oefen. 576 00:29:03,790 --> 00:29:06,740 Ek is Doug Lloyd, dit is CS50. 577 00:29:06,740 --> 00:29:08,647