1 00:00:00,000 --> 00:00:03,493 >> [Гуляе музыка] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 Даг Lloyd: У нашых відэа на тэму вэб-распрацоўкі, 4 00:00:07,100 --> 00:00:10,560 мы згадалі паняцце база дадзеных некалькі разоў, праўда? 5 00:00:10,560 --> 00:00:12,700 Такім чынам, база дадзеных вы верагодна, знаёмыя з з 6 00:00:12,700 --> 00:00:15,780 кажуць, выкарыстоўваючы Microsoft Excel або Табліцы Google. 7 00:00:15,780 --> 00:00:20,650 Гэта на самай справе проста арганізаваная набор табліц, радкоў і слупкоў. 8 00:00:20,650 --> 00:00:23,140 >> І база дадзеных, дзе наш вэб-сайт крам 9 00:00:23,140 --> 00:00:26,760 Інфармацыя, што важна для нашага сайта, каб працаваць належным чынам. 10 00:00:26,760 --> 00:00:30,150 Зноў жа, на самай справе агульны прыклад тут захоўвае імёны карыстальнікаў і паролі 11 00:00:30,150 --> 00:00:32,824 ў базе дадзеных, так што, калі карыстальнік уваходзіць у наш вэб-сайт, 12 00:00:32,824 --> 00:00:36,690 база дадзеных можа быць запытаны, каб убачыць калі карыстальнік існуе ў базе дадзеных. 13 00:00:36,690 --> 00:00:39,260 І калі яны ёсць, праверкі таго, што іх правільны пароль. 14 00:00:39,260 --> 00:00:43,420 І калі іх правільны пароль, то мы можам даць ім усё, што старонка 15 00:00:43,420 --> 00:00:45,370 яны просьбай. 16 00:00:45,370 --> 00:00:48,590 >> Дык вы, верагодна, зноў жа, знаёмыя з гэтай ідэяй з Excel або Google 17 00:00:48,590 --> 00:00:49,430 Табліцы. 18 00:00:49,430 --> 00:00:52,980 У нас ёсць базы дадзеных, сталы, шэрагі і слупкі. 19 00:00:52,980 --> 00:00:56,450 І гэта сапраўды роду фундаментальнай набору 20 00:00:56,450 --> 00:00:58,470 іерархічнай прабоя тут. 21 00:00:58,470 --> 00:00:59,800 Дык вось табліца Excel. 22 00:00:59,800 --> 00:01:02,640 І калі вы калі-небудзь адкрыў гэта ці іншы аналагічнай праграмы 23 00:01:02,640 --> 00:01:06,780 Вы ведаеце, што гэта вось rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Гэтыя калонкі. 25 00:01:08,760 --> 00:01:11,790 >> Можа быць, тут, хоць вы можаце Не выкарыстоўвайце гэтую функцыю жахліва much-- 26 00:01:11,790 --> 00:01:15,370 Я маштабу in-- ў нас ёсць гэтая ідэя ліста. 27 00:01:15,370 --> 00:01:17,930 Так, можа быць, гэтыя лісты, калі Я чаргаваць назад і наперад, 28 00:01:17,930 --> 00:01:21,600 розныя табліцы, існуе ў маёй базе дадзеных. 29 00:01:21,600 --> 00:01:25,210 І калі мы працягнем прыклад ўсе шлях, імя гэтай базы дадзеных 30 00:01:25,210 --> 00:01:26,940 гэта Кніга 1. 31 00:01:26,940 --> 00:01:28,710 Можа быць, у мяне ёсць кніга 2 і 3 кнігі. 32 00:01:28,710 --> 00:01:33,270 Такім чынам, кожны файл Excel з'яўляецца базы дадзеных, кожны ліст ўяўляе сабой табліцу, 33 00:01:33,270 --> 00:01:39,530 і ўнутры кожнай табліцы ў мяне гэтая ідэя з радкоў і слупкоў. 34 00:01:39,530 --> 00:01:41,900 >> Так як я працую з гэтай базай дадзеных? 35 00:01:41,900 --> 00:01:43,630 Як я магу атрымаць інфармацыю ад яго? 36 00:01:43,630 --> 00:01:47,540 Ну ёсць мова называецца SQL-- якія я звычайна проста патэлефануеце Sequel-- 37 00:01:47,540 --> 00:01:50,010 і гэта каштуе для Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 І гэта мова праграмавання, але гэта даволі абмежаваны праграмавання 39 00:01:52,981 --> 00:01:53,480 мову. 40 00:01:53,480 --> 00:01:56,407 Гэта не зусім, як і іншыя што мы працавалі з. 41 00:01:56,407 --> 00:01:58,240 Але мэта гэтага мова праграмавання 42 00:01:58,240 --> 00:02:01,570 гэта зварот у базу, каб спытаеце інфармацыю з базы дадзеных, 43 00:02:01,570 --> 00:02:04,480 знайсці інфармацыю ў базы дадзеных, і гэтак далей. 44 00:02:04,480 --> 00:02:08,449 >> Мы таксама, у CS50-- і гэта вельмі агульная платформа, гэта называецца MySQL. 45 00:02:08,449 --> 00:02:10,600 Гэта тое, што мы выкарыстоўваем у курсе. 46 00:02:10,600 --> 00:02:12,880 Гэта з адкрытым зыходным кодам платформа, якая ўсталёўвае 47 00:02:12,880 --> 00:02:16,732 так званы рэляцыйнай database-- база дадзеных, эфектыўна. 48 00:02:16,732 --> 00:02:18,440 Нам не трэба, каб атрымаць у занадта шмат дэталяў 49 00:02:18,440 --> 00:02:20,930 на тое, што рэляцыйная база дадзеных. 50 00:02:20,930 --> 00:02:24,650 Але мова SQL з'яўляецца вельмі майстэрскія ў рабоце 51 00:02:24,650 --> 00:02:29,760 з MySQL і іншыя падобныя стылі рэляцыйных баз дадзеных. 52 00:02:29,760 --> 00:02:34,010 >> І многія установак MySQL прыходзяць з чым-то 53 00:02:34,010 --> 00:02:37,760 называецца PhpMyAdmin, якія гэта графічны карыстацкі 54 00:02:37,760 --> 00:02:40,970 interface-- ў GUI--, што робіць яго крыху больш 55 00:02:40,970 --> 00:02:44,410 дружалюбных карыстачу выканаць запыты да базы дадзеных, 56 00:02:44,410 --> 00:02:48,980 паколькі базы дадзеных выкарыстоўваюцца не толькі па прасунутых праграмістаў, праўда? 57 00:02:48,980 --> 00:02:51,510 Часам ёсць гэтыя малыя прадпрыемствы, 58 00:02:51,510 --> 00:02:53,900 і яны не могуць дазволіць сабе наняць каманду праграмістаў, 59 00:02:53,900 --> 00:02:56,700 але яны па-ранейшаму трэба захоўваць Інфармацыя ў базе дадзеных. 60 00:02:56,700 --> 00:02:59,300 >> Нешта накшталт PhpMyAdmin робіць яго вельмі лёгка для кагосьці 61 00:02:59,300 --> 00:03:03,630 які ніколі не запраграмаваны, перш чым падабраць і азнаёміцца ​​з тым, як 62 00:03:03,630 --> 00:03:07,710 працаваць з базай дадзеных. 63 00:03:07,710 --> 00:03:11,800 Праблема складаецца ў тым, PHPMYADMIN, а гэта фантастычны інструмент для навучання 64 00:03:11,800 --> 00:03:14,850 аб базах дадзеных, гэта кіраўніцтва. 65 00:03:14,850 --> 00:03:18,050 Вы будзеце мець, каб увайсці ў гэта і выконваць каманды і тып 66 00:03:18,050 --> 00:03:19,910 рэчы ўручную. 67 00:03:19,910 --> 00:03:23,160 >> І, як мы ведаем з нашага Прыклад на PHP вэб-праграмавання, 68 00:03:23,160 --> 00:03:26,550 таго, каб ўручную рабіць рэчы на ​​нашым сайце, 69 00:03:26,550 --> 00:03:30,970 калі мы хочам дынамічны, актыўны рэагаваць сайт, магчыма, не самы лепшы падыход. 70 00:03:30,970 --> 00:03:33,980 Мы хацелі б знайсці шлях да магчыма, гэта неяк аўтаматызаваць. 71 00:03:33,980 --> 00:03:37,864 І SQL дазволіць нам гэта зрабіць. 72 00:03:37,864 --> 00:03:39,780 Таму, калі мы збіраемся пачаць працаваць з SQL, 73 00:03:39,780 --> 00:03:41,220 мы спачатку павінны мець базы дадзеных для працы з. 74 00:03:41,220 --> 00:03:42,510 Стварэнне база дадзеных то вы, верагодна, 75 00:03:42,510 --> 00:03:45,350 будзе рабіць у PhpMyAdmin, таму што Вы павінны будзеце зрабіць гэта толькі адзін раз, 76 00:03:45,350 --> 00:03:49,690 і сінтаксіс для гэтага з'яўляецца значна больш простым. 77 00:03:49,690 --> 00:03:51,940 Гэта нашмат лягчэй зрабіць гэта ў графічным інтэрфейсе карыстальніка 78 00:03:51,940 --> 00:03:53,520 чым друкаваць яго ў якасці каманды. 79 00:03:53,520 --> 00:03:55,186 Каманда можа атрымаць трохі грувасткім. 80 00:03:55,186 --> 00:03:58,889 Аналагічна, ствараючы табліцу можна атрымаць крыху грувасткі, а таксама. 81 00:03:58,889 --> 00:04:01,930 І так такія рэчы, як стварэнне базы дадзеных і стварэння табліцы, якой вы 82 00:04:01,930 --> 00:04:06,270 верагодна, толькі збіраецца зрабіць once-- адзін раз у табліцы, адзін раз у database-- 83 00:04:06,270 --> 00:04:09,040 гэта нармальна, каб зрабіць гэта ў графічны інтэрфейс. 84 00:04:09,040 --> 00:04:11,570 У працэсе стварэння табліцы, вы 85 00:04:11,570 --> 00:04:14,840 Таксама трэба паказаць усе з слупкі, якія будуць у гэтай табліцы. 86 00:04:14,840 --> 00:04:18,149 Якая інфармацыя зрабіць Вы хочаце, каб захоўваць у табліцы? 87 00:04:18,149 --> 00:04:24,520 Можа быць, імя карыстальніка і дата нараджэння, пароль, ID нумар карыстальніка, а можа быць, 88 00:04:24,520 --> 00:04:26,170 Горад і дзяржава, праўда? 89 00:04:26,170 --> 00:04:30,080 >> І кожны раз, мы хочам, каб дадаць карыстальніка у базу дадзеных, мы хочам, каб усе шэсць 90 00:04:30,080 --> 00:04:31,890 з гэтых частак інфармацыі. 91 00:04:31,890 --> 00:04:34,840 І мы робім гэта шляхам дадання Радкі ў табліцы. 92 00:04:34,840 --> 00:04:37,800 Такім чынам, мы спачатку стварыць базу дадзеных, Затым мы ствараем табліцу. 93 00:04:37,800 --> 00:04:40,100 У рамках стварэння стол, мы папрасілі 94 00:04:40,100 --> 00:04:44,280 пазначыць, што кожны слупок мы хацелі б у гэтай табліцы. 95 00:04:44,280 --> 00:04:47,247 І тое, як мы пачнем дадаваць Інфармацыя ў базу дадзеных 96 00:04:47,247 --> 00:04:49,580 і запытаць больш база дадзеных generally-- не проста даданне, 97 00:04:49,580 --> 00:04:51,610 але ўсё астатняе мы do-- мы будзем мець справу 98 00:04:51,610 --> 00:04:58,870 з радамі табліцы, якая з'яўляецца адным Інфармацыя карыстальніка з усяго мноства. 99 00:04:58,870 --> 00:05:03,210 >> Такім чынам, кожны слупок SQL здольны правядзенне дадзеных пэўнага тыпу дадзеных. 100 00:05:03,210 --> 00:05:06,560 Такім чынам, мы ліквідаваны роду гэта Ідэя тыпаў дадзеных у PHP, 101 00:05:06,560 --> 00:05:08,747 але яны зноў тут, у SQL. 102 00:05:08,747 --> 00:05:10,080 І ёсць шмат тыпаў дадзеных. 103 00:05:10,080 --> 00:05:13,420 Вось толькі 20 з іх, але гэта нават усе з іх няма. 104 00:05:13,420 --> 00:05:16,240 Так у нас ёсць ідэі, як INTs-- Integers-- мы, напэўна, ведаеце 105 00:05:16,240 --> 00:05:17,760 што гэты слупок можа ўтрымліваць цэлыя лікі. 106 00:05:17,760 --> 00:05:21,077 І ёсць варыяцыі thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Можа быць, мы не заўсёды трэба чатыры укусаў. 108 00:05:22,660 --> 00:05:26,800 Можа быць, мы павінны восем байт, і таму мы можаце выкарыстоўваць гэтыя варыяцыі на цэлых 109 00:05:26,800 --> 00:05:28,510 каб быць крыху больш месца эфектыўным. 110 00:05:28,510 --> 00:05:31,899 Мы можам зрабіць дзесятковых лікаў, мы можна зрабіць плавае коскі. 111 00:05:31,899 --> 00:05:32,940 Яны вельмі падобныя. 112 00:05:32,940 --> 00:05:34,773 Ёсць некаторыя адрозненні, і, калі б вы 113 00:05:34,773 --> 00:05:37,330 люблю глядзець уверх па SQL роду кіраўніцтва, вы 114 00:05:37,330 --> 00:05:40,670 можа бачыць тое, што невялікая адрозненні паміж імі. 115 00:05:40,670 --> 00:05:43,250 >> Можа быць, мы хочам, каб захаваць інфармацыя пра дату і час. 116 00:05:43,250 --> 00:05:47,047 Можа быць, мы адсочвання калі карыстальнік далучыўся наш сайт, 117 00:05:47,047 --> 00:05:48,880 і таму, магчыма, мы хочам мець слупка, які 118 00:05:48,880 --> 00:05:52,820 час дата цi адзнака, што паказвае, калі карыстальнік сапраўды 119 00:05:52,820 --> 00:05:54,130 падпісаў. 120 00:05:54,130 --> 00:05:56,132 Мы можам зрабіць геаметрыю і linestrings. 121 00:05:56,132 --> 00:05:57,340 Гэта на самай справе даволі халаднавата. 122 00:05:57,340 --> 00:06:01,410 Мы маглі б намеціць геаграфічны раён з дапамогай 123 00:06:01,410 --> 00:06:05,110 ГІС каардынаты сюжэт з вобласці. 124 00:06:05,110 --> 00:06:08,580 Так можа на самай справе захоўваць такога роду інфармацыі ў калонцы SQL. 125 00:06:08,580 --> 00:06:11,390 >> ТЭКСТ за ўсё гіганцкія кроплі тэксту, можа быць. 126 00:06:11,390 --> 00:06:12,840 Пералічэння з'яўляюцца свайго роду цікава. 127 00:06:12,840 --> 00:06:16,080 Яны на самой справе існуе ў С. Мы не казаць пра іх, таму што яны не 128 00:06:16,080 --> 00:06:19,110 жудасна звычайна выкарыстоўваецца, па меншай меры, CS50. 129 00:06:19,110 --> 00:06:22,680 Але гэта перечислимого тыпу дадзеных, якія здольны ўтрымліваць абмежаваныя значэння. 130 00:06:22,680 --> 00:06:25,940 >> Сапраўды добры прыклад тут будзе стварыць пералік, дзе сем 131 00:06:25,940 --> 00:06:29,394 Магчымыя значэння нядзеля, панядзелак, Аўторак, серада, чацвер, пятніца, 132 00:06:29,394 --> 00:06:30,060 Субота, праўда? 133 00:06:30,060 --> 00:06:33,311 Гэта тып дадзеных Дзень Тыдзень не існуе, 134 00:06:33,311 --> 00:06:35,310 але мы маглі б стварыць перечислимого тыпу дадзеных, напрыклад 135 00:06:35,310 --> 00:06:39,400 што гэта слупок можа толькі калі-небудзь правесці адзін з тых сямі магчымых значэнняў. 136 00:06:39,400 --> 00:06:44,300 Мы пералічылі ўсе з магчымых значэнняў. 137 00:06:44,300 --> 00:06:47,630 >> Тады ў нас ёсць вугаль і VARCHAR, а ў мяне колер гэтыя зялёныя 138 00:06:47,630 --> 00:06:49,505 таму што мы на самай справе збіраецца ўзяць другую 139 00:06:49,505 --> 00:06:51,950 казаць пра розніцу паміж гэтымі двума рэчамі. 140 00:06:51,950 --> 00:06:55,780 Так ЗНАК, у адрозненне ад З, дзе ЗНАК быў адзін знак, 141 00:06:55,780 --> 00:07:00,730 у SQL паўкокс ставіцца да фіксаваная даўжыня радка. 142 00:07:00,730 --> 00:07:02,620 І калі мы ствараем гэта калонка, мы на самай справе 143 00:07:02,620 --> 00:07:05,070 можна паказаць даўжыню радка. 144 00:07:05,070 --> 00:07:08,080 >> Такім чынам, у гэтым прыкладзе, мы маглі б сказаць, CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Гэта азначае, што кожны элемент гэтага слупка 146 00:07:11,190 --> 00:07:13,910 будзе складацца з 10 байт інфармацыі. 147 00:07:13,910 --> 00:07:15,770 Ні больш, ні менш. 148 00:07:15,770 --> 00:07:21,780 Так што, калі мы будзем спрабаваць паставіць у 15 біт або элемент 15 сімвалаў 149 00:07:21,780 --> 00:07:25,340 ці значэнне ў гэтай калонцы, мы толькі атрымаць першыя 10. 150 00:07:25,340 --> 00:07:27,290 Калі мы ў двух доўга значэнне характар, 151 00:07:27,290 --> 00:07:30,700 мы будзем мець два сімвалы, а затым васьмі нулявыя укусаў. 152 00:07:30,700 --> 00:07:34,990 Мы ніколі не будзем больш эфектыўна, чым гэта. 153 00:07:34,990 --> 00:07:37,727 >> VARCHAR накшталт як наша паняцце радкі 154 00:07:37,727 --> 00:07:39,560 што мы знаёмыя з з З або з РНР. 155 00:07:39,560 --> 00:07:40,830 Гэта пераменная даўжыня радка. 156 00:07:40,830 --> 00:07:42,560 І калі вы ствараеце гэтая калонка, вы проста 157 00:07:42,560 --> 00:07:44,860 пазначыць максімальна магчымыя даўжыні. 158 00:07:44,860 --> 00:07:49,065 Так, можа быць, 99 або 255, звычайна. 159 00:07:49,065 --> 00:07:50,440 Гэта было б максімальная даўжыня. 160 00:07:50,440 --> 00:07:52,890 І таму, калі мы былі захоўвання 15 радок знакаў, 161 00:07:52,890 --> 00:07:56,157 мы хацелі б выкарыстоўваць 15 байт, можа быць, 16 байт для нулявога тэрмінатара. 162 00:07:56,157 --> 00:07:57,990 Калі мы захоўвае тры радок знакаў, 163 00:07:57,990 --> 00:08:01,120 мы будзем выкарыстоўваць тры ці чатыры байта. 164 00:08:01,120 --> 00:08:03,050 Але мы б не выкарыстоўваць поўны 99. 165 00:08:03,050 --> 00:08:05,190 >> Дык чаму б нам другога? 166 00:08:05,190 --> 00:08:08,210 Ну, калі мы павінны высветліць, як доўга нешта з VARCHAR, 167 00:08:08,210 --> 00:08:10,680 мы павінны выгляду ітэрацыі па гэта толькі так, як мы гэта рабілі ў C 168 00:08:10,680 --> 00:08:12,230 і высветліць, дзе ён спыняецца. 169 00:08:12,230 --> 00:08:15,920 У той час як, калі мы ведаем, што ўсе ў гэтай калонцы 10 байт, можа быць, 170 00:08:15,920 --> 00:08:19,220 мы ведаем, што інфармацыя, мы можам перайсці 10 байт, 10 байт, 10 байт, 10 байт, 171 00:08:19,220 --> 00:08:21,790 і заўсёды знайсці пачатак радка. 172 00:08:21,790 --> 00:08:25,210 >> Такім чынам, мы, магчыма, некаторыя марна месца з CHAR, 173 00:08:25,210 --> 00:08:28,510 але, магчыма, ёсць гандаль ад таго, больш высокую хуткасць 174 00:08:28,510 --> 00:08:30,160 ў навігацыі база дадзеных. 175 00:08:30,160 --> 00:08:32,330 Але, можа быць, мы хочам, каб Гнуткасць VARCHAR 176 00:08:32,330 --> 00:08:36,710 замест having-- Калі наша ЗНАК быў 255, але большасць нашых карыстальнікаў 177 00:08:36,710 --> 00:08:40,537 былі толькі ўвод тры ці чатыры байта Варта інфармацыі ці тры ці чатыры 178 00:08:40,537 --> 00:08:41,870 сімвалы коштам інфармацыі. 179 00:08:41,870 --> 00:08:44,324 >> Але некаторыя карыстальнікі выкарыстоўваюць уся 255, можа быць, 180 00:08:44,324 --> 00:08:45,990 VARCHAR б больш дарэчы там. 181 00:08:45,990 --> 00:08:49,840 Гэта свайго роду кампрамісу, і як правіла, для мэт CS50, 182 00:08:49,840 --> 00:08:54,107 Вам не трэба занадта турбавацца аб Ці вы выкарыстоўваць CHAR або VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Але ў рэальным свеце, гэтыя рэчы маюць значэнне, таму што ўсе з гэтых слупкоў 184 00:08:57,190 --> 00:08:59,300 ўзяць фактычную фізічнае прастору. 185 00:08:59,300 --> 00:09:04,150 І фізічнае прастору, у рэальны свет, прыходзіць у вялікай пашане. 186 00:09:04,150 --> 00:09:06,800 >> Так адной іншай разгляду калі вы ствараеце табліцу 187 00:09:06,800 --> 00:09:09,840 гэта выбраць адзін слупок, каб быць тое, што называецца першасным ключом. 188 00:09:09,840 --> 00:09:14,350 І першасны ключ ўяўляе сабой слупок дзе кожны значэнне з'яўляецца унікальным. 189 00:09:14,350 --> 00:09:19,980 А гэта значыць, што вы можаце лёгка выбраць адну радок, проста зірнуўшы 190 00:09:19,980 --> 00:09:22,450 на першасны ключ гэтага радка. 191 00:09:22,450 --> 00:09:24,580 Так, напрыклад, вы Як правіла, з карыстальнікамі, 192 00:09:24,580 --> 00:09:27,210 не хачу двух карыстальнікаў, маюць аднолькавы лік ідэнтыфікатара карыстальніка. 193 00:09:27,210 --> 00:09:28,960 І таму, магчыма, у вас ёсць шмат інфармацыі, 194 00:09:28,960 --> 00:09:30,793 і, магчыма, два карыстальніка могуць ёсць жа name-- 195 00:09:30,793 --> 00:09:32,650 ў вас ёсць Джон Сміт і Джон Сміт. 196 00:09:32,650 --> 00:09:34,520 Гэта не абавязкова з'яўляецца праблемай, таму што ёсць некалькі чалавек 197 00:09:34,520 --> 00:09:35,830 ў свеце па імені Джон Сміт. 198 00:09:35,830 --> 00:09:40,766 Але ў нас ёсць толькі адно ідэнтыфікацыйны нумар карыстальніка 10, адзін карыстальнік ідэнтыфікацыйны нумар 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Мы не маем двух карыстальнікаў з такім жа колькасцю, 200 00:09:42,640 --> 00:09:46,010 і таму, магчыма, ID карыстальніка лік будзе добры першасны ключ. 201 00:09:46,010 --> 00:09:48,610 >> Мы не маем ніякага дублявання, і зараз мы можам адназначна 202 00:09:48,610 --> 00:09:52,619 вызначыць кожную радок толькі гледзячы на ​​гэтага слупка. 203 00:09:52,619 --> 00:09:55,410 Выбар першасных ключоў можа на самай справе зрабіць наступныя таблічныя аперацыі 204 00:09:55,410 --> 00:09:59,710 нашмат лягчэй, таму што вы можаце выкарыстоўваць той факт, што некаторыя радкі будзе 205 00:09:59,710 --> 00:10:02,720 быць унікальным, або пэўны слупок вашай базы дадзеных або табліцы 206 00:10:02,720 --> 00:10:06,030 будзе унікальным, каб забраць з канкрэтных радкоў. 207 00:10:06,030 --> 00:10:08,790 >> Вы таксама можаце мець сумеснае першасны ключ, які вы можаце знайсці падставу 208 00:10:08,790 --> 00:10:11,720 ў выкарыстанні, што гэта проста Спалучэнне двух слупкоў, 209 00:10:11,720 --> 00:10:13,280 гарантавана будзе унікальным. 210 00:10:13,280 --> 00:10:16,410 Так, можа быць, у вас ёсць адзін слупок, як і Bs, 211 00:10:16,410 --> 00:10:19,290 адзін слупок, што адзін, два, і тры, але вы будзеце толькі калі-небудзь 212 00:10:19,290 --> 00:10:23,660 ёсць адзін A1, адзін А2, і гэтак далей, і гэтак далей. 213 00:10:23,660 --> 00:10:28,980 Але вы, магчыма, В2, А С2, або А1, А2, А3, А4. 214 00:10:28,980 --> 00:10:32,840 Такім чынам, вы, магчыма, прыйдзецца некалькі Гэтак жа, некалькі Bs, некалькі з іх, некалькі двоек, 215 00:10:32,840 --> 00:10:38,567 але вы можаце толькі калі-небудзь мець аднаго А1, В2, С3, і гэтак далей. 216 00:10:38,567 --> 00:10:40,400 Так як я ўжо сказаў, SQL з'яўляецца Мова праграмавання, 217 00:10:40,400 --> 00:10:42,024 але ён мае даволі абмежаваны слоўнікавы запас. 218 00:10:42,024 --> 00:10:44,880 Гэта не зусім так, як экспансіўны З і PHP і іншыя мовы 219 00:10:44,880 --> 00:10:46,350 што мы гаворым ў курсе. 220 00:10:46,350 --> 00:10:49,960 Гэта больш падрабязны мова, чым тое, што мы 221 00:10:49,960 --> 00:10:52,789 пагаворым аб ў гэтым відэа, таму што ў гэтым відэа 222 00:10:52,789 --> 00:10:54,830 мы будзем казаць аб чатыры аперацыі, якія мы 223 00:10:54,830 --> 00:10:55,720 можа выконваць на стале. 224 00:10:55,720 --> 00:10:56,761 >> Ёсць больш, чым гэта. 225 00:10:56,761 --> 00:10:58,730 Мы можам зрабіць больш, чым гэта, але для нашых мэтаў, 226 00:10:58,730 --> 00:11:02,250 мы, як правіла збіраецеся выкарыстоўваць толькі чатыры operations-- устаўка, 227 00:11:02,250 --> 00:11:05,360 выберыце, абнаўляць і выдаляць. 228 00:11:05,360 --> 00:11:08,750 І вы, верагодна, інтуітыўна здагадацца тое, што ўсе гэтыя чатыры рэчы. 229 00:11:08,750 --> 00:11:12,520 Але мы пойдзем у трохі дэталізацыі па кожным з іх. 230 00:11:12,520 --> 00:11:15,780 >> Такім чынам, для мэтаў гэтага відэа, давайце выкажам здагадку, 231 00:11:15,780 --> 00:11:18,870 У нас ёсць наступныя два Сталы ў адзінай базе дадзеных. 232 00:11:18,870 --> 00:11:23,460 У нас ёсць табліца называецца карыстальнікаў, што мае чатырох columns-- ідэнтыфікацыйны нумар, імя карыстальніка, 233 00:11:23,460 --> 00:11:25,350 пароль і поўнае імя. 234 00:11:25,350 --> 00:11:27,430 І ў нас ёсць другі стол у той жа базе дадзеных 235 00:11:27,430 --> 00:11:32,129 называецца мам, якія проста захоўвае інфармацыю аб імя карыстальніка і маці. 236 00:11:32,129 --> 00:11:33,920 Так што для ўсіх прыкладаў ў гэтым відэа, мы будзем 237 00:11:33,920 --> 00:11:37,945 выкарыстоўваць гэтую базу дадзеных і наступныя абнаўлення да яго. 238 00:11:37,945 --> 00:11:40,070 Так што давайце казаць, што мы хочам, каб дадаць інфармацыю ў табліцу. 239 00:11:40,070 --> 00:11:44,460 Гэта тое, што робіць аперацыі ўстаўкі. 240 00:11:44,460 --> 00:11:46,550 Тлумачачы ўсё гэтыя каманды, я збіраюся 241 00:11:46,550 --> 00:11:48,860 каб даць вам агульнае шкілет выкарыстоўваць. 242 00:11:48,860 --> 00:11:51,661 Таму што ў асноўным, запытаў збіраюцца погляд вельмі падобныя, 243 00:11:51,661 --> 00:11:54,660 мы толькі збіраемся, мяняецца некалькі розных частак інфармацыі 244 00:11:54,660 --> 00:11:56,750 рабіць розныя рэчы са сталом. 245 00:11:56,750 --> 00:11:59,200 >> Такім чынам, для INSERT, шкілета выглядае накшталт як гэта. 246 00:11:59,200 --> 00:12:02,230 Мы хочам, каб ўставіць канкрэтны стол. 247 00:12:02,230 --> 00:12:05,290 Тады ў нас ёсць адкрывалую дужку і спіс слупкоў 248 00:12:05,290 --> 00:12:08,070 што мы хочам, каб пакласці значэння ст. 249 00:12:08,070 --> 00:12:10,974 Зачыніць дужкі, то наступныя значэнні, а затым 250 00:12:10,974 --> 00:12:13,390 зноў жа, мы пералічыць значэння мы хочам, каб пакласці ў стол. 251 00:12:13,390 --> 00:12:15,950 >> Так прыкладам гэтага будзе наступнае. 252 00:12:15,950 --> 00:12:19,170 Я хачу, каб ўставіць ў табліцу карыстальнікі наступны columns-- 253 00:12:19,170 --> 00:12:21,010 імя карыстальніка, пароль, і FullName. 254 00:12:21,010 --> 00:12:25,282 Так у новым радку, дзе я стаўлю у гэтых трох слупкоў, і мы 255 00:12:25,282 --> 00:12:30,030 збіраецца паставіць у значэннях Ньюман, USMAIL, і Ньюман. 256 00:12:30,030 --> 00:12:32,730 Такім чынам, у гэтым выпадку, я пакласці ў ніжнім рэгістры Ньюман 257 00:12:32,730 --> 00:12:38,710 ў полі карыстальніка, пароль USMAIL, і поўная назва сталіцы Н 258 00:12:38,710 --> 00:12:41,940 Ньюман ў калонцы FULLNAME. 259 00:12:41,940 --> 00:12:44,240 >> Дык вось тое, што база дадзеных паглядзеў, як раней. 260 00:12:44,240 --> 00:12:48,250 Вось тое, што табліца карыстальнікі на топ выглядаў, перш чым мы гэта зрабілі. 261 00:12:48,250 --> 00:12:50,760 Пасля таго як мы гэта выканаць запыт, мы атрымліваем гэта. 262 00:12:50,760 --> 00:12:54,790 Мы дадалі новы радок табліцы. 263 00:12:54,790 --> 00:12:56,810 Але звярніце ўвагу, гэта адно што я не ўдакладніў, 264 00:12:56,810 --> 00:12:59,880 але чамусьці я атрымаў значэнне для, што гэта 12 прама тут. 265 00:12:59,880 --> 00:13:02,820 Я не кажу, што я хацеў паклаў ідэнтыфікацыйны нумар там. 266 00:13:02,820 --> 00:13:04,900 Я хацеў, каб пакласці імя карыстальніка, пароль, FullName. 267 00:13:04,900 --> 00:13:06,440 І я зрабіў гэта, гэта нармальна. 268 00:13:06,440 --> 00:13:07,760 >> Але я таксама атрымаў гэтую 12. 269 00:13:07,760 --> 00:13:09,490 Чаму я атрымліваю гэта 12? 270 00:13:09,490 --> 00:13:12,904 Ну, атрымліваецца, што калі вы вызначаеце 271 00:13:12,904 --> 00:13:15,570 слупок, які будзе ваш Першасны ключ, які, як правіла, 272 00:13:15,570 --> 00:13:16,510 як я ўжо сказаў, ідэнтыфікацыйны нумар. 273 00:13:16,510 --> 00:13:18,718 Гэта не заўсёды абавязкова будзе ідэнтыфікацыйны нумар, 274 00:13:18,718 --> 00:13:22,380 але гэта, як правіла, добрая ідэя, каб быць свайго роду цэлы лік. 275 00:13:22,380 --> 00:13:25,950 У вас ёсць магчымасць у PhpMyAdmin калі вы ствараеце базу дадзеных 276 00:13:25,950 --> 00:13:31,130 ці ваш стол, каб усталяваць, што калонку, як аўто прырашчэнне. 277 00:13:31,130 --> 00:13:34,520 >> Які з'яўляецца сапраўды добрая ідэя, калі вы працуеце з першасным ключом, 278 00:13:34,520 --> 00:13:39,330 таму што вы хочаце кожнае значэнне у гэтым слупку павінны быць унікальнымі. 279 00:13:39,330 --> 00:13:43,310 І калі вы забыліся пазначыць гэта больш, чым аднаго чалавека, 280 00:13:43,310 --> 00:13:46,240 зараз у вас ёсць сітуацыі, калі ня, што калонка больш не унікальная. 281 00:13:46,240 --> 00:13:50,200 Вы не маеце дзве нарыхтоўкі, так што вы можаце не больш адназначна ідэнтыфікаваць column-- 282 00:13:50,200 --> 00:13:54,150 ці вы не больш не магу адназначна ідэнтыфікацыі радка на аснове гэтага слупка. 283 00:13:54,150 --> 00:13:57,010 Гэта страціў усе свае Значэнне ў якасці першаснага ключа. 284 00:13:57,010 --> 00:14:02,010 >> І так, па-відаць, што я зрабіў тут настроены ідэнтыфікатар карыстальніка 285 00:14:02,010 --> 00:14:07,790 слупок аўтаматычнае прырашчэнне так, каб кожны раз я дадаць інфармацыю ў табліцы, 286 00:14:07,790 --> 00:14:12,220 ён будзе аўтаматычна дасць мне значэнне для першаснага ключа. 287 00:14:12,220 --> 00:14:15,570 Так што я ніколі не змагу забыцца гэта зрабіць, таму што база дадзеных зробіць гэта за мяне. 288 00:14:15,570 --> 00:14:16,587 Так што збольшага добра. 289 00:14:16,587 --> 00:14:18,670 І вось чаму мы атрымліваем 12 там, таму што я 290 00:14:18,670 --> 00:14:21,772 ўсталяваць, што калона да аўтаматычнае прырашчэнне. 291 00:14:21,772 --> 00:14:23,730 Калі я кагосьці яшчэ дадаў гэта было б 13, калі я дадаў 292 00:14:23,730 --> 00:14:27,890 нехта яшчэ было б 14, і гэтак далей. 293 00:14:27,890 --> 00:14:30,190 >> Так што давайце проста зробім яшчэ адну ўстаўку. 294 00:14:30,190 --> 00:14:34,530 Мы ўставіць ў табліцу мам, у прыватнасці, імя карыстальніка і маці 295 00:14:34,530 --> 00:14:37,390 слупкоў, значэння Крамер і Бабс Крамер. 296 00:14:37,390 --> 00:14:39,140 І таму мы павінны былі гэта раней. 297 00:14:39,140 --> 00:14:41,800 Пасля таго як мы выканаць якія SQL запытаў, мы павінны гэта. 298 00:14:41,800 --> 00:14:47,290 Мы дадалі Крамер і Бабс Крамер табліцы мам. 299 00:14:47,290 --> 00:14:48,350 >> Так што гэта ўстаўкі. 300 00:14:48,350 --> 00:14:51,850 ВЫБАР, што мы выкарыстоўваем, каб атрымаць Інфармацыя з табліцы. 301 00:14:51,850 --> 00:14:54,390 Так што гэта, як мы атрымліваем Інфармацыя з базы дадзеных. 302 00:14:54,390 --> 00:14:59,589 І таму абярыце каманды будзе вельмі часта выкарыстоўваюцца ў праграмаванні. 303 00:14:59,589 --> 00:15:02,130 Агульная framework-- Наогул шкілет выглядае так. 304 00:15:02,130 --> 00:15:06,550 Выберыце набор слупкоў з стол, і затым, неабавязкова, 305 00:15:06,550 --> 00:15:11,090 Вы можаце паказаць condition-- або тое, што мы звычайна выклікаюць прэдыкатаў, 306 00:15:11,090 --> 00:15:13,010 Звычайна тэрмін мы выкарыстоўваем у SQL. 307 00:15:13,010 --> 00:15:16,490 >> Але гэта ў асноўным тое, што канкрэтныя радкі вы хочаце атрымаць. 308 00:15:16,490 --> 00:15:19,100 Калі вы хочаце, каб, замест таго, каб усе, звузіць яе, 309 00:15:19,100 --> 00:15:20,060 гэта дзе вы маглі б зрабіць гэта. 310 00:15:20,060 --> 00:15:22,777 І тады, магчыма, вы таксама можаце замовіць па вызначаным слупка. 311 00:15:22,777 --> 00:15:25,860 Так, можа быць, вы хочаце, каб рэчы, адсартаваныя па алфавіце на аснове аднаго слупка 312 00:15:25,860 --> 00:15:27,540 або ў алфавітным парадку на аснове іншага. 313 00:15:27,540 --> 00:15:30,610 >> Зноў жа, дзе і ORDER BY з'яўляюцца неабавязковымі. 314 00:15:30,610 --> 00:15:32,681 Але яны, верагодна, будзе useful-- асабліва 315 00:15:32,681 --> 00:15:34,680 ДЗЕ будзе карысна звузіць так што вам не 316 00:15:34,680 --> 00:15:37,460 атрымаць усю базу дадзеных і назад павінны апрацаваць яго, вы проста атрымаеце 317 00:15:37,460 --> 00:15:39,300 кавалкі яго, што вы клапоціцеся аб. 318 00:15:39,300 --> 00:15:44,932 Так, напрыклад, я мог бы хацець выбраць Ідэнтыфікацыйны нумар і FullName ад карыстальнікаў. 319 00:15:44,932 --> 00:15:46,140 Так што, магчыма, гэта выглядае? 320 00:15:46,140 --> 00:15:48,270 Дык вось мой стол карыстальнікі. 321 00:15:48,270 --> 00:15:51,080 Я хачу, каб выбраць idnum і FULLNAME ад карыстальнікаў. 322 00:15:51,080 --> 00:15:52,300 Што я збіраюся атрымаць? 323 00:15:52,300 --> 00:15:53,580 Я збіраюся атрымаць гэта. 324 00:15:53,580 --> 00:15:56,930 Я не звузіць яе, таму я атрыманне ідэнтыфікацыйнага нумара для кожнага радка 325 00:15:56,930 --> 00:16:00,850 і я атрымліваю поўны назву ад кожнага радка. 326 00:16:00,850 --> 00:16:02,210 >> ДОБРА. 327 00:16:02,210 --> 00:16:05,640 Што рабіць, калі я хачу, каб выбраць пароль ад карыстальнікаў, так што зараз WHERE-- 328 00:16:05,640 --> 00:16:10,370 Я дадаю стане, predicate-- дзе idnum менш 12. 329 00:16:10,370 --> 00:16:13,660 Дык вось мая база дадзеных зноў, мой карыстальнікі табліцы зверху. 330 00:16:13,660 --> 00:16:17,030 Што я збіраюся атрымаць, калі я хачу выбраць гэтую інфармацыю, пароль, 331 00:16:17,030 --> 00:16:21,550 дзе ідэнтыфікатар карыстальніка ці idnum менш 12? 332 00:16:21,550 --> 00:16:24,910 Я збіраюся атрымаць гэта інфармацыю назад, праўда? 333 00:16:24,910 --> 00:16:29,170 Бывае, што idnum 10, менш чым 12, ідэнтыфікацыйны нумар 11 менш, чым 12 гадоў. 334 00:16:29,170 --> 00:16:32,160 Я атрымліваю пароль для гэтых радкоў. 335 00:16:32,160 --> 00:16:33,914 Вось тое, што я прасіў. 336 00:16:33,914 --> 00:16:34,580 Што пра гэта? 337 00:16:34,580 --> 00:16:39,170 Што рабіць, калі я хачу, каб выбраць зорку з мамы стол, дзе імя карыстальніка роўны Джэры? 338 00:16:39,170 --> 00:16:43,780 ОК, абярыце зорка спецыяльны накшталт джокера так званы 339 00:16:43,780 --> 00:16:45,670 што мы выкарыстоўваем, каб атрымаць усе. 340 00:16:45,670 --> 00:16:48,620 Так яны кажуць абярыце імя карыстальніка коску маці, якая 341 00:16:48,620 --> 00:16:51,060 апынуўся адзіным дзве калонкі гэтай табліцы, 342 00:16:51,060 --> 00:16:53,260 Я магу толькі выбраць зорку і атрымаць усе 343 00:16:53,260 --> 00:16:55,030 дзе імя карыстальніка роўны Джэры. 344 00:16:55,030 --> 00:16:59,380 І вось што я хацеў бы атрымаць калі я зрабіў што канкрэтны запыт. 345 00:16:59,380 --> 00:17:01,810 >> Цяпер, базы дадзеных выдатна, таму што яны дазваляюць 346 00:17:01,810 --> 00:17:06,074 нам арганізоўваць інфармацыю, магчыма, трохі больш эфектыўна, чым мы 347 00:17:06,074 --> 00:17:06,740 у адваротным выпадку. 348 00:17:06,740 --> 00:17:10,240 Мы не абавязкова, каб захоўваць кожны значная інфармацыя 349 00:17:10,240 --> 00:17:12,230 пра карыстальніка ў той жа табліцы. 350 00:17:12,230 --> 00:17:13,730 У нас было два сталах. 351 00:17:13,730 --> 00:17:15,734 >> Мы павінны захоўваць імя маці ва ўсіх, у 352 00:17:15,734 --> 00:17:18,900 і, магчыма, мы не павінны сацыяльнае забеспячэнне лік, гэта значыць іх узрост. 353 00:17:18,900 --> 00:17:21,819 Гэта не заўсёды трэба каб быць у той жа табліцы. 354 00:17:21,819 --> 00:17:25,339 Пакуль мы можам вызначыць адносіны паміж tables-- 355 00:17:25,339 --> 00:17:28,440 а вось дзе, што рэляцыйная Тэрмін база дадзеных роду прыходзіць 356 00:17:28,440 --> 00:17:32,130 у play-- тых часоў, як мы можам вызначыць паміж табліцамі, 357 00:17:32,130 --> 00:17:35,545 мы можам роду адсекі або абстрактныя рэчы, спосаб, 358 00:17:35,545 --> 00:17:37,670 дзе ў нас ёсць толькі сапраўды важная інфармацыя 359 00:17:37,670 --> 00:17:39,270 мы клапоцімся пра ў табліцы карыстальніка. 360 00:17:39,270 --> 00:17:43,220 І тады ў нас ёсць дапаможная інфармацыя або дадатковая інфармацыя ў іншых табліцах 361 00:17:43,220 --> 00:17:48,260 што мы можам падключыць вярнуцца на галоўную Табліца карыстальнікі пэўным чынам. 362 00:17:48,260 --> 00:17:52,200 >> Дык вось у нас ёсць гэтыя дзве табліцы, але існуе ўзаемасувязь паміж імі, 363 00:17:52,200 --> 00:17:53,010 дакладна? 364 00:17:53,010 --> 00:17:55,070 Падобна на тое, імя карыстальніка можа быць нешта 365 00:17:55,070 --> 00:17:59,909 што існуе агульнае паміж Гэтыя два розных табліц. 366 00:17:59,909 --> 00:18:01,700 Так што, калі ў нас зараз ёсць сітуацыя, калі мы 367 00:18:01,700 --> 00:18:06,046 хочаце атрымаць поўнае імя карыстальніка ад Табліца карыстальніка, і іх маці 368 00:18:06,046 --> 00:18:07,170 назваць з табліцы маці? 369 00:18:07,170 --> 00:18:10,960 Мы не ёсць спосаб, каб атрымаць што ў яго цяперашнім выглядзе, праўда? 370 00:18:10,960 --> 00:18:17,790 Там няма ні аднаго табліца, якая змяшчае як поўнае імя і імя маці. 371 00:18:17,790 --> 00:18:20,400 Мы не маем гэтую опцыю ад таго, што мы бачылі да гэтага часу. 372 00:18:20,400 --> 00:18:22,950 >> І таму мы павінны ўвесці Ідэя аб'яднання. 373 00:18:22,950 --> 00:18:24,857 І далучаецца, верагодна, найбольш complex-- 374 00:18:24,857 --> 00:18:27,940 гэта сапраўды найбольш складаная аперацыя мы будзем казаць аб ў відэа. 375 00:18:27,940 --> 00:18:30,040 Яны крыху больш складана, але як толькі вы атрымаеце павесіць яго, 376 00:18:30,040 --> 00:18:31,248 яны на самой справе не так ужо дрэнна. 377 00:18:31,248 --> 00:18:32,820 Гэта проста прыватны выпадак SELECT. 378 00:18:32,820 --> 00:18:37,120 Мы збіраемся, каб выбраць набор слупкі з табліцы, якія злучаюць 379 00:18:37,120 --> 00:18:40,650 у другой табліцы на некаторы прэдыкатаў. 380 00:18:40,650 --> 00:18:45,340 >> У гэтым выпадку, думаю, пра гэта хацеў this-- Табліца адзін адзін круг тут, 381 00:18:45,340 --> 00:18:47,530 табліца з двух яшчэ адзін круг тут. 382 00:18:47,530 --> 00:18:49,410 І, што прэдыкатаў частка ў сярэдзіне, гэта 383 00:18:49,410 --> 00:18:51,701 накшталт як, калі вы думаеце, аб выглядзе дыяграмы Венна, тое, што 384 00:18:51,701 --> 00:18:52,670 у іх ёсць агульнага? 385 00:18:52,670 --> 00:18:55,960 Мы хочам, каб звязаць гэтыя дзве табліцы на аснове таго, што яны маюць у агульным 386 00:18:55,960 --> 00:19:01,230 і стварыць табліцу гэтую гіпатэтычную што зліццё двух разам. 387 00:19:01,230 --> 00:19:03,480 Такім чынам, мы ўбачым гэта ў Прыклад і, магчыма, гэта дапаможа 388 00:19:03,480 --> 00:19:04,521 ачысціць яго няшмат. 389 00:19:04,521 --> 00:19:09,260 Так, можа быць, вы хочаце, каб выбраць user.fullname і moms.mother 390 00:19:09,260 --> 00:19:13,220 ад карыстальнікаў, захаджалых ў мамы стол у любой сітуацыі 391 00:19:13,220 --> 00:19:16,790 дзе слупок імя карыстальніка тое ж самае паміж імі. 392 00:19:16,790 --> 00:19:19,240 І гэта новы Сінтаксіс тут, гэты карыстальнік. 393 00:19:19,240 --> 00:19:20,460 і мамы .. 394 00:19:20,460 --> 00:19:26,697 Калі я раблю некалькі табліц разам, я магу пазначыць табліцу. 395 00:19:26,697 --> 00:19:29,530 Я магу адрозніць, у прыватнасці, што ў самым нізе ёсць. 396 00:19:29,530 --> 00:19:33,220 Я магу адрозніць карыстальніка слупок табліцы карыстальнікаў 397 00:19:33,220 --> 00:19:36,010 з калонкі Навіны з мамы стол, якія otherwise-- 398 00:19:36,010 --> 00:19:38,070 калі мы толькі што сказалі, імя карыстальніка роўны імя карыстальніка, што на самой справе не 399 00:19:38,070 --> 00:19:38,970 значыць нічога. 400 00:19:38,970 --> 00:19:41,440 Мы хочам зрабіць яго там, дзе яны супадаюць. 401 00:19:41,440 --> 00:19:46,080 >> Так што я магу пазначыць табліцу і Імя слупка ў выпадку ўзнікнення сітуацыі, 402 00:19:46,080 --> 00:19:48,370 дзе гэта было б незразумела, тое, што я кажу. 403 00:19:48,370 --> 00:19:51,880 Так што ўсё, што я раблю там я кажучы гэтую калонку з гэтай табліцы, 404 00:19:51,880 --> 00:19:54,020 і, быўшы вельмі відавочным. 405 00:19:54,020 --> 00:19:56,810 Такім чынам, яшчэ раз, я выбраўшы поўнае найменне і імя маці 406 00:19:56,810 --> 00:20:00,950 з табліцы карыстальнікаў звязаны адзін з адным з табліцай мам у любой сітуацыі 407 00:20:00,950 --> 00:20:05,960 дзе яны падзяляюць гэтую column-- яны падзяляюць гэтае імя карыстальніка паняцце. 408 00:20:05,960 --> 00:20:08,580 >> Дык вось сталы, якія мы мелі раней. 409 00:20:08,580 --> 00:20:12,210 Гэта стан нашага базы дадзеных, як яна існуе цяпер. 410 00:20:12,210 --> 00:20:16,390 Інфармацыя мы здабывання гэта для пачатку. 411 00:20:16,390 --> 00:20:19,820 Гэта новая табліца мы збіраемся стварыць аб'яднання іх разам. 412 00:20:19,820 --> 00:20:23,585 І звярніце ўвагу, што мы не вылучаючы Шэраг Ньюмана ў табліцы карыстальніка, 413 00:20:23,585 --> 00:20:25,960 і мы не вылучаючы Шэраг Крамера ў табліцы мам 414 00:20:25,960 --> 00:20:31,250 таму што ні адно існуе ў і sets-- ў абедзвюх табліцах. 415 00:20:31,250 --> 00:20:36,260 >> Адзіная інфармацыя, якая з'яўляецца агульным паміж імі Джэры ў абедзвюх табліцах 416 00:20:36,260 --> 00:20:39,100 і gcostanza ў абедзвюх табліцах. 417 00:20:39,100 --> 00:20:42,620 І таму, калі мы робім тое SQL JOIN, тое, што мы get-- і мы робім на самай справе атрымаць гэта. 418 00:20:42,620 --> 00:20:44,830 Гэта свайго роду часовай зменнай. 419 00:20:44,830 --> 00:20:47,330 Гэта як гіпатэтычная Зліццё двух табліц. 420 00:20:47,330 --> 00:20:49,930 Мы на самай справе што-небудзь як гэта, дзе 421 00:20:49,930 --> 00:20:54,730 мы зліліся разам сталы на Інфармацыя, што яны маюць у агульным. 422 00:20:54,730 --> 00:20:58,334 >> Так што users.username заўважыць і слупок moms.username, 423 00:20:58,334 --> 00:20:59,250 гэта тое ж самае. 424 00:20:59,250 --> 00:21:01,820 Гэта было інфармацыю, ўзгадняецца з карыстальнікаў 425 00:21:01,820 --> 00:21:02,890 стол і стол мамы. 426 00:21:02,890 --> 00:21:04,270 І таму мы аб'ядналі іх разам. 427 00:21:04,270 --> 00:21:06,919 Мы адкінутыя Крамер, таму што ён не існуе ў табліцы карыстальнікаў, 428 00:21:06,919 --> 00:21:09,710 і мы адмовіліся Ньюман, таму што ён не існуе ў табліцы мам. 429 00:21:09,710 --> 00:21:16,450 Так што гэта гіпатэтычны зліццё з дапамогай аперацыі злучэння з SELECT. 430 00:21:16,450 --> 00:21:21,250 >> А потым мы шукалі для Поўнае імя карыстальніка і маці карыстальніка, 431 00:21:21,250 --> 00:21:24,999 і такім чынам, гэта інфармацыя, якая мы хацелі б атрымаць ад агульнага запыту 432 00:21:24,999 --> 00:21:26,040 што мы зрабілі з SELECT. 433 00:21:26,040 --> 00:21:28,873 Такім чынам, мы далучыліся да табліцы разам і мы вынялі гэтыя два слупка, 434 00:21:28,873 --> 00:21:31,610 і так гэта тое, што мы хацелі б атрымаць. 435 00:21:31,610 --> 00:21:33,370 Але SQL JOIN і свайго роду складаным. 436 00:21:33,370 --> 00:21:36,770 Вы, верагодна, не будзе рабіць ім занадта шмат, але толькі мець некаторы ўяўленне пра шкілеце 437 00:21:36,770 --> 00:21:41,992 што вы маглі б выкарыстоўваць, каб аб'яднаць два сталы разам, калі вам трэба. 438 00:21:41,992 --> 00:21:43,700 Апошнія два з'яўляюцца трохі прасцей я абяцаю. 439 00:21:43,700 --> 00:21:48,040 Так абнаўленні, мы можам выкарыстоўваць UPDATE змяніць інфармацыю ў табліцы. 440 00:21:48,040 --> 00:21:53,880 Агульны фармат абнавіць некаторыя стол, усталяваць некаторыя калонкі да некаторага значэння 441 00:21:53,880 --> 00:21:55,540 Дзе некаторыя прэдыкатаў выконваецца. 442 00:21:55,540 --> 00:21:57,850 Так, напрыклад, мы маглі б абнавіць табліцу карыстальнікі 443 00:21:57,850 --> 00:22:04,400 і ўсталяваць пароль для балбатня йада, дзе ідэнтыфікацыйны нумар 10. 444 00:22:04,400 --> 00:22:06,400 >> Такім чынам, у гэтым выпадку, мы абнаўленне табліцы карыстальнікаў. 445 00:22:06,400 --> 00:22:08,275 Ідэнтыфікацыйны нумар 10 для што першая радок ёсць, 446 00:22:08,275 --> 00:22:10,690 і мы хочам, каб абнавіць пароль для балбатня. 447 00:22:10,690 --> 00:22:12,170 І вось што здарыцца. 448 00:22:12,170 --> 00:22:13,628 Гэта даволі проста, ці не так? 449 00:22:13,628 --> 00:22:17,990 Гэта проста вельмі просты мадыфікацыя табліцы. 450 00:22:17,990 --> 00:22:22,250 >> DELETE з'яўляецца аперацыя, каб мы выкарыстоўвалі выдаліць інфармацыю з табліцы. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM табліца, у якой некаторыя прэдыкатаў выконваецца. 452 00:22:24,817 --> 00:22:26,900 Мы хочам, каб выдаліць з Табліца карыстальнікі, напрыклад 453 00:22:26,900 --> 00:22:28,254 дзе імя карыстальніка з'яўляецца Ньюман. 454 00:22:28,254 --> 00:22:31,420 Вы, напэўна, можаце здагадацца, што збіраецца адбудзецца тут пасля выканання SQL, што 455 00:22:31,420 --> 00:22:35,790 запыт, Ньюман сышоў з-за стала. 456 00:22:35,790 --> 00:22:40,460 >> Такім чынам, усе гэтыя аперацыі, як я ўжо сказаў, вельмі лёгка зрабіць у PhpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Гэта зручны інтэрфейс вельмі зручна. 458 00:22:43,020 --> 00:22:45,930 Але гэта патрабуе ручной працы. 459 00:22:45,930 --> 00:22:47,840 Мы не хочам, каб выкарыстоўваць ручной намаганні. 460 00:22:47,840 --> 00:22:51,280 Мы хочам, каб нашы праграмы на зрабіць гэта для нас, ці не так? 461 00:22:51,280 --> 00:22:53,190 Такім чынам, мы, магчыма, захочаце зрабіць гэта праграмна. 462 00:22:53,190 --> 00:22:56,410 Мы хочам, каб уключыць SQL і ёсць нешта яшчэ, каб зрабіць гэта для нас. 463 00:22:56,410 --> 00:23:02,710 >> Але тое, што мы бачылі, што дазваляе нам праграмна нешта зрабіць? 464 00:23:02,710 --> 00:23:03,690 Мы бачылі PHP, праўда? 465 00:23:03,690 --> 00:23:05,760 Ён уводзіць некаторыя дынамізм ў нашых праграмах. 466 00:23:05,760 --> 00:23:10,430 І так на шчасце, SQL і PHP гуляць вельмі добра разам. 467 00:23:10,430 --> 00:23:13,230 Там гэта функцыя ў PHP называецца запыт, які можа быць выкарыстаны. 468 00:23:13,230 --> 00:23:15,870 І вы можаце прайсці як Параметр або аргумент 469 00:23:15,870 --> 00:23:19,210 запытваць SQL-запыт, які Вы хацелі б выканаць. 470 00:23:19,210 --> 00:23:23,250 І PHP зробіць гэта ад вашага імя. 471 00:23:23,250 --> 00:23:25,564 >> Так пасля таго як вы падлучаныя да базы дадзеных з PHP, 472 00:23:25,564 --> 00:23:26,980 ёсць два праймерыз вы робіце гэта. 473 00:23:26,980 --> 00:23:29,230 Там нешта называецца MySQLi і тое, што называецца PDO. 474 00:23:29,230 --> 00:23:31,063 Мы не будзем удавацца ў велізарны колькасць дэталяў там. 475 00:23:31,063 --> 00:23:32,957 У CS50 мы выкарыстоўваем PDO. 476 00:23:32,957 --> 00:23:34,790 Пасля падлучэння да вашай базе даных, вы 477 00:23:34,790 --> 00:23:40,980 то можа рабіць запыты да базы дадзеных пры праходжанні запытаў у якасці аргументаў 478 00:23:40,980 --> 00:23:42,730 у PHP функцый. 479 00:23:42,730 --> 00:23:46,460 І калі вы гэта зробіце, вы захоўваць Выніковы набор у асацыятыўным масіве. 480 00:23:46,460 --> 00:23:50,290 >> І мы ведаем, як працаваць з асацыятыўныя масівы ў PHP. 481 00:23:50,290 --> 00:23:52,630 Так што я, магчыма, нешта сказаць як this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 гэта ў PHP-- роўная запыт. 483 00:23:55,470 --> 00:23:57,660 І тады ўнутры з Функцыя запыту, аргумент 484 00:23:57,660 --> 00:24:00,130 што я перадаю запытаць які выглядае як SQL. 485 00:24:00,130 --> 00:24:01,160 І на самай справе, што гэта SQL. 486 00:24:01,160 --> 00:24:05,700 Гэта радок запыту, што я б хацеў выканаць на маёй базе дадзеных. 487 00:24:05,700 --> 00:24:09,250 >> І так у чырвоны, гэта PHP. 488 00:24:09,250 --> 00:24:11,890 Гэта SQL, што я інтэграцыі ў PHP шляхам 489 00:24:11,890 --> 00:24:15,020 гэта аргумент функцыі запыту. 490 00:24:15,020 --> 00:24:19,640 Я хачу, каб выбраць з FullName карыстальнікі, дзе ідэнтыфікацыйны нумар складае 10. 491 00:24:19,640 --> 00:24:22,560 І тады, можа быць, пасля таго, як я зрабіў гэта, Я мог бы сказаць нешта накшталт гэтага. 492 00:24:22,560 --> 00:24:25,550 Я хачу, каб раздрукаваць вароты паведамленне Дзякуй за ўваход у. 493 00:24:25,550 --> 00:24:32,530 >> І я хачу яго interpolate-- Я хачу интерполировать $ FullName вынікі. 494 00:24:32,530 --> 00:24:36,280 І вось як я працую з гэтым Асацыятыўны масіў, што я вярнуўся. 495 00:24:36,280 --> 00:24:39,730 $ FullName б вынікі у асноўным у канчатковым выніку раздрукоўкі, 496 00:24:39,730 --> 00:24:42,870 дзякуй за ўваходу ў сістэму, Джэры Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Гэта было поўнае імя дзе idnum роўная 10. 498 00:24:46,570 --> 00:24:48,850 >> А так усё, што я раблю з'яўляецца Я now-- я захаваў 499 00:24:48,850 --> 00:24:52,780 мой запыт, вынікі запыту маёй і вынікі ў выглядзе асацыятыўнага масіва, 500 00:24:52,780 --> 00:24:56,330 і FullName гэтае імя слупок я атрымліваю за. 501 00:24:56,330 --> 00:25:01,010 Так што мой ключ у выніках Асацыятыўны масіў, што я хачу. 502 00:25:01,010 --> 00:25:05,930 Так што дзякуй за ўваходу ў $ Вынікі, FullName будзе раздрукаваць, будзе прытрымлівацца 503 00:25:05,930 --> 00:25:08,654 прама паміж тымі кучаравых брекеты, Джэры Seinfeld. 504 00:25:08,654 --> 00:25:11,820 І я хацеў, каб раздрукаваць паведамленне Дзякуй за ўваход у Джэры Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Зараз, мы, верагодна, не хочаце, каб цяжка код рэчы, як, што ў, правільна? 506 00:25:16,652 --> 00:25:19,860 Мы маглі б зрабіць нешта накшталт друку е, дзе мы можам замяніць і, магчыма, 507 00:25:19,860 --> 00:25:22,443 збіраць розную інфармацыю, ці, можа быць, ёсць працэс запыту 508 00:25:22,443 --> 00:25:23,370 розная інфармацыя. 509 00:25:23,370 --> 00:25:27,920 І так запыт, функцыя запыту мае гэта паняцце роду замен 510 00:25:27,920 --> 00:25:32,310 вельмі падобны на друк е адсоткаў з і адсотак З, пытальныя знакі. 511 00:25:32,310 --> 00:25:34,290 >> І мы можам выкарыстоўваць пытанне знакі вельмі аналагічна 512 00:25:34,290 --> 00:25:38,400 друкаваць е падставіць зменных. 513 00:25:38,400 --> 00:25:44,120 Так, можа быць, ваш карыстальнік рэгіструецца ў раней, і вы захавалі свой ідэнтыфікацыйны нумар карыстальніка 514 00:25:44,120 --> 00:25:51,710 $ _SESSION У PHP супер глабальны ідэнтыфікатар ключа. 515 00:25:51,710 --> 00:25:55,947 Так, можа быць, пасля таго як яны ўвайшлі ў сістэму, ўсталяваць $ _SESSION ID роўны 10, 516 00:25:55,947 --> 00:25:58,280 Экстрапалюючы на ​​прыкладзе мы толькі што бачылі секунду таму. 517 00:25:58,280 --> 00:26:01,960 >> І таму, калі мы на самай справе выканаць Гэты запыт вынікі ў цяперашні час, 518 00:26:01,960 --> 00:26:08,440 было б падключыць 10, ці нешта ідэнтыфікатар значэнне $ _SESSION ёсць. 519 00:26:08,440 --> 00:26:10,790 І так, што дазваляе нам быць трохі больш дынамічным. 520 00:26:10,790 --> 00:26:12,699 Мы не жорсткага кадавання рэчы ў больш. 521 00:26:12,699 --> 00:26:14,490 Мы эканомім інфармацыі дзе-то і то 522 00:26:14,490 --> 00:26:18,924 мы можам выкарыстоўваць гэтую інфармацыю, каб зноў накшталт абагульніць тое, што мы хочам зрабіць, 523 00:26:18,924 --> 00:26:21,090 і проста падключыце і змены паводзіны нашай старонцы 524 00:26:21,090 --> 00:26:26,489 на чым заснавана ідэнтыфікацыйнага нумара карыстальніка на самай справе пасля таго, як яны ўвайшлі. 525 00:26:26,489 --> 00:26:28,530 Гэта таксама магчыма, хоць, што вашы вынікі ўстаноўлена 526 00:26:28,530 --> 00:26:30,840 можа складацца з некалькіх радкоў. 527 00:26:30,840 --> 00:26:33,990 У гэтым выпадку, у вас ёсць масіў arrays-- 528 00:26:33,990 --> 00:26:35,334 масіў асацыятыўных масіваў. 529 00:26:35,334 --> 00:26:37,000 І трэба проста паўтараць праз яго. 530 00:26:37,000 --> 00:26:41,950 І мы ведаем, як для перабору у масіве ў PHP, праўда? 531 00:26:41,950 --> 00:26:45,600 Дык вось, напэўна, самая Комплекс, што мы бачылі да гэтага часу. 532 00:26:45,600 --> 00:26:49,640 Гэта на самай справе аб'ядноўвае трох мовах разам. 533 00:26:49,640 --> 00:26:52,920 >> Тут, у чырвоны, гэта нейкая HTML. 534 00:26:52,920 --> 00:26:56,872 Я, мабыць, гэта starting-- фрагмент нейкі HTML, што ў мяне ёсць. 535 00:26:56,872 --> 00:26:59,580 Я пачынаю новы пункт, што Кажа мам Seinfeld тэлевізара. 536 00:26:59,580 --> 00:27:02,350 А потым адразу ж пасля Я пачынаю табліцу. 537 00:27:02,350 --> 00:27:06,060 А потым, пасля гэтага, я ёсць PHP, праўда? 538 00:27:06,060 --> 00:27:08,229 У мяне ўсё гэта PHP код там. 539 00:27:08,229 --> 00:27:09,645 Я, мабыць, збіраецца зрабіць запыт. 540 00:27:09,645 --> 00:27:14,180 І зрабіць запыт, я збіраюся быць з дапамогай выбару маці ад мам. 541 00:27:14,180 --> 00:27:15,970 >> Так што гэта getting-- гэта SQL. 542 00:27:15,970 --> 00:27:17,300 Такім чынам, сіні з'яўляецца SQL. 543 00:27:17,300 --> 00:27:19,680 Чырвоны мы ўбачылі секунду таму быў HTML. 544 00:27:19,680 --> 00:27:21,360 І вось зялёны PHP. 545 00:27:21,360 --> 00:27:23,400 Так што я раблю запыт у маёй базе дадзеных, я 546 00:27:23,400 --> 00:27:26,040 выбару ўсіх маці ў табліцы мам. 547 00:27:26,040 --> 00:27:30,710 Не толькі звузіўшы яго да прыватнасці шэраг, я прашу ўсіх з іх. 548 00:27:30,710 --> 00:27:33,290 >> Затым я правяраю, калі вынік ня роўнае раўняецца хлусня. 549 00:27:33,290 --> 00:27:37,410 Гэта проста мой спосаб праверкі свайго роду з, калі вынікі не роўны нулю, 550 00:27:37,410 --> 00:27:40,260 што мы хацелі б бачыць C, напрыклад. 551 00:27:40,260 --> 00:27:44,000 У асноўным гэта проста праверка, каб упэўнены, што ён на самай справе атрымаў дадзеныя назад. 552 00:27:44,000 --> 00:27:47,041 Таму што я не хачу, каб пачаць друк з дадзеных, калі я не атрымаў якіх-небудзь дадзеных. 553 00:27:47,041 --> 00:27:50,690 Тады для кожнага вынікаў У выніку Еогеасп сінтаксіс з PHP, усё, што я раблю 554 00:27:50,690 --> 00:27:53,399 друкуе з $ вынік маці. 555 00:27:53,399 --> 00:27:55,940 І таму я іду, каб атрымаць набор ўсіх маці each-- 556 00:27:55,940 --> 00:27:59,980 гэта масіў асацыятыўных arrays-- і я друкую 557 00:27:59,980 --> 00:28:03,649 кожны з а ўласнай радку табліцы. 558 00:28:03,649 --> 00:28:05,690 І гэта сапраўды вельмі шмат усяго, што трэба зрабіць. 559 00:28:05,690 --> 00:28:07,750 Я ведаю, што гэта крыху трохі тут адбываецца 560 00:28:07,750 --> 00:28:13,210 У гэтым апошнім прыкладзе з масівамі arrays-- масівы асацыятыўных масіваў. 561 00:28:13,210 --> 00:28:17,340 Але на самой справе гэта проста кіпяціць ўніз ў SQL, каб зрабіць запыт, 562 00:28:17,340 --> 00:28:21,102 звычайна выбіраючы пасля таго як мы ўжо размясціць інфармацыю ў табліцы, 563 00:28:21,102 --> 00:28:22,310 а затым проста пацягнуўшы яго. 564 00:28:22,310 --> 00:28:25,710 >> І гэта мы выцягнуць яго у гэтым канкрэтным выпадку. 565 00:28:25,710 --> 00:28:31,120 Мы здабываем б усе асобы маці з табліцы мам. 566 00:28:31,120 --> 00:28:35,970 Мы атрымалі цэлы набор з іх, і мы хачу для перабору і раздрукаваць 567 00:28:35,970 --> 00:28:37,630 кожны. 568 00:28:37,630 --> 00:28:40,510 Такім чынам, яшчэ раз, гэта, верагодна, найбольш складаны прыклад 569 00:28:40,510 --> 00:28:44,510 мы бачылі, таму што мы змешвання трох розныя мовы разам, праўда? 570 00:28:44,510 --> 00:28:50,100 >> Зноў жа, у нас ёсць HTML тут, у чырвоны, змяшаная з SQL тут у сіні, 571 00:28:50,100 --> 00:28:52,049 змяшаная з PHP ў зялёны. 572 00:28:52,049 --> 00:28:53,840 Але ўсе яны гуляюць прыгожа разам, гэта 573 00:28:53,840 --> 00:28:57,060 проста пытанне распрацоўкі добрыя звычкі, так што вы можаце атрымаць 574 00:28:57,060 --> 00:28:58,780 ім працаваць разам, як вы хочаце. 575 00:28:58,780 --> 00:29:03,790 І адзіны спосаб, каб сапраўды зрабіць што гэта практыка, практыка, практыка. 576 00:29:03,790 --> 00:29:06,740 Я Дуг Лойд, гэта CS50. 577 00:29:06,740 --> 00:29:08,647