1 00:00:00,000 --> 00:00:03,493 >> [MUZIKO Ludante] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: En nia videos sur ttt disvolviĝo temoj, 4 00:00:07,100 --> 00:00:10,560 ni menciis la koncepton de datumbazo kelkajn fojojn, dekstra? 5 00:00:10,560 --> 00:00:12,700 Do datumbazon vi estas verŝajne konata kun de 6 00:00:12,700 --> 00:00:15,780 diri uzanta Microsoft Excel aŭ Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Ĝi estas vere nur organizitaj fiksita de tabloj, vicoj kaj kolumnoj. 8 00:00:20,650 --> 00:00:23,140 >> Kaj datumbazon estas kie nia retejo vendejoj 9 00:00:23,140 --> 00:00:26,760 informo kiu estas grava por nia retejo por labori konvene. 10 00:00:26,760 --> 00:00:30,150 Denove, vere komuna ekzemplo tie estas stoki salutnomoj kaj pasvortoj 11 00:00:30,150 --> 00:00:32,824 en datumbazo, tiel ke kiam uzanto protokolojn en nian retejon, 12 00:00:32,824 --> 00:00:36,690 la datumbazo eblas konsulti vidi se tiu uzanto ekzistas en la datumbazo. 13 00:00:36,690 --> 00:00:39,260 Kaj se ili estas, kontrolanta ke ilia pasvorto estas korekta. 14 00:00:39,260 --> 00:00:43,420 Kaj se ilia pasvorto estas ĝustaj, tiam ni povas doni al ili kion ajn paĝon 15 00:00:43,420 --> 00:00:45,370 ili estas petante. 16 00:00:45,370 --> 00:00:48,590 >> Do vi probable, denove, familiara kun tiu ideo de Excel aŭ Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Ni havas datumbazojn, tabloj, vicoj kaj kolumnoj. 19 00:00:52,980 --> 00:00:56,450 Kaj tio estas vere speco de la fundamenta aro 20 00:00:56,450 --> 00:00:58,470 de hierarkia kolapso tie. 21 00:00:58,470 --> 00:00:59,800 Do jen Excel kalkultabelo. 22 00:00:59,800 --> 00:01:02,640 Kaj se vi iam malfermis ĉi aŭ alia simila programo 23 00:01:02,640 --> 00:01:06,780 vi scias, ke tiuj tie estas rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Tiuj estas kolumnojn. 25 00:01:08,760 --> 00:01:11,790 >> Eble cxi tie, kvankam vi Ne uzu tiun funkcion terure much-- 26 00:01:11,790 --> 00:01:15,370 Mi zomi in-- ni havas tiu ideo de folio. 27 00:01:15,370 --> 00:01:17,930 Do eble tiuj tukoj, se Mi alterni tien kaj reen, 28 00:01:17,930 --> 00:01:21,600 estas malsamaj tabloj ke ekzistas en mia datumbazo. 29 00:01:21,600 --> 00:01:25,210 Kaj se ni daŭrigas la ekzemplon ĉiuj Parenteze, la nomo de tiu datumbazo 30 00:01:25,210 --> 00:01:26,940 Estas Libro 1. 31 00:01:26,940 --> 00:01:28,710 Eble mi havas Libro 2 kaj Libro 3. 32 00:01:28,710 --> 00:01:33,270 Do ĉiu Excel dosiero estas datenbazo, ĉiu folio estas tabulo, 33 00:01:33,270 --> 00:01:39,530 kaj ene de ĉiu tablo mi devas tiu ideo de vicoj kaj kolumnoj. 34 00:01:39,530 --> 00:01:41,900 >> Do kiel mi laboras kun tiun datumbazon? 35 00:01:41,900 --> 00:01:43,630 Kiel igi informojn el ĝi? 36 00:01:43,630 --> 00:01:47,540 Nu ekzistas lingvo nomata SQL-- kiun mi kutime simple nomas Sequel-- 37 00:01:47,540 --> 00:01:50,010 kaj ĝi staras por la Strukturita Query Language. 38 00:01:50,010 --> 00:01:52,981 Kaj estas komputila programlingvo sed estas sufiĉe limigita programado 39 00:01:52,981 --> 00:01:53,480 lingvo. 40 00:01:53,480 --> 00:01:56,407 Ĝi ne estas tute kiel aliaj ke ni laboris kun. 41 00:01:56,407 --> 00:01:58,240 Sed la celo de ĉi tiu programlingvo 42 00:01:58,240 --> 00:02:01,570 estas konsulti datumbazon, por petu informon de datumbazo, 43 00:02:01,570 --> 00:02:04,480 trovi informojn en datenbazo, kaj tiel plu. 44 00:02:04,480 --> 00:02:08,449 >> Ni ankaŭ, en CS50-- kaj estas tre komuna platformo, ĝi nomiĝas MySQL. 45 00:02:08,449 --> 00:02:10,600 Tion ni uzas en la kurso. 46 00:02:10,600 --> 00:02:12,880 Ĝi estas malferma fonto platformo kiu establu 47 00:02:12,880 --> 00:02:16,732 tn interrilata database-- datumbazo, efike. 48 00:02:16,732 --> 00:02:18,440 Ni ne bezonos akiri en tro da detalo 49 00:02:18,440 --> 00:02:20,930 sur kia rilata datumbazo estas. 50 00:02:20,930 --> 00:02:24,650 Sed la SQL lingvo tre lerta pri laboranta 51 00:02:24,650 --> 00:02:29,760 kun MySQL kaj aliaj similaj stiloj de interrilataj datumaroj. 52 00:02:29,760 --> 00:02:34,010 >> Kaj multaj instalaĵoj de MySQL veni kun io 53 00:02:34,010 --> 00:02:37,760 nomita phpMyAdmin, kiu estas grafika uzanto 54 00:02:37,760 --> 00:02:40,970 interface-- a GUI-- ke faras ĝin iom pli 55 00:02:40,970 --> 00:02:44,410 uzanto amika ekzekuti datumbazo pridemandojn, 56 00:02:44,410 --> 00:02:48,980 ĉar datumbazoj ne nur uzata per progresinta programistoj, dekstra? 57 00:02:48,980 --> 00:02:51,510 Kelkfoje ekzistas tiuj malgrandaj entreprenoj, 58 00:02:51,510 --> 00:02:53,900 kaj ili ne povas havigi al dungi teamon de programistoj, 59 00:02:53,900 --> 00:02:56,700 sed ili ankoraŭ bezonas stoki informojn en datumbazo. 60 00:02:56,700 --> 00:02:59,300 >> Io kiel phpMyAdmin faras tre facila por iu 61 00:02:59,300 --> 00:03:03,630 kiuj neniam planita antaŭ al repreni kaj familiarizarse kun kiel 62 00:03:03,630 --> 00:03:07,710 labori kun datumbazo. 63 00:03:07,710 --> 00:03:11,800 La problemo estas, phpMyAdmin, dum ĝi estas mirinda ilo por lernado 64 00:03:11,800 --> 00:03:14,850 pri datumbazoj, estas manlibro. 65 00:03:14,850 --> 00:03:18,050 Vi tuj devas ensaluti ĝin kaj ekzekuti komandojn kaj tipo 66 00:03:18,050 --> 00:03:19,910 aferojn en permane. 67 00:03:19,910 --> 00:03:23,160 >> Kaj kiel ni scias el niaj ekzemple sur PHP ttt programado, 68 00:03:23,160 --> 00:03:26,550 devi permane fari aferojn sur nia retejo, 69 00:03:26,550 --> 00:03:30,970 se ni volas dinamikan, aktiva respondema retejo, eble ne la plej bona alproksimiĝo. 70 00:03:30,970 --> 00:03:33,980 Ni ŝatus trovi manieron eble aŭtomatigi ĉi iel. 71 00:03:33,980 --> 00:03:37,864 Kaj SQL ebligos nin fari tion. 72 00:03:37,864 --> 00:03:39,780 Do kiam ni tuj komenci labori kun SQLa, 73 00:03:39,780 --> 00:03:41,220 ni unue bezonas havi datumbazo por labori kun. 74 00:03:41,220 --> 00:03:42,510 Krei datumbazo io vi probable 75 00:03:42,510 --> 00:03:45,350 faros en phpMyAdmin, ĉar vi nur bezonas fari tion unufoje, 76 00:03:45,350 --> 00:03:49,690 kaj la sintakson por fari tion estas multe pli simpla. 77 00:03:49,690 --> 00:03:51,940 Ĝi estas multe pli facila fari ĝin en grafika uzantinterfaco 78 00:03:51,940 --> 00:03:53,520 ol tajpi ĝin kiel komando. 79 00:03:53,520 --> 00:03:55,186 La komando povas akiri iom maloportuna. 80 00:03:55,186 --> 00:03:58,889 Simile, kreante tablo povas akiri tre iom maloportuna tiel. 81 00:03:58,889 --> 00:04:01,930 Kaj tiel aĵoj kiel krei datumbazon kaj krei tablo, kiu vi estas 82 00:04:01,930 --> 00:04:06,270 probable nur tuj faros once-- unufoje po tablo, fojo por database-- 83 00:04:06,270 --> 00:04:09,040 ĝi estas BONE fari tion en grafika interfaco. 84 00:04:09,040 --> 00:04:11,570 En la procezo de kreante tablon, vi 85 00:04:11,570 --> 00:04:14,840 ankaŭ devus specifi ĉiujn kolumnoj kiuj estos en tiu tabelo. 86 00:04:14,840 --> 00:04:18,149 Kia informo fari vi volas konservi en la tablo? 87 00:04:18,149 --> 00:04:24,520 Eble uzanto nomo kaj dato de naskiĝo, pasvorto de uzanto ID nombro, kaj eble 88 00:04:24,520 --> 00:04:26,170 urbo kaj ŝtato, ĉu ne? 89 00:04:26,170 --> 00:04:30,080 >> Kaj por ĉiufoje ni volas aldoni uzanton al la datumbazo, ni volas ricevi ĉiujn ses 90 00:04:30,080 --> 00:04:31,890 de tiuj pecoj de informo. 91 00:04:31,890 --> 00:04:34,840 Kaj ni faras tion per aldono vicoj al la tablo. 92 00:04:34,840 --> 00:04:37,800 Do ni unue krei datumbazon, tiam ni krei tabulon. 93 00:04:37,800 --> 00:04:40,100 Kiel parto de kreado tablo, Ni demandas 94 00:04:40,100 --> 00:04:44,280 specifi ĉiu kolumno kiu Ni ŝatus en tiu tabelo. 95 00:04:44,280 --> 00:04:47,247 Kaj tiam ni komencos aldoni informon al la datumbazo 96 00:04:47,247 --> 00:04:49,580 kaj konsulti la datumbazon pli generally-- ne ĝuste aldonante, 97 00:04:49,580 --> 00:04:51,610 sed ĉio alia ni do-- ni estos kontraktanta 98 00:04:51,610 --> 00:04:58,870 kun vicoj de la tablo, kiu estas unu uzanto informojn de la tuta aro. 99 00:04:58,870 --> 00:05:03,210 >> Do ĉiu SQLa kolumno kapablas tenante datumoj de aparta datumtipo. 100 00:05:03,210 --> 00:05:06,560 Do ni ia forigita ĉi ideo de datumtipoj en PHP, 101 00:05:06,560 --> 00:05:08,747 sed ili estas reen tie en SQL. 102 00:05:08,747 --> 00:05:10,080 Kaj estas multe da datumtipoj. 103 00:05:10,080 --> 00:05:13,420 Ĉi tie estas nur 20 el ili, sed ĝi estas eĉ ne ĉiuj el ili. 104 00:05:13,420 --> 00:05:16,240 Do ni havas ideojn kiel INTs-- Integers-- ni probable scias 105 00:05:16,240 --> 00:05:17,760 ke tiu kolumno povas teni entjeroj. 106 00:05:17,760 --> 00:05:21,077 Kaj estas variadoj thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Eble ni ne ĉiam bezonas kvar mordoj. 108 00:05:22,660 --> 00:05:26,800 Eble ni bezonos ok bajtoj, kaj tiel ni povas uzi ĉi tiuj variadoj sur entjeroj 109 00:05:26,800 --> 00:05:28,510 esti iom pli spaco efika. 110 00:05:28,510 --> 00:05:31,899 Ni povas fari dekumaj nombroj, ni povas fari glitpunktaj nombroj. 111 00:05:31,899 --> 00:05:32,940 Tiuj estas sufiĉe simila. 112 00:05:32,940 --> 00:05:34,773 Ekzistas kelkaj diferencoj, kaj se vi farus 113 00:05:34,773 --> 00:05:37,330 ŝatas rigardi supre la SQLa ia gvidilon 114 00:05:37,330 --> 00:05:40,670 povas vidi kion la malgrava diferencoj estas inter ili. 115 00:05:40,670 --> 00:05:43,250 >> Eble ni volas konservi informo pri dato kaj tempo. 116 00:05:43,250 --> 00:05:47,047 Eble ni konservanta trako de kiam la uzanto aliĝis nia retejo, 117 00:05:47,047 --> 00:05:48,880 kaj do eble ni volas havi kolumno tio 118 00:05:48,880 --> 00:05:52,820 daton tempo aŭ tempindiko ke indikas kiam la uzanto reale 119 00:05:52,820 --> 00:05:54,130 subskribis. 120 00:05:54,130 --> 00:05:56,132 Ni povas fari geometrioj kaj linestrings. 121 00:05:56,132 --> 00:05:57,340 Tiu estas fakte sufiĉe freŝa. 122 00:05:57,340 --> 00:06:01,410 Ni povis mapi eksteren geografia areo uzante 123 00:06:01,410 --> 00:06:05,110 GIS koordinatoj komploti ekstere areon. 124 00:06:05,110 --> 00:06:08,580 Do povas fakte stokas tiajn de informo en SQL kolumno. 125 00:06:08,580 --> 00:06:11,390 >> TEKSTO estas nur gigantaj blobs de teksto, eble. 126 00:06:11,390 --> 00:06:12,840 ENUMs estas speco de interesa. 127 00:06:12,840 --> 00:06:16,080 Ili vere ekzistas en C. Ni faras ne paroli pri ili ĉar ili ne estas 128 00:06:16,080 --> 00:06:19,110 terure komune uzata, almenaŭ CS50. 129 00:06:19,110 --> 00:06:22,680 Sed ĝi estas numeritaj datumtipo, kiu kapablas tenante limigitaj valoroj. 130 00:06:22,680 --> 00:06:25,940 >> Vere bona ekzemplo tie estus krei enumeracian kie la sep 131 00:06:25,940 --> 00:06:29,394 eblaj valoroj estas dimanĉo, lundo, Mardo, merkredo, ĵaŭdo, vendredo, 132 00:06:29,394 --> 00:06:30,060 Sabaton, dekstra? 133 00:06:30,060 --> 00:06:33,311 Ke datumtipo Tago de Semajno ne ekzistas, 134 00:06:33,311 --> 00:06:35,310 sed ni povis krei numeritaj datumtipo tia 135 00:06:35,310 --> 00:06:39,400 ke tiu kolumno povas nur iam teni unu el tiuj sep eblaj valoroj. 136 00:06:39,400 --> 00:06:44,300 Ni listigis cxiujn de la eblaj valoroj. 137 00:06:44,300 --> 00:06:47,630 >> Tiam ni havas CHAR kaj VARCHAR, kaj mi havas kolorigi tiujn verdajn 138 00:06:47,630 --> 00:06:49,505 ĉar ni estas vere tuj prenos dua 139 00:06:49,505 --> 00:06:51,950 paroli pri la diferenco inter tiuj du aferoj. 140 00:06:51,950 --> 00:06:55,780 Do char, kontraste C kie CHAR estis ununura karaktero, 141 00:06:55,780 --> 00:07:00,730 en SQLa char rilatas al fiksa longo kordo. 142 00:07:00,730 --> 00:07:02,620 Kiam ni kreas ĉi kolumno, ni reale 143 00:07:02,620 --> 00:07:05,070 povas precizigi la longon de la kordo. 144 00:07:05,070 --> 00:07:08,080 >> Do en ĉi tiu ekzemplo, ni povus diri CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Tio signifas, ke ĉiu elemento de tiu kolumno 146 00:07:11,190 --> 00:07:13,910 konsistos de 10 bajtoj de informo. 147 00:07:13,910 --> 00:07:15,770 Nenio pli, nenio malpli. 148 00:07:15,770 --> 00:07:21,780 Do se ni provas kaj metis en 15 bita aŭ 15 karaktero elemento 149 00:07:21,780 --> 00:07:25,340 aŭ valoro en tiu kolono, ni nur ricevos la unuan 10. 150 00:07:25,340 --> 00:07:27,290 Se ni metas en la du karaktero longa valoro, 151 00:07:27,290 --> 00:07:30,700 ni tuj havos la du karakteroj, kaj tiam ok nula mordoj. 152 00:07:30,700 --> 00:07:34,990 Ni neniam estos pli efika ol tio. 153 00:07:34,990 --> 00:07:37,727 >> A VARCHAR estas ia kiel nia nocio de kordo 154 00:07:37,727 --> 00:07:39,560 ke ni estas familiara kun el C aŭ de PHP. 155 00:07:39,560 --> 00:07:40,830 Estas ŝanĝiĝema longitudo kordo. 156 00:07:40,830 --> 00:07:42,560 Kiam vi kreas tiu kolumno, vi nur 157 00:07:42,560 --> 00:07:44,860 specifas la maksimuman eblan longoj. 158 00:07:44,860 --> 00:07:49,065 Do eble 99, aŭ komune 255. 159 00:07:49,065 --> 00:07:50,440 Kiu estus la maksimuma longeco. 160 00:07:50,440 --> 00:07:52,890 Kaj do se ni stokante 15 signoĉeno, 161 00:07:52,890 --> 00:07:56,157 ni uzus 15 bajtoj, eble 16 bajtoj por la nula Terminator. 162 00:07:56,157 --> 00:07:57,990 Se ni stokante a tri signoĉeno, 163 00:07:57,990 --> 00:08:01,120 ni uzus tri aŭ kvar bitokoj. 164 00:08:01,120 --> 00:08:03,050 Sed ni ne uzus la plenan 99. 165 00:08:03,050 --> 00:08:05,190 >> Do kial ni havas ambaŭ? 166 00:08:05,190 --> 00:08:08,210 Nu, se ni devas eltrovi kiom longa io estas kun VARCHAR, 167 00:08:08,210 --> 00:08:10,680 ni devos ia ripeti Super ĝi Samkiel ni faris en C 168 00:08:10,680 --> 00:08:12,230 kaj eltrovi kie ĉesas. 169 00:08:12,230 --> 00:08:15,920 Dum kiu se ni scias ke ĉiu en ĉi kolumno estas 10 bitokoj, eble 170 00:08:15,920 --> 00:08:19,220 ni scias ke informo, ni povas salti 10 bajtoj, 10 bajtoj, 10 bajtoj, 10 bajtoj, 171 00:08:19,220 --> 00:08:21,790 kaj ĉiam trovi la komencante de la kordo. 172 00:08:21,790 --> 00:08:25,210 >> Do ni havu iun malŝparita spaco kun Char, 173 00:08:25,210 --> 00:08:28,510 sed eble tie estas komerco for de havi bona rapido 174 00:08:28,510 --> 00:08:30,160 en naviganta la datumbazo. 175 00:08:30,160 --> 00:08:32,330 Sed eble ni volas la flekseblo de VARCHAR 176 00:08:32,330 --> 00:08:36,710 anstataŭ having-- Se nia CHAR estis 255, sed la plejparto de niaj uzantoj 177 00:08:36,710 --> 00:08:40,537 nur inputting tri aŭ kvar bitokoj Valoro de informo aŭ tri aŭ kvar 178 00:08:40,537 --> 00:08:41,870 karakteroj valoras de informo. 179 00:08:41,870 --> 00:08:44,324 >> Sed kelkaj uzantoj uzis la tutaj 255, eble 180 00:08:44,324 --> 00:08:45,990 VARCHAR estus pli taŭga tie. 181 00:08:45,990 --> 00:08:49,840 Ĝi estas speco de komerco ekstere, kaj ĝenerale por celoj de CS50, 182 00:08:49,840 --> 00:08:54,107 vi ne bezonas zorgi tro multe pri ĉu vi uzas char aŭ VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Sed en la reala mondo, tion ĉu gravas ĉar ĉiuj el tiuj kolumnoj 184 00:08:57,190 --> 00:08:59,300 levu fakta fizika spaco. 185 00:08:59,300 --> 00:09:04,150 Kaj fizika spaco, en la reala mondo, venas je premio. 186 00:09:04,150 --> 00:09:06,800 >> Do unu alia konsidero kiam vi konstruado tablo 187 00:09:06,800 --> 00:09:09,840 estas elekti unu kolumno esti kio nomiĝas primara ŝlosilo. 188 00:09:09,840 --> 00:09:14,350 Kaj primara ŝlosilo estas kolumna kie ĉiu unuopa valoro estas unika. 189 00:09:14,350 --> 00:09:19,980 Kaj tio signifas ke vi povas facile atentaro ununura vico ĵus per rigardado 190 00:09:19,980 --> 00:09:22,450 ĉe la primara ŝlosilo de tiu vico. 191 00:09:22,450 --> 00:09:24,580 Do ekzemple, vi ĝenerale, kun uzantoj, 192 00:09:24,580 --> 00:09:27,210 ne volas du uzantoj kiuj havi la sama uzanto ID nombro. 193 00:09:27,210 --> 00:09:28,960 Kaj do eble vi havas multajn informojn, 194 00:09:28,960 --> 00:09:30,793 kaj eble du uzantoj povas havas la saman name-- 195 00:09:30,793 --> 00:09:32,650 vi havas John Smith kaj John Smith. 196 00:09:32,650 --> 00:09:34,520 Tio ne nepre estas problemo, ĉar ekzistas multoblaj homoj 197 00:09:34,520 --> 00:09:35,830 en la mondo nomita John Smith. 198 00:09:35,830 --> 00:09:40,766 Sed ni nur havas unu uzanto ID nombro 10, unu uzanto ID numero 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Ni ne havas du uzantoj kun la sama nombro, 200 00:09:42,640 --> 00:09:46,010 kaj do eble uzanto ID nombroj estus bona primara ŝlosilo. 201 00:09:46,010 --> 00:09:48,610 >> Ni ne havas neniun duplikaton, kaj ni povas nun unike 202 00:09:48,610 --> 00:09:52,619 identigi ĉiu unuopa vico nur rigardante tiu kolumno. 203 00:09:52,619 --> 00:09:55,410 Elektante primaraj ŝlosiloj povas reale fari posta tablo operacioj 204 00:09:55,410 --> 00:09:59,710 multe pli facila ĉar vi povas utiligi la fakto ke certaj vicoj volo 205 00:09:59,710 --> 00:10:02,720 esti sola, aŭ certa kolumno de via datumbazo aŭ tablo 206 00:10:02,720 --> 00:10:06,030 Estos unika elekti el aparta vicoj. 207 00:10:06,030 --> 00:10:08,790 >> Vi povas ankaŭ havi komunan primara ŝlosilo, kiun vi povas trovi pretekston 208 00:10:08,790 --> 00:10:11,720 uzi, kiu estas nur kombino de du kolumnoj kiuj 209 00:10:11,720 --> 00:10:13,280 estas garantiita esti unika. 210 00:10:13,280 --> 00:10:16,410 Do eble vi havas unu kolumno jen Kiel kaj Bs, 211 00:10:16,410 --> 00:10:19,290 unu kolumno kiu estas unu, du, kaj tri, sed vi nur iam 212 00:10:19,290 --> 00:10:23,660 havi solan A1, ununura A2, kaj tiel plu kaj tiel plu. 213 00:10:23,660 --> 00:10:28,980 Sed vi havu B2, a C2, aŭ A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Do vi povus havi multoblajn Kiel, multoblaj Bs, multnombraj aĵoj, multnombraj duoj, 215 00:10:32,840 --> 00:10:38,567 sed vi povas nur iam havi sola A1, B2, C3, kaj tiel plu. 216 00:10:38,567 --> 00:10:40,400 Do kiel mi diris, SQL estas programlingvo, 217 00:10:40,400 --> 00:10:42,024 sed ĝi havas sufiĉe limigita vortprovizo. 218 00:10:42,024 --> 00:10:44,880 Ĝi ne estas tiom vasta kiel C kaj PHP kaj aliaj lingvoj 219 00:10:44,880 --> 00:10:46,350 ke ni parolas en la kurso. 220 00:10:46,350 --> 00:10:49,960 Ĝi estas pli parolema a lingvo ol kio ni estas 221 00:10:49,960 --> 00:10:52,789 tuj parolos pri en tiu video, ĉar en ĉi tiu video 222 00:10:52,789 --> 00:10:54,830 ni tuj parolos pri kvar operacioj kiujn ni 223 00:10:54,830 --> 00:10:55,720 povas elfari sur tablo. 224 00:10:55,720 --> 00:10:56,761 >> Ekzistas pli ol tio. 225 00:10:56,761 --> 00:10:58,730 Ni povas fari pli ol tio, sed por niaj celoj, 226 00:10:58,730 --> 00:11:02,250 ni ĝenerale iranta esti uzanta nur kvar operations-- insert, 227 00:11:02,250 --> 00:11:05,360 elektu, ĝisdatigi kaj forviŝi. 228 00:11:05,360 --> 00:11:08,750 Kaj vi povas verŝajne diveni intuicie kio ĉiuj kvar el tiuj aferojn. 229 00:11:08,750 --> 00:11:12,520 Sed ni iros en iom de detalo sur ĉiu. 230 00:11:12,520 --> 00:11:15,780 >> Do por celoj de ĉi tiu video, ni supozu 231 00:11:15,780 --> 00:11:18,870 ni havas la sekvaj du tabelojn en ununura datumbazo. 232 00:11:18,870 --> 00:11:23,460 Ni havas tablon nomita Uzantoj kiuj havas kvar columns-- ID nombro, uzantnomo, 233 00:11:23,460 --> 00:11:25,350 Pasvorto Kaj plena nomo. 234 00:11:25,350 --> 00:11:27,430 Kaj ni havas duan tablo en la sama datumbazo 235 00:11:27,430 --> 00:11:32,129 nomata Panjoj ke nur stokas informojn pri uzantonomon kaj patrinon. 236 00:11:32,129 --> 00:11:33,920 Do por ĉiuj ekzemploj en tiu video, ni 237 00:11:33,920 --> 00:11:37,945 esti uzanta tiun datumbazon kaj posta ĝisdatigojn al ĝi. 238 00:11:37,945 --> 00:11:40,070 Do diru ni volas aldoni informon al tablo. 239 00:11:40,070 --> 00:11:44,460 Tion la enigaĵo operacio faras. 240 00:11:44,460 --> 00:11:46,550 En klarigante ĉiujn tiujn ordonojn, mi tuj 241 00:11:46,550 --> 00:11:48,860 doni al vi ĝenerala skeleto uzi. 242 00:11:48,860 --> 00:11:51,661 Ĉar esence, la mendoj iras belaspektas similaj, 243 00:11:51,661 --> 00:11:54,660 ni nur tuj estos ŝanĝanta iomete malsamaj pecoj de informo 244 00:11:54,660 --> 00:11:56,750 fari malsamajn aĵojn kun la tablo. 245 00:11:56,750 --> 00:11:59,200 >> Do por INSERT, la skeleto aspektas ia kiel tiu. 246 00:11:59,200 --> 00:12:02,230 Ni volas enmeti en aparta tablo. 247 00:12:02,230 --> 00:12:05,290 Tiam ni havas malferman parentezo kaj listo de kolumnoj 248 00:12:05,290 --> 00:12:08,070 ke ni volas meti valorojn en. 249 00:12:08,070 --> 00:12:10,974 Fermi krampoj, la sekvaj valoroj, kaj tiam 250 00:12:10,974 --> 00:12:13,390 denove, ni listigas la valorojn ni volas meti en la tablo. 251 00:12:13,390 --> 00:12:15,950 >> Do ekzemplon de tiu estus la sekva. 252 00:12:15,950 --> 00:12:19,170 Mi volas enmeti en la tablo uzantoj la jenaj columns-- 253 00:12:19,170 --> 00:12:21,010 salutnomon, pasvorton, kaj fullname. 254 00:12:21,010 --> 00:12:25,282 Do nova vico kie mi estas metanta en tiuj tri kolumnoj kaj ni 255 00:12:25,282 --> 00:12:30,030 tuj metos en la valoroj Newman, USMAIL kaj Newman. 256 00:12:30,030 --> 00:12:32,730 Do en ĉi tiu kazo, mi estas metante la minuskla Newman 257 00:12:32,730 --> 00:12:38,710 en la salutnomo kolumno, la pasvorton USMAIL, kaj la plena nomo ĉefurbo N 258 00:12:38,710 --> 00:12:41,940 Newman en la fullname kolumno. 259 00:12:41,940 --> 00:12:44,240 >> Do jen kion la datumbazo aspektis kiel antaŭe. 260 00:12:44,240 --> 00:12:48,250 Jen kion la uzantoj tablo pinto similis antaŭ ni faris. 261 00:12:48,250 --> 00:12:50,760 Post ni ekzekuti tiu query, ni preni ĉi. 262 00:12:50,760 --> 00:12:54,790 Ni aldonis novan vicon al la tablo. 263 00:12:54,790 --> 00:12:56,810 Sed rimarki tiun unu aferon ke mi ne specifis, 264 00:12:56,810 --> 00:12:59,880 sed iel mi hvas valoro por, kiu estas tiu 12 ĉi tie. 265 00:12:59,880 --> 00:13:02,820 Mi ne diris mi volis metis ID nombro en tie. 266 00:13:02,820 --> 00:13:04,900 Mi volis meti uzantnomo, pasvorto fullname. 267 00:13:04,900 --> 00:13:06,440 Kaj mi faris tion, tio estas bone. 268 00:13:06,440 --> 00:13:07,760 >> Sed mi ankaŭ ricevis tiun 12. 269 00:13:07,760 --> 00:13:09,490 Kial mi ricevas ĉi 12? 270 00:13:09,490 --> 00:13:12,904 Nu, Ĝi rezultas ke kiam vi difinanta 271 00:13:12,904 --> 00:13:15,570 kolumnon kiu tuj estos viaj primara ŝlosilo, kiu estas kutime, 272 00:13:15,570 --> 00:13:16,510 kiel mi diris, IRU nombro. 273 00:13:16,510 --> 00:13:18,718 Ĝi ne estas ĉiam nepre fariĝos ID nombro, 274 00:13:18,718 --> 00:13:22,380 sed ĝi estas kutime bona ideo esti ia entjera valoro. 275 00:13:22,380 --> 00:13:25,950 Vi havas eblon en phpMyAdmin kiam vi kreas vian datumbazon 276 00:13:25,950 --> 00:13:31,130 aŭ via tablo agordi ke kolumno kiel auto pliigante. 277 00:13:31,130 --> 00:13:34,520 >> Kiu estas vere bona ideo kiam vi laboras kun primara tonalo, 278 00:13:34,520 --> 00:13:39,330 ĉar vi volas ĉiu valoro en tiu kolumno esti unika. 279 00:13:39,330 --> 00:13:43,310 Kaj se vi forgesos specifi ĝin por pli ol unu persono, 280 00:13:43,310 --> 00:13:46,240 vi nun havas situacion kie ke kolumno ne plu unika. 281 00:13:46,240 --> 00:13:50,200 Vi havas du truojn, do vi povas ne plu unike identigi column-- 282 00:13:50,200 --> 00:13:54,150 aŭ Vi ne plu povas unike identigi vicon bazita sur tiu kolumno. 283 00:13:54,150 --> 00:13:57,010 Ĝi perdis ĉiujn ĝiaj valoro kiel primara ŝlosilo. 284 00:13:57,010 --> 00:14:02,010 >> Do ŝajne, kion mi faris tie estas agordita la uzanto ID 285 00:14:02,010 --> 00:14:07,790 kolumno auto pliigo por ke ĉiu tempo mi aldonas informon al la tablo, 286 00:14:07,790 --> 00:14:12,220 ĝi aŭtomate donas al mi valoron por la primara ŝlosilo. 287 00:14:12,220 --> 00:14:15,570 Do mi neniam forgesas fari ĝin ĉar datumbazaj faros tion por mi. 288 00:14:15,570 --> 00:14:16,587 Do jen speco de agrabla. 289 00:14:16,587 --> 00:14:18,670 Kaj tiel tio estas kial ni preni 12 en tie, ĉar mi havas 290 00:14:18,670 --> 00:14:21,772 starigis tiun kolonon ĝis auto pliigo. 291 00:14:21,772 --> 00:14:23,730 Se mi aldonis iu alia Estus 13, se mi aldonis 292 00:14:23,730 --> 00:14:27,890 iu alia gxin estus 14, kaj tiel plu. 293 00:14:27,890 --> 00:14:30,190 >> Do ni nur faru unu pli inserción. 294 00:14:30,190 --> 00:14:34,530 Ni enmeti en la panjoj tablo, en Aparte, la salutnomo kaj patrino 295 00:14:34,530 --> 00:14:37,390 kolumno, la valoroj Kramer kaj Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Kaj do ni havis ĉi antaŭe. 297 00:14:39,140 --> 00:14:41,800 Post ni ekzekuti tiu SQL query, ni havas tion. 298 00:14:41,800 --> 00:14:47,290 Ni aldonis Kramer kaj Babs Kramer al la panjoj tablo. 299 00:14:47,290 --> 00:14:48,350 >> Do jen enmeto. 300 00:14:48,350 --> 00:14:51,850 ELEKTU estas kion ni uzas por ĉerpi informoj el la tablo. 301 00:14:51,850 --> 00:14:54,390 Do jen kiel ni preni informojn el la datumbazo. 302 00:14:54,390 --> 00:14:59,589 Kaj tiel ELEKTU komandoj estas iranta esti tre ofte uzita en programado. 303 00:14:59,589 --> 00:15:02,130 La ĝenerala framework-- la ĝenerala skeleto aspektas jene. 304 00:15:02,130 --> 00:15:06,550 Elektu aron de kolumnoj de tablo, kaj tiam laŭvole 305 00:15:06,550 --> 00:15:11,090 vi povas specifi condition-- aŭ kion ni tipe nomas predikato, 306 00:15:11,090 --> 00:15:13,010 estas kutime la termino ni uzas en SQL. 307 00:15:13,010 --> 00:15:16,490 >> Sed estas esence kion aparta vicoj vi volas ricevi. 308 00:15:16,490 --> 00:15:19,100 Se vi volas, anstataŭ ricevi ĉio, mallarĝigi ĝin malsupren, 309 00:15:19,100 --> 00:15:20,060 ĉi tiu estas kie vi farus tion. 310 00:15:20,060 --> 00:15:22,777 Kaj tiam laŭvole, vi povas ankaŭ ordigi per aparta kolumno. 311 00:15:22,777 --> 00:15:25,860 Do eble vi volas havi aĵojn ordo alfabete bazita sur unu kolumno 312 00:15:25,860 --> 00:15:27,540 aŭ alfabete bazita sur alia. 313 00:15:27,540 --> 00:15:30,610 >> Denove, KIE kaj ordo de estas laŭvolaj. 314 00:15:30,610 --> 00:15:32,681 Sed ili verŝajne estus useful-- aparte 315 00:15:32,681 --> 00:15:34,680 KIE estos utila al mallarĝigi malsupren tiel vi ne 316 00:15:34,680 --> 00:15:37,460 akiri via tuta datumbazo dorso kaj devas prilabori ĝin, vi simple akiri 317 00:15:37,460 --> 00:15:39,300 dispecigitan ke vi zorgas pri. 318 00:15:39,300 --> 00:15:44,932 Do ekzemple, mi eble volas elekti ID nombro kaj fullname de uzantoj. 319 00:15:44,932 --> 00:15:46,140 Do kio povus tiu aspektas? 320 00:15:46,140 --> 00:15:48,270 Do jen mia uzantoj tablo. 321 00:15:48,270 --> 00:15:51,080 Mi volas elekti idnum kaj fullname de uzantoj. 322 00:15:51,080 --> 00:15:52,300 Kion mi ricevos? 323 00:15:52,300 --> 00:15:53,580 Mi tuj akiri ĉi. 324 00:15:53,580 --> 00:15:56,930 Mi ne mallarĝigi ĝin malsupren, do mi estas atingi la ID nombro por ĉiu vico 325 00:15:56,930 --> 00:16:00,850 kaj mi ricevas la plenan nomon de ĉiu vico. 326 00:16:00,850 --> 00:16:02,210 >> BONE. 327 00:16:02,210 --> 00:16:05,640 Kio se mi volas elekti pasvorton de uzantoj WHERE-- tiel nun 328 00:16:05,640 --> 00:16:10,370 Mi aldonante kondiĉo, predicate-- kie idnum estas malpli ol 12. 329 00:16:10,370 --> 00:16:13,660 Do jen mia datumbazo denove, miaj uzantoj tablo supre. 330 00:16:13,660 --> 00:16:17,030 Kion mi ricevos, se mi volas elektu tiun informon, la pasvorto, 331 00:16:17,030 --> 00:16:21,550 kie uzanto ID aŭ idnum estas malpli ol 12? 332 00:16:21,550 --> 00:16:24,910 Mi tuj akiri tiun informo reen, dekstra? 333 00:16:24,910 --> 00:16:29,170 Okazas ke idnum estas 10, malpli ol 12, ID nombro 11 malpli ol 12. 334 00:16:29,170 --> 00:16:32,160 Mi ricevas la pasvorton por tiuj vicoj. 335 00:16:32,160 --> 00:16:33,914 Tion mi petis. 336 00:16:33,914 --> 00:16:34,580 Kio pri tio? 337 00:16:34,580 --> 00:16:39,170 Kio se mi volas elekti stelon el la panjoj tablo kie salutnomo egalas Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, unuaranga stelo estas la speciala ia sovaĝa karto tn 339 00:16:43,780 --> 00:16:45,670 ke ni uzos por akiri ĉion. 340 00:16:45,670 --> 00:16:48,620 Do ili diras unuaranga salutnomo komo patrino, kiu 341 00:16:48,620 --> 00:16:51,060 pasis al esti la sola du kolumnoj de ĉi tablo 342 00:16:51,060 --> 00:16:53,260 Mi povas nur elekti stelo kaj akiri ĉion 343 00:16:53,260 --> 00:16:55,030 kie la salutnomo egalas Jerry. 344 00:16:55,030 --> 00:16:59,380 Kaj tiel tio estas kion mi alportus se mi faris tiu aparta demando. 345 00:16:59,380 --> 00:17:01,810 >> Nun, datumbazoj grandaj ĉar ili permesas 346 00:17:01,810 --> 00:17:06,074 nin organizi informon eble iom pli efike ol ni 347 00:17:06,074 --> 00:17:06,740 alie. 348 00:17:06,740 --> 00:17:10,240 Ni ne nepre enteni ĉiun rilatan peco de informo 349 00:17:10,240 --> 00:17:12,230 pri uzanto en la sama tablo. 350 00:17:12,230 --> 00:17:13,730 Ni havis du tabeloj tie. 351 00:17:13,730 --> 00:17:15,734 >> Ni devas gardi ĉies patrino nomon 352 00:17:15,734 --> 00:17:18,900 kaj eble ni ne havas socian sekurecon numeron, ni havas lian daton de naskiĝo. 353 00:17:18,900 --> 00:17:21,819 Tio ne ĉiam bezonas esti en la sama tablo. 354 00:17:21,819 --> 00:17:25,339 Tiel longe kiel ni povas difini interrilatoj inter la tables-- 355 00:17:25,339 --> 00:17:28,440 kaj tio estas kie tiu interrilata datumbaza termino ia venas 356 00:17:28,440 --> 00:17:32,130 en play-- tiel longe kiel ni povas difini rilatoj inter la tabloj, 357 00:17:32,130 --> 00:17:35,545 ni povas ordigi de compartmentalize aŭ abstraktaj aferoj vojon, 358 00:17:35,545 --> 00:17:37,670 kie ni nur havas la vere grava informo 359 00:17:37,670 --> 00:17:39,270 ni zorgas pri en la uzanto tablo. 360 00:17:39,270 --> 00:17:43,220 Kaj tiam ni havas helpaj informoj aŭ ekstra informo en aliaj tabloj 361 00:17:43,220 --> 00:17:48,260 ke ni povas konekti al la ĉefa uzantoj tablo en aparta maniero. 362 00:17:48,260 --> 00:17:52,200 >> Do jen ni havas tiujn du tabloj, sed ekzistas rilato inter ili, 363 00:17:52,200 --> 00:17:53,010 dekstra? 364 00:17:53,010 --> 00:17:55,070 Ŝajnas kiel uzantonomo povus esti io 365 00:17:55,070 --> 00:17:59,909 kiu ekzistas en komuna inter tiuj du malsamaj tabloj. 366 00:17:59,909 --> 00:18:01,700 Do kio se ni nun havas situacio kie ni 367 00:18:01,700 --> 00:18:06,046 volas akiri uzanto plena nomo de la uzanto tablo, kaj ilia patrino 368 00:18:06,046 --> 00:18:07,170 nomon de la patrino tablo? 369 00:18:07,170 --> 00:18:10,960 Ni ne havas manieron por akiri ke kiel ĝi staras, dekstra? 370 00:18:10,960 --> 00:18:17,790 Mankas simpla tablo, kiu enhavas ambaŭ plenan nomon kaj patrina nomo. 371 00:18:17,790 --> 00:18:20,400 Ni ne havas tiun eblon de kion ni vidis ĝis nun. 372 00:18:20,400 --> 00:18:22,950 >> Kaj tial ni devas enkonduki la ideo de JOIN. 373 00:18:22,950 --> 00:18:24,857 Kaj aliĝas verŝajne la plej complex-- 374 00:18:24,857 --> 00:18:27,940 ĝi estas vere pli kompleksa operacio ni iras por raporti en la vídeo. 375 00:18:27,940 --> 00:18:30,040 Ili estas iom komplika, Sed unufoje vi akiras la pendi de ĝi, 376 00:18:30,040 --> 00:18:31,248 ili estas fakte ne tro malbona. 377 00:18:31,248 --> 00:18:32,820 Estas nur speciala kazo de unuaranga. 378 00:18:32,820 --> 00:18:37,120 Ni tuj elekti aron de kolumnoj de tabelo aliĝado 379 00:18:37,120 --> 00:18:40,650 en dua tablo sur iu predikato. 380 00:18:40,650 --> 00:18:45,340 >> En tiu kazo, pensu pri ĝi plaĉas this-- tablo estas unu cirklo super tie, 381 00:18:45,340 --> 00:18:47,530 tablo du estas alia cirklo super tie. 382 00:18:47,530 --> 00:18:49,410 Kaj ke predikato parto en la mezo, estas 383 00:18:49,410 --> 00:18:51,701 ia kiel se vi pensas pri kiel Venn diagramo, kion 384 00:18:51,701 --> 00:18:52,670 ĉu ili havas komune? 385 00:18:52,670 --> 00:18:55,960 Ni volas ligi tiujn du tabloj bazita sur kion ili havas en komuna 386 00:18:55,960 --> 00:19:01,230 kaj krei tiun hipoteza tablo kiu estas la fandado de la du kune. 387 00:19:01,230 --> 00:19:03,480 Do ni vidos ĉi tion en Ekzemple kaj eble tio helpos 388 00:19:03,480 --> 00:19:04,521 malbari ĝin iomete. 389 00:19:04,521 --> 00:19:09,260 Do eble vi volas elekti user.fullname kaj moms.mother 390 00:19:09,260 --> 00:19:13,220 de uzantoj enirado en la panjoj tablo en ĉiu situacio 391 00:19:13,220 --> 00:19:16,790 kie la salutnomo kolumno estas la sama inter ili. 392 00:19:16,790 --> 00:19:19,240 Kaj ĉi estas nova sintakso tie, ĉi uzanto. 393 00:19:19,240 --> 00:19:20,460 kaj panjoj .. 394 00:19:20,460 --> 00:19:26,697 Se mi faras multoblajn tablojn kune, mi povas specifi tablo. 395 00:19:26,697 --> 00:19:29,530 Mi povas distingi precipe sur ke sur ĉe la tre malsupra tie. 396 00:19:29,530 --> 00:19:33,220 Mi povas distingi la uzantnomon kolumno de la uzantoj tablo 397 00:19:33,220 --> 00:19:36,010 el la salutnomo kolumno de la panjoj tablo, kiuj estas otherwise-- 398 00:19:36,010 --> 00:19:38,070 se ni nur diris salutnomo egalas uzantonomo, kiu ne vere 399 00:19:38,070 --> 00:19:38,970 nenion signifas. 400 00:19:38,970 --> 00:19:41,440 Ni volas fari ĝin kie ili egalas. 401 00:19:41,440 --> 00:19:46,080 >> Do mi povas entajpi la tablo kaj la kolumno nomo en kazo de situacio 402 00:19:46,080 --> 00:19:48,370 kie estus neklara kio mi parolas. 403 00:19:48,370 --> 00:19:51,880 Do jen ĉio mi faras estas mi dirante tiun kolumnon el tiu tablo, 404 00:19:51,880 --> 00:19:54,020 kaj estante tre eksplicita. 405 00:19:54,020 --> 00:19:56,810 Do denove, mi elektanta la plenan nomon kaj la patrino nomon 406 00:19:56,810 --> 00:20:00,950 el la uzantoj tablo kunligitaj kun la panjoj tablo en ĉiu situacio 407 00:20:00,950 --> 00:20:05,960 kie dividas ke column-- ili dividas tiun uzantnomon nocio. 408 00:20:05,960 --> 00:20:08,580 >> Do jen la tabloj ni havis antaŭe. 409 00:20:08,580 --> 00:20:12,210 Jen la stato de nia datumbazo kiel ĝi ekzistas nun. 410 00:20:12,210 --> 00:20:16,390 La informo ni ĉerpante Estas ĉi komence. 411 00:20:16,390 --> 00:20:19,820 Tiu estas la nova tablo ni iras krei kombinante tiujn kune. 412 00:20:19,820 --> 00:20:23,585 Kaj rimarki ni ne reliefigante Newman vico en la uzanto tablo, 413 00:20:23,585 --> 00:20:25,960 kaj ni ne reliefigante Kramer la vico en la panjoj tablo 414 00:20:25,960 --> 00:20:31,250 ĉar nek ekzistas en ambaŭ sets-- en ambaŭ tabuloj. 415 00:20:31,250 --> 00:20:36,260 >> La sola informo kiu estas en komuna inter ili estas Jerry estas en ambaŭ tabloj 416 00:20:36,260 --> 00:20:39,100 kaj gcostanza estas en ambaŭ tabuloj. 417 00:20:39,100 --> 00:20:42,620 Kaj tial kiam ni faros la SQL JOIN, kion ni get-- kaj ni faras reale preni ĉi. 418 00:20:42,620 --> 00:20:44,830 Ĝi estas speco de portempa variablo. 419 00:20:44,830 --> 00:20:47,330 Estas kiel hipoteza kunfandiĝo de la du tabloj. 420 00:20:47,330 --> 00:20:49,930 Ni reale preni ion kiel tiun, kie 421 00:20:49,930 --> 00:20:54,730 ni kunfandis kune la tabloj sur la informon ke ili havas komune. 422 00:20:54,730 --> 00:20:58,334 >> Do rimarki ke users.username kaj moms.username kolumno, 423 00:20:58,334 --> 00:20:59,250 ĝi estas precize la sama. 424 00:20:59,250 --> 00:21:01,820 Tio estis la informo ke estis konsekvenca de la uzantoj 425 00:21:01,820 --> 00:21:02,890 tablo kaj la panjoj tablo. 426 00:21:02,890 --> 00:21:04,270 Kaj do ni kunfandis ilin kune. 427 00:21:04,270 --> 00:21:06,919 Ni forĵetitaj Kramer ĉar li ne ekzistis en la uzantoj tablo, 428 00:21:06,919 --> 00:21:09,710 kaj ni forĵetitaj Newman, ĉar Li ne ekzistis en la panjoj tablo. 429 00:21:09,710 --> 00:21:16,450 Do tiu estas la hipoteza fuzio uzante la JOIN operacio de ELEKTU. 430 00:21:16,450 --> 00:21:21,250 >> Kaj poste ni atendis la uzanto plenan nomon kaj la uzanto patrino, 431 00:21:21,250 --> 00:21:24,999 kaj jen la informo ke ni akirus el la entute query 432 00:21:24,999 --> 00:21:26,040 ke ni faris kun ELEKTU. 433 00:21:26,040 --> 00:21:28,873 Do ni eniris la tabloj kune kaj ni ĉerpas tiujn du kolumnoj, 434 00:21:28,873 --> 00:21:31,610 kaj do tio estas kion ni akirus. 435 00:21:31,610 --> 00:21:33,370 Sed SQL kunigas ia komplika. 436 00:21:33,370 --> 00:21:36,770 Vi probable ne faros ilin tro da, sed ĵus havas iun ideon de la skeleto 437 00:21:36,770 --> 00:21:41,992 ke vi povis uzi kunfandi du tabloj kune se vi bezonis. 438 00:21:41,992 --> 00:21:43,700 La lasta du estas iom simpla Mi promesas. 439 00:21:43,700 --> 00:21:48,040 Do ĝisdatigi, ni povas uzi UPDATE ŝanĝi informon en tabulo. 440 00:21:48,040 --> 00:21:53,880 La ĝenerala formato estas UPDATE iuj tablo, metis iujn kolumno al iu valoro 441 00:21:53,880 --> 00:21:55,540 KIE iu predikato estas kontentigita. 442 00:21:55,540 --> 00:21:57,850 Do ekzemple, ni povus voli ĝisdatigi la uzantoj tablo 443 00:21:57,850 --> 00:22:04,400 ekbruligis la pasvorton al Yada Yada, kie la ID nombro estas 10. 444 00:22:04,400 --> 00:22:06,400 >> Do ĉi-kaze, ni estas ĝisdatiganta la uzantoj tablo. 445 00:22:06,400 --> 00:22:08,275 La ID nombro estas 10 por tiu unua vico tien, 446 00:22:08,275 --> 00:22:10,690 kaj ni volas ĝisdatigi la pasvorton por Yada Yada. 447 00:22:10,690 --> 00:22:12,170 Kaj por ke-a kio okazos. 448 00:22:12,170 --> 00:22:13,628 Estas bela simpla, ĉu ne? 449 00:22:13,628 --> 00:22:17,990 Estas nur tre simplajn modifon al la tablo. 450 00:22:17,990 --> 00:22:22,250 >> DELETE estas la operacio ni kutimis forigi informojn de tablo. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tablo KIE iu predikato estas kontentigita. 452 00:22:24,817 --> 00:22:26,900 Ni volas forviŝi el la uzantoj tablo ekzemple 453 00:22:26,900 --> 00:22:28,254 kie la uzantnomo estas Newman. 454 00:22:28,254 --> 00:22:31,420 Vi povas probable diveni kio okazas al okazi tie post ni ekzekuti tiu SQLa 455 00:22:31,420 --> 00:22:35,790 query, Newman iris de la tablo. 456 00:22:35,790 --> 00:22:40,460 >> Do ĉiuj tiuj operacioj, kiel mi diris, Estas tre facila fari en phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Ĝi estas tre uzanto amika interfaco. 458 00:22:43,020 --> 00:22:45,930 Sed ĝi postulas manlibro penado. 459 00:22:45,930 --> 00:22:47,840 Ni ne volas dungi manlibro penado. 460 00:22:47,840 --> 00:22:51,280 Ni volas niajn programojn al Faru por ni, ĉu ne? 461 00:22:51,280 --> 00:22:53,190 Do ni volus fari ĉi programmatically. 462 00:22:53,190 --> 00:22:56,410 Ni volas korpigi SQL kaj havas ion alian fari tion por ni. 463 00:22:56,410 --> 00:23:02,710 >> Kion ni vidis ke permesas nin al programmatically fari ion? 464 00:23:02,710 --> 00:23:03,690 Ni vidis PHP, dekstra? 465 00:23:03,690 --> 00:23:05,760 Ĝi enkondukas iujn dinamismo en niajn programojn. 466 00:23:05,760 --> 00:23:10,430 Kaj tiel feliĉe, SQL kaj PHP ludas tre bele kune. 467 00:23:10,430 --> 00:23:13,230 Ekzistas funkcio en PHP nomata query, kiu povas esti uzita. 468 00:23:13,230 --> 00:23:15,870 Kaj vi povas pasi kiel la parametro aŭ la argumento 469 00:23:15,870 --> 00:23:19,210 konsulti SQL query ke Vi ŝatus ekzekuti. 470 00:23:19,210 --> 00:23:23,250 Kaj PHP faros por vi. 471 00:23:23,250 --> 00:23:25,564 >> Do post vi konektita al via datumbazo per PHP, 472 00:23:25,564 --> 00:23:26,980 ekzistas du antaŭbalotoj vi fari tion. 473 00:23:26,980 --> 00:23:29,230 Estas io nomita MySQLi kaj iu nomita PDO. 474 00:23:29,230 --> 00:23:31,063 Ni ne iros en grandegan kvanto detalon tie. 475 00:23:31,063 --> 00:23:32,957 En CS50 ni uzas PDO. 476 00:23:32,957 --> 00:23:34,790 Post vi konektita por via datumbazo, vi 477 00:23:34,790 --> 00:23:40,980 tiam povas fari konsultojn via datumbazo aprobante la demandoj kiel argumentoj 478 00:23:40,980 --> 00:23:42,730 al PHP funkcioj. 479 00:23:42,730 --> 00:23:46,460 Kaj kiam vi faros tion, vi stoki la Rezulto starigis en asocieca tabelo. 480 00:23:46,460 --> 00:23:50,290 >> Kaj ni scipovas labori kun asociaj tabeloj en PHP. 481 00:23:50,290 --> 00:23:52,630 Do mi povus diri ion kiel this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 tiu estas en PHP-- egalas mendo. 483 00:23:55,470 --> 00:23:57,660 Kaj poste ene de la query funkcio kiu argumento 484 00:23:57,660 --> 00:24:00,130 ke mi pasante por konsulti kiu aspektas kiel SQL. 485 00:24:00,130 --> 00:24:01,160 Kaj fakte tiu estas SQL. 486 00:24:01,160 --> 00:24:05,700 Jen la query string ke mi volus plaĉas ekzekuti sur mia datumbazo. 487 00:24:05,700 --> 00:24:09,250 >> Kaj tial en ruĝa, ĉi tiu estas PHP. 488 00:24:09,250 --> 00:24:11,890 Jen SQLa ke mi estas integrante en PHP per fari 489 00:24:11,890 --> 00:24:15,020 ĝi la argumento al la konsulto funkcio. 490 00:24:15,020 --> 00:24:19,640 Mi volas elekti fullname el uzantoj kie ID nombro egalas 10. 491 00:24:19,640 --> 00:24:22,560 Kaj tiam eble post mi faris tion, Mi povus diri ion kiel tion. 492 00:24:22,560 --> 00:24:25,550 Mi volas presi la mesaĝo Dankon pro ensalutadon. 493 00:24:25,550 --> 00:24:32,530 >> Kaj mi volas ĝin interpolate-- mi volas al interpoli $ rezultoj fullname. 494 00:24:32,530 --> 00:24:36,280 Kaj por ke-a kiel mi laboras kun tiu asocieca tabelo kiu mi reiris. 495 00:24:36,280 --> 00:24:39,730 $ rezultoj fullname volus esence fini presi el, 496 00:24:39,730 --> 00:24:42,870 dankon pro ensalutadon, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Tio estis la plena nomo kie idnum egalas 10. 498 00:24:46,570 --> 00:24:48,850 >> Kaj tial ĉiuj mi faras estas mi now-- mi stokitaj 499 00:24:48,850 --> 00:24:52,780 mia konsulto, la rezultoj de mia query kaj rezultojn en asocieca tabelo, 500 00:24:52,780 --> 00:24:56,330 kaj fullname estas la nomo de la kolumno mi komencis esti por. 501 00:24:56,330 --> 00:25:01,010 Do jen mia ŝlosilo en la rezultoj asocieca tabelo kiu mi volas. 502 00:25:01,010 --> 00:25:05,930 Do Dankon pro ensalutadon, $ rezultoj, fullname presos, temas 503 00:25:05,930 --> 00:25:08,654 juste inter tiuj buklaj krampoj, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Kaj mi ŝatos presi la mesaĝo Dankon pro ensalutanta Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nun, ni probable ne volas forte kodo tiaĵojn en, dekstra? 506 00:25:16,652 --> 00:25:19,860 Ni volus fari ion kiel presaĵo f, kie ni povas anstataŭigi kaj eble 507 00:25:19,860 --> 00:25:22,443 kolekti malsamajn informojn, aŭ eble havas la konsulto procezo 508 00:25:22,443 --> 00:25:23,370 malsamajn informojn. 509 00:25:23,370 --> 00:25:27,920 Kaj tiel query, la konsulto funkcio havas ĉi nocio de speco de anstataŭigoj 510 00:25:27,920 --> 00:25:32,310 tre simila al presi f procentoj s kaj procento c, estas demandosignojn. 511 00:25:32,310 --> 00:25:34,290 >> Kaj ni povas uzi demando markoj tre analoge 512 00:25:34,290 --> 00:25:38,400 presi f al anstataŭanto variabloj. 513 00:25:38,400 --> 00:25:44,120 Do eble via uzanto ensalutinta antaŭe, kaj vi savis iliajn uzanto ID nombro 514 00:25:44,120 --> 00:25:51,710 en $ _SESSION de PHP súper suma en la ŝlosilo ID. 515 00:25:51,710 --> 00:25:55,947 Do eble post ili ensalutinta, vi fiksis $ _SESSION ID egalas 10, 516 00:25:55,947 --> 00:25:58,280 extrapolar de la ekzemplo ni nur vidis duan antaŭe. 517 00:25:58,280 --> 00:26:01,960 >> Kaj tial kiam ni efektive ekzekuti tiun konsulti la rezultojn nun, 518 00:26:01,960 --> 00:26:08,440 ĝi konektas en 10, aŭ kio ajn la $ _SESSION ID valoro estas. 519 00:26:08,440 --> 00:26:10,790 Kaj tial permesas al ni esti iom pli dinamika. 520 00:26:10,790 --> 00:26:12,699 Ni ne malfacile kodigo aferoj en anymore. 521 00:26:12,699 --> 00:26:14,490 Ni savanta informo ie kaj tiam 522 00:26:14,490 --> 00:26:18,924 ni povas uzi tiun informon denove al ia ĝeneraligi kion ni volas fari, 523 00:26:18,924 --> 00:26:21,090 kaj nur ŝtopi-en kaj ŝanĝo la konduto de nia paĝo 524 00:26:21,090 --> 00:26:26,489 surbaze de kio la uzanto ID nombro fakte estas post ili is ensalutinta. 525 00:26:26,489 --> 00:26:28,530 Ĝi estas ankaŭ ebla, kvankam, ke via rezultoj fiksita 526 00:26:28,530 --> 00:26:30,840 povus konsisti el multoblaj vicoj. 527 00:26:30,840 --> 00:26:33,990 En kiu kazo, Vi havas tabelo de arrays-- 528 00:26:33,990 --> 00:26:35,334 tabelo de asociaj tabeloj. 529 00:26:35,334 --> 00:26:37,000 Kaj vi devas nur persisti tra ĝi. 530 00:26:37,000 --> 00:26:41,950 Kaj ni scias kiel persisti tra tabelo en PHP, ĝuste? 531 00:26:41,950 --> 00:26:45,600 Do jen probable la plej kompleksa afero ni vidis ĝis nun. 532 00:26:45,600 --> 00:26:49,640 Ĝi efektive integriĝas tri lingvoj kune. 533 00:26:49,640 --> 00:26:52,920 >> Tie en ruĝa, ĉi tiu estas iom da HTML. 534 00:26:52,920 --> 00:26:56,872 Mi ŝajne starting-- ĉi estas fragmento de iu HTML kion mi havas. 535 00:26:56,872 --> 00:26:59,580 Mi komencas novan alineon ke diras la panjoj de TV Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Kaj tiam tuj poste Mi komencas tablo. 537 00:27:02,350 --> 00:27:06,060 Kaj tuj poste, mi havi iun PHP, dekstra? 538 00:27:06,060 --> 00:27:08,229 Mi havas ĉiujn ĉi PHP kodo tie. 539 00:27:08,229 --> 00:27:09,645 Mi ŝajne iranta fari mendo. 540 00:27:09,645 --> 00:27:14,180 Kaj fari la konsulto, mi tuj esti uzante ELEKTU patrinoj EL panjoj. 541 00:27:14,180 --> 00:27:15,970 >> Do tiu estas getting-- ĉi estas SQL. 542 00:27:15,970 --> 00:27:17,300 Do la la blua estas SQL. 543 00:27:17,300 --> 00:27:19,680 La ruĝa ni vidis duan tempoj estis HTML. 544 00:27:19,680 --> 00:27:21,360 Kaj la verda tie estas PHP. 545 00:27:21,360 --> 00:27:23,400 Do mi faras query al mia datumbazo, mi estas 546 00:27:23,400 --> 00:27:26,040 elektanta ĉiujn de la patrinoj en la panjoj tablo. 547 00:27:26,040 --> 00:27:30,710 Ne nur malvastigante gxin malsupren al aparta vico, mi demandas por ĉiuj el ili. 548 00:27:30,710 --> 00:27:33,290 >> Tiam mi kontrolu se rezulto ne egalas egalas malvera. 549 00:27:33,290 --> 00:27:37,410 Tio estas nur mia maniero de kontrolanta speco de se rezultoj estas ne egala al nula, 550 00:27:37,410 --> 00:27:40,260 ke ni vidus c ekzemple. 551 00:27:40,260 --> 00:27:44,000 Esence tiu estas ĝuste kontrolanta fari certas ke ĝi efektive akiris datumojn reen. 552 00:27:44,000 --> 00:27:47,041 Ĉar mi ne volas komenci impreso eksteren datumoj se mi ne ricevis neniun informon. 553 00:27:47,041 --> 00:27:50,690 Tiam por ĉiu rezultoj kiel rezulto la foreach sintakso de PHP, ĉiuj mi faras 554 00:27:50,690 --> 00:27:53,399 estas presi el $ rezulto patrinoj. 555 00:27:53,399 --> 00:27:55,940 Kaj tial mi iros akiri aron de ĉiuj patrinoj de each-- 556 00:27:55,940 --> 00:27:59,980 ĝi estas tabelo de asocieca arrays-- kaj mi presi el 557 00:27:59,980 --> 00:28:03,649 ĉiu kiel ĝia propra vico de tablo. 558 00:28:03,649 --> 00:28:05,690 Kaj tio estas vere bela tre ĉiuj estas al ĝi. 559 00:28:05,690 --> 00:28:07,750 Mi scias ke estas iom iom okazas tie 560 00:28:07,750 --> 00:28:13,210 en ĉi lasta ekzemplo kun tabeloj de arrays-- arrays de asociaj tabeloj. 561 00:28:13,210 --> 00:28:17,340 Sed ĝi ja nur kuiru malsupren en SQL por fari query, 562 00:28:17,340 --> 00:28:21,102 kutime elektante post ni jam metis informojn en la tablon, 563 00:28:21,102 --> 00:28:22,310 kaj tiam simple tirante ĝin. 564 00:28:22,310 --> 00:28:25,710 >> Kaj tio estas ni povos tion en tiu konkreta kazo. 565 00:28:25,710 --> 00:28:31,120 Ni volus ĉerpi ĉiujn la individua patrinoj de la panjoj tablo. 566 00:28:31,120 --> 00:28:35,970 Ni akiris tuta aro de ili, kaj ni volas persisti tra kaj elprinti 567 00:28:35,970 --> 00:28:37,630 ĉiu. 568 00:28:37,630 --> 00:28:40,510 Do denove, ĉi tiu estas probable la plej komplika ekzemplo 569 00:28:40,510 --> 00:28:44,510 ni vidis ĉar ni miksante tri malsamaj lingvoj kune, ĉu ne? 570 00:28:44,510 --> 00:28:50,100 >> Denove, ni havas ĉi tiun HTML en ruĝa, miksita kun iuj SQL tie en blua, 571 00:28:50,100 --> 00:28:52,049 miksita kun iuj PHP verde. 572 00:28:52,049 --> 00:28:53,840 Sed ĉiuj tiuj ludi bele kune, ĝi estas 573 00:28:53,840 --> 00:28:57,060 nur demando de evoluantaj bonajn kutimojn tiel ke vi povas akiri 574 00:28:57,060 --> 00:28:58,780 ilin labori kune kiel vi volas. 575 00:28:58,780 --> 00:29:03,790 Kaj la sola maniero por vere fari tion estas praktiki, praktiko, praktiko. 576 00:29:03,790 --> 00:29:06,740 Mi Doug Lloyd, tiu estas CS50. 577 00:29:06,740 --> 00:29:08,647