1 00:00:00,000 --> 00:00:03,493 >> [MUSIC nagpe-play] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: Sa aming mga video sa mga paksa ng web development, 4 00:00:07,100 --> 00:00:10,560 nabanggit na namin ang konsepto ng isang database ng ilang beses, tama? 5 00:00:10,560 --> 00:00:12,700 Kaya ang isang database ikaw malamang na pamilyar sa mula sa 6 00:00:12,700 --> 00:00:15,780 sabihin gamit ang Microsoft Excel o Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Ito ay talagang lamang ng isang organisado set ng talahanayan, hilera, at mga haligi. 8 00:00:20,650 --> 00:00:23,140 >> At ang isang database ay kung saan sa aming mga tindahan website 9 00:00:23,140 --> 00:00:26,760 impormasyon na mahalaga para sa aming mga website upang gumana nang maayos. 10 00:00:26,760 --> 00:00:30,150 Muli, isang tunay na karaniwang halimbawa dito ay pag-iimbak ng mga username at password 11 00:00:30,150 --> 00:00:32,824 sa isang database, kaya na kapag isang tala sa aming website sa paggamit, 12 00:00:32,824 --> 00:00:36,690 maaaring query sa database upang makita kung umiiral ang user na sa database. 13 00:00:36,690 --> 00:00:39,260 At kung sila, check na ang kanilang password ay tama. 14 00:00:39,260 --> 00:00:43,420 At kung ang kanilang password ay tama, pagkatapos ay maaari naming bigyan ang mga ito sa kahit anong pahina 15 00:00:43,420 --> 00:00:45,370 sila ay humihiling. 16 00:00:45,370 --> 00:00:48,590 >> Kaya ikaw ay malamang na, muli, pamilyar sa ideya na ito mula sa Excel o Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Mayroon kaming mga database, mga talahanayan, hilera, at mga haligi. 19 00:00:52,980 --> 00:00:56,450 At iyan ay talagang uri sa mga pangunahing hanay 20 00:00:56,450 --> 00:00:58,470 ng hierarchical breakdown dito. 21 00:00:58,470 --> 00:00:59,800 Kaya narito ang isang Excel spreadsheet. 22 00:00:59,800 --> 00:01:02,640 At kung sakaling mo na binuksan ito o iba pang katulad na programa 23 00:01:02,640 --> 00:01:06,780 alam mo na ang mga ito dito ay rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Ang mga ito ay mga haligi. 25 00:01:08,760 --> 00:01:11,790 >> Siguro down dito, kahit na ikaw ay maaaring hindi magamit ang tampok na masyado much-- 26 00:01:11,790 --> 00:01:15,370 Kukunin ko mag-zoom in-- kami ang ideya na ito ng isang sheet. 27 00:01:15,370 --> 00:01:17,930 Kaya siguro ang mga sheet, kung Ako kahaliling papunta at pabalik, 28 00:01:17,930 --> 00:01:21,600 mga iba't-ibang mga talahanayan na umiiral sa aking database. 29 00:01:21,600 --> 00:01:25,210 At kung patuloy naming ang mga halimbawa ng lahat ang paraan, ang pangalan ng database na ito 30 00:01:25,210 --> 00:01:26,940 ay Book 1. 31 00:01:26,940 --> 00:01:28,710 Siguro mayroon akong Book 2 at Book 3. 32 00:01:28,710 --> 00:01:33,270 Kaya bawat Excel file ay isang database, ang bawat sheet ay isang table, 33 00:01:33,270 --> 00:01:39,530 at sa loob ng bawat talahanayan mayroon akong ang ideya na ito ng mga hanay at haligi. 34 00:01:39,530 --> 00:01:41,900 >> Kaya paano mo ba akong makipagtulungan sa database na ito? 35 00:01:41,900 --> 00:01:43,630 Paano ako makakakuha ng impormasyon mula sa mga ito? 36 00:01:43,630 --> 00:01:47,540 Well mayroong isang wika na tinatawag SQL-- kung saan ako karaniwang tawag lamang Sequel-- 37 00:01:47,540 --> 00:01:50,010 at ito ay para sa mga Nakabalangkas na Query Wika. 38 00:01:50,010 --> 00:01:52,981 At ito ay isang programming language, ngunit ito ay isang medyo limitado programming 39 00:01:52,981 --> 00:01:53,480 wika. 40 00:01:53,480 --> 00:01:56,407 Ito ay hindi lubos tulad ng iba na kami ay nagtrabaho sa. 41 00:01:56,407 --> 00:01:58,240 Ngunit ang layunin ng mga ito programming language 42 00:01:58,240 --> 00:02:01,570 ay sa query ng database, upang humingi ng impormasyon ng isang database, 43 00:02:01,570 --> 00:02:04,480 maghanap ng impormasyon sa isang database, at iba pa. 44 00:02:04,480 --> 00:02:08,449 >> Kami rin, sa CS50-- at ito ay isang napaka karaniwang platform, ito ay tinatawag na MySQL. 45 00:02:08,449 --> 00:02:10,600 Iyon ay kung ano ang ginagamit namin sa kurso. 46 00:02:10,600 --> 00:02:12,880 Ito ay isang open source platform na nagtatatag 47 00:02:12,880 --> 00:02:16,732 isang tinatawag database-- pamanggit isang database, mabisa. 48 00:02:16,732 --> 00:02:18,440 Hindi namin kailangan upang makakuha ng sa masyadong maraming detalye 49 00:02:18,440 --> 00:02:20,930 sa kung ano ang isang pamanggit database ay. 50 00:02:20,930 --> 00:02:24,650 Ngunit ang wika SQL ay sanay ka na sa pagtatrabaho 51 00:02:24,650 --> 00:02:29,760 may MySQL at iba pang katulad estilo ng pamanggit database. 52 00:02:29,760 --> 00:02:34,010 >> At maraming mga pag-install ng MySQL sumama sa isang bagay 53 00:02:34,010 --> 00:02:37,760 tinatawag na phpMyAdmin, na ay isang graphical user 54 00:02:37,760 --> 00:02:40,970 interface-- isang GUI-- na gumagawa ito ng kaunti pa 55 00:02:40,970 --> 00:02:44,410 friendly na mag-execute user database ng mga tanong, 56 00:02:44,410 --> 00:02:48,980 dahil database ay hindi lamang ginagamit sa pamamagitan ng advanced na programmer, di ba? 57 00:02:48,980 --> 00:02:51,510 Minsan may mga mga maliliit na negosyo, 58 00:02:51,510 --> 00:02:53,900 at hindi nila kayang pag-upa ng isang koponan ng mga programmers, 59 00:02:53,900 --> 00:02:56,700 ngunit kailangan pa rin nila sa tindahan impormasyon sa isang database. 60 00:02:56,700 --> 00:02:59,300 >> Isang bagay tulad phpMyAdmin ginagawang mas madali para sa isang tao 61 00:02:59,300 --> 00:03:03,630 sino ang hindi kailanman program bago sa pick up at maging pamilyar sa kung paano 62 00:03:03,630 --> 00:03:07,710 upang gumana sa isang database. 63 00:03:07,710 --> 00:03:11,800 Ang problema ay, phpMyAdmin, habang ito ay isang hindi kapani-paniwala na tool para sa pag-aaral 64 00:03:11,800 --> 00:03:14,850 tungkol sa mga database na ito, ay manual. 65 00:03:14,850 --> 00:03:18,050 Ikaw ay pagpunta sa may upang mag-log sa ito at isakatuparan ang mga utos at uri 66 00:03:18,050 --> 00:03:19,910 bagay sa mano-mano. 67 00:03:19,910 --> 00:03:23,160 >> At bilang alam namin mula sa aming halimbawa sa PHP web programming, 68 00:03:23,160 --> 00:03:26,550 pagkakaroon upang mano-manong gawin mga bagay-bagay sa aming website, 69 00:03:26,550 --> 00:03:30,970 kung gusto namin ng isang dynamic, aktibong tumutugon website, marahil hindi ang pinakamahusay na diskarte. 70 00:03:30,970 --> 00:03:33,980 Nais naming mahanap ang isang paraan upang marahil automate na ito sa anumang paraan. 71 00:03:33,980 --> 00:03:37,864 At SQL ay magpapahintulot sa amin upang gawin ito. 72 00:03:37,864 --> 00:03:39,780 Kaya kapag kami ay pagpunta sa simulan ang nagtatrabaho sa SQL, 73 00:03:39,780 --> 00:03:41,220 kailangan muna naming magkaroon ng isang database upang gumana sa. 74 00:03:41,220 --> 00:03:42,510 Ang paglikha ng isang database ay isang bagay na ikaw ay malamang na 75 00:03:42,510 --> 00:03:45,350 ay gawin sa phpMyAdmin, dahil ikaw lamang ang kailangan upang gawin ito nang isang beses, 76 00:03:45,350 --> 00:03:49,690 at ang syntax para sa paggawa nito ay isang pulutong mas tapat. 77 00:03:49,690 --> 00:03:51,940 Ito ay isang pulutong mas madali upang gawin ito sa isang graphic user interface 78 00:03:51,940 --> 00:03:53,520 kaysa sa pag-type ito bilang isang command. 79 00:03:53,520 --> 00:03:55,186 Ang utos ay maaaring makakuha ng isang maliit na mahirap. 80 00:03:55,186 --> 00:03:58,889 Sa katulad na paraan, ang paglikha ng isang talahanayan na maaari makakuha ng isang lubos na bit pahirap rin. 81 00:03:58,889 --> 00:04:01,930 At kaya ang mga bagay tulad ng paglikha ng isang database at paglikha ng isang table, kung saan ikaw ay 82 00:04:01,930 --> 00:04:06,270 malamang lamang pagpunta sa gawin once-- isang beses sa bawat table, isang beses bawat database-- 83 00:04:06,270 --> 00:04:09,040 ito ay ang OK upang gawin iyon sa isang graphical interface. 84 00:04:09,040 --> 00:04:11,570 Sa proseso ng paglikha ng isang talahanayan, makakakita ka 85 00:04:11,570 --> 00:04:14,840 mayroon din upang tukuyin ang lahat ng mga haligi na iyon ay sa table. 86 00:04:14,840 --> 00:04:18,149 Anong uri ng impormasyon ang nais mong iimbak sa talahanayan? 87 00:04:18,149 --> 00:04:24,520 Siguro pangalan at petsa ng kapanganakan ng isang user, password, numero ng ID ng gumagamit, at marahil 88 00:04:24,520 --> 00:04:26,170 lungsod at estado, tama? 89 00:04:26,170 --> 00:04:30,080 >> At para sa bawat oras na nais namin na magdagdag ng isang user sa database, gusto naming makuha ang lahat ng anim 90 00:04:30,080 --> 00:04:31,890 ng mga piraso ng impormasyon. 91 00:04:31,890 --> 00:04:34,840 At gawin namin na sa pamamagitan ng pagdaragdag mga hilera sa talahanayan. 92 00:04:34,840 --> 00:04:37,800 Kaya namin ang unang bumuo ng isang database, pagkatapos ay gumawa kami ng isang table. 93 00:04:37,800 --> 00:04:40,100 Bilang bahagi ng paglikha isang table, kami ay nagtanong 94 00:04:40,100 --> 00:04:44,280 upang tukuyin ang bawat column na nais namin sa table na ito. 95 00:04:44,280 --> 00:04:47,247 At pagkatapos ay bilang namin simulan upang magdagdag ng impormasyon sa database 96 00:04:47,247 --> 00:04:49,580 at query sa karagdagang mga database generally-- hindi lamang pagdaragdag, 97 00:04:49,580 --> 00:04:51,610 ngunit lahat ng iba pa naming do-- kami ay magiging pakikitungo 98 00:04:51,610 --> 00:04:58,870 may mga hilera ng talahanayan, na kung saan ay isa impormasyon ng user mula sa buong set. 99 00:04:58,870 --> 00:05:03,210 >> Kaya ang bawat SQL column ay may kakayahang may hawak na data ng isang partikular na uri ng data. 100 00:05:03,210 --> 00:05:06,560 Kaya namin uri ng inalis ito ideya ng mga uri ng data sa PHP, 101 00:05:06,560 --> 00:05:08,747 ngunit ang mga ito ay bumalik dito sa SQL. 102 00:05:08,747 --> 00:05:10,080 At mayroong isang pulutong ng mga uri ng data. 103 00:05:10,080 --> 00:05:13,420 Narito ang 20 lamang sa mga ito, ngunit ito ay hindi kahit lahat ng mga ito. 104 00:05:13,420 --> 00:05:16,240 Kaya kami ay may mga ideya tulad INTs-- Integers-- marahil namin alam 105 00:05:16,240 --> 00:05:17,760 na ang hanay na ito ay maaaring humawak ng integer. 106 00:05:17,760 --> 00:05:21,077 At may mga pagkakaiba-iba thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Siguro hindi kami laging kailangan ng apat na kagat. 108 00:05:22,660 --> 00:05:26,800 Baka kailangan naming walong bytes, at gayon din kami maaaring gamitin ang mga pagkakaiba-iba sa integer 109 00:05:26,800 --> 00:05:28,510 upang maging isang bit mas maraming espasyo mahusay. 110 00:05:28,510 --> 00:05:31,899 Maaari naming gawin ang mga numero ng decimal, kami maaaring gawin lumulutang point numero. 111 00:05:31,899 --> 00:05:32,940 Ang mga ito ay medyo katulad. 112 00:05:32,940 --> 00:05:34,773 Mayroong ilang mga pagkakaiba, at kung gagawin mo 113 00:05:34,773 --> 00:05:37,330 nais na tingnan ang mga SQL uri ng gabay na ito, ikaw ay 114 00:05:37,330 --> 00:05:40,670 maaaring makita kung ano ang bahagyang pagkakaiba sa pagitan ng mga ito. 115 00:05:40,670 --> 00:05:43,250 >> Siguro gusto namin upang mag-imbak impormasyon tungkol sa petsa at oras. 116 00:05:43,250 --> 00:05:47,047 Siguro Pinananatili namin ang pagsubaybay ng kapag sumali ang user ng aming website, 117 00:05:47,047 --> 00:05:48,880 at kaya marahil gusto namin na magkaroon ng isang hanay na iyon ay 118 00:05:48,880 --> 00:05:52,820 isang oras na petsa o isang timestamp na nagpapahiwatig kapag ang user ay talagang 119 00:05:52,820 --> 00:05:54,130 naka-sign up. 120 00:05:54,130 --> 00:05:56,132 Maaari naming gawin geometries at linestrings. 121 00:05:56,132 --> 00:05:57,340 Ito ay talagang medyo cool. 122 00:05:57,340 --> 00:06:01,410 Maaari naming i-map ang isang heograpikal na lugar gamit 123 00:06:01,410 --> 00:06:05,110 GIS coordinate sa balangkas ng isang lugar. 124 00:06:05,110 --> 00:06:08,580 Kaya maaari aktwal na tindahan na uri ng mga impormasyon sa isang haligi SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT ay higanteng blobs lang ng text, siguro. 126 00:06:11,390 --> 00:06:12,840 Enums ay uri ng kawili-wiling. 127 00:06:12,840 --> 00:06:16,080 Sila ang tunay na umiiral sa C. Hindi namin makipag-usap tungkol sa mga ito dahil sila ay hindi 128 00:06:16,080 --> 00:06:19,110 katakut-karaniwang ginagamit, hindi bababa sa CS50. 129 00:06:19,110 --> 00:06:22,680 Ngunit ito ay isang enumerated uri ng data, na kung saan ay may-hawak na limitado halaga. 130 00:06:22,680 --> 00:06:25,940 >> Ang isang talagang magandang halimbawa dito ay magiging upang lumikha ng isang enum kung saan ang pitong 131 00:06:25,940 --> 00:06:29,394 posibleng halaga ay Linggo, Lunes, Martes, Miyerkoles, Huwebes, Biyernes, 132 00:06:29,394 --> 00:06:30,060 Sabado, tama? 133 00:06:30,060 --> 00:06:33,311 Na uri ng data Araw ng Week ay hindi umiiral, 134 00:06:33,311 --> 00:06:35,310 ngunit kami ay maaaring lumikha ng isang inisa-isa na uri ng data tulad ng 135 00:06:35,310 --> 00:06:39,400 na haligi na maaari lamang kailanman humawak isa sa mga posibleng pitong mga halaga. 136 00:06:39,400 --> 00:06:44,300 Na inisa-isa namin ang lahat ng ng mga posibleng halaga. 137 00:06:44,300 --> 00:06:47,630 >> Pagkatapos kami ay may pansamantalang trabaho at VARCHAR, at na ako kulayan ang mga green 138 00:06:47,630 --> 00:06:49,505 dahil hindi namin talaga pagpunta sa tumagal ng pangalawang 139 00:06:49,505 --> 00:06:51,950 upang makipag-usap tungkol sa mga pagkakaiba pagitan ng dalawang mga bagay-bagay. 140 00:06:51,950 --> 00:06:55,780 Kaya pansamantalang trabaho, hindi tulad ng C kung saan Pansamantalang trabaho ay isang solong character, 141 00:06:55,780 --> 00:07:00,730 sa SQL isang pansamantalang trabaho ay tumutukoy sa isang nakapirming haba string. 142 00:07:00,730 --> 00:07:02,620 At kapag gumawa kami na ito column, namin talagang 143 00:07:02,620 --> 00:07:05,070 maaaring tukuyin ang haba ng string. 144 00:07:05,070 --> 00:07:08,080 >> Kaya sa halimbawang ito, maaari nating sabihin char (10). 145 00:07:08,080 --> 00:07:11,190 Ito ay nangangahulugan na ang bawat elemento ng hanay na iyon 146 00:07:11,190 --> 00:07:13,910 ay binubuo ng 10 bytes ng impormasyon. 147 00:07:13,910 --> 00:07:15,770 Walang labis, walang kulang. 148 00:07:15,770 --> 00:07:21,780 Kaya kung susubukan namin at ilagay sa isang 15 bit o isang element 15 na karakter 149 00:07:21,780 --> 00:07:25,340 o halaga sa hanay na ito, kami ay lamang makuha ang unang 10. 150 00:07:25,340 --> 00:07:27,290 Kung namin ilagay sa dalawang character ang haba ng halaga, 151 00:07:27,290 --> 00:07:30,700 kami ay pagpunta sa may dalawang character, at pagkatapos ay walong null kagat. 152 00:07:30,700 --> 00:07:34,990 Hindi namin kailanman maging mas mahusay kaysa sa na. 153 00:07:34,990 --> 00:07:37,727 >> Ang isang VARCHAR ay uri ng tulad ang aming paniwala ng isang string 154 00:07:37,727 --> 00:07:39,560 na kami ay pamilyar may mula sa C o mula sa PHP. 155 00:07:39,560 --> 00:07:40,830 Ito ay isang variable na haba string. 156 00:07:40,830 --> 00:07:42,560 At kapag ikaw ay lumikha ang hanay na ito, ikaw lamang 157 00:07:42,560 --> 00:07:44,860 tukuyin ang pinakamataas na posibleng mga haba. 158 00:07:44,860 --> 00:07:49,065 Kaya marahil 99, o karaniwang 255. 159 00:07:49,065 --> 00:07:50,440 Iyon ay ang maximum na haba. 160 00:07:50,440 --> 00:07:52,890 At kaya kung kami ay pag-iimbak 15 character na string, 161 00:07:52,890 --> 00:07:56,157 Gusto naming gamitin ang 15 bytes, marahil 16 bytes para sa mga null terminator. 162 00:07:56,157 --> 00:07:57,990 Kung kami ay pagtatago ng isang tatlong character na string, 163 00:07:57,990 --> 00:08:01,120 Gusto naming gamitin ang tatlo o apat na bytes. 164 00:08:01,120 --> 00:08:03,050 Ngunit hindi pa namin na gustong gamitin ang buong 99. 165 00:08:03,050 --> 00:08:05,190 >> Kaya bakit nais namin pareho? 166 00:08:05,190 --> 00:08:08,210 Well, kung kailangan namin upang malaman kung paano matagal ang isang bagay ay may isang VARCHAR, 167 00:08:08,210 --> 00:08:10,680 kami ay may sa uri ng umulit sa kabuuan gusto lang ito ginawa namin sa C 168 00:08:10,680 --> 00:08:12,230 at malaman kung saan ito hihinto. 169 00:08:12,230 --> 00:08:15,920 Sapagkat kung alam natin na ang lahat ng bagay sa hanay na ito ay 10 bytes, siguro 170 00:08:15,920 --> 00:08:19,220 alam namin na impormasyon, maaari naming tumalon 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 at laging mahanap ang simula ng string. 172 00:08:21,790 --> 00:08:25,210 >> Kaya maaaring mayroon kaming ilang mga nasayang na espasyo na may isang pansamantalang trabaho, 173 00:08:25,210 --> 00:08:28,510 ngunit marahil ay may isang trade off ng pagkakaroon ng mas mahusay na bilis 174 00:08:28,510 --> 00:08:30,160 sa pag-navigate ng database. 175 00:08:30,160 --> 00:08:32,330 Pero siguro gusto namin ang mga flexibility ng isang VARCHAR 176 00:08:32,330 --> 00:08:36,710 sa halip ng having-- Kung ang aming mga char ay 255, ngunit karamihan ng aming mga gumagamit 177 00:08:36,710 --> 00:08:40,537 ay tanging inputting tatlo o apat na bytes halaga ng mga impormasyon o tatlo o apat 178 00:08:40,537 --> 00:08:41,870 character na halaga ng impormasyon. 179 00:08:41,870 --> 00:08:44,324 >> Ngunit ang ilang mga gumagamit ay gumagamit ng ang buong 255, siguro 180 00:08:44,324 --> 00:08:45,990 VARCHAR ay magiging mas naaangkop doon. 181 00:08:45,990 --> 00:08:49,840 Ito ay uri ng isang kalakalan off, at sa pangkalahatan ay para sa mga layunin ng CS50, 182 00:08:49,840 --> 00:08:54,107 hindi mo na kailangan mag-alala masyadong maraming tungkol sa kung gumamit ka ng isang pansamantalang trabaho o isang VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Ngunit sa tunay na mundo, ang mga bagay gawin ang bagay dahil ang lahat ng mga hanay na ito 184 00:08:57,190 --> 00:08:59,300 tumagal ng hanggang mga aktwal na pisikal na espasyo. 185 00:08:59,300 --> 00:09:04,150 At pisikal na espasyo, sa tunay na mundo, ay dumating sa isang premium. 186 00:09:04,150 --> 00:09:06,800 >> Kaya isa sa iba pang mga pagsasaalang-alang kapag ikaw ay gusali ng isang talahanayan 187 00:09:06,800 --> 00:09:09,840 ay upang pumili ng isa sa haligi upang maging ano ang tinatawag na primary key. 188 00:09:09,840 --> 00:09:14,350 At isang pangunahing key ay isang haligi kung saan ang bawat solong halaga ay natatangi. 189 00:09:14,350 --> 00:09:19,980 At na nangangahulugan na maaari mong madaling pumili ng isang solong hanay pamamagitan lamang ng pagtingin 190 00:09:19,980 --> 00:09:22,450 sa pangunahing susi ng hilerang iyon. 191 00:09:22,450 --> 00:09:24,580 Kaya halimbawa, ikaw ay sa pangkalahatan, na may mga gumagamit, 192 00:09:24,580 --> 00:09:27,210 ayaw ng dalawang mga gumagamit na may parehong bilang user ID. 193 00:09:27,210 --> 00:09:28,960 At kaya baka mayroon kang maraming mga impormasyon, 194 00:09:28,960 --> 00:09:30,793 at siguro dalawang mga user ay maaaring magkaroon ng parehong name-- 195 00:09:30,793 --> 00:09:32,650 ikaw ay may John Smith at John Smith. 196 00:09:32,650 --> 00:09:34,520 Iyan ay hindi kinakailangan ng isang problema, dahil may mga maramihang mga tao 197 00:09:34,520 --> 00:09:35,830 sa mundo na may pangalang John Smith. 198 00:09:35,830 --> 00:09:40,766 Ngunit kami ay may lamang ang numero ng ID sa isang user 10, sa isang user ID number 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Wala kaming dalawang mga gumagamit na may parehong bilang, 200 00:09:42,640 --> 00:09:46,010 at kaya siguro numero user ID ay isang magandang pangunahing key. 201 00:09:46,010 --> 00:09:48,610 >> Wala kaming anumang pagkopya, at maaari naming ngayon katangi 202 00:09:48,610 --> 00:09:52,619 kilalanin ang bawat solong hanay lamang sa pamamagitan ng pagtingin sa hanay na iyon. 203 00:09:52,619 --> 00:09:55,410 Pagpili ng pangunahing mga susi ay maaaring aktwal na gumawa ng mga kasunod na mga pagpapatakbo talahanayan 204 00:09:55,410 --> 00:09:59,710 isang pulutong mas madali dahil maaari mong pagkilos ang katunayan na ang ilang mga hilera ay 205 00:09:59,710 --> 00:10:02,720 maging kakaiba, o sa isang tiyak na haligi ng iyong database o talahanayan 206 00:10:02,720 --> 00:10:06,030 ay natatangi sa pick out partikular na mga hilera. 207 00:10:06,030 --> 00:10:08,790 >> Maaari ka ring magkaroon ng isang pinagsamang primary key, na kung saan maaari mong mahanap ang mga dahilan ng ipagkakasala 208 00:10:08,790 --> 00:10:11,720 gamitin, na kung saan ay lamang ng isang kumbinasyon ng dalawang mga hanay na 209 00:10:11,720 --> 00:10:13,280 ay garantisadong maging kakaiba. 210 00:10:13,280 --> 00:10:16,410 Kaya marahil ay may isa column na Bilang at BS, 211 00:10:16,410 --> 00:10:19,290 isa sa haligi na ang isa, dalawa, at tatlong, ngunit maari ka lamang kailanman 212 00:10:19,290 --> 00:10:23,660 magkaroon ng isang single A1, ang isang solong A2, at iba pa at iba pa. 213 00:10:23,660 --> 00:10:28,980 Ngunit maaari kang magkaroon ng isang B2, isang C2, o isang A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Kaya maaari kang magkaroon ng maramihang mga Bilang, multiple BS, maramihang mga, maramihang mga twos, 215 00:10:32,840 --> 00:10:38,567 ngunit maaari ka lamang ba magkaroon ng isang single A1, B2, C3, at iba pa. 216 00:10:38,567 --> 00:10:40,400 Kaya tulad ng sinabi ko, SQL ay isang programming language, 217 00:10:40,400 --> 00:10:42,024 ngunit ito ay isang medyo limitado bokabularyo. 218 00:10:42,024 --> 00:10:44,880 Ito ay hindi lubos na malawak na bilang C at PHP at iba pang mga wika 219 00:10:44,880 --> 00:10:46,350 na makipag-usap namin sa kurso. 220 00:10:46,350 --> 00:10:49,960 Ito ay mas maligoy isang wika kaysa sa kung ano ang hindi namin 221 00:10:49,960 --> 00:10:52,789 pagpunta sa makipag-usap tungkol sa mga ito video, dahil sa video na ito 222 00:10:52,789 --> 00:10:54,830 kami ay pagpunta sa makipag-usap tungkol apat na mga pagpapatakbo na tayo 223 00:10:54,830 --> 00:10:55,720 maaaring isagawa sa isang table. 224 00:10:55,720 --> 00:10:56,761 >> Mayroong higit sa na ito. 225 00:10:56,761 --> 00:10:58,730 Maaari naming gawin ang higit pa sa, ngunit para sa aming mga layunin, 226 00:10:58,730 --> 00:11:02,250 pangkalahatan kami ay pagpunta sa gumagamit lamang ng apat operations-- insert, 227 00:11:02,250 --> 00:11:05,360 piliin, i-update, at tanggalin. 228 00:11:05,360 --> 00:11:08,750 At maaari mong marahil intuitively hulaan kung ano ang lahat ng apat na mga bagay na dapat gawin. 229 00:11:08,750 --> 00:11:12,520 Ngunit kami ay pumunta sa isang bit ng detalye sa bawat isa. 230 00:11:12,520 --> 00:11:15,780 >> Kaya para sa mga layunin ng video, sabihin ipalagay ipaalam 231 00:11:15,780 --> 00:11:18,870 kami ay ang mga sumusunod na dalawang mga talahanayan sa isang database. 232 00:11:18,870 --> 00:11:23,460 Kami ay may isang talahanayan na tinatawag na Ang mga gumagamit na may apat columns-- ID number, username, 233 00:11:23,460 --> 00:11:25,350 password, at buong pangalan. 234 00:11:25,350 --> 00:11:27,430 At kami ay may isang segundo talahanayan sa parehong database 235 00:11:27,430 --> 00:11:32,129 tinatawag moms na nag-iimbak ng impormasyon lamang tungkol sa isang username at isang ina. 236 00:11:32,129 --> 00:11:33,920 Kaya para sa lahat ng mga halimbawa sa video na ito, bibigyan namin ng 237 00:11:33,920 --> 00:11:37,945 ay gumagamit ng database na ito at kasunod na mga update sa mga ito. 238 00:11:37,945 --> 00:11:40,070 Kaya sabihin nating nais nating magdagdag ng impormasyon sa isang table. 239 00:11:40,070 --> 00:11:44,460 Iyon ay kung ano ang ginagawa ng insert operasyon. 240 00:11:44,460 --> 00:11:46,550 Sa nagpapaliwanag ang lahat ng ang mga utos, pupuntahan ko 241 00:11:46,550 --> 00:11:48,860 upang mabigyan ka ng isang pangkalahatang balangkas upang gamitin. 242 00:11:48,860 --> 00:11:51,661 Dahil isa lamang, ang mga query pupunta hitsura medyo katulad, 243 00:11:51,661 --> 00:11:54,660 lang kami na ang pagbabago bahagyang iba't ibang piraso ng impormasyon 244 00:11:54,660 --> 00:11:56,750 upang gawin ang iba't ibang bagay sa mga mesa. 245 00:11:56,750 --> 00:11:59,200 >> Kaya para INSERT, ang balangkas hitsura uri ng tulad nito. 246 00:11:59,200 --> 00:12:02,230 Gusto naming ipasok sa isang partikular na table. 247 00:12:02,230 --> 00:12:05,290 Pagkatapos kami ay may isang bukas na panaklong at isang listahan ng mga haligi 248 00:12:05,290 --> 00:12:08,070 na gusto naming ilagay ang halaga sa. 249 00:12:08,070 --> 00:12:10,974 Isara panaklong, ang sumusunod na mga halaga, at pagkatapos ay 250 00:12:10,974 --> 00:12:13,390 muli, ang listahan namin out ang mga halaga gusto naming ilagay sa talahanayan. 251 00:12:13,390 --> 00:12:15,950 >> Kaya ang isang halimbawa ng mga ito ay ang mga sumusunod. 252 00:12:15,950 --> 00:12:19,170 Gusto kong ipasok sa table mga sumusunod columns-- 253 00:12:19,170 --> 00:12:21,010 username, password, at fullname. 254 00:12:21,010 --> 00:12:25,282 Kaya ang isang bagong hilera kung saan makakakuha ako ng paglagay sa tatlong hanay ng mga at hindi namin 255 00:12:25,282 --> 00:12:30,030 pagpunta sa ilagay sa ang mga halaga Newman, USMAIL, at Newman. 256 00:12:30,030 --> 00:12:32,730 Kaya sa kasong ito, ako paglagay ng lowercase newman 257 00:12:32,730 --> 00:12:38,710 sa haligi ng username, password USMAIL, at ang buong pangalan capital N 258 00:12:38,710 --> 00:12:41,940 Newman sa haligi fullname. 259 00:12:41,940 --> 00:12:44,240 >> Kaya narito ang kung ano ang database mukhang bago. 260 00:12:44,240 --> 00:12:48,250 Narito ang kung ano ang mga gumagamit ng talahanayan sa top mukhang bago namin ginawa ito. 261 00:12:48,250 --> 00:12:50,760 Pagkatapos naming execute ito query, makuha namin ito. 262 00:12:50,760 --> 00:12:54,790 Nagdagdag kami ng isang bagong hilera sa talahanayan. 263 00:12:54,790 --> 00:12:56,810 Ngunit mapansin ang isang bagay na hindi ko tukuyin, 264 00:12:56,810 --> 00:12:59,880 ngunit sa anumang paraan Mayroon akong isang halaga para sa, na kung saan ay ang 12 karapatan dito. 265 00:12:59,880 --> 00:13:02,820 Hindi ko sinasabi ko nais na ilagay ang numero ng ID sa doon. 266 00:13:02,820 --> 00:13:04,900 Nais kong ilagay username, password, fullname. 267 00:13:04,900 --> 00:13:06,440 At ginawa ko na, na fine. 268 00:13:06,440 --> 00:13:07,760 >> Pero nakuha ko rin ito sa 12. 269 00:13:07,760 --> 00:13:09,490 Bakit ako nakakuha ito ng 12? 270 00:13:09,490 --> 00:13:12,904 Well, ito lumiliko out na kapag ikaw ay pagtukoy 271 00:13:12,904 --> 00:13:15,570 ang isang haligi na ito ay pagpunta sa maging ang iyong pangunahing susi, na kung saan ay karaniwang, 272 00:13:15,570 --> 00:13:16,510 tulad ng sinabi ko, ang isang numero ng ID. 273 00:13:16,510 --> 00:13:18,718 Ito ay hindi palaging nangangahulugang magiging isang numero ng ID, 274 00:13:18,718 --> 00:13:22,380 ngunit ito ay karaniwang isang magandang ideya na ilang uri ng integer value. 275 00:13:22,380 --> 00:13:25,950 Mayroon kang isang pagpipilian sa phpMyAdmin kapag ikaw ay lumilikha ng iyong database 276 00:13:25,950 --> 00:13:31,130 o ang iyong mga talahanayan upang i-set na haligi bilang auto incrementing. 277 00:13:31,130 --> 00:13:34,520 >> Aling ay isang tunay na magandang ideya kapag ikaw ay nagtatrabaho sa isang pangunahing susi, 278 00:13:34,520 --> 00:13:39,330 dahil gusto mo ang bawat halaga sa hanay na iyon upang maging kakaiba. 279 00:13:39,330 --> 00:13:43,310 At kung nakalimutan mo upang tukuyin ito para sa higit sa isang tao, 280 00:13:43,310 --> 00:13:46,240 ngayon ikaw ay may isang sitwasyon kung saan hanay na iyon ay hindi na kakaiba. 281 00:13:46,240 --> 00:13:50,200 Mayroon kang dalawang mga patlang, kaya maaari mong hindi na natatanging kilalanin ang isang column-- 282 00:13:50,200 --> 00:13:54,150 o maaari mong hindi na katangi kilalanin ang isang hilera batay sa hanay na iyon. 283 00:13:54,150 --> 00:13:57,010 Ito ay nawala ang lahat ng kanyang halaga bilang isang pangunahing key. 284 00:13:57,010 --> 00:14:02,010 >> At kaya tila kung ano ang aking ginawa dito ay naka-configure ang user ID 285 00:14:02,010 --> 00:14:07,790 haligi sa auto paglakas upang ang bawat oras ako magdagdag ng impormasyon sa table, 286 00:14:07,790 --> 00:14:12,220 ito ay awtomatikong magbibigay sa akin isang halaga para sa mga pangunahing susi. 287 00:14:12,220 --> 00:14:15,570 Kaya hindi ko ma-kalimutan na gawin ito dahil ang database ay gawin ito para sa akin. 288 00:14:15,570 --> 00:14:16,587 Kaya na uri ng magaling. 289 00:14:16,587 --> 00:14:18,670 At kaya na kung bakit kami makakuha 12 sa doon, dahil ako na 290 00:14:18,670 --> 00:14:21,772 set na column hanggang sa auto pagdagdag. 291 00:14:21,772 --> 00:14:23,730 Kung nagdagdag ako ng ibang tao gusto ito ay 13, kung ako nagdagdag 292 00:14:23,730 --> 00:14:27,890 may ibang tao na gusto ito ay 14, at iba pa. 293 00:14:27,890 --> 00:14:30,190 >> Kaya sabihin gawin lamang ng isa pang insertion. 294 00:14:30,190 --> 00:14:34,530 Susubukan naming ipasok sa table moms, sa partikular, ang mga username at ina 295 00:14:34,530 --> 00:14:37,390 column, ang mga halaga kramer at Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 At kaya kami ay nagkaroon na ito bago. 297 00:14:39,140 --> 00:14:41,800 Pagkatapos naming execute na SQL query, kung ito namin. 298 00:14:41,800 --> 00:14:47,290 Nagdagdag kami ng Kramer at Babs Kramer sa talahanayan moms. 299 00:14:47,290 --> 00:14:48,350 >> Kaya na pagpasok. 300 00:14:48,350 --> 00:14:51,850 SELECT ay kung ano ang ginagamit namin upang kunin impormasyon mula sa mga table. 301 00:14:51,850 --> 00:14:54,390 Kaya ito ay kung paano makuha namin impormasyon sa labas ng database. 302 00:14:54,390 --> 00:14:59,589 At kaya SELECT utos ay magiging very madalas na ginagamit sa programming. 303 00:14:59,589 --> 00:15:02,130 Ang pangkalahatang framework-- ang pangkalahatang balangkas ganito ang hitsura nito. 304 00:15:02,130 --> 00:15:06,550 Pumili ng isang set ng mga hanay mula sa isang table, at pagkatapos ay opsyonal 305 00:15:06,550 --> 00:15:11,090 maaari mong tukuyin ang isang condition-- o ano ang karaniwang tawag namin sa isang tambalan, 306 00:15:11,090 --> 00:15:13,010 ay karaniwang ang katawagan na ginagamit namin sa SQL. 307 00:15:13,010 --> 00:15:16,490 >> Ngunit ito ay isa lamang kung ano partikular na mga hilera na nais mong makakuha ng. 308 00:15:16,490 --> 00:15:19,100 Kung nais mong, sa halip ng pagkuha ng lahat ng bagay, makitid ito, 309 00:15:19,100 --> 00:15:20,060 ito ay kung saan na iyong nais na gawin iyon. 310 00:15:20,060 --> 00:15:22,777 At pagkatapos ay opsyonal, maaari mo ring order sa pamamagitan ng isang partikular na hanay. 311 00:15:22,777 --> 00:15:25,860 Kaya marahil nais mong magkaroon ng mga bagay-bagay na pinagsunod-sunod ayon sa alpabeto batay sa isang hanay 312 00:15:25,860 --> 00:15:27,540 o ayon sa alpabeto batay sa isa pa. 313 00:15:27,540 --> 00:15:30,610 >> Muli, SAAN at Order NG ay opsyonal. 314 00:15:30,610 --> 00:15:32,681 Ngunit ang mga ito ay malamang na maging useful-- lalo 315 00:15:32,681 --> 00:15:34,680 SAAN magiging kapaki-pakinabang sa paliitin ang kaya hindi mo 316 00:15:34,680 --> 00:15:37,460 makakuha ng iyong buong database sa likod at Mayroon na proseso ito, makakakuha ka lamang 317 00:15:37,460 --> 00:15:39,300 ang mga piraso ng mga ito na mahalaga sa iyo. 318 00:15:39,300 --> 00:15:44,932 Kaya halimbawa, baka gusto kong piliin ID number at fullname mula sa mga gumagamit. 319 00:15:44,932 --> 00:15:46,140 Kaya kung ano ang maaaring maging hitsura ng tulad? 320 00:15:46,140 --> 00:15:48,270 Kaya narito ang aking mga talahanayan ng mga gumagamit. 321 00:15:48,270 --> 00:15:51,080 Gusto kong piliin idnum at fullname mula sa mga gumagamit. 322 00:15:51,080 --> 00:15:52,300 Ano ako pagpunta upang makakuha ng? 323 00:15:52,300 --> 00:15:53,580 Pupunta ako upang makakuha ng ito. 324 00:15:53,580 --> 00:15:56,930 Hindi ko makitid ito, kaya hindi ako sa pagkuha ng mga numero ng ID para sa bawat hilera 325 00:15:56,930 --> 00:16:00,850 at Nakakakuha ako ng full pangalan mula sa bawat hilera. 326 00:16:00,850 --> 00:16:02,210 >> SIGE. 327 00:16:02,210 --> 00:16:05,640 Paano kung gusto kong piliin ang password mula sa mga gumagamit WHERE-- kaya ngayon 328 00:16:05,640 --> 00:16:10,370 Magdaragdag ako ng kondisyon, isang predicate-- kung saan idnum ay mas mababa sa 12. 329 00:16:10,370 --> 00:16:13,660 Kaya narito muli ang aking database, ang aking mga talahanayan ng mga user ang top. 330 00:16:13,660 --> 00:16:17,030 Ano ako pagpunta upang makakuha ng kung gusto kong piliin ang impormasyon na iyon, ang mga password, 331 00:16:17,030 --> 00:16:21,550 na kung saan ang user ID o idnum ay mas mababa sa 12? 332 00:16:21,550 --> 00:16:24,910 Pupunta ako upang makakuha ng ito impormasyon sa likod, di ba? 333 00:16:24,910 --> 00:16:29,170 Ito ay nangyayari na idnum ay 10, mas mababa sa 12, ID number 11 mas mababa sa 12. 334 00:16:29,170 --> 00:16:32,160 Nakakakuha ako ng mga password para sa mga hilera. 335 00:16:32,160 --> 00:16:33,914 Iyan ay kung ano ang aking hiniling para sa. 336 00:16:33,914 --> 00:16:34,580 Ano ang tungkol sa mga ito? 337 00:16:34,580 --> 00:16:39,170 Paano kung gusto kong piliin star mula sa moms table kung saan username katumbas Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, piliin ang star ay ang espesyal na uri ng wild card tinatawag 339 00:16:43,780 --> 00:16:45,670 na ginagamit namin upang makakuha ng lahat ng bagay. 340 00:16:45,670 --> 00:16:48,620 Kaya sila ay sinasabi piliin username comma ina, na 341 00:16:48,620 --> 00:16:51,060 nangyari na ang tanging dalawang mga hanay ng talahanayan na ito, 342 00:16:51,060 --> 00:16:53,260 Maaari ko lang pumili ng star at makuha ang lahat 343 00:16:53,260 --> 00:16:55,030 kung saan ang mga username ay katumbas Jerry. 344 00:16:55,030 --> 00:16:59,380 At kaya na kung ano ang nais kong makuha kung ginawa ko na ang partikular na query. 345 00:16:59,380 --> 00:17:01,810 >> Ngayon, database ay malaki dahil pinapayagan nila 346 00:17:01,810 --> 00:17:06,074 sa amin upang ayusin ang impormasyon marahil medyo mas mahusay kaysa sa namin 347 00:17:06,074 --> 00:17:06,740 maaaring sa kabilang banda. 348 00:17:06,740 --> 00:17:10,240 Kami ay hindi kinakailangang mag-imbak ng bawat kaugnay na piraso ng impormasyon 349 00:17:10,240 --> 00:17:12,230 tungkol sa isang user sa parehong table. 350 00:17:12,230 --> 00:17:13,730 Nagkaroon kami ng dalawang tables doon. 351 00:17:13,730 --> 00:17:15,734 >> Kailangan naming iimbak pangalan ng ina ng lahat ng tao, 352 00:17:15,734 --> 00:17:18,900 at baka wala tayong social security number, kami ay may sa kanilang mga petsa ng kapanganakan. 353 00:17:18,900 --> 00:17:21,819 Iyan ay hindi laging kailangan upang maging sa parehong table. 354 00:17:21,819 --> 00:17:25,339 Hangga't maaari naming tukuyin ang relasyon sa pagitan ng tables-- 355 00:17:25,339 --> 00:17:28,440 at na kung saan na pamanggit kataga database uri ng pagdating 356 00:17:28,440 --> 00:17:32,130 sa play-- hangga't maaari naming tukuyin ang relasyon sa pagitan ng mga mesa, 357 00:17:32,130 --> 00:17:35,545 maaari naming uri ng compartmentalize o abstract bagay sa isang paraan, 358 00:17:35,545 --> 00:17:37,670 kung saan ang tanging nasa atin ang talagang mahalaga na impormasyon 359 00:17:37,670 --> 00:17:39,270 pinapahalagahan namin ang tungkol sa talahanayan ng gumagamit. 360 00:17:39,270 --> 00:17:43,220 At pagkatapos kami ay may mababa na impormasyon o dagdag na impormasyon sa iba pang mga talahanayan 361 00:17:43,220 --> 00:17:48,260 na maaari naming ikonekta pabalik sa pangunahing mesa mga gumagamit sa isang partikular na paraan. 362 00:17:48,260 --> 00:17:52,200 >> Kaya dito kami ng mga dalawang mga talahanayan, ngunit mayroong isang kaugnayan sa pagitan ng mga ito, 363 00:17:52,200 --> 00:17:53,010 right? 364 00:17:53,010 --> 00:17:55,070 Tila tulad ng username maaaring maging isang bagay 365 00:17:55,070 --> 00:17:59,909 na umiiral sa mga karaniwang sa pagitan ang dalawang mga iba't ibang mga talahanayan. 366 00:17:59,909 --> 00:18:01,700 Kaya kung ano kung mayroon kami ngayon isang sitwasyon kung saan kami ay 367 00:18:01,700 --> 00:18:06,046 nais upang makakuha ng buong pangalan ng isang user mula sa talahanayan ng gumagamit, at ang kanilang mga ina 368 00:18:06,046 --> 00:18:07,170 pangalan mula sa ina table? 369 00:18:07,170 --> 00:18:10,960 Hindi namin magkaroon ng isang paraan upang makakuha ng na dahil ito ay nakatayo, di ba? 370 00:18:10,960 --> 00:18:17,790 Walang iisang table na naglalaman ng parehong buong pangalan at ang pangalan ng ina. 371 00:18:17,790 --> 00:18:20,400 Wala kaming na opsyon mula sa kung ano ang nasaksihan namin sa ngayon. 372 00:18:20,400 --> 00:18:22,950 >> At kaya kami ay may sa kitang ipakilala ang ideya ng isang SUMALI. 373 00:18:22,950 --> 00:18:24,857 At pagsali ay marahil ang pinaka complex-- 374 00:18:24,857 --> 00:18:27,940 ito ay talagang pinaka masalimuot na operasyon kami ay pagpunta sa makipag-usap tungkol sa video. 375 00:18:27,940 --> 00:18:30,040 Ang mga ito ay isang maliit na kumplikado, ngunit sa sandaling makuha mo ang hang ng mga ito, 376 00:18:30,040 --> 00:18:31,248 ang mga ito ay aktwal na hindi masyadong masama. 377 00:18:31,248 --> 00:18:32,820 Ito lamang ay isang espesyal na kaso ng isang PUMILI. 378 00:18:32,820 --> 00:18:37,120 Kami ay pagpunta sa pumili ng isang hanay ng mga mga haligi mula sa isang table pagsali 379 00:18:37,120 --> 00:18:40,650 sa isang pangalawang talahanayan sa ilang predicate. 380 00:18:40,650 --> 00:18:45,340 >> Sa kasong ito, isipin ang tungkol dito gusto this-- mesa isa ay isang bilog sa paglipas dito, 381 00:18:45,340 --> 00:18:47,530 talahanayan ng dalawang ay isa pang bilog sa paglipas dito. 382 00:18:47,530 --> 00:18:49,410 At na predicate bahagi sa gitna, ito ay 383 00:18:49,410 --> 00:18:51,701 uri ng tulad ng kung sa tingin mo tungkol sa bilang isang Venn diagram, kung ano 384 00:18:51,701 --> 00:18:52,670 ang mayroon sila sa mga karaniwang? 385 00:18:52,670 --> 00:18:55,960 Gusto naming i-link ang mga ito ng dalawang mga talahanayan batay sa kung ano ang mayroon sila sa mga karaniwang 386 00:18:55,960 --> 00:19:01,230 at lumikha ng hypothetical talahanayan na ito iyon ay ang pagsama-sama ng dalawang magkasama. 387 00:19:01,230 --> 00:19:03,480 Kaya makikita namin makita ang mga ito sa isang Halimbawa at baka makikita na makakatulong sa 388 00:19:03,480 --> 00:19:04,521 malinaw na ito up ng isang maliit na bit. 389 00:19:04,521 --> 00:19:09,260 Kaya marahil na gusto mong piliin user.fullname at moms.mother 390 00:19:09,260 --> 00:19:13,220 mula sa mga gumagamit ng pagsali sa moms talahanayan sa bawat sitwasyon 391 00:19:13,220 --> 00:19:16,790 kung saan ang mga haligi ng username ay pareho sa pagitan ng mga ito. 392 00:19:16,790 --> 00:19:19,240 At ito ay isang bagong syntax dito, ang user na ito. 393 00:19:19,240 --> 00:19:20,460 at moms .. 394 00:19:20,460 --> 00:19:26,697 Kung ako ng paggawa ng maramihang mga talahanayan sama-sama, maaari ko bang tukuyin ang isang table. 395 00:19:26,697 --> 00:19:29,530 Maaari kong makilala sa partikular na sa na sa sa pinakadulo ibaba doon. 396 00:19:29,530 --> 00:19:33,220 Maaari ko bang makilala ang mga username haligi ng talahanayan gumagamit 397 00:19:33,220 --> 00:19:36,010 mula sa mga username haligi ng moms table, na kung saan ay otherwise-- 398 00:19:36,010 --> 00:19:38,070 kung sinabi lang namin ay katumbas ng username username, na hindi talaga 399 00:19:38,070 --> 00:19:38,970 nangangahulugan na kahit ano. 400 00:19:38,970 --> 00:19:41,440 Gusto naming gawin ito kung saan sila ay tumugma. 401 00:19:41,440 --> 00:19:46,080 >> Kaya ang maaari kong tukuyin ang table at ang pangalan ng haligi sa kaso ng isang sitwasyon 402 00:19:46,080 --> 00:19:48,370 kung saan ito ay hindi maliwanag kung ano ang sinasabi ko. 403 00:19:48,370 --> 00:19:51,880 Kaya na ang lahat ako ginagawa mayroong Ako sinasabi ng hanay na ito mula sa talahanayan na ito, 404 00:19:51,880 --> 00:19:54,020 at sa pagiging napaka malinaw. 405 00:19:54,020 --> 00:19:56,810 Kaya muli, ako ng pagpili sa buong pangalan at ang pangalan ng ina 406 00:19:56,810 --> 00:20:00,950 mula sa talahanayan gumagamit na naka-link nang sama-sama may table moms sa bawat sitwasyon 407 00:20:00,950 --> 00:20:05,960 kung saan sila nagbabahagi na column-- nilang ibahagi na paniwala username. 408 00:20:05,960 --> 00:20:08,580 >> Kaya dito ay ang mga talahanayan kami ay bago. 409 00:20:08,580 --> 00:20:12,210 Ito ang estado ng ating database na ito ay umiiral ngayon. 410 00:20:12,210 --> 00:20:16,390 Ang impormasyon na kami ay extract ay ito na magsimula sa. 411 00:20:16,390 --> 00:20:19,820 Ito ay ang bagong mesa kami ay pagpunta upang lumikha ng mga pagsasama-sama ng mga sama-sama. 412 00:20:19,820 --> 00:20:23,585 At mapansin hindi kami highlight Hilera Newman sa talahanayan ng gumagamit, 413 00:20:23,585 --> 00:20:25,960 at hindi namin pag-highlight Hilera Kramer ni sa talahanayan moms 414 00:20:25,960 --> 00:20:31,250 dahil mayroon na hindi isa sa parehong sets-- sa parehong talahanayan. 415 00:20:31,250 --> 00:20:36,260 >> Ang tanging impormasyon na nasa karaniwang pagitan ng mga ito ay Jerry ay sa parehong mga talahanayan 416 00:20:36,260 --> 00:20:39,100 at gcostanza ay sa parehong talahanayan. 417 00:20:39,100 --> 00:20:42,620 At kaya kapag ginagawa namin ang SQL SUMALI, kung ano ang aming get-- at ginagawa namin talagang makakuha ng ito. 418 00:20:42,620 --> 00:20:44,830 Ito ay uri ng isang pansamantalang variable. 419 00:20:44,830 --> 00:20:47,330 Ito ay tulad ng isang hypothetical pagsama-sama ng dalawang mga talahanayan. 420 00:20:47,330 --> 00:20:49,930 Kami ay talagang makakuha ng isang bagay tulad nito, kung saan 421 00:20:49,930 --> 00:20:54,730 na ipinagsama namin nang magkasama ang mga talahanayan sa impormasyon na mayroon sila sa pangkaraniwan. 422 00:20:54,730 --> 00:20:58,334 >> Kaya mapapansin na users.username at haligi moms.username, 423 00:20:58,334 --> 00:20:59,250 ito ay eksaktong kapareho. 424 00:20:59,250 --> 00:21:01,820 Iyon ay ang mga impormasyon na ay pare-pareho mula sa mga gumagamit 425 00:21:01,820 --> 00:21:02,890 mesa at mga talahanayan moms. 426 00:21:02,890 --> 00:21:04,270 At kaya Pinagsama namin ang mga ito nang magkakasama. 427 00:21:04,270 --> 00:21:06,919 Tinapon namin Kramer dahil siya ay hindi na umiiral sa talahanayan ng mga gumagamit, 428 00:21:06,919 --> 00:21:09,710 at tinapon namin Newman, dahil hindi siya ay umiiral sa talahanayan moms. 429 00:21:09,710 --> 00:21:16,450 Kaya ito ay ang hypothetical pagsama-sama gamit ang SUMALI operasyon ng SELECT. 430 00:21:16,450 --> 00:21:21,250 >> At pagkatapos kami ay naghahanap para sa mga buong pangalan ng user at ina ng gumagamit, 431 00:21:21,250 --> 00:21:24,999 at sa gayon ito ay ang mga impormasyon na Gusto naming makuha mula sa pangkalahatang query 432 00:21:24,999 --> 00:21:26,040 na aming ginawa sa SELECT. 433 00:21:26,040 --> 00:21:28,873 Kaya sumali namin ang mga talahanayan ng magkasama at nakuha namin ang dalawang mga hanay ng mga, 434 00:21:28,873 --> 00:21:31,610 at sa gayon ay kung ano ang gusto naming makuha. 435 00:21:31,610 --> 00:21:33,370 Ngunit SQL pagsali ng isang uri ng kumplikado. 436 00:21:33,370 --> 00:21:36,770 Marahil ay hindi mo gawin ang mga ito ng masyadong maraming, ngunit mayroon lamang ilang mga ideya ng mga balangkas 437 00:21:36,770 --> 00:21:41,992 na maaari mong gamitin upang sumanib dalawang talahanayan ng magkasama kung kinakailangan mo na. 438 00:21:41,992 --> 00:21:43,700 Ang huling dalawang mga bit mas simple pangako ko. 439 00:21:43,700 --> 00:21:48,040 Kaya sa pag-update, maaari naming gamitin UPDATE upang baguhin ang mga impormasyon sa isang table. 440 00:21:48,040 --> 00:21:53,880 Ang pangkalahatang format ay UPDATE ilang table, SET ilang column sa ilang mga halaga 441 00:21:53,880 --> 00:21:55,540 SAAN ilang predicate ay nasiyahan. 442 00:21:55,540 --> 00:21:57,850 Kaya halimbawa, maaari naming nais upang i-update ang talahanayan gumagamit 443 00:21:57,850 --> 00:22:04,400 at itakda ang password sa yada yada, kung saan ang mga numero ng ID ay 10. 444 00:22:04,400 --> 00:22:06,400 >> Kaya sa kasong ito, hindi namin pag-update ng mga gumagamit ng talahanayan. 445 00:22:06,400 --> 00:22:08,275 Ang numero ng ID ay 10 para sa na ang unang hilera doon, 446 00:22:08,275 --> 00:22:10,690 at gusto naming i-update ang password upang yada yada. 447 00:22:10,690 --> 00:22:12,170 At kaya na kung ano ang mangyayari. 448 00:22:12,170 --> 00:22:13,628 Ito ay medyo tapat, di ba? 449 00:22:13,628 --> 00:22:17,990 Ito lamang ay isang napaka-simple pagbabago sa talahanayan. 450 00:22:17,990 --> 00:22:22,250 >> ALISIN ay ang operasyon na ginamit namin upang tanggalin ang impormasyon mula sa isang table. 451 00:22:22,250 --> 00:22:24,817 ALISIN MULA mesa SAAN ilang predicate ay nasiyahan. 452 00:22:24,817 --> 00:22:26,900 Gusto naming tanggalin ang mula sa gumagamit ng talahanayan para sa mga halimbawa 453 00:22:26,900 --> 00:22:28,254 kung saan ang mga username ay Newman. 454 00:22:28,254 --> 00:22:31,420 Maaari mong marahil hulaan kung ano ang nangyayari sa mangyari dito pagkatapos naming execute na SQL 455 00:22:31,420 --> 00:22:35,790 query, Newman ay nawala mula sa talahanayan. 456 00:22:35,790 --> 00:22:40,460 >> Kaya lahat ng mga operasyon, tulad ng sinabi ko na, ay tunay madali na gawin sa phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Ito ay isang friendly interface tunay user. 458 00:22:43,020 --> 00:22:45,930 Ngunit ito ay hindi nangangailangan ng manual na pagsisikap. 459 00:22:45,930 --> 00:22:47,840 Hindi namin nais upang umupa manual pagsisikap. 460 00:22:47,840 --> 00:22:51,280 Gusto naming ang aming mga programa sa gawin ito para sa amin, di ba? 461 00:22:51,280 --> 00:22:53,190 Kaya maaaring gusto naming gawin ito ng programming. 462 00:22:53,190 --> 00:22:56,410 Gusto naming isama ang SQL at magkaroon ibang bagay upang gawin ito para sa amin. 463 00:22:56,410 --> 00:23:02,710 >> Ngunit ano ang aming nakita na nagbibigay-daan amin sa programming gawin ang isang bagay? 464 00:23:02,710 --> 00:23:03,690 Nakita namin ang PHP, di ba? 465 00:23:03,690 --> 00:23:05,760 Ito introduces ilang dynamism sa aming mga programa. 466 00:23:05,760 --> 00:23:10,430 At kaya sa kabutihang-palad, SQL at PHP play tunay mabuti sama-sama. 467 00:23:10,430 --> 00:23:13,230 May isang function sa PHP tinatawag na query, na kung saan ay maaaring gamitin. 468 00:23:13,230 --> 00:23:15,870 At maaari mong ipasa ang bilang ng mga parameter o ang argument 469 00:23:15,870 --> 00:23:19,210 para sa mga tanong ng isang SQL query na Gusto mo bang mag-execute. 470 00:23:19,210 --> 00:23:23,250 At PHP ay gawin ito sa iyong ngalan. 471 00:23:23,250 --> 00:23:25,564 >> Kaya pagkatapos mong konektado sa iyong database sa PHP, 472 00:23:25,564 --> 00:23:26,980 mayroong dalawang primaries mong gawin ito. 473 00:23:26,980 --> 00:23:29,230 May isang bagay na tinatawag na MySQLi at isang bagay na tinatawag na PDO. 474 00:23:29,230 --> 00:23:31,063 Hindi namin pumunta sa isang malaking halaga ng detalye doon. 475 00:23:31,063 --> 00:23:32,957 Sa CS50 ginagamit namin PDO. 476 00:23:32,957 --> 00:23:34,790 Pagkatapos mong ma-konektado sa iyong database, ikaw ay 477 00:23:34,790 --> 00:23:40,980 Maaari pagkatapos ay gumawa ng mga query ng iyong database pamamagitan ng pagpasa sa mga query bilang argumento 478 00:23:40,980 --> 00:23:42,730 sa mga function na PHP. 479 00:23:42,730 --> 00:23:46,460 At kapag ginawa mo na, mag-imbak mo ang ang resulta na itinakda sa isang nag-uugnay array. 480 00:23:46,460 --> 00:23:50,290 >> At alam namin kung paano gumagana sa uugnay array sa PHP. 481 00:23:50,290 --> 00:23:52,630 Kaya ako maaaring sabihin ng isang bagay tulad this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 ito ay nasa PHP-- katumbas query. 483 00:23:55,470 --> 00:23:57,660 At pagkatapos ay sa loob ng query function na argumento 484 00:23:57,660 --> 00:24:00,130 na ako makapasa sa query na ganito ang hitsura SQL. 485 00:24:00,130 --> 00:24:01,160 At sa katotohanan na ang SQL. 486 00:24:01,160 --> 00:24:05,700 Iyan ang query string na gusto ko Gusto upang maipatupad sa aking database. 487 00:24:05,700 --> 00:24:09,250 >> At kaya sa red, ito ay PHP. 488 00:24:09,250 --> 00:24:11,890 Ito ang SQL na ako pagsasama sa PHP sa pamamagitan ng paggawa 489 00:24:11,890 --> 00:24:15,020 ito ang argumento sa function query. 490 00:24:15,020 --> 00:24:19,640 Gusto kong piliin fullname mula mga user kung saan ang numero ng ID ay katumbas ng 10. 491 00:24:19,640 --> 00:24:22,560 At pagkatapos ay marahil matapos Ginawa ko na iyon, Maaaring sabihin ko ng isang bagay na katulad nito. 492 00:24:22,560 --> 00:24:25,550 Gusto kong i-print out ang Salamat mensahe para sa pag-log in. 493 00:24:25,550 --> 00:24:32,530 >> At gusto ko ito interpolate-- gusto ko sa salita o mga salita $ resulta fullname. 494 00:24:32,530 --> 00:24:36,280 At kaya na kung paano ako magtrabaho kasama na nag-uugnay array na Nakatanggap ako pabalik. 495 00:24:36,280 --> 00:24:39,730 $ fullname resulta ng gagawin talaga humantong sa pag-print out, 496 00:24:39,730 --> 00:24:42,870 salamat para sa pag-log in, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Iyon ay ang buong pangalan kung saan idnum katumbas ng 10. 498 00:24:46,570 --> 00:24:48,850 >> At sa gayon ang lahat ako ginagawa ay ako now-- ko na naka-imbak 499 00:24:48,850 --> 00:24:52,780 aking query, ang mga resulta ng aking query at mga resulta sa isang nag-uugnay array, 500 00:24:52,780 --> 00:24:56,330 at fullname ay ang pangalan ng ang haligi ng ako ay nakakakuha ng para sa. 501 00:24:56,330 --> 00:25:01,010 Kaya na ang aking mga susi sa mga resulta nag-uugnay array na gusto ko. 502 00:25:01,010 --> 00:25:05,930 Kaya Salamat para sa pag-log in, $ resulta, Makikita fullname i-print out, dumikit 503 00:25:05,930 --> 00:25:08,654 karapatan sa pagitan ng mga kulot braces, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 At kukunin ko na i-print out ang mensahe Salamat para sa pag-log in Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Ngayon, marahil hindi namin nais sa hard bagay code na tulad nang sa, right? 506 00:25:16,652 --> 00:25:19,860 Maaaring gusto naming gawin ang isang bagay tulad ng pag-print f, kung saan maaari naming kapalit at baka 507 00:25:19,860 --> 00:25:22,443 mangolekta ng iba't ibang impormasyon, o marahil ay may proseso query 508 00:25:22,443 --> 00:25:23,370 iba't-ibang impormasyon. 509 00:25:23,370 --> 00:25:27,920 At kaya query, ang query function ay ang paniwala ng mga uri ng mga pamalit 510 00:25:27,920 --> 00:25:32,310 halos kapareho sa i-print ang f percent s at porsiyento c, ay mga tandang pananong. 511 00:25:32,310 --> 00:25:34,290 >> At maaari naming gamitin tanong marks very analogously 512 00:25:34,290 --> 00:25:38,400 upang i-print f na kapalit variable. 513 00:25:38,400 --> 00:25:44,120 Kaya marahil ang iyong user naka-log in nang mas maaga, at na-save mo ang kanilang mga user ID number 514 00:25:44,120 --> 00:25:51,710 sa $ _SESSION ng PHP super global sa key ID. 515 00:25:51,710 --> 00:25:55,947 Kaya marahil pagkatapos nilang naka-log in, kang magtakda ng $ _SESSION ID ay katumbas ng 10, 516 00:25:55,947 --> 00:25:58,280 extrapolating mula sa halimbawa Nakita lang namin ng isang segundo na nakalipas. 517 00:25:58,280 --> 00:26:01,960 >> At kaya kapag namin talagang execute ito query ng mga resulta ngayon, 518 00:26:01,960 --> 00:26:08,440 ito ay plug sa 10, o kahit anong ang $ _SESSION halaga ID ay. 519 00:26:08,440 --> 00:26:10,790 At kaya na nagbibigay-daan sa amin upang maging mas dynamic ng kaunti. 520 00:26:10,790 --> 00:26:12,699 Hindi namin hard coding bagay sa ngayon. 521 00:26:12,699 --> 00:26:14,490 Kami ay pag-save ng impormasyon sa tabi-tabi at pagkatapos ay 522 00:26:14,490 --> 00:26:18,924 maaari naming gamitin muli ang impormasyon na iyon uri ng tuntuning panlahat kung ano ang gusto naming gawin, 523 00:26:18,924 --> 00:26:21,090 at mga plug-in at mga pagbabago lamang ang pag-uugali ng aming mga pahina 524 00:26:21,090 --> 00:26:26,489 batay sa kung ano ang numero ng ID ng gumagamit talaga ay pagkatapos nilang mag-log in. 525 00:26:26,489 --> 00:26:28,530 Posible rin, bagaman, na-set ang iyong mga resulta 526 00:26:28,530 --> 00:26:30,840 maaaring binubuo ng maraming mga hilera. 527 00:26:30,840 --> 00:26:33,990 Sa anong kaso, mayroon kang isang array ng arrays-- 528 00:26:33,990 --> 00:26:35,334 isang hanay ng mga nag-uugnay array. 529 00:26:35,334 --> 00:26:37,000 At ikaw lamang ang kailangan upang umulit sa pamamagitan nito. 530 00:26:37,000 --> 00:26:41,950 At alam namin kung paano upang umulit pamamagitan ng isang array sa PHP, di ba? 531 00:26:41,950 --> 00:26:45,600 Kaya dito ay marahil ang pinaka kumplikadong bagay na nakita namin sa ngayon. 532 00:26:45,600 --> 00:26:49,640 Ito ang tunay na integrates tatlong mga wika na magkasama. 533 00:26:49,640 --> 00:26:52,920 >> Dito sa red, ito ang ilang mga HTML. 534 00:26:52,920 --> 00:26:56,872 Tila ako starting-- ito ay isang snippet ng ilang mga HTML na mayroon ako. 535 00:26:56,872 --> 00:26:59,580 Ako simula ng isang bagong talata na sabi ng moms ng Seinfeld TV. 536 00:26:59,580 --> 00:27:02,350 At pagkatapos ay agad pagkatapos Ako simula ng isang table. 537 00:27:02,350 --> 00:27:06,060 At pagkatapos ay pagkatapos na, ako may ilang PHP, di ba? 538 00:27:06,060 --> 00:27:08,229 Mayroon akong lahat ng code na PHP sa doon. 539 00:27:08,229 --> 00:27:09,645 Tila ako pagpunta gumawa ng isang query. 540 00:27:09,645 --> 00:27:14,180 At upang gumawa ng mga query, ako pagpunta sa ay gumagamit ng mga ina SELECT FROM moms. 541 00:27:14,180 --> 00:27:15,970 >> Kaya ito ay getting-- ito ay SQL. 542 00:27:15,970 --> 00:27:17,300 Kaya ang mga asul ay SQL. 543 00:27:17,300 --> 00:27:19,680 Ang red nakita namin ang isang segundo na nakalipas ay HTML. 544 00:27:19,680 --> 00:27:21,360 At ang green dito ay PHP. 545 00:27:21,360 --> 00:27:23,400 Kaya ako gumawa ng isang query sa aking database, ako 546 00:27:23,400 --> 00:27:26,040 piliin ang lahat ng mga ina sa talahanayan moms. 547 00:27:26,040 --> 00:27:30,710 Hindi lamang kitid ito sa mga partikular na hilera, ako na humihingi para sa lahat ng mga ito. 548 00:27:30,710 --> 00:27:33,290 >> Pagkatapos suriin ko kung resulta ay Hindi equals katumbas false. 549 00:27:33,290 --> 00:27:37,410 Ito ay lamang ang aking paraan ng pag-uuri-check ng kung resulta ay hindi katumbas ng null, 550 00:27:37,410 --> 00:27:40,260 na gusto namin makita c halimbawa. 551 00:27:40,260 --> 00:27:44,000 Karaniwang ito ay lamang ng pagsuri upang gumawa ng siguraduhin na ito talagang matindi ang data sa likod. 552 00:27:44,000 --> 00:27:47,041 Dahil hindi ko nais upang simulan ang pag-print out data kung hindi ko makuha ang anumang data. 553 00:27:47,041 --> 00:27:50,690 Pagkatapos para sa bawat resulta ng bilang isang resulta ang foreach syntax mula sa PHP, ang lahat ako ginagawa 554 00:27:50,690 --> 00:27:53,399 ay pag-print out ina $ resulta. 555 00:27:53,399 --> 00:27:55,940 At kaya ako pagpunta upang makakuha ng isang set ng lahat ng mga ina ng each-- 556 00:27:55,940 --> 00:27:59,980 ito ay isang hanay ng mga nag-uugnay arrays-- at ako nagpi-print out 557 00:27:59,980 --> 00:28:03,649 bawat isa ayon sa sarili nitong hanay ng isang table. 558 00:28:03,649 --> 00:28:05,690 At iyan ay talagang pretty magkano ang lahat ng mayroong dito. 559 00:28:05,690 --> 00:28:07,750 Alam ko mayroong isang maliit na bit nangyayari dito 560 00:28:07,750 --> 00:28:13,210 sa huling halimbawa na may mga array ng arrays-- array ng nag-uugnay array. 561 00:28:13,210 --> 00:28:17,340 Ngunit ito tunay ay pakuluin lamang down sa SQL sa paggawa ng isang query, 562 00:28:17,340 --> 00:28:21,102 karaniwang pagpili pagkatapos naming nai nai maglagay ng impormasyon sa table, 563 00:28:21,102 --> 00:28:22,310 at pagkatapos lamang ng paghila ito. 564 00:28:22,310 --> 00:28:25,710 >> At ito ang gusto namin hilahin ito out sa partikular na kasong. 565 00:28:25,710 --> 00:28:31,120 Nais naming kunin ang lahat ng mga indibidwal na mga ina mula sa talahanayan moms. 566 00:28:31,120 --> 00:28:35,970 Nakakuha kami ng isang buong set ng mga ito, at hindi na namin Gusto upang umulit sa pamamagitan at i-print out 567 00:28:35,970 --> 00:28:37,630 bawat isa. 568 00:28:37,630 --> 00:28:40,510 Kaya muli, ito ay marahil ang pinaka-kumplikadong halimbawa 569 00:28:40,510 --> 00:28:44,510 nakakita kami dahil kami ay paghahalo ng tatlong iba't-ibang wika na magkasama, tama? 570 00:28:44,510 --> 00:28:50,100 >> Muli, kami ay may HTML dito sa red, halo-halong may ilang mga SQL dito sa blue, 571 00:28:50,100 --> 00:28:52,049 halo-halong may ilang PHP sa berde. 572 00:28:52,049 --> 00:28:53,840 Ngunit lahat ng mga ito i-play mabuti sama-sama, ito ay 573 00:28:53,840 --> 00:28:57,060 lamang ng isang bagay ng pag-unlad magandang gawi sa gayon ay maaari kang makakuha ng 574 00:28:57,060 --> 00:28:58,780 ang mga ito upang gumana nang magkasama sa paraang nais mo. 575 00:28:58,780 --> 00:29:03,790 At ang tanging paraan upang talagang gawin iyon ay ang pagsasanay, pagsasanay, pagsasanay. 576 00:29:03,790 --> 00:29:06,740 Ako Doug Lloyd, ito ay CS50. 577 00:29:06,740 --> 00:29:08,647