1 00:00:00,000 --> 00:00:02,405 >> [Играет музыка] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 Дэвид Малан: Ладно, это CS50. 4 00:00:11,980 --> 00:00:13,740 Это конец недели восемь. 5 00:00:13,740 --> 00:00:15,887 И сегодня, мы начинаем чтобы заполнить некоторые куски 6 00:00:15,887 --> 00:00:17,720 когда дело доходит до строительства вещи в Интернете. 7 00:00:17,720 --> 00:00:20,020 Так, напомним, что в понедельник мы тратим гораздо больше времени 8 00:00:20,020 --> 00:00:22,530 на PHP, который является эта динамика язык программирования, который 9 00:00:22,530 --> 00:00:26,872 позволяет нам выход, среди других вещи, HTML и другие такие материалы 10 00:00:26,872 --> 00:00:27,830 что мы хотим видеть. 11 00:00:27,830 --> 00:00:30,871 Но мы на самом деле не посмотрел на то, как мы собираемся хранить любую информацию. 12 00:00:30,871 --> 00:00:34,477 В самом деле, почти ничего из этого супер интересные сайты вы посещаете сегодня 13 00:00:34,477 --> 00:00:36,560 есть какой-то базы данных на заднем конце, верно? 14 00:00:36,560 --> 00:00:39,540 Facebook, безусловно, сохраняет множество данных о всех нас и Gmail магазинах все 15 00:00:39,540 --> 00:00:40,210 из ваших писем. 16 00:00:40,210 --> 00:00:44,150 >> И так, многие другие сайты не только статический контент это информационный. 17 00:00:44,150 --> 00:00:45,640 Это на самом деле динамика в некотором роде. 18 00:00:45,640 --> 00:00:48,480 Вы предоставляете вход, он обновляет страницы для других людей. 19 00:00:48,480 --> 00:00:50,620 Вы получаете сообщение, вы посылаете Сообщения, и так далее. 20 00:00:50,620 --> 00:00:54,250 Таким образом, сегодня мы посмотрим поближе на основами проекта 21 00:00:54,250 --> 00:00:57,330 что вы будете погружаться в следующем неделю, CS50 Финансы, которые 22 00:00:57,330 --> 00:01:00,509 на самом деле происходит, чтобы вы построить что-то не в C, но в PHP. 23 00:01:00,509 --> 00:01:02,550 Сайт, который выглядит кое-что как это 24 00:01:02,550 --> 00:01:05,810 что позволяет покупать и продавать запасы, которые фактически 25 00:01:05,810 --> 00:01:09,044 собирается привлечь на реальном времени данные о запасах от Yahoo Finance. 26 00:01:09,044 --> 00:01:11,960 И так, в конечном счете, вы будете иметь иллюзия для себя и для пользователей, 27 00:01:11,960 --> 00:01:14,550 что вы на самом деле покупка и продажа акции и получать почти в реальном времени 28 00:01:14,550 --> 00:01:16,800 Обновления, Управление Портфель, все из которых 29 00:01:16,800 --> 00:01:20,310 будет требовать, имеющие, в конечном счете, база данных пользователей. 30 00:01:20,310 --> 00:01:23,330 >> Так, в ваших собственных слов, особенно если вы не 31 00:01:23,330 --> 00:01:25,670 супер знакомы с компьютером наука или базы данных, то, что 32 00:01:25,670 --> 00:01:30,790 Вы знаете, базы данных, чтобы быть Прямо сейчас, в нетехнических терминах? 33 00:01:30,790 --> 00:01:32,300 Что это? 34 00:01:32,300 --> 00:01:36,882 Как бы Вы описали его в соседа или друга? 35 00:01:36,882 --> 00:01:40,100 >> АУДИТОРИЯ: [неразборчиво] Информация [неразборчиво] 36 00:01:40,100 --> 00:01:44,430 >> Дэвид Малан: Таким образом, перечень информации, или store-- перечень информации, 37 00:01:44,430 --> 00:01:47,160 что вы, возможно, захотите, чтобы сохранить о чем-то, как пользователь. 38 00:01:47,160 --> 00:01:50,190 И то, что делают пользователи имеют связанных с ними? 39 00:01:50,190 --> 00:01:53,160 Если вы пользователь Facebook или на Gmail, каковы характеристики 40 00:01:53,160 --> 00:01:54,940 что все из нас имеют пользователи? 41 00:01:54,940 --> 00:01:58,530 Мол, то, что могут быть некоторые из столбцы в таблице, к которой мы 42 00:01:58,530 --> 00:01:59,390 ссылался последний раз? 43 00:01:59,390 --> 00:02:01,140 Потому что опять же, вы можете думаю, базы данных 44 00:02:01,140 --> 00:02:05,810 действительно, как фантазии Excel файла или Google Таблица или Apple, номера файлов. 45 00:02:05,810 --> 00:02:08,280 >> Итак, что вы думаете о когда вы думаете о пользователь? 46 00:02:08,280 --> 00:02:11,290 Что у них есть? 47 00:02:11,290 --> 00:02:11,790 Что это? 48 00:02:11,790 --> 00:02:12,470 >> АУДИТОРИЯ: Имя. 49 00:02:12,470 --> 00:02:13,303 >> Дэвид Малан: Имя. 50 00:02:13,303 --> 00:02:16,840 Так что, если имя, как Дэвид Малан будет имя какого-либо пользователя. 51 00:02:16,840 --> 00:02:17,980 Что еще есть пользователь? 52 00:02:17,980 --> 00:02:18,770 >> АУДИТОРИЯ: ID. 53 00:02:18,770 --> 00:02:19,561 >> Дэвид Малан: ID. 54 00:02:19,561 --> 00:02:23,320 Так что, как идентификационный номер, как ваш Гарварде ID или ваш Йельского Net ID и тому подобное. 55 00:02:23,320 --> 00:02:24,923 Что еще может пользователь имеет? 56 00:02:24,923 --> 00:02:25,890 >> АУДИТОРИЯ: Пароль. 57 00:02:25,890 --> 00:02:29,240 >> Дэвид Малан: Пароль, может быть, адрес, может быть, номер телефона, может быть, 58 00:02:29,240 --> 00:02:30,050 адрес электронной почты. 59 00:02:30,050 --> 00:02:32,640 Так, есть букеты полей и это может рода выйти из под контроля 60 00:02:32,640 --> 00:02:34,760 быстро, как только вы начинаете понимая, о, давайте хранить это 61 00:02:34,760 --> 00:02:36,190 и давайте хранить это и это. 62 00:02:36,190 --> 00:02:37,657 >> Но как мы на самом деле это сделать? 63 00:02:37,657 --> 00:02:39,740 Итак, еще раз, то ментальная модель чтобы на сегодняшний день, как мы 64 00:02:39,740 --> 00:02:42,320 погрузиться в реальной SQL, Structured Query Language, 65 00:02:42,320 --> 00:02:44,186 представляет собой базу данных, которая выглядит как это. 66 00:02:44,186 --> 00:02:45,310 Это просто строк и столбцов. 67 00:02:45,310 --> 00:02:48,309 И вы можете себе представить Google Spreadsheets или любое количество других программ. 68 00:02:48,309 --> 00:02:52,130 Но то, что является ключевым о MySQL, которая является программное обеспечение базы данных мы будем использовать, 69 00:02:52,130 --> 00:02:54,920 свободно открыто available-- использования Facebook 70 00:02:54,920 --> 00:02:59,200 это и любое количество других websites-- база данных хранит вещи реляционные. 71 00:02:59,200 --> 00:03:01,770 И это реляционная база данных просто означает, что тот, который в буквальном смысле 72 00:03:01,770 --> 00:03:03,672 хранит данные в строках и столбцах. 73 00:03:03,672 --> 00:03:04,630 Его так просто. 74 00:03:04,630 --> 00:03:07,230 >> Таким образом, даже что-то вроде Oracle, что Вы, возможно, как правило, слышали 75 00:03:07,230 --> 00:03:08,271 это реляционная база данных. 76 00:03:08,271 --> 00:03:10,929 А под капотом, его хранит данные в строках и столбцах. 77 00:03:10,929 --> 00:03:12,970 И Oracle обвиняет Вас в много денег, чтобы сделать это, 78 00:03:12,970 --> 00:03:15,550 в то время как обвинения MySQL не вы ничего за то же самое. 79 00:03:15,550 --> 00:03:18,790 Так, в SQL собирается дать нам по меньшей мере, четырех операций. 80 00:03:18,790 --> 00:03:23,190 Возможность выбора данных, как для чтения Данные, вставка, удаление, и обновление данных. 81 00:03:23,190 --> 00:03:25,525 Другими словами, те на самом деле четыре ключевых операции 82 00:03:25,525 --> 00:03:28,950 которые собираются, чтобы позволить нам изменять материал в тех строках и столбцах. 83 00:03:28,950 --> 00:03:33,250 >> Инструмент, который мы используем сегодня, особенно узнать SQL и играть с ним 84 00:03:33,250 --> 00:03:34,627 снова призвал PHP MyAdmin. 85 00:03:34,627 --> 00:03:35,460 Это инструмент на основе веб-. 86 00:03:35,460 --> 00:03:38,200 Всего случайно это написано в PHP. 87 00:03:38,200 --> 00:03:42,400 Но это даст нам графическую пользовательский интерфейс, так что мы действительно можем 88 00:03:42,400 --> 00:03:46,054 создать эти строк и столбцов а затем поговорить с ними с помощью кода. 89 00:03:46,054 --> 00:03:47,970 Так, теперь давайте начинать что я думаю, откровенно говоря, 90 00:03:47,970 --> 00:03:51,000 вид процесса удовольствие от строительство заднюю часть веб-сайтов, 91 00:03:51,000 --> 00:03:54,580 части, что пользователи не см, но, безусловно, заботятся о, 92 00:03:54,580 --> 00:03:56,170 потому что это довольно данных собирается. 93 00:03:56,170 --> 00:03:59,570 Так, подобно С и немного меньше, как PHP, 94 00:03:59,570 --> 00:04:04,954 SQL, или базы данных, которая поддерживает SQL, имеет виды на эти данные не менее 95 00:04:04,954 --> 00:04:05,870 и гроздья других. 96 00:04:05,870 --> 00:04:08,107 СИМВОЛ, VARCHAR, INT, BIGINT, Десятичной и DateTime. 97 00:04:08,107 --> 00:04:09,940 И есть целый куча других функций, 98 00:04:09,940 --> 00:04:11,940 но давайте делать это, способ реального примера. 99 00:04:11,940 --> 00:04:16,450 >> Я собираюсь пойти в CS50 IDE где заранее, я вошли в 100 00:04:16,450 --> 00:04:19,372 и я также посетил URL для этот инструмент называется PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 А в семь проблема установить, мы расскажем вам, как именно, чтобы добраться до этого интерфейса 102 00:04:22,580 --> 00:04:23,200 также. 103 00:04:23,200 --> 00:04:25,640 На верхнем левом углу, заметите, что он говорит, лекции. 104 00:04:25,640 --> 00:04:27,610 И, что просто означает, что заранее, я создал 105 00:04:27,610 --> 00:04:31,360 пустой базы данных называется лекция что не имеет таблицы в нее еще. 106 00:04:31,360 --> 00:04:32,600 Там нет строки и столбцы. 107 00:04:32,600 --> 00:04:34,308 Поскольку первый что мы собираемся делать 108 00:04:34,308 --> 00:04:37,100 это начать, чтобы создать таблицу что собирается хранить наши пользователи. 109 00:04:37,100 --> 00:04:39,100 >> Так, буквально в течение здесь направо, я 110 00:04:39,100 --> 00:04:42,070 собираюсь рассказать базу данных Я хочу таблица называется пользователей. 111 00:04:42,070 --> 00:04:44,845 Таким образом, это как файл, который я хотите сохранить все мои данные в. 112 00:04:44,845 --> 00:04:45,720 И сколько колонок? 113 00:04:45,720 --> 00:04:47,740 Ну, давайте держать его проста в настоящее время. 114 00:04:47,740 --> 00:04:51,855 Я просто хочу, чтобы хранить подобно имя пользователя и имя для пользователя. 115 00:04:51,855 --> 00:04:53,020 Мы начать с малого. 116 00:04:53,020 --> 00:04:55,370 Итак, я хочу всего две колонки. 117 00:04:55,370 --> 00:04:57,360 И я собираюсь идти вперед и нажмите Go. 118 00:04:57,360 --> 00:04:59,210 А потом, за эти колонны, что я собираюсь 119 00:04:59,210 --> 00:05:04,576 чтобы do-- если этого Интернете cooperates-- все права, 120 00:05:04,576 --> 00:05:05,950 так что мы собираемся, чтобы попытаться это снова. 121 00:05:05,950 --> 00:05:09,180 Я собираюсь создать таблицу с именем Люди с двумя колоннами, нажмите Go, ОК. 122 00:05:09,180 --> 00:05:10,520 Теперь у нас есть на самом деле быстро. 123 00:05:10,520 --> 00:05:12,065 Спасибо, очень хорошо сделано. 124 00:05:12,065 --> 00:05:14,440 Ладно, так, что мы хотим эти столбцы можно назвать? 125 00:05:14,440 --> 00:05:16,080 >> Так, один собирается назвать Имя пользователя. 126 00:05:16,080 --> 00:05:19,480 Таким образом, все я вижу here-- и интерфейс откровенно становится немного некрасиво в конце концов, 127 00:05:19,480 --> 00:05:21,270 как только вы начинаете набирать все эти данные. 128 00:05:21,270 --> 00:05:27,450 Но то, что приятно, что-то как это ни парадоксально, я создаю столбцов, 129 00:05:27,450 --> 00:05:29,977 но инструмент имеет глупости положил их в ряды 130 00:05:29,977 --> 00:05:31,560 так что я могу настроить эти столбцы. 131 00:05:31,560 --> 00:05:33,550 Так, есть два заготовки там под имя. 132 00:05:33,550 --> 00:05:36,180 И одно из этих полей я хочу назвать имя пользователя, 133 00:05:36,180 --> 00:05:38,000 и другое поле я хочу назвать имя. 134 00:05:38,000 --> 00:05:40,340 >> И теперь у меня есть, чтобы выбрать типы данных для этих вещей. 135 00:05:40,340 --> 00:05:42,330 Так, в то время как в Excel и Таблицы Google, 136 00:05:42,330 --> 00:05:45,531 если вы хотите столбец, вы в буквальном смысле просто введите имя или имя пользователя, нажмите Enter. 137 00:05:45,531 --> 00:05:48,030 Может быть, вы делаете это жирный шрифт просто для ясности, но это так. 138 00:05:48,030 --> 00:05:50,140 Вы не укажите типы колонок. 139 00:05:50,140 --> 00:05:53,790 Сейчас в Google Spreadsheets или Excel, вы может указать, как оказывается данные. 140 00:05:53,790 --> 00:05:58,120 Вы можете перейти в меню Формат, и вы можно указать показать этот знак как доллар, 141 00:05:58,120 --> 00:05:59,900 показать это как значение с плавающей запятой. 142 00:05:59,900 --> 00:06:01,990 >> Так, это похоже по духу что то, что мы собираемся сделать, 143 00:06:01,990 --> 00:06:04,740 но это на самом деле происходит, чтобы заставить данные, чтобы быть определенный тип. 144 00:06:04,740 --> 00:06:07,750 Теперь, даже если минуту назад я сказал, что есть только несколько типов данных, 145 00:06:07,750 --> 00:06:11,120 там на самом деле намного, и они 146 00:06:11,120 --> 00:06:12,910 в разной степени специфичности. 147 00:06:12,910 --> 00:06:14,970 И, как в сторону, вы может даже сделать модные вещи 148 00:06:14,970 --> 00:06:17,520 как геометрий хранения внутри базы данных. 149 00:06:17,520 --> 00:06:19,250 Вы можете хранить вещи как координат GPS 150 00:06:19,250 --> 00:06:22,420 и на самом деле найти, математически, точки, которые близки к другим. 151 00:06:22,420 --> 00:06:24,128 Но мы собираемся держать это супер просто 152 00:06:24,128 --> 00:06:26,800 и идти до сюда, все так называемые типы строк. 153 00:06:26,800 --> 00:06:29,240 >> Итак, вот список из целая куча вариантов. 154 00:06:29,240 --> 00:06:32,740 СИМВОЛ, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 И это отчасти подавляющим. 156 00:06:34,110 --> 00:06:37,610 И, к сожалению, несколько как это ни парадоксально С, 157 00:06:37,610 --> 00:06:40,120 полукокса на самом деле не СИМВОЛ. 158 00:06:40,120 --> 00:06:44,170 Если вы укажете в базе данных что ваш тип данных CHAR, 159 00:06:44,170 --> 00:06:47,390 что означает, что да, это СИМВОЛ, но это один или несколько символов. 160 00:06:47,390 --> 00:06:49,630 И вы должны указать сколько символы вы хотите. 161 00:06:49,630 --> 00:06:51,636 Итак, что типичный Длина имени пользователя? 162 00:06:51,636 --> 00:06:52,760 Есть ли ограничения, как правило,? 163 00:06:52,760 --> 00:06:53,920 >> АУДИТОРИЯ: [неразборчиво] 164 00:06:53,920 --> 00:06:55,050 >> Дэвид Малан: 16, может быть? 165 00:06:55,050 --> 00:06:55,990 Что-то вроде того. 166 00:06:55,990 --> 00:06:57,948 Вы знаете, еще в день, это было восемь. 167 00:06:57,948 --> 00:07:00,289 Иногда это 16, иногда это даже больше, чем это. 168 00:07:00,289 --> 00:07:02,080 И так, это не значит дать мне один символ. 169 00:07:02,080 --> 00:07:04,730 Это означает, что я должен указать длина области, 170 00:07:04,730 --> 00:07:07,402 и теперь я могу сказать что-то вроде 16. 171 00:07:07,402 --> 00:07:08,610 И есть компромисс здесь. 172 00:07:08,610 --> 00:07:11,360 Таким образом, мы увидим в момент это означает, что одно, 173 00:07:11,360 --> 00:07:14,620 каждый имя пользователя должно быть 16 символов. 174 00:07:14,620 --> 00:07:18,720 Но подождите минуту, M-A-L-A-N. Если это мое имя пользователя и я только с помощью пяти, 175 00:07:18,720 --> 00:07:23,070 то, что вы могли бы предложить, что база данных чтобы сделать для остальных 11 персонажей, которые 176 00:07:23,070 --> 00:07:24,471 Я защищены пространства для? 177 00:07:24,471 --> 00:07:25,220 Что бы вы сделали? 178 00:07:25,220 --> 00:07:26,480 >> АУДИТОРИЯ: [неразборчиво] 179 00:07:26,480 --> 00:07:27,160 >> Дэвид Малан: Да, только сделать их всех нуль. 180 00:07:27,160 --> 00:07:28,290 Сделайте им пространства. 181 00:07:28,290 --> 00:07:30,816 Но, наверное, нулевая, так что много обратной косой нулей. 182 00:07:30,816 --> 00:07:33,190 Так, с одной стороны, мы в Теперь убедился, что мое имя пользователя 183 00:07:33,190 --> 00:07:34,780 не может быть более 16 символов. 184 00:07:34,780 --> 00:07:37,590 И оборотная сторона, которая что если я действительно длинное имя 185 00:07:37,590 --> 00:07:39,940 или хотели действительно долго имя пользователя, как некоторые из вас 186 00:07:39,940 --> 00:07:44,840 ребята, может иметь в этом колледже или в Yale.edu, вы не можете иметь один. 187 00:07:44,840 --> 00:07:47,177 И так на самом деле, если у Вас есть либо зарегистрированных на сайте 188 00:07:47,177 --> 00:07:49,385 и вы получите кричал на говоря пароль слишком долго 189 00:07:49,385 --> 00:07:52,710 или имя пользователя слишком долго, это просто потому, что программист, когда 190 00:07:52,710 --> 00:07:55,500 настройке свою базу данных, решил, что это поле 191 00:07:55,500 --> 00:07:57,150 не быть длиннее этой длины. 192 00:07:57,150 --> 00:08:00,580 >> Ладно, так что, если мы исходим назвать? 193 00:08:00,580 --> 00:08:05,240 Как долго должен ли Имя типичная человеческая будем? 194 00:08:05,240 --> 00:08:07,492 Как много символов, 16? 195 00:08:07,492 --> 00:08:09,450 Я предполагаю, что мы могли бы найти кого-то в этой комнате 196 00:08:09,450 --> 00:08:13,210 где его или ее первого плюс последний Имя длиннее, чем 16 символов. 197 00:08:13,210 --> 00:08:14,850 Так, что лучше, чем 17? 198 00:08:14,850 --> 00:08:17,040 18? 199 00:08:17,040 --> 00:08:18,830 25? 200 00:08:18,830 --> 00:08:20,350 Больше? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> АУДИТОРИЯ: [неразборчиво] 203 00:08:21,855 --> 00:08:23,700 Дэвид Малан: 5000, боже мой. 204 00:08:23,700 --> 00:08:26,309 Так, что, вероятно, приличный Верхняя граница, скажем. 205 00:08:26,309 --> 00:08:28,350 И вот мы вроде есть чтобы сделать звонок суждения. 206 00:08:28,350 --> 00:08:30,400 Мол, нет правильного ответа здесь. 207 00:08:30,400 --> 00:08:32,740 Бесконечное не вполне возможно, потому что мы в конечном итоге 208 00:08:32,740 --> 00:08:34,781 собирается have-- мы собирается бежать из памяти. 209 00:08:34,781 --> 00:08:36,909 Таким образом, мы должны сделать решение вызова в некоторой точке. 210 00:08:36,909 --> 00:08:41,010 >> Очень часто будет, например, чтобы use-- и позвольте мне задать CHAR здесь 211 00:08:41,010 --> 00:08:46,050 а before-- 255 был буквально Верхний предел этого программного обеспечения баз данных 212 00:08:46,050 --> 00:08:46,700 много лет назад. 213 00:08:46,700 --> 00:08:48,575 И так, много людей просто сказать, хорошо. 214 00:08:48,575 --> 00:08:49,420 255 это предел. 215 00:08:49,420 --> 00:08:50,620 Давайте просто использовать максимум. 216 00:08:50,620 --> 00:08:51,870 И это довольно смешно. 217 00:08:51,870 --> 00:08:55,060 Мол, если вы печатаете кто-то назвать на 200 плюс персонажей, 218 00:08:55,060 --> 00:08:56,140 что немного смешно. 219 00:08:56,140 --> 00:08:59,624 >> Но, помните, что это не ASCII- единственная система для персонажей. 220 00:08:59,624 --> 00:09:01,540 И так, особенно в много азиатских языков 221 00:09:01,540 --> 00:09:04,248 где есть символы, мы не можем выразить на клавишных, как мой США 222 00:09:04,248 --> 00:09:08,209 клавиатура, некоторые символы на самом деле взять 16 бит вместо восьми битов. 223 00:09:08,209 --> 00:09:10,250 И так, это на самом деле это не все, что неразумно 224 00:09:10,250 --> 00:09:12,250 что нам нужно больше пространством, если мы хотим, чтобы соответствовать 225 00:09:12,250 --> 00:09:16,252 крупные символов, чем в самом США ориентированных те, кого мы имели тенденцию обсуждать. 226 00:09:16,252 --> 00:09:17,460 Так, нам нужны верхнюю грань. 227 00:09:17,460 --> 00:09:21,470 Я не знаю, что лучше один, но 255, как правило, общий. 228 00:09:21,470 --> 00:09:22,700 25 чувствует слабость. 229 00:09:22,700 --> 00:09:23,857 16, 32 чувствую себя подавленным. 230 00:09:23,857 --> 00:09:25,690 Я бы ошибиться в сторону о чем-то выше. 231 00:09:25,690 --> 00:09:27,330 Но есть компромисс, как всегда. 232 00:09:27,330 --> 00:09:31,902 Что такое, пожалуй, очевидно, Компромисс резервирования 255 символов 233 00:09:31,902 --> 00:09:33,360 для имени каждого в моей базе данных? 234 00:09:33,360 --> 00:09:34,230 >> АУДИТОРИЯ: [неразборчиво] 235 00:09:34,230 --> 00:09:34,510 >> Дэвид Малан: Что это? 236 00:09:34,510 --> 00:09:35,430 >> АУДИТОРИЯ: [неразборчиво] 237 00:09:35,430 --> 00:09:37,138 >> Дэвид Малан: Это много памяти, верно? 238 00:09:37,138 --> 00:09:42,280 М-А-Л-А-Н. Я просто впустую 250 символы просто хранить свое имя 239 00:09:42,280 --> 00:09:46,000 в обороне, на всякий случай, кто-то в классе есть действительно длинное имя. 240 00:09:46,000 --> 00:09:47,940 Это кажется неправомерного компромисса. 241 00:09:47,940 --> 00:09:52,040 >> Таким образом, получается, что SQL, это язык баз данных, 242 00:09:52,040 --> 00:09:55,480 на самом деле что-то поддерживает называется VARCHAR или CHAR переменной. 243 00:09:55,480 --> 00:09:59,390 И это отчасти хорошо, что это в позволяет указать не фиксированная 244 00:09:59,390 --> 00:10:01,900 ширина, а, скорее, с переменной шириной. 245 00:10:01,900 --> 00:10:05,060 И более конкретно Максимальная ширина области. 246 00:10:05,060 --> 00:10:08,901 Таким образом, это означает, что имя может быть не более 250 символов, 247 00:10:08,901 --> 00:10:10,150 но это, безусловно, может быть меньше. 248 00:10:10,150 --> 00:10:11,733 И база данных будет умным. 249 00:10:11,733 --> 00:10:14,860 Если вы положить в М-А-Л-А-N, это только собирается использовать пять, 250 00:10:14,860 --> 00:10:18,120 может, шесть байт для как заднюю нулевой символ, 251 00:10:18,120 --> 00:10:23,330 и не тратить дополнительные 249 или 250 байт излишне. 252 00:10:23,330 --> 00:10:27,380 >> Таким образом, это кажется, что я должен начали с этой историей. 253 00:10:27,380 --> 00:10:29,140 Но всегда есть компромисс. 254 00:10:29,140 --> 00:10:33,024 Так, с одной стороны, Имя пользователя: Я указано быть закодирован на 16, 255 00:10:33,024 --> 00:10:34,940 и, возможно, не было право вызова, может быть, это 256 00:10:34,940 --> 00:10:40,040 есть, но почему бы не использовать VARCHARS за все? 257 00:10:40,040 --> 00:10:42,020 >> Она существует по причине. 258 00:10:42,020 --> 00:10:46,200 Почему бы не использовать VARCHARS для каждого поля длина которого вы не знаете заранее, 259 00:10:46,200 --> 00:10:48,180 если это, кажется, это великая вещь, не так ли? 260 00:10:48,180 --> 00:10:50,482 Используйте только столько места, сколько Вы должны до этого предела? 261 00:10:50,482 --> 00:10:51,271 >> АУДИТОРИЯ: Медленнее. 262 00:10:51,271 --> 00:10:52,146 Дэвид Малан: Спеллер? 263 00:10:52,146 --> 00:10:53,120 АУДИТОРИЯ: Делает это медленнее? 264 00:10:53,120 --> 00:10:53,970 Дэвид Малан: О, это медленнее. 265 00:10:53,970 --> 00:10:55,720 Хорошо, что это почти всегда ответ, честно говоря. 266 00:10:55,720 --> 00:10:56,520 Мол, то, что компромисс? 267 00:10:56,520 --> 00:10:58,570 Она либо стоит больше места или стоит больше времени. 268 00:10:58,570 --> 00:11:00,111 Таким образом, в этом случае, это может быть медленнее. 269 00:11:00,111 --> 00:11:00,920 Зачем? 270 00:11:00,920 --> 00:11:05,830 >> АУДИТОРИЯ: [неразборчиво] определения [неразборчиво]. 271 00:11:05,830 --> 00:11:06,640 >> Дэвид Малан: Хорошо. 272 00:11:06,640 --> 00:11:09,670 Таким образом, вы, возможно, помните из даже PSED5, играя с вашим подходом 273 00:11:09,670 --> 00:11:12,750 в словарь, если у вас есть, чтобы выделить память динамически или сохранить 274 00:11:12,750 --> 00:11:14,630 растет буфер, который может на самом деле быть медленным. 275 00:11:14,630 --> 00:11:16,963 Если у вас есть, чтобы позвонить таНос под капотом и, возможно, 276 00:11:16,963 --> 00:11:19,610 это то, что MySQL делает, так конечно, что может быть так. 277 00:11:19,610 --> 00:11:22,430 И если вы думаете, путь Вернуться к PSet-- или даже 278 00:11:22,430 --> 00:11:26,340 недели две, когда мы делали такие вещи, как бинарный поиск, или даже линейный поиск, 279 00:11:26,340 --> 00:11:30,690 Одна из приятных вещей о каждом слове в базе данных или каждое слово в колонке 280 00:11:30,690 --> 00:11:33,690 будучи точно такой же длины, даже если целая куча этих символов 281 00:11:33,690 --> 00:11:37,390 пустые, что вы можете использовать произвольного доступа на ваших данных, не так ли? 282 00:11:37,390 --> 00:11:40,310 >> Если вы знаете, что каждый слово 16 символов прочь, 283 00:11:40,310 --> 00:11:46,460 Вы можете использовать арифметические операции, так говорить, и идут к нам 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 и вы можете просто прыгать мгновенно с помощью арифметики 285 00:11:49,589 --> 00:11:51,130 в любое из слов в вашей базе данных. 286 00:11:51,130 --> 00:11:54,280 В то время как, если это VARCHAR, что вы вместо того, чтобы делать? 287 00:11:54,280 --> 00:11:55,960 >> [Телефон звонит] 288 00:11:55,960 --> 00:11:58,680 >> Если это VARCHAR, вы не может использовать произвольный доступ. 289 00:11:58,680 --> 00:12:01,341 То, что вы должны искать или делать? 290 00:12:01,341 --> 00:12:01,840 Да? 291 00:12:01,840 --> 00:12:03,240 >> АУДИТОРИЯ: [неразборчиво] 292 00:12:03,240 --> 00:12:04,310 >> Дэвид Малан: Посмотрите через whole-- следа 293 00:12:04,310 --> 00:12:06,518 весь список Смотря для чего, скорее всего,? 294 00:12:06,518 --> 00:12:08,356 Какие особое значение? 295 00:12:08,356 --> 00:12:09,230 АУДИТОРИЯ: [неразборчиво] 296 00:12:09,230 --> 00:12:11,105 Дэвид Малан: Цель для нулевых терминаторов 297 00:12:11,105 --> 00:12:13,637 что демаркацию разделение слов. 298 00:12:13,637 --> 00:12:15,720 Итак, еще раз, это компромисс, и нет правильного ответа. 299 00:12:15,720 --> 00:12:18,380 Но это, где, в частности когда ваши пользователи получают быть много 300 00:12:18,380 --> 00:12:21,700 и ваш груз на своих серверах, то Количество людей, использующих она получает высокий, 301 00:12:21,700 --> 00:12:23,650 это на самом деле нетривиальных решений. 302 00:12:23,650 --> 00:12:26,640 Таким образом, можно оставить их как это, но давайте прокрутите вниз к правому 303 00:12:26,640 --> 00:12:27,332 Вот. 304 00:12:27,332 --> 00:12:30,290 Теперь, есть несколько столбцов где мы должны сделать звонок суждения. 305 00:12:30,290 --> 00:12:35,170 Имеет ли смысл, чтобы позволить пользователя имя, имя пользователя пользователя или пользователя 306 00:12:35,170 --> 00:12:36,370 Имя, чтобы быть пустым? 307 00:12:36,370 --> 00:12:37,610 То есть, просто пустым. 308 00:12:37,610 --> 00:12:40,360 По ощущениям немного бессмысленно, поэтому я не собираюсь проверить эти ящики. 309 00:12:40,360 --> 00:12:42,670 Но, оказывается, в базы данных, вы можете сказать: 310 00:12:42,670 --> 00:12:44,620 кто-то может необязательно иметь это значение. 311 00:12:44,620 --> 00:12:47,180 Эта колонка не на самом деле там. 312 00:12:47,180 --> 00:12:48,570 >> Теперь, есть в этом выпадающем меню. 313 00:12:48,570 --> 00:12:50,810 И заметьте, я до сих пор там в первом ряду, 314 00:12:50,810 --> 00:12:52,520 так что я говорю о имени пользователя в настоящее время. 315 00:12:52,520 --> 00:12:56,290 И получается, что в базу данных, в отличие от простого лишь таблицу, 316 00:12:56,290 --> 00:12:58,520 имеет мощные функции, называемые индексы. 317 00:12:58,520 --> 00:13:02,600 И индекс является способ сказать базы данных заранее, что I человеческого 318 00:13:02,600 --> 00:13:03,900 Я умнее тебя. 319 00:13:03,900 --> 00:13:10,430 >> Я знаю, что виды запросов, выберите или вставить или удалить или обновить 320 00:13:10,430 --> 00:13:13,182 что мой код будет в конечном до делать в этой базе данных. 321 00:13:13,182 --> 00:13:14,390 Я хочу, чтобы прочитать много данных. 322 00:13:14,390 --> 00:13:15,681 Я хочу, чтобы вставить много данных. 323 00:13:15,681 --> 00:13:17,530 Я хочу, чтобы постоянно удалить много данных. 324 00:13:17,530 --> 00:13:21,520 Если я знаю, что я собираюсь быть доступ к такой области, как Псевдоним много, 325 00:13:21,520 --> 00:13:24,770 Я могу рассказать превентивно базы данных, я знаю больше, чем вы, 326 00:13:24,770 --> 00:13:29,220 и я хочу, чтобы указа, Вы должны Индекс это поле. 327 00:13:29,220 --> 00:13:33,200 Где индексации поле или столбец означает, что база данных заранее 328 00:13:33,200 --> 00:13:37,040 должны заимствовать некоторые идеи из, как, неделю четыре и пять, и шесть из CS50 329 00:13:37,040 --> 00:13:39,240 а на самом деле построить что-то вроде бинарного поиска 330 00:13:39,240 --> 00:13:41,560 дерево или что-то как правило, называют Б дерево 331 00:13:41,560 --> 00:13:43,410 что вы узнаете в классе, как CS124 332 00:13:43,410 --> 00:13:46,710 в Гарварде, класс алгоритмов, или любое количество других местах. 333 00:13:46,710 --> 00:13:49,570 >> База данных и смарт- люди, которые реализовали его 334 00:13:49,570 --> 00:13:53,880 будет выяснить, как хранить что таблица информации 335 00:13:53,880 --> 00:13:57,061 в памяти, так что поиск и другие операции очень быстро. 336 00:13:57,061 --> 00:13:58,060 Вы не должны делать это. 337 00:13:58,060 --> 00:14:00,640 Вы не должны осуществлять линейный поиск или бинарный поиск 338 00:14:00,640 --> 00:14:03,300 или объединить то или выбор сортировать, ничего из этого. 339 00:14:03,300 --> 00:14:06,590 В базе данных делает это для вас, если вы говорите это превентивно, чтобы индекс в этом поле. 340 00:14:06,590 --> 00:14:09,100 >> И вы можете видеть также, есть некоторые другие характеристики 341 00:14:09,100 --> 00:14:11,010 мы можем сказать, база данных для выполнения. 342 00:14:11,010 --> 00:14:16,431 Что это может означать, если я выберу Уникальный Из этого меню, просто интуитивно? 343 00:14:16,431 --> 00:14:16,930 Да? 344 00:14:16,930 --> 00:14:17,889 >> АУДИТОРИЯ: [неразборчиво] 345 00:14:17,889 --> 00:14:19,930 Дэвид Малан: Да, Имя пользователя должно быть уникальным. 346 00:14:19,930 --> 00:14:23,330 Является ли это хорошо или плохо для база данных, для веб-сайта с пользователями? 347 00:14:23,330 --> 00:14:24,965 Если имена быть уникальным? 348 00:14:24,965 --> 00:14:25,880 Да, наверное. 349 00:14:25,880 --> 00:14:27,800 Если это то, что поле мы используем, чтобы войти, 350 00:14:27,800 --> 00:14:31,867 Вы действительно не хотите, чтобы люди, имеющие то же самое чувство или же имя пользователя. 351 00:14:31,867 --> 00:14:33,700 Таким образом, мы можем иметь В базе соблюдения, что так 352 00:14:33,700 --> 00:14:37,880 что сейчас в моем коде PHP или любом языке, Я не должен, например, проверить 353 00:14:37,880 --> 00:14:41,490 обязательно делает это имя пользователя существуют, прежде чем я пусть кто-то зарегистрироваться? 354 00:14:41,490 --> 00:14:46,690 База данных не позволит два человека, названные Дэвид или зарегистрируйтесь Malans в этом случае. 355 00:14:46,690 --> 00:14:50,030 >> И, как в сторону, даже если это Меню только позволяет выбрать один, 356 00:14:50,030 --> 00:14:54,550 уникальный индекс является одним это индексируются для супер быстрого исполнения, 357 00:14:54,550 --> 00:14:56,100 но это также усиливает уникальность. 358 00:14:56,100 --> 00:14:58,850 И мы вернемся к тому, что два других имею в виду минуту. 359 00:14:58,850 --> 00:15:00,930 Между тем, если я иду в мой второй ряд, который 360 00:15:00,930 --> 00:15:06,230 это имя пользователя, я должен указать, что имя должно быть уникальным? 361 00:15:06,230 --> 00:15:09,550 Нет, потому что вы, безусловно, have-- нет двух Дэвид 362 00:15:09,550 --> 00:15:11,050 Malans в этой комнате, скорее всего. 363 00:15:11,050 --> 00:15:14,290 Но если мы выбираем другое имя, мы могли бы безусловно столкновений. 364 00:15:14,290 --> 00:15:16,130 >> Вспомните хеши и тому подобное. 365 00:15:16,130 --> 00:15:18,604 Таким образом, мы, конечно, не хочу чтобы сделать поле имя уникальным. 366 00:15:18,604 --> 00:15:21,270 Так, мы только собираемся, чтобы оставить что в тире, тире, тире, ничего. 367 00:15:21,270 --> 00:15:22,660 И я ухожу все остальное в одиночку. 368 00:15:22,660 --> 00:15:25,035 В самом деле, большинство из этих полей мы не должны заботиться о. 369 00:15:25,035 --> 00:15:27,830 И когда я готов, чтобы сохранить это, если интернет сотрудничает, 370 00:15:27,830 --> 00:15:35,032 Я нажмите кнопку Сохранить, и очень, очень, очень медленно вовсе база данных спастись. 371 00:15:35,032 --> 00:15:37,240 И теперь я снова на это интерфейс, который по общему признанию, 372 00:15:37,240 --> 00:15:38,680 является подавляющим на первый взгляд. 373 00:15:38,680 --> 00:15:42,450 Но все, что я собираюсь сделать, это нажмите на слова пользователей на верхнем левом углу. 374 00:15:42,450 --> 00:15:47,630 Я собираюсь пойти сюда, нажмите Люди, и по умолчанию, это 375 00:15:47,630 --> 00:15:50,180 выполнил некоторые SQL, но подробнее об этом в данный момент. 376 00:15:50,180 --> 00:15:52,654 Вот только описание того, что я и сделал. 377 00:15:52,654 --> 00:15:55,320 И не волнуйтесь, что вы видите говоря латыни и шведском здесь. 378 00:15:55,320 --> 00:16:00,490 Таковы лишь по умолчанию Настройки, потому что MySQL изначально, 379 00:16:00,490 --> 00:16:04,000 или PHP MyAdmin, один из двух произошло быть написаны в некоторых шведских людей. 380 00:16:04,000 --> 00:16:06,100 Но это не имеет значения, в нашем случае здесь. 381 00:16:06,100 --> 00:16:08,280 >> Ладно, так почему все это интересно? 382 00:16:08,280 --> 00:16:13,050 Оказывается, я могу вставить данные в базе данных путем написания кода. 383 00:16:13,050 --> 00:16:15,940 И я идти вперед и в моем файле здесь, я 384 00:16:15,940 --> 00:16:19,000 идти вперед и делать вид, как это подключены к этой базе данных, которая 385 00:16:19,000 --> 00:16:23,040 это не в данный момент, но это будет быть, когда мы доберемся до проблемы установите семь. 386 00:16:23,040 --> 00:16:25,640 И я собираюсь идти вперед и выполнить функцию под названием запрос, 387 00:16:25,640 --> 00:16:28,730 которые мы дадим вам в задаче установить семь в код распределения, что 388 00:16:28,730 --> 00:16:31,490 занимает по меньшей мере один аргумент, который является только строкой. 389 00:16:31,490 --> 00:16:33,460 Строка кода SQL. 390 00:16:33,460 --> 00:16:36,700 Таким образом, вы собираетесь, чтобы узнать, как написать структурированный язык запросов. 391 00:16:36,700 --> 00:16:41,270 >> Если я хочу, чтобы вставить новую строку в моей базы данных, потому что кто-то подал 392 00:16:41,270 --> 00:16:47,600 форма для моего кода, я бы в буквальном смысле написать INSERT INTO пользователей следующее 393 00:16:47,600 --> 00:16:52,800 поля: имя пользователя, запятая, имя, ценности, 394 00:16:52,800 --> 00:16:57,480 и теперь мне нужно вставить что-то вроде Маланом, и цитатой, 395 00:16:57,480 --> 00:17:01,490 конец цитаты "Дэвид Малан. И сейчас даже для тех, кто незнаком с SQL, 396 00:17:01,490 --> 00:17:07,830 Поэтому я использую одинарные кавычки внутри этого зеленые строки? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Что может быть причиной здесь? 399 00:17:13,040 --> 00:17:14,609 >> Обратите внимание, я со-смешение двух языков. 400 00:17:14,609 --> 00:17:18,099 Запрос является функцией PHP, но принимает аргумент. 401 00:17:18,099 --> 00:17:21,740 И этот аргумент должен быть сам по себе написана на другом языке, называемом 402 00:17:21,740 --> 00:17:23,500 SQL, Structured Query Language. 403 00:17:23,500 --> 00:17:27,940 Так, все, что я только выделенный здесь 404 00:17:27,940 --> 00:17:30,380 это язык, называемый SQL. 405 00:17:30,380 --> 00:17:36,290 Итак, что же с одинарные кавычки, как быстро проверить вменяемость? 406 00:17:36,290 --> 00:17:37,324 Преуспевать. 407 00:17:37,324 --> 00:17:37,990 Они строк. 408 00:17:37,990 --> 00:17:41,590 Так, цитата, конец цитаты Малан и цитата, конец цитаты Дэвид Малан являются строками. 409 00:17:41,590 --> 00:17:45,210 И только думать интуитивно сейчас, зная, что вы знаете о С и PHP, 410 00:17:45,210 --> 00:17:50,220 почему я не сделать это, которое я обычно б двойные кавычки для строк? 411 00:17:50,220 --> 00:17:52,310 Почему я не хочу, чтобы это сделать? 412 00:17:52,310 --> 00:17:52,810 Да? 413 00:17:52,810 --> 00:17:53,685 >> АУДИТОРИЯ: [неразборчиво] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 Дэвид Малан: Точно. 416 00:17:57,570 --> 00:17:59,653 Потому что я уже использую двойные кавычки на пути 417 00:17:59,653 --> 00:18:01,929 за пределами аргумента функции PHP, 418 00:18:01,929 --> 00:18:03,470 Я бы просто путают переводчика. 419 00:18:03,470 --> 00:18:04,860 Это не будет знать, не это пойти вместе? 420 00:18:04,860 --> 00:18:05,735 Есть они идут вместе? 421 00:18:05,735 --> 00:18:06,810 Есть они идут вместе? 422 00:18:06,810 --> 00:18:08,070 Таким образом, я чередовать вместо этого. 423 00:18:08,070 --> 00:18:11,784 >> Или я мог бы сделать что-то вроде этого, Обратная косая черта Обратная косая черта или цитата цитаты. 424 00:18:11,784 --> 00:18:14,200 Честно говоря, только начинает получить очень нечитаемым, и некрасиво. 425 00:18:14,200 --> 00:18:16,790 Но что бы достичь такой же результат, как хорошо. 426 00:18:16,790 --> 00:18:19,760 >> Так что, если бы я был, чтобы выполнить это запрос сейчас, давайте посмотрим, что происходит. 427 00:18:19,760 --> 00:18:22,740 Я собираюсь идти вперед, а сейчас и не выполнять код PHP, который 428 00:18:22,740 --> 00:18:24,610 где вы будете играть в задаче установить семь, 429 00:18:24,610 --> 00:18:27,200 Я собираюсь вместо идти в PHP MyAdmin. 430 00:18:27,200 --> 00:18:29,770 И я собираюсь вручную чтобы перейти к вкладке SQL, 431 00:18:29,770 --> 00:18:31,580 и позвольте мне увеличить на интерфейсе. 432 00:18:31,580 --> 00:18:34,007 И я собираюсь вставить в вещь, которую я только что ввели. 433 00:18:34,007 --> 00:18:36,090 И цвет имеет кодирование немного изменилась в настоящее время, 434 00:18:36,090 --> 00:18:38,750 только потому, что форматы программ вещи немного по-другому. 435 00:18:38,750 --> 00:18:41,960 Но обратите внимание, что все, что я сделал это я сказал, вставьте в пользователей. 436 00:18:41,960 --> 00:18:45,790 Я указал, то, через запятую разделенных скобки список два 437 00:18:45,790 --> 00:18:48,850 Поля, которые я хочу, чтобы вставить, и Затем я сказал буквально значения 438 00:18:48,850 --> 00:18:51,510 последовал еще один Paren, а затем эти два значения 439 00:18:51,510 --> 00:18:53,520 Я хочу, чтобы плагин, и Теперь для хорошей мерой, 440 00:18:53,520 --> 00:18:55,010 Я положу точку с запятой в конце. 441 00:18:55,010 --> 00:18:56,570 Таким образом, это не С. Это не PHP. 442 00:18:56,570 --> 00:18:59,970 Теперь это SQL, и я вставить его в этом веб-интерфейс, что это 443 00:18:59,970 --> 00:19:02,710 только собирается позволить мне, как только я нажимаю Go, 444 00:19:02,710 --> 00:19:08,060 выполнить этот запрос в базе данных работает внутри CS50 IDE. 445 00:19:08,060 --> 00:19:09,470 >> Так что это хорошо. 446 00:19:09,470 --> 00:19:12,520 Обратите внимание, что сказал один ряд вставлена, пошел очень быстро, 447 00:19:12,520 --> 00:19:15,190 0,0054 секунд, чтобы вставить эти данные. 448 00:19:15,190 --> 00:19:16,610 Так, что звучит довольно здоровым. 449 00:19:16,610 --> 00:19:19,350 Это переформатирован мой запрос для меня здесь, чтобы посмотреть его 450 00:19:19,350 --> 00:19:21,730 в то цвета кодируются версии. 451 00:19:21,730 --> 00:19:24,540 Но теперь, если я нажму Люди, заметить, что даже 452 00:19:24,540 --> 00:19:29,070 хотя есть много беспорядка на экран, мой стол теперь имеет два ряда. 453 00:19:29,070 --> 00:19:30,700 >> Итак, позвольте мне идти вперед, а делают другое. 454 00:19:30,700 --> 00:19:33,760 Вместо этого, позвольте мне перейдите на вкладку SQL снова. 455 00:19:33,760 --> 00:19:40,723 И на этот раз я буду вставлять нечто вроде Роб и его имя будет Роб Боуден. 456 00:19:40,723 --> 00:19:42,330 Боуден. 457 00:19:42,330 --> 00:19:44,040 Давайте нажмите кнопку Сохранить. 458 00:19:44,040 --> 00:19:46,140 Нам, скорее Go. 459 00:19:46,140 --> 00:19:48,890 >> Нажмите кнопку Обзор снова, и Теперь обратите внимание, я два ряда. 460 00:19:48,890 --> 00:19:52,390 Таким образом, это просто способ более сложный способ открытия таблиц Google 461 00:19:52,390 --> 00:19:54,010 и просто введя строку в столбце. 462 00:19:54,010 --> 00:19:57,070 Но то, что ключевым является то, теперь у нас есть синтаксис 463 00:19:57,070 --> 00:20:00,220 с которой писать код так, что В конечном счете, мы могли на самом деле 464 00:20:00,220 --> 00:20:01,790 сделать некоторые, и это. 465 00:20:01,790 --> 00:20:05,380 Напомним, что опоры PHP супер глобальные переменные. 466 00:20:05,380 --> 00:20:08,415 >> Что находится внутри доллара войдите подчеркивания GET в PHP? 467 00:20:08,415 --> 00:20:10,290 Мы рассмотрели в одном или два простых примера. 468 00:20:10,290 --> 00:20:15,640 И в PSet6, вспоминаю вас есть привет точка PHP, который использует эту переменную. 469 00:20:15,640 --> 00:20:17,870 То, что происходит там? 470 00:20:17,870 --> 00:20:21,015 Или что это? 471 00:20:21,015 --> 00:20:22,522 Чуть громче. 472 00:20:22,522 --> 00:20:23,790 >> АУДИТОРИЯ: [неразборчиво] 473 00:20:23,790 --> 00:20:25,030 >> Дэвид Малан: Это снег Семя массива, который 474 00:20:25,030 --> 00:20:27,714 это просто причудливый способ сказать Массив, который имеет пары ключ-значение. 475 00:20:27,714 --> 00:20:28,880 И ключи не числовой. 476 00:20:28,880 --> 00:20:30,420 Они слова или строки. 477 00:20:30,420 --> 00:20:32,750 И конкретно, какие те пары ключ-значение? 478 00:20:32,750 --> 00:20:35,110 Откуда они? 479 00:20:35,110 --> 00:20:35,620 Сожалею? 480 00:20:35,620 --> 00:20:36,994 >> АУДИТОРИЯ: [неразборчиво] 481 00:20:36,994 --> 00:20:37,660 Дэвид Малан: Нет? 482 00:20:37,660 --> 00:20:40,700 Где те ключ Пары значений пришел? 483 00:20:40,700 --> 00:20:42,490 Повтори? 484 00:20:42,490 --> 00:20:44,610 Еще раз? 485 00:20:44,610 --> 00:20:46,472 Я только один слуховой то? 486 00:20:46,472 --> 00:20:47,810 >> [Смех] 487 00:20:47,810 --> 00:20:49,042 >> Это верно, да? 488 00:20:49,042 --> 00:20:50,435 >> АУДИТОРИЯ: [неразборчиво] 489 00:20:50,435 --> 00:20:52,560 Дэвид Малан: Да, они приходят из строки запроса. 490 00:20:52,560 --> 00:20:55,380 Так что, если вы в назад время когда мы играли с Google 491 00:20:55,380 --> 00:20:59,600 и мы пошли в Google.com слэш Поиск вопросительный знак Q равен кошек, 492 00:20:59,600 --> 00:21:03,550 если бы я ударил Введите и если Google были реализованы в PHP, 493 00:21:03,550 --> 00:21:07,017 PHP код, который написал Google будут иметь доступ к знак доллара 494 00:21:07,017 --> 00:21:11,600 подчеркивают GET, внутри которого является ключевым называется Q и значение 495 00:21:11,600 --> 00:21:17,680 называемые кошки, которые он может затем использовать используется, чтобы сделать фактический поиск с. 496 00:21:17,680 --> 00:21:20,860 >> Так, в самом деле, что я собираюсь сейчас сделать, это вернуться к моей PHP кода 497 00:21:20,860 --> 00:21:23,140 что вы будете снова видеть больше в PSet7. 498 00:21:23,140 --> 00:21:25,440 И вместо того, подключив в трудных закодированных значений, которые 499 00:21:25,440 --> 00:21:27,630 не показаться, очень динамичный сайт, 500 00:21:27,630 --> 00:21:30,680 Я собираюсь дать вам тизер то, что ваш фактический код будет делать. 501 00:21:30,680 --> 00:21:32,854 Вы бы поставить в два вопросительные знаки, как это. 502 00:21:32,854 --> 00:21:34,270 Я не знаю, что имя пользователя является. 503 00:21:34,270 --> 00:21:37,390 Я не знаю, что с Имя будет, 504 00:21:37,390 --> 00:21:39,470 но я знаю, что могу получить их динамически. 505 00:21:39,470 --> 00:21:43,420 >> Таким образом, если код мы пишем сейчас код работает на серверах Google, 506 00:21:43,420 --> 00:21:46,940 или, если это привет точка PHP, который поставляется с PSet6, 507 00:21:46,940 --> 00:21:48,650 Я собираюсь перейти в функция запроса 508 00:21:48,650 --> 00:21:51,450 так же, как Printf, два другие аргументы. 509 00:21:51,450 --> 00:21:57,120 GET, цитата, конец цитаты имя пользователя, и GET, цитата, конец цитаты имя. 510 00:21:57,120 --> 00:22:00,720 А теперь обратите внимание, что в Общая структура здесь. 511 00:22:00,720 --> 00:22:03,320 У меня слева сторона вызова, 512 00:22:03,320 --> 00:22:05,480 эта функция называется запрос в PHP. 513 00:22:05,480 --> 00:22:08,160 Я до сих пор в качестве первого Аргумент, просто строка текста. 514 00:22:08,160 --> 00:22:11,000 >> Но что строка текста написано на языке, называемом SQL. 515 00:22:11,000 --> 00:22:12,616 И, честно говоря, это не является большой язык. 516 00:22:12,616 --> 00:22:14,990 Мы только будем говорить о формально сегодня, на самом деле. 517 00:22:14,990 --> 00:22:17,031 И тогда в задаче установить семь, есть относительно 518 00:22:17,031 --> 00:22:18,800 несколько особенностей, которые мы собирается использовать. 519 00:22:18,800 --> 00:22:22,530 Знаки вопроса, хотя, в виду подключить значение здесь и вилка в другом значении 520 00:22:22,530 --> 00:22:23,130 Вот. 521 00:22:23,130 --> 00:22:26,010 И заметьте, я опустил, что по всему quote-- проклятый 522 00:22:26,010 --> 00:22:30,470 it-- вокруг цитаты отмечает на этот раз. 523 00:22:30,470 --> 00:22:34,930 Я опустил цитату знаки вокруг вопросительного знака, 524 00:22:34,930 --> 00:22:36,410 извините, на этот раз вокруг. 525 00:22:36,410 --> 00:22:38,870 >> Так, то, что приятно об этом Функция вопрос знак, который 526 00:22:38,870 --> 00:22:42,830 PHP, как правило, поддерживают, Руби и Python и другие языки, 527 00:22:42,830 --> 00:22:45,730 это просто означает, что плагин в некоторых ценим здесь, и вы знаете, что? 528 00:22:45,730 --> 00:22:48,300 Вы выяснить, следует ли использовать одиночные или двойные кавычки. 529 00:22:48,300 --> 00:22:50,966 Не беспокоит меня с теми, интеллектуально неинтересные детали. 530 00:22:50,966 --> 00:22:53,780 Но, убедитесь, что он правильно так что мой код, в конечном счете 531 00:22:53,780 --> 00:22:57,010 оперативной и безопасным, что будет иметь смысл, прежде чем длинный. 532 00:22:57,010 --> 00:23:00,460 >> Теперь, сколько аргументов всего, просто ясно, является функция, принимающая запрос? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Кто-нибудь хочет голосовать за более чем два? 535 00:23:07,581 --> 00:23:08,080 Три? 536 00:23:08,080 --> 00:23:10,001 Конечно, почему? 537 00:23:10,001 --> 00:23:10,920 Почему три? 538 00:23:10,920 --> 00:23:12,305 >> АУДИТОРИЯ: [неразборчиво] 539 00:23:12,305 --> 00:23:13,180 Дэвид Малан: Точно. 540 00:23:13,180 --> 00:23:14,610 Первая часть это строка. 541 00:23:14,610 --> 00:23:18,640 Вторым аргументом является знак доллара подчеркивают GET кронштейн пользователя. 542 00:23:18,640 --> 00:23:21,950 И третий аргумент является То же самое, но только название. 543 00:23:21,950 --> 00:23:24,590 Итак, другими словами, в настоящее время если бы я имел веб-форму 544 00:23:24,590 --> 00:23:27,149 что пришлось текстовых полей, одним имя пользователя пользователя, 545 00:23:27,149 --> 00:23:29,690 одним для его или ее имя, просто как вы увидите в сайт 546 00:23:29,690 --> 00:23:32,120 при регистрации некоторые веб-сайт, это может 547 00:23:32,120 --> 00:23:35,450 быть код, указанный на задней части, что на самом деле вставки в настоящее время 548 00:23:35,450 --> 00:23:37,220 в базу данных. 549 00:23:37,220 --> 00:23:40,870 >> Теперь, напротив, давайте быстро вперед. 550 00:23:40,870 --> 00:23:43,840 Предположим, что пользователь теперь войдите в систему и Вы хотите 551 00:23:43,840 --> 00:23:48,860 написать PHP код, который проверяет, является ли человек, который только что вошли в 552 00:23:48,860 --> 00:23:52,250 на самом деле пользователь, вы можете использовать довольно простой синтаксис. 553 00:23:52,250 --> 00:23:55,832 Вы можете сказать, SELECT, скажем звезда, звезда, где означает, что все. 554 00:23:55,832 --> 00:23:57,540 Я не знаю, что я хочу, так что просто дать мне 555 00:23:57,540 --> 00:24:01,585 все столбцы из таблицы называется пользователей, где, и это приятно. 556 00:24:01,585 --> 00:24:03,710 Выберите то, что поддерживает называется предикат, который является 557 00:24:03,710 --> 00:24:06,630 как способ отборочного что вы хотите. 558 00:24:06,630 --> 00:24:10,590 Где имя пользователя равен цитата, конец цитаты Малан. 559 00:24:10,590 --> 00:24:13,680 Так и здесь, я встроенные внутри аргумента 560 00:24:13,680 --> 00:24:16,110 в функции PHP, строки кода SQL. 561 00:24:16,110 --> 00:24:18,680 И, что код SQL это Время буквально собирается 562 00:24:18,680 --> 00:24:21,790 искать цитаты, конец цитаты Малан. 563 00:24:21,790 --> 00:24:24,420 >> Теперь это не все, что полезно, так что я собираюсь, чтобы пропустить 564 00:24:24,420 --> 00:24:28,650 и я собираюсь убрать этот совет от Brady, и идти 565 00:24:28,650 --> 00:24:30,990 и плагин вместо знак вопроса здесь. 566 00:24:30,990 --> 00:24:33,290 Так, только чтобы быть ясно, какие Должен ли мой второй аргумент 567 00:24:33,290 --> 00:24:37,480 если кто-то будет только вошли в и I хотите проверить, если он или она на самом деле 568 00:24:37,480 --> 00:24:39,265 пользователь? 569 00:24:39,265 --> 00:24:40,140 АУДИТОРИЯ: [неразборчиво] 570 00:24:40,140 --> 00:24:40,890 Дэвид Малан: Да. 571 00:24:40,890 --> 00:24:44,120 Я слышу знак подчеркивания доллар Получить специальное предложение, конец цитаты пользователя. 572 00:24:44,120 --> 00:24:50,040 И что должен вернуться ко мне любой из строк в моей базе данных 573 00:24:50,040 --> 00:24:51,986 которые имеют имя пользователя Маланом. 574 00:24:51,986 --> 00:24:54,860 Теперь, надеюсь, я собираюсь вернуться нулю, если Малан никогда не был здесь, 575 00:24:54,860 --> 00:24:56,290 или один, если у него есть. 576 00:24:56,290 --> 00:24:59,026 Я не должен вернуться два или три или четыре. 577 00:24:59,026 --> 00:24:59,526 Зачем? 578 00:24:59,526 --> 00:25:00,220 >> АУДИТОРИЯ: [неразборчиво] 579 00:25:00,220 --> 00:25:01,120 >> Дэвид Малан: Я сказал, уникальным, не так ли? 580 00:25:01,120 --> 00:25:01,750 Причина проста. 581 00:25:01,750 --> 00:25:04,030 Потому что я сказал, что это должен быть уникальным, просто логически, 582 00:25:04,030 --> 00:25:07,940 вы можете иметь только ноль или один Malans в данном таблицы базы данных. 583 00:25:07,940 --> 00:25:10,965 Теперь, как в сторону, только так вы видели это, хотя я продолжать использовать GET 584 00:25:10,965 --> 00:25:14,350 и хотя PSet6 только GET, можно, конечно, есть POST. 585 00:25:14,350 --> 00:25:17,212 И помните, что сообщение является еще одним техника для представления информации 586 00:25:17,212 --> 00:25:19,170 из формы, но не появляется в URL. 587 00:25:19,170 --> 00:25:22,690 Это немного более безопасным, конечно, для такие вещи, как имена пользователей и пароли, 588 00:25:22,690 --> 00:25:25,210 которые PSet7 будет, на самом деле, связаны. 589 00:25:25,210 --> 00:25:28,130 >> Итак, давайте делать это в PHP MyAdmin и посмотреть, что происходит. 590 00:25:28,130 --> 00:25:30,020 Я собираюсь пойти на вкладку MySQL. 591 00:25:30,020 --> 00:25:34,450 И заметьте, что значение по умолчанию для PHP MyAdmin, просто чтобы попробовать, чтобы быть полезным, 592 00:25:34,450 --> 00:25:37,050 это выбрать звезду из пользователей, где один. 593 00:25:37,050 --> 00:25:39,430 Ну, один всегда верно, так это имеет глупо эффективным 594 00:25:39,430 --> 00:25:40,400 просто выберите все. 595 00:25:40,400 --> 00:25:42,691 Но я собираюсь быть немного более педантичным и вручную 596 00:25:42,691 --> 00:25:45,920 типа из SELECT, звезда из пользователей. 597 00:25:45,920 --> 00:25:48,294 >> Теперь технически, вы можете экранирует имя таблиц. 598 00:25:48,294 --> 00:25:50,460 Это редкое, что у вас есть, но обратите внимание, это не 599 00:25:50,460 --> 00:25:52,240 Ваши нормальные котировки на клавиатуре США. 600 00:25:52,240 --> 00:25:54,760 Это так называемый Обратный апостроф, который как правило, на верхней левой руке 601 00:25:54,760 --> 00:25:56,000 углу клавиатуры. 602 00:25:56,000 --> 00:25:58,500 Но это редко, что вы будете на самом деле нужно, чтобы возиться с, что, 603 00:25:58,500 --> 00:25:59,950 так что я просто опустить их в любом случае. 604 00:25:59,950 --> 00:26:02,280 Так что теперь, позвольте мне идти вперед и ударил идти. 605 00:26:02,280 --> 00:26:06,616 И сколько строк я должен получить назад, когда я выбрать звезду из пользователей? 606 00:26:06,616 --> 00:26:08,407 >> АУДИТОРИЯ: [неразборчиво] 607 00:26:08,407 --> 00:26:09,990 Дэвид Малан: Количество строк, конечно. 608 00:26:09,990 --> 00:26:12,390 Но сколько в этом бетон история прямо сейчас? 609 00:26:12,390 --> 00:26:14,640 Во-вторых, потому что там было мне и было Роб. 610 00:26:14,640 --> 00:26:19,370 Так что, если я нажмите кнопку Перейти, я вижу, что визуально Я получил обратно, на самом деле, два ряда. 611 00:26:19,370 --> 00:26:22,060 Там очень много беспорядка на экраном, но я вижу только две строки. 612 00:26:22,060 --> 00:26:28,580 Напротив, если я сделаю это снова и сделать ВЫБОР звезда из пользователей, где имя пользователя 613 00:26:28,580 --> 00:26:31,840 равна цитата, конец цитаты Малан, теперь, если я нажмите кнопку Перейти, 614 00:26:31,840 --> 00:26:33,970 Я только собираюсь вернуться на одну строку. 615 00:26:33,970 --> 00:26:36,499 И, наконец, если я что-то вроде этого, предположим, 616 00:26:36,499 --> 00:26:38,290 что я не забочусь о получать все, 617 00:26:38,290 --> 00:26:41,020 которая является своеобразной бессмысленно сейчас, потому что есть только две колонки. 618 00:26:41,020 --> 00:26:43,103 Это не то, что я выборе огромное количество данных. 619 00:26:43,103 --> 00:26:46,720 Предположим, я иду вперед и Действия Выбор имени ОТ 620 00:26:46,720 --> 00:26:51,990 пользователи, где имя пользователя равняется Малан, то, что приятно об SQL, честно говоря, 621 00:26:51,990 --> 00:26:54,290 является то, что это действительно просто делает то, что вы скажете ей сделать. 622 00:26:54,290 --> 00:26:57,550 Это довольно лаконичным, но вы буквально просто скажите ему, что вы хотите сделать. 623 00:26:57,550 --> 00:27:01,130 Выберите имя из пользователей, где имя пользователя, равно Малан. 624 00:27:01,130 --> 00:27:03,440 И это действительно так явно. 625 00:27:03,440 --> 00:27:08,410 Так, в настоящее время, если я ударил пойди, сколько Строки я собираюсь вернуться? 626 00:27:08,410 --> 00:27:10,770 Один из них, потому что это просто Малан, надеюсь. 627 00:27:10,770 --> 00:27:13,100 Или ноль, если он не есть, но максимально. 628 00:27:13,100 --> 00:27:17,610 >> И сколько колонок я вернусь? 629 00:27:17,610 --> 00:27:18,450 Сколько столбцов? 630 00:27:18,450 --> 00:27:20,658 На этот раз, я только собираюсь чтобы получить один, потому что я не сделал 631 00:27:20,658 --> 00:27:22,380 выберите звезду, которая все. 632 00:27:22,380 --> 00:27:27,900 Теперь я просто выбрав имя, поэтому я просто вернуться на один столбец и одну строку. 633 00:27:27,900 --> 00:27:31,730 И, похоже, своего рода надлежащим образом смешно, просто глядя супер 634 00:27:31,730 --> 00:27:33,060 маленьким, как этот. 635 00:27:33,060 --> 00:27:34,290 Итак, что же происходит на самом деле? 636 00:27:34,290 --> 00:27:36,890 При выполнении SQL запрос с использованием выберите, 637 00:27:36,890 --> 00:27:38,700 то, что вы получаете назад из базы данных 638 00:27:38,700 --> 00:27:42,970 это как временную таблицу со строками и столбцами, возможно, 639 00:27:42,970 --> 00:27:46,260 но опустить ничего фактически не выбран вами. 640 00:27:46,260 --> 00:27:49,010 Таким образом, как если кто-то был большой таблица всех студентов 641 00:27:49,010 --> 00:27:51,610 зарегистрировано некоторые студент группы, а вы говорите, 642 00:27:51,610 --> 00:27:55,097 дать мне все, кто уже на первом курсе зарегистрировано нашей студенческой группы, то, что 643 00:27:55,097 --> 00:27:56,930 Ваш коллега в студент группы могли бы сделать 644 00:27:56,930 --> 00:27:58,430 является они могли бы просто передать Вы все таблицы. 645 00:27:58,430 --> 00:27:59,742 Это, как говорят звезды выберите. 646 00:27:59,742 --> 00:28:02,200 И это немного раздражает, если Вы только хотели новичка. 647 00:28:02,200 --> 00:28:05,640 И так, если вы вместо сказал, выберите звезда из таблицы базы данных 648 00:28:05,640 --> 00:28:08,470 где год равен цитата, конец цитаты первокурсник, 649 00:28:08,470 --> 00:28:10,810 Это как если бы ваш друг в студенческой группе 650 00:28:10,810 --> 00:28:13,770 буквально выделены и скопированные только новичка ряды, 651 00:28:13,770 --> 00:28:16,780 вставить их в новый Google Таблица или файл Excel, 652 00:28:16,780 --> 00:28:18,860 и передал вам обратно в результате только файл. 653 00:28:18,860 --> 00:28:21,710 Это все, что происходит на концептуально здесь. 654 00:28:21,710 --> 00:28:23,920 >> Таким образом, в конце концов, мы можем сделать некоторые довольно причудливые вещи 655 00:28:23,920 --> 00:28:26,560 при хранении вещи, как имена пользователей и пароли и тому подобное. 656 00:28:26,560 --> 00:28:30,310 Но, оказывается, мы должны сделать немного по-другому, чем это. 657 00:28:30,310 --> 00:28:34,750 Это не то, что умны, чтобы только хранить имя пользователя и пароль. 658 00:28:34,750 --> 00:28:37,790 Кто-то раньше, я думаю, сюда, предложил ID. 659 00:28:37,790 --> 00:28:40,787 Теперь идентификатор может быть как Гарвардский ID или Йельского Net ID, 660 00:28:40,787 --> 00:28:42,870 но это может быть еще проще в нашем случае базы данных. 661 00:28:42,870 --> 00:28:45,120 И в самом деле, общий случай это еще один столбец. 662 00:28:45,120 --> 00:28:46,953 И я собираюсь пойти вперед и редактировать таблицы. 663 00:28:46,953 --> 00:28:49,521 И если вы поиграть с это интерфейс для PSet7, 664 00:28:49,521 --> 00:28:51,770 Вы увидите, что вы можете проверить эта кнопка здесь и добавить 665 00:28:51,770 --> 00:28:53,750 поле в начале таблицы. 666 00:28:53,750 --> 00:28:56,720 И теперь, если я нажмите кнопку Перейти, это будет чтобы дать мне один из тех форм 667 00:28:56,720 --> 00:28:57,600 от ранее. 668 00:28:57,600 --> 00:29:00,170 Я собираюсь добавить поле с именем ID. 669 00:29:00,170 --> 00:29:03,070 И я собираюсь сделать это числовой тип. 670 00:29:03,070 --> 00:29:05,362 >> У меня есть целый букет значений для числовых значений. 671 00:29:05,362 --> 00:29:08,677 Я просто хочу, чтобы выбрать INT и Не беспокойтесь о разрозненных размеров. 672 00:29:08,677 --> 00:29:10,510 Я не нужно указывать длина или значение, 673 00:29:10,510 --> 00:29:13,710 потому что это будет 32 бита независимо от того, что. 674 00:29:13,710 --> 00:29:16,070 Атрибуты, мы не видели прежде. 675 00:29:16,070 --> 00:29:18,410 Любой интерес в любой из них Опции меню на сей раз? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Для INT? 678 00:29:23,745 --> 00:29:24,620 Что вы предлагаете? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Нет? 681 00:29:28,445 --> 00:29:29,570 У любого из них смысл? 682 00:29:29,570 --> 00:29:30,536 Да. 683 00:29:30,536 --> 00:29:31,900 Да, без знака, верно? 684 00:29:31,900 --> 00:29:35,930 >> Вообще, если мы собираемся дать все это уникальный номер, который 685 00:29:35,930 --> 00:29:38,200 где эта история происходит, я действительно хочу только 686 00:29:38,200 --> 00:29:41,919 человек, чтобы иметь номер, как нуля и один и два, и три, и четыре. 687 00:29:41,919 --> 00:29:43,710 Мне не нужно, чтобы дело с отрицательными числами. 688 00:29:43,710 --> 00:29:45,210 Это только кажется, что неоправданной сложности. 689 00:29:45,210 --> 00:29:48,470 Я хочу четыре миллиарда возможных значений, не четыре миллиарда возможных значений, 690 00:29:48,470 --> 00:29:50,699 так что я просто удвоили мощность моего INT. 691 00:29:50,699 --> 00:29:53,490 Как в стороне, если вы хотите, чтобы связать это что-то вроде Facebook, 692 00:29:53,490 --> 00:29:56,190 назад в то день, когда мой Facebook впервые вышел, 693 00:29:56,190 --> 00:29:59,510 Я считаю, что они были используют в своей базе данных MySQL 694 00:29:59,510 --> 00:30:02,856 Чтобы сохранить пользователя Идентификатор, был просто INT. 695 00:30:02,856 --> 00:30:05,230 Но, конечно, есть много реальных людей в мире. 696 00:30:05,230 --> 00:30:07,438 Там очень много поддельных Facebook счета в мире. 697 00:30:07,438 --> 00:30:11,701 И так в конце концов, Facebook захлестнула размер в INT, А четыре миллиарда 698 00:30:11,701 --> 00:30:12,200 стоимость. 699 00:30:12,200 --> 00:30:15,032 Именно поэтому, если вы посмотрите вокруг и есть сайты 700 00:30:15,032 --> 00:30:16,740 что могу сказать вам, что Ваш уникальный идентификатор. 701 00:30:16,740 --> 00:30:19,781 И если вы никогда не выбрали имя пользователя в Facebook, вы увидите свой уникальный ID. 702 00:30:19,781 --> 00:30:23,080 Я думаю, что это точка PHP профиль знак вопроса ID равен то. 703 00:30:23,080 --> 00:30:27,210 То есть сейчас что-то вроде большой INT или долго долго, если вы будете, 704 00:30:27,210 --> 00:30:29,700 который является 64-битное значение или что-то сопоставимы. 705 00:30:29,700 --> 00:30:33,620 >> Таким образом, даже в реальном мире делать это вопросы, в конечном счете, иногда имеет значения. 706 00:30:33,620 --> 00:30:37,600 И получается, здесь, если я давая все из моих пользователей уникальный идентификатор, 707 00:30:37,600 --> 00:30:41,750 Я хочу быть супер явное и минимально сделать это поле уникальным. 708 00:30:41,750 --> 00:30:44,750 Но, оказывается, есть один кусок номенклатуры сегодня слишком 709 00:30:44,750 --> 00:30:46,470 что это первичный ключ. 710 00:30:46,470 --> 00:30:49,800 Если вы разрабатываете базы данных стол и вы заранее знаете, 711 00:30:49,800 --> 00:30:55,580 что один из столбцов этой таблицы должны и будут однозначно идентифицировать строки 712 00:30:55,580 --> 00:30:58,500 в таблице, вы хотите, чтобы указать его и сказать базы данных, 713 00:30:58,500 --> 00:31:00,250 это мой первичный ключ. 714 00:31:00,250 --> 00:31:02,110 Там может быть дубликаты в других областях, 715 00:31:02,110 --> 00:31:06,330 но я говорю базы данных, что это это моя основная, мой самый важный поле, 716 00:31:06,330 --> 00:31:08,420 что гарантированно будет уникальным. 717 00:31:08,420 --> 00:31:09,660 >> Теперь, это кажется излишним. 718 00:31:09,660 --> 00:31:13,830 Я в настоящее время предлагает, что мы добавить, нажав Сохранить здесь, 719 00:31:13,830 --> 00:31:17,210 поле called--, и я собираюсь идти вперед и нажмите AI, 720 00:31:17,210 --> 00:31:19,720 мы вернемся к что в настоящее время, за исключением. 721 00:31:19,720 --> 00:31:22,540 Я предлагаю сейчас, мой стол выглядит так. 722 00:31:22,540 --> 00:31:26,305 У меня есть поле под названием INT ID, поле CHAR называется Имя пользователя, 723 00:31:26,305 --> 00:31:31,100 поле VARCHAR называется имя, но ID, если это основной и, следовательно, уникальный, 724 00:31:31,100 --> 00:31:33,760 почему я просто тратить Время введения что 725 00:31:33,760 --> 00:31:39,140 эффективно это Вторая уникальная поле называется ID, что еще более INT? 726 00:31:39,140 --> 00:31:41,980 >> Имя пользователя, напомним, был уже уникален, мы сказали. 727 00:31:41,980 --> 00:31:45,350 Так что логично, что вам не нужно любой опыт базы данных причине 728 00:31:45,350 --> 00:31:47,570 через это, поэтому я мог бы ввели 729 00:31:47,570 --> 00:31:50,065 целочисленное в качестве моего уникального идентификатора, а? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Что this-- раз сказать? 732 00:31:53,930 --> 00:31:55,580 >> АУДИТОРИЯ: [неразборчиво] 733 00:31:55,580 --> 00:31:59,534 >> Дэвид Малан: Случайные доступ легче, то почему? 734 00:31:59,534 --> 00:32:00,410 >> АУДИТОРИЯ: [неразборчиво] 735 00:32:00,410 --> 00:32:02,367 Дэвид Малан: Да, это просто доступе номера. 736 00:32:02,367 --> 00:32:04,750 Так что, если вы думаете, этого поистине представляет собой таблицу, как массив, 737 00:32:04,750 --> 00:32:07,690 Теперь у меня есть уникальные идентификаторы что я могу прыгать. 738 00:32:07,690 --> 00:32:11,520 И лучше, чем до сих пор, что как большой приведен INT будет снова? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 бит или байт. Четыре 741 00:32:15,800 --> 00:32:17,750 >> Насколько велика мое имя пользователя будет? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Максимально? 744 00:32:21,990 --> 00:32:22,880 16 байт. 745 00:32:22,880 --> 00:32:26,080 >> Так что, если вы действительно заботиться о производительность вашего кода, 746 00:32:26,080 --> 00:32:31,390 вспомните PSet5, вы бы предпочли искать по стоимости четырех байтов или 16 747 00:32:31,390 --> 00:32:32,240 Значение байта, верно? 748 00:32:32,240 --> 00:32:33,810 Это действительно так просто, как, что. 749 00:32:33,810 --> 00:32:38,060 Вы должны сделать в четыре раза больше работы искать имена пользователей, потому что те 750 00:32:38,060 --> 00:32:38,830 16 байт. 751 00:32:38,830 --> 00:32:41,320 Таким образом, вы должны буквально сравнить все 16 байт, чтобы быть 752 00:32:41,320 --> 00:32:43,140 уверен, что да, это имя пользователя я хочу. 753 00:32:43,140 --> 00:32:46,610 В то время как для INT, вы можете сделать это только с четырьмя байтами. 754 00:32:46,610 --> 00:32:49,212 >> И, как в сторону для тех, заинтересованы в компьютерной техники, 755 00:32:49,212 --> 00:32:52,420 Оказывается можно разместить что-то вроде целочисленное или 32-битное значение в чем-то 756 00:32:52,420 --> 00:32:55,330 называется регистром в компьютере Процессора, что означает, что супер, 757 00:32:55,330 --> 00:32:58,400 супер быстрый, даже при самых низких Уровень аппаратной части компьютера. 758 00:32:58,400 --> 00:33:00,530 Так, там просто все вокруг преимущества. 759 00:33:00,530 --> 00:33:01,530 Итак, что же это значит? 760 00:33:01,530 --> 00:33:04,850 В самом деле, когда вы разрабатываете Таблица базы данных, почти все время 761 00:33:04,850 --> 00:33:07,170 вы будете иметь не только данные, которые вы заботитесь о, 762 00:33:07,170 --> 00:33:09,280 но также что-то вроде уникальный идентификатор 763 00:33:09,280 --> 00:33:11,280 потому что это будет давайте делать другие вещи. 764 00:33:11,280 --> 00:33:13,160 И давайте споткнуться одной проблемы здесь. 765 00:33:13,160 --> 00:33:15,990 >> Предположим, что пользователи не только имена и названия, 766 00:33:15,990 --> 00:33:19,540 но они также имеют такие вещи, как городов и государства и почтовые индексы, по крайней мере, 767 00:33:19,540 --> 00:33:20,432 здесь, в США. 768 00:33:20,432 --> 00:33:22,390 Итак, я собираюсь идти вперед и просто быстро сказать, 769 00:33:22,390 --> 00:33:26,180 дать мне больше трех столбцов В конце таблицы. 770 00:33:26,180 --> 00:33:28,900 И это будет город, это будет государство, 771 00:33:28,900 --> 00:33:30,400 и это будет Zip. 772 00:33:30,400 --> 00:33:32,710 >> Теперь виды города, то, что данные это должно быть, может быть? 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR? 775 00:33:35,989 --> 00:33:37,780 Я не знаю, что с длинная название города. 776 00:33:37,780 --> 00:33:40,571 Где-то в Америке, есть вероятно, некоторые смехотворно длинное слово, 777 00:33:40,571 --> 00:33:43,605 так что давайте просто пойти с 255, несколько исторически или произвольным образом. 778 00:33:43,605 --> 00:33:44,730 Район, то, что вы хотите сделать? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Суд вызов, не так ли? 781 00:33:50,367 --> 00:33:51,700 Что может быть наиболее эффективным? 782 00:33:51,700 --> 00:33:53,500 Сколько символов? 783 00:33:53,500 --> 00:33:55,950 Может быть, только два, если мы можем уйти с делать просто, 784 00:33:55,950 --> 00:33:58,250 как М. А. на Массачусетс и так далее. 785 00:33:58,250 --> 00:34:00,520 Итак, я собираюсь пойти значение CHAR два. 786 00:34:00,520 --> 00:34:03,080 >> Индекс это интересным. 787 00:34:03,080 --> 00:34:06,679 Мы здесь, в 02138, так что предлагает, мы должны использовать то, что? 788 00:34:06,679 --> 00:34:07,470 Это INT, верно? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, короткие? 791 00:34:12,800 --> 00:34:14,521 Краткое будет работать. 792 00:34:14,521 --> 00:34:15,020 Нет? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 СИМВОЛ или пять, но я хочу в INT. 795 00:34:20,870 --> 00:34:23,710 Почему отодвинуть на INT? 796 00:34:23,710 --> 00:34:26,820 Убедите меня от этого. 797 00:34:26,820 --> 00:34:29,210 Что глупо об INT, мою идею? 798 00:34:29,210 --> 00:34:29,871 Да. 799 00:34:29,871 --> 00:34:31,199 >> АУДИТОРИЯ: Возьмите больше памяти. 800 00:34:31,199 --> 00:34:32,909 >> Дэвид Малан: Возьмите больше памяти. 801 00:34:32,909 --> 00:34:35,310 Четыре байта, но вы предложив почтовый индекс 802 00:34:35,310 --> 00:34:39,000 как пять байтов или кто-то был в CHAR, который чувствует себя подобно да, это на самом деле не 803 00:34:39,000 --> 00:34:39,620 случай. 804 00:34:39,620 --> 00:34:40,489 >> Ну, веселая история. 805 00:34:40,489 --> 00:34:43,179 Много лет назад, когда я использовал, чтобы использовать Microsoft Outlook для моей электронной почте, 806 00:34:43,179 --> 00:34:45,150 В конце концов я хотел, чтобы перейти к Gmail. 807 00:34:45,150 --> 00:34:48,949 И так, я экспортировал все мои контакты из Outlook, как файл CSV. 808 00:34:48,949 --> 00:34:50,699 Разделенных запятыми значений, который только означает, что я 809 00:34:50,699 --> 00:34:54,060 были все мои друзья имена и последний имена и телефонные номера и почтовые индексы 810 00:34:54,060 --> 00:34:54,747 и все, что. 811 00:34:54,747 --> 00:34:56,580 И тогда я сделал ошибка открытия его 812 00:34:56,580 --> 00:34:58,640 в Excel, который является таблицы программа, 813 00:34:58,640 --> 00:35:00,289 понимает CSV файлов, как мы уже видели. 814 00:35:00,289 --> 00:35:03,080 Но тогда, я должен попали, как, Команда или управления S в одной точке. 815 00:35:03,080 --> 00:35:06,250 И, видимо, Excel в то время была особенность: при любом времени 816 00:35:06,250 --> 00:35:08,100 увидел номер, он пытался быть полезным. 817 00:35:08,100 --> 00:35:11,610 И если это число с начала нули, он просто будет избавиться от них. 818 00:35:11,610 --> 00:35:13,420 Почему вы должны ведущий нули на целых? 819 00:35:13,420 --> 00:35:15,140 Они бессмысленны, математически. 820 00:35:15,140 --> 00:35:17,530 Они не бессмысленны в США почтовой системы. 821 00:35:17,530 --> 00:35:19,954 Таким образом, я имел в течение многих лет, по сей день, я все еще 822 00:35:19,954 --> 00:35:22,370 есть друзья, которые, когда редкий случай, что мне нужно кто-то 823 00:35:22,370 --> 00:35:24,078 обратиться в эти дни, Я до сих пор вижу, что я 824 00:35:24,078 --> 00:35:26,767 есть друг в Кембридже, Массачусетс, 2 138. 825 00:35:26,767 --> 00:35:29,350 И это раздражает, если вы пытаясь разобраться в программно 826 00:35:29,350 --> 00:35:30,975 генерировать конверты или просто записать его. 827 00:35:30,975 --> 00:35:33,599 И это потому, что по этой причине, Я выбрал неправильный тип данных. 828 00:35:33,599 --> 00:35:34,490 Так, я люблю свою идею. 829 00:35:34,490 --> 00:35:35,650 Давайте использовать поле CHAR. 830 00:35:35,650 --> 00:35:38,340 Пять символов, за исключением есть уголок случай. 831 00:35:38,340 --> 00:35:42,220 Если вы все еще послать почту, иногда почтовых индексов в эти дни, 832 00:35:42,220 --> 00:35:45,360 они, как и, плюс четыре. 833 00:35:45,360 --> 00:35:48,200 Таким образом, мы должны дефис, а затем мы должны еще четыре цифры. 834 00:35:48,200 --> 00:35:50,330 Таким образом, чтобы быть честным, это может перейти много различных способов. 835 00:35:50,330 --> 00:35:52,371 >> В настоящее время, я иду, чтобы сохранить это просто, и я просто 836 00:35:52,371 --> 00:35:54,780 хочу сказать, что это пять значение CHAR и мы 837 00:35:54,780 --> 00:35:56,739 собираюсь пропустить весь тире плюс четыре. 838 00:35:56,739 --> 00:35:58,280 Но эти виды компромиссов. 839 00:35:58,280 --> 00:36:00,196 И вы можете думать о же проблемы, возникающие 840 00:36:00,196 --> 00:36:01,860 с номерами телефонов или других областях. 841 00:36:01,860 --> 00:36:04,350 >> И теперь, это на самом деле глупый дороге идти вниз. 842 00:36:04,350 --> 00:36:08,000 Предположим, как Роб и я, и Ханна и Мария, и [? Davon?] И Энди 843 00:36:08,000 --> 00:36:12,820 и другие на сотрудников все живем в Кембридже, штат Массачусетс, 02138. 844 00:36:12,820 --> 00:36:17,970 Это на самом деле чувствую себя глупо, что я добавляя к моей таблице пользователей, город, государство, 845 00:36:17,970 --> 00:36:18,630 и ZIP. 846 00:36:18,630 --> 00:36:20,980 Зачем? 847 00:36:20,980 --> 00:36:21,960 >> АУДИТОРИЯ: [неразборчиво] 848 00:36:21,960 --> 00:36:22,918 >> Дэвид Малан: раз сказать? 849 00:36:22,918 --> 00:36:24,310 АУДИТОРИЯ: [неразборчиво] 850 00:36:24,310 --> 00:36:25,850 >> Дэвид Малан: Они всегда собираюсь идти вместе, не так ли? 851 00:36:25,850 --> 00:36:28,660 Когда выясняется, мы привыкли думать, это не было так, пока мы исчерпывающе 852 00:36:28,660 --> 00:36:30,570 обыскал весь США, и оказывается, что 853 00:36:30,570 --> 00:36:32,653 некоторые несоответствия где несколько городов есть 854 00:36:32,653 --> 00:36:35,060 то же самое на молнии, который является фантастическим. 855 00:36:35,060 --> 00:36:40,580 Но, если мы предусматривают, что в настоящее время 02138 Всегда Кембридж, штат Массачусетс, 856 00:36:40,580 --> 00:36:44,910 почему в мире вы храните в база данных Кембридж, М. А. и 02138 857 00:36:44,910 --> 00:36:49,357 для меня и для Ханны и для Роба и для [? Davon?], А для других, которые живут 858 00:36:49,357 --> 00:36:51,190 здесь, в Кембридже, это совершенно излишним. 859 00:36:51,190 --> 00:36:54,480 >> Мы должны уйти только с хранения, что? 860 00:36:54,480 --> 00:36:55,610 Просто почтовый индекс. 861 00:36:55,610 --> 00:36:58,660 Но тогда, если мы храним только почтовый индекс, я хочу, наверное, 862 00:36:58,660 --> 00:37:02,160 для моего сайта, чтобы узнать, где находится 02138. 863 00:37:02,160 --> 00:37:03,910 Так, мне нужно еще одну таблицу. 864 00:37:03,910 --> 00:37:04,697 И это нормально. 865 00:37:04,697 --> 00:37:07,530 И в самом деле, это один из проектирование процессов проектирования таблиц 866 00:37:07,530 --> 00:37:11,472 что вы будете делать в PSet7 а также посредством Вы хотите, чтобы вынести общие данные. 867 00:37:11,472 --> 00:37:14,430 Так же, как мы были факторизации общий код и факторинг из общего 868 00:37:14,430 --> 00:37:17,380 стили CSS из здесь тоже в базе данных, 869 00:37:17,380 --> 00:37:21,180 если мне нужно только, чтобы однозначно 02138 определить чью-то родной город, 870 00:37:21,180 --> 00:37:25,020 не хранить Кембридж, Массачусетс для каждый штопать пользователь в таблице. 871 00:37:25,020 --> 00:37:29,770 >> Вместо этого, есть отдельная таблица с именем Молнии, которые должны иметь то, что столбцы? 872 00:37:29,770 --> 00:37:33,490 Возможно идентификатор поля, просто потому, что для принципы, которые мы говорим о теперь. 873 00:37:33,490 --> 00:37:35,720 Возможно поле молнии для 02138. 874 00:37:35,720 --> 00:37:38,400 И тогда, возможно, что другие колонки? 875 00:37:38,400 --> 00:37:42,950 Город и государство, но только один строка для 02138, по одной строке для 02139, 876 00:37:42,950 --> 00:37:44,772 одна строка для 90210. 877 00:37:44,772 --> 00:37:46,730 И это буквально все почтовые индексы, которых я знаю. 878 00:37:46,730 --> 00:37:49,012 >> Так что теперь, что вы можете сделать? 879 00:37:49,012 --> 00:37:51,220 Это проблематично, поскольку теперь у меня есть две таблицы. 880 00:37:51,220 --> 00:37:54,660 Итак, мои пользователи в основном здесь, но их информация город-государство это 881 00:37:54,660 --> 00:37:55,390 здесь. 882 00:37:55,390 --> 00:37:58,635 Таким образом, получается с SQL, есть на самом деле путь, чтобы присоединиться информации, 883 00:37:58,635 --> 00:38:00,470 и вы увидите это в Pset. 884 00:38:00,470 --> 00:38:03,000 >> Но, оказывается, можно сделать что-то вроде этого. 885 00:38:03,000 --> 00:38:10,501 ВЫБОР звезда из пользователей, JOIN молнии ПО пользователи точка почтовый равна молнии точка молнию. 886 00:38:10,501 --> 00:38:13,360 Что немного многословны, по общему признанию, но это только 887 00:38:13,360 --> 00:38:17,590 означает выберите все от процесс принятия мой стол пользователи 888 00:38:17,590 --> 00:38:19,580 и мой молнии таблице. 889 00:38:19,580 --> 00:38:22,120 Присоединяйтесь к ним на одной поле они имеют в колонке. 890 00:38:22,120 --> 00:38:24,780 Так, буквально что-то делать как это, и отдай мне 891 00:38:24,780 --> 00:38:27,360 новая временная таблица это шире, это больше, 892 00:38:27,360 --> 00:38:29,450 что имеет все колонны из обоих. 893 00:38:29,450 --> 00:38:33,510 И, что, попросту говоря, будет Синтаксис для этого что-то вроде этого. 894 00:38:33,510 --> 00:38:35,540 >> Так, есть это вперед, но происходит 895 00:38:35,540 --> 00:38:38,950 чтобы быть и другие дизайнерские решения вы будете должны сделать не только с индексами 896 00:38:38,950 --> 00:38:40,550 но также работает в задач. 897 00:38:40,550 --> 00:38:43,360 В самом деле, есть задача в любом проектирования баз данных 898 00:38:43,360 --> 00:38:47,930 в результате чего иногда два человека, возможно, захотите доступ к тем же строки базы данных 899 00:38:47,930 --> 00:38:48,530 Таблица. 900 00:38:48,530 --> 00:38:51,450 Таким образом, это то, что мы будем столкнуться в PSet7 также. 901 00:38:51,450 --> 00:38:54,686 >> Но я думал, что я смотрю на одного атака, что это возможно в SQL. 902 00:38:54,686 --> 00:38:56,560 Каковы некоторые из Проблемы, которые могут возникнуть? 903 00:38:56,560 --> 00:38:58,170 Таким образом, вы будете сталкиваться в этом PSet7. 904 00:38:58,170 --> 00:39:01,874 И мы говорим вам прямо, что кодирования решение для этой проблемы есть. 905 00:39:01,874 --> 00:39:04,790 Но если вы берете более высокий класс уровне, особенно в операционных системах, 906 00:39:04,790 --> 00:39:06,950 Вы будете сталкиваться с вопрос атомарность, 907 00:39:06,950 --> 00:39:10,080 проблема пытается сделать несколько вещей сразу 908 00:39:10,080 --> 00:39:11,000 без перерыва. 909 00:39:11,000 --> 00:39:14,560 >> И я думал, что я представить это Идея PSet7 с метафорой 910 00:39:14,560 --> 00:39:18,160 что я узнал себя в Марго CS164 операционные системы Зельцер в 911 00:39:18,160 --> 00:39:18,990 класса лет назад. 912 00:39:18,990 --> 00:39:22,230 Предположим, что у вас есть один из этих общежитии холодильники в вашем номере или в общежитии дома, 913 00:39:22,230 --> 00:39:24,474 и у вас есть реальный склонность к молока. 914 00:39:24,474 --> 00:39:27,140 И так, вы приходите домой с занятий в один прекрасный день, вы открываете холодильник. 915 00:39:27,140 --> 00:39:27,620 О, черт возьми. 916 00:39:27,620 --> 00:39:28,870 Там нет молока в холодильнике. 917 00:39:28,870 --> 00:39:32,470 Таким образом, вы закрыть холодильник, запереть дверь, заблокировать общежитие, 918 00:39:32,470 --> 00:39:34,770 ходить по углу в CVS, попасть в линии, 919 00:39:34,770 --> 00:39:36,312 и начать проверять за молоком. 920 00:39:36,312 --> 00:39:38,978 И это займет время, потому что эти проклятые самоуправления кассе 921 00:39:38,978 --> 00:39:40,570 счетчики длиться вечно, чтобы использовать в любом случае. 922 00:39:40,570 --> 00:39:41,950 Так в то время, ваш сосед по комнате приходит домой. 923 00:39:41,950 --> 00:39:43,470 Он или она действительно любит молоко, а также. 924 00:39:43,470 --> 00:39:45,520 Они приходят в комнате общежития, открыть холодильник, ох, палки. 925 00:39:45,520 --> 00:39:46,490 Там нет больше молока. 926 00:39:46,490 --> 00:39:49,040 >> Таким образом, он или она также идет не за горами. 927 00:39:49,040 --> 00:39:51,670 Но теперь, поскольку есть как два или три или четыре CVSes рядом, 928 00:39:51,670 --> 00:39:53,800 они происходят, чтобы перейти к одной из различные те на площади. 929 00:39:53,800 --> 00:39:55,830 И вот теперь, через несколько минут Через вас обоих 930 00:39:55,830 --> 00:39:58,060 пришел домой и тьфу, самая большая проблема когда-либо. 931 00:39:58,060 --> 00:40:00,967 Теперь у вас есть слишком много молока потому что это будет идти кислый. 932 00:40:00,967 --> 00:40:03,050 И вы любите молоко, но вы не люблю молоко. 933 00:40:03,050 --> 00:40:06,730 >> Так что теперь, это было дорого ошибка, потому что вы оба 934 00:40:06,730 --> 00:40:09,870 было принято решение, основываясь на состояние какой-то переменной, 935 00:40:09,870 --> 00:40:12,660 был в процессе изменяется от вас, 936 00:40:12,660 --> 00:40:14,560 Инициатором собирается получить молоко. 937 00:40:14,560 --> 00:40:17,785 Итак, что такое возможно, человек Решение этой проблемы? 938 00:40:17,785 --> 00:40:18,660 АУДИТОРИЯ: [неразборчиво] 939 00:40:18,660 --> 00:40:19,430 Дэвид Малан: Оставьте записку, верно? 940 00:40:19,430 --> 00:40:21,850 Всегда оставить записку, если вы знакомы с этого шоу. 941 00:40:21,850 --> 00:40:23,100 Да, есть два из нас. 942 00:40:23,100 --> 00:40:25,940 Таким образом, всегда оставить записку или буквально заблокировать холодильник 943 00:40:25,940 --> 00:40:28,602 с какой-то замка или то поверх, как, что. 944 00:40:28,602 --> 00:40:31,310 Но что на самом деле происходит, чтобы быть Ключевая проблема проектирования баз данных, 945 00:40:31,310 --> 00:40:34,710 особенно, когда вы, возможно, придется несколько браузеров, несколько ноутбуков, 946 00:40:34,710 --> 00:40:37,450 несколько пользователей все пытаются обновить информацию сразу. 947 00:40:37,450 --> 00:40:40,590 Особенно важная информация как финансовой информации, 948 00:40:40,590 --> 00:40:43,350 в результате чего с биржевой торговли Сайт, как вы будете строить, 949 00:40:43,350 --> 00:40:47,270 что, если вы хотите, чтобы проверить, сколько денег у вас есть и то, если у вас есть достаточно, 950 00:40:47,270 --> 00:40:48,490 купить акции? 951 00:40:48,490 --> 00:40:50,899 >> Но что, если кто-то еще, кто имеет совместный счет с вами 952 00:40:50,899 --> 00:40:52,690 одновременно пытаясь это чтобы купить акции? 953 00:40:52,690 --> 00:40:55,190 Таким образом, он или она проверяет баланс счета, вы оба 954 00:40:55,190 --> 00:40:57,540 вернуться то же самое Ответ, нет молока. 955 00:40:57,540 --> 00:41:00,580 Или вы оба получите обратно ответ, у вас есть $ 100 на счету. 956 00:41:00,580 --> 00:41:04,680 Оба вы пытаетесь сделать решение купить одну акцию какой-то акции компании. 957 00:41:04,680 --> 00:41:06,130 >> А теперь, что происходит? 958 00:41:06,130 --> 00:41:07,140 У вас есть два акции? 959 00:41:07,140 --> 00:41:08,420 У вас нет акций? 960 00:41:08,420 --> 00:41:10,320 Такие проблемы, как, что могут возникнуть. 961 00:41:10,320 --> 00:41:11,755 Таким образом, мы будем сталкиваться с этим. 962 00:41:11,755 --> 00:41:14,630 Атаки инъекции SQL, к счастью, что-то мы поможем вам с, 963 00:41:14,630 --> 00:41:17,430 но это ужасно часто в эти дни по-прежнему. 964 00:41:17,430 --> 00:41:18,680 Таким образом, это всего лишь пример. 965 00:41:18,680 --> 00:41:21,290 Я не делаю никаких претензий, что Система Гарвардского ПИН 966 00:41:21,290 --> 00:41:23,130 уязвимы к данной атаке. 967 00:41:23,130 --> 00:41:24,160 Мы старались. 968 00:41:24,160 --> 00:41:26,120 Но, вы знаете, что мы есть поле, как это. 969 00:41:26,120 --> 00:41:29,620 И Йельского Net ID имеет аналогичный смотря экран в эти дни. 970 00:41:29,620 --> 00:41:33,190 И оказывается, что, возможно, Система ПИН осуществляется в PHP. 971 00:41:33,190 --> 00:41:37,050 >> И если это were-- это не-- они может есть код, который выглядит следующим образом. 972 00:41:37,050 --> 00:41:38,210 Они имеют две переменные. 973 00:41:38,210 --> 00:41:42,495 Дайте мне имя пользователя и пароль от должности супер глобальной переменной 974 00:41:42,495 --> 00:41:43,970 что мы говорили ранее. 975 00:41:43,970 --> 00:41:47,310 Может быть, Гарварде запрос как SELECT, звезды от пользователей 976 00:41:47,310 --> 00:41:50,005 где имя пользователя равна, что и пароль равна, что. 977 00:41:50,005 --> 00:41:51,880 И заметьте, что я просто подключив его при помощи 978 00:41:51,880 --> 00:41:55,050 фигурная скобка обозначения от друга день, что означает просто подключите значение 979 00:41:55,050 --> 00:41:55,550 Вот. 980 00:41:55,550 --> 00:41:57,449 Я не с помощью Вопрос техника знак. 981 00:41:57,449 --> 00:41:59,240 Я не в любую секунду или третий аргументы. 982 00:41:59,240 --> 00:42:02,350 Я просто буквально построения строку сам. 983 00:42:02,350 --> 00:42:04,930 >> Проблема, однако, в том, что если кто-то нравится scroob, 984 00:42:04,930 --> 00:42:09,020 который является ссылкой на пленке, входит в что-то вроде этого, 985 00:42:09,020 --> 00:42:11,250 и я удалил точки что, как правило, прикрыть 986 00:42:11,250 --> 00:42:14,370 пароли, что, если он особенно вредоносный 987 00:42:14,370 --> 00:42:18,860 и его пароль может быть 12345, за фильм под названием "Космические яйца", 988 00:42:18,860 --> 00:42:21,970 но он критически печатает апостроф после пяти лет, 989 00:42:21,970 --> 00:42:24,790 Затем буквально слово или в пространстве, а затем цитата, 990 00:42:24,790 --> 00:42:29,160 конец цитаты один равняется один цитата, Но обратите внимание, он опущен, что? 991 00:42:29,160 --> 00:42:32,700 Он опустил цитату на право и он опущен цитату слева. 992 00:42:32,700 --> 00:42:35,170 >> Потому что, если это злоумышленник презумпция scroob в 993 00:42:35,170 --> 00:42:38,160 является то, что люди, которые писали это PHP код не так ярко, 994 00:42:38,160 --> 00:42:42,990 может быть, они просто есть некоторые одного кавычки интерполяции 995 00:42:42,990 --> 00:42:45,210 переменной в фигурные скобки? 996 00:42:45,210 --> 00:42:48,620 И так может быть, он мог рода полного свою мысль 997 00:42:48,620 --> 00:42:53,290 для них, но таким образом, что происходит чтобы позволить ему взломал систему PIN-кода. 998 00:42:53,290 --> 00:42:55,310 Другими словами, предположим, что это код 999 00:42:55,310 --> 00:42:57,140 и теперь мы подключить, что scroob набрали. 1000 00:42:57,140 --> 00:42:58,770 И это красный, потому что это плохо. 1001 00:42:58,770 --> 00:43:01,310 >> И основной текст это то, что он набрал в, 1002 00:43:01,310 --> 00:43:05,510 scroob может обмануть сервер Гарвардского университета в построении SQL запроса 1003 00:43:05,510 --> 00:43:07,440 строка, которая выглядит как это. 1004 00:43:07,440 --> 00:43:11,760 Пароль равен 12345 или один равняется один. 1005 00:43:11,760 --> 00:43:14,820 Результат, который, по логике, является то, что это будет войти scroob 1006 00:43:14,820 --> 00:43:18,360 , если его пароль 12345 или если один равно 1007 00:43:18,360 --> 00:43:22,660 Один из них, который, конечно, всегда верно, что означает scroob всегда попадает в. 1008 00:43:22,660 --> 00:43:26,060 >> И так, как исправить это, как и в большинстве случаев, 1009 00:43:26,060 --> 00:43:28,140 было бы написать на обороне. 1010 00:43:28,140 --> 00:43:30,390 Чтобы использовать что-то вроде нашего Реальная функция запроса, который 1011 00:43:30,390 --> 00:43:33,980 вы увидите в PSet7, где мы подключить в что-то вроде вопроса знаменует здесь. 1012 00:43:33,980 --> 00:43:35,980 И красота Функция запроса, что мы 1013 00:43:35,980 --> 00:43:40,010 дать вам это защищает от них так называемые атаки инъекции SQL, где 1014 00:43:40,010 --> 00:43:44,260 кто обманывает свой код в инъекционных свой собственный код SQL. 1015 00:43:44,260 --> 00:43:47,380 Потому что то, что функции запроса мы даем вам будет на самом деле, 1016 00:43:47,380 --> 00:43:51,270 если вы используете синтаксис знак вопроса и второй и третий аргумент здесь, 1017 00:43:51,270 --> 00:43:54,590 это то, что сделал это добавить к вход, который пользователь условии? 1018 00:43:54,590 --> 00:43:56,060 Те, обратный слеш цитирует. 1019 00:43:56,060 --> 00:43:58,590 >> Так, оно ускользает любой потенциально опасные персонажи. 1020 00:43:58,590 --> 00:44:01,000 Это выглядит странно, но это не уязвимы 1021 00:44:01,000 --> 00:44:03,260 потому что это не изменить логику больше 1022 00:44:03,260 --> 00:44:06,470 потому что вся пароль Теперь один цитата, это не так, 1023 00:44:06,470 --> 00:44:07,596 на самом деле, пароль scroob в. 1024 00:44:07,596 --> 00:44:09,845 Так, там были некоторые шутки об этом на протяжении многих лет. 1025 00:44:09,845 --> 00:44:12,570 Так, это было сфотографироваться какой выродка на стоянке 1026 00:44:12,570 --> 00:44:16,620 в котором вы, возможно, знаете, что некоторые города и государства пытаются сканировать ваш лицензию 1027 00:44:16,620 --> 00:44:19,460 пластина счета Вам или билет вы если вы идете через без, как, 1028 00:44:19,460 --> 00:44:20,660 вещь Е-Z Пасс. 1029 00:44:20,660 --> 00:44:24,490 Таким образом, это лицо, которое предположительно может быть, что люди, пишущие системы E-Pass Z 1030 00:44:24,490 --> 00:44:28,240 не так ярко, и, возможно, они просто объединяются вместе строку, 1031 00:44:28,240 --> 00:44:32,190 так что он или она не может злонамеренно не только завершить свою мысль, 1032 00:44:32,190 --> 00:44:35,150 но на самом деле выполнить команду плохое, которые мы еще не упоминали, 1033 00:44:35,150 --> 00:44:36,380 но вы, наверное, догадались. 1034 00:44:36,380 --> 00:44:39,820 Это в дополнение к удалять и Вставка и обновление и выберите, 1035 00:44:39,820 --> 00:44:43,370 есть также ключевое слово называется падение, который буквально удаляет все 1036 00:44:43,370 --> 00:44:45,300 в базе данных, которая Особенно плохо. 1037 00:44:45,300 --> 00:44:48,760 >> Мы можем увеличить на это, если это немного трудно увидеть. 1038 00:44:48,760 --> 00:44:52,300 Это, в настоящее время, является известным мультфильм это удивительно умный в настоящее время 1039 00:44:52,300 --> 00:44:53,145 и понятно. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Смех] 1042 00:45:04,750 --> 00:45:05,910 >> Да, круто. 1043 00:45:05,910 --> 00:45:06,800 Вид из geeking. 1044 00:45:06,800 --> 00:45:08,800 Таким образом, эти, тогда, Атаки инъекции SQL. 1045 00:45:08,800 --> 00:45:13,050 И они так легко избежать с помощью право код или правый библиотеки. 1046 00:45:13,050 --> 00:45:15,947 И вы увидите в PSet7, что это Поэтому мы даем вам функцию запроса. 1047 00:45:15,947 --> 00:45:17,780 Так, пару тизеров что мы думали, что мы 1048 00:45:17,780 --> 00:45:19,930 дать вам здесь, в нашем оставшиеся минуты вместе. 1049 00:45:19,930 --> 00:45:24,030 Так что, как вы помните из нулевой неделе, мы введены эти две лампочки, которые 1050 00:45:24,030 --> 00:45:26,610 приятно, не только потому, они довольно и красочные, 1051 00:45:26,610 --> 00:45:29,450 а потому, что они поддерживают то называется API, приложение 1052 00:45:29,450 --> 00:45:31,980 Интерфейс программирования и в CS50 сих пор, мы 1053 00:45:31,980 --> 00:45:34,440 в основном сосредоточены на GET и POST, но, оказывается, 1054 00:45:34,440 --> 00:45:37,390 есть другие HTTP глаголы PUT. 1055 00:45:37,390 --> 00:45:39,430 >> И в самом деле, это было слайд от нуля недели 1056 00:45:39,430 --> 00:45:44,930 в результате чего, если вы пишете код, который посылает а-ля PSet6-запрос HTTP, что 1057 00:45:44,930 --> 00:45:49,647 Похоже, это с этим куском текста в нижней, которая называется JSON, 1058 00:45:49,647 --> 00:45:52,230 или JavaScript Object Notation что мы будем говорить о следующей неделе, 1059 00:45:52,230 --> 00:45:57,030 Вы можете включить или выключить или изменить цвет огней, как таковых. 1060 00:45:57,030 --> 00:46:00,480 Таким образом, если CS50 также имеет в дополнение к некоторым из тех лампочек здесь в Нью-Хейвене 1061 00:46:00,480 --> 00:46:02,480 если вы хотите занять им для окончательных проектов, 1062 00:46:02,480 --> 00:46:04,370 Также некоторые Microsoft Полосы, которые, как 1063 00:46:04,370 --> 00:46:07,619 следит за тем, вы носите на запястье что аналогично есть API, так что вы 1064 00:46:07,619 --> 00:46:10,040 можете написать собственное программное обеспечение для них. 1065 00:46:10,040 --> 00:46:12,490 >> У нас есть запись с Код IOS от Apple, так 1066 00:46:12,490 --> 00:46:15,510 что если у вас есть Apple Наблюдать или iPhone или IPad или IPod, 1067 00:46:15,510 --> 00:46:17,707 Вы можете написать код, который на самом деле работает на них. 1068 00:46:17,707 --> 00:46:19,540 У нас есть целый букет из Arduinos, которые 1069 00:46:19,540 --> 00:46:22,010 крошечные компьютеры без случаев, по сути, 1070 00:46:22,010 --> 00:46:25,240 что вы можете подключить через USB, как правило, на свой собственный Mac или PC, 1071 00:46:25,240 --> 00:46:28,810 код, который выполняется на эти физические написать Устройства, которые часто имеют датчики на них 1072 00:46:28,810 --> 00:46:30,790 так что вы можете взаимодействовать с реальным миром. 1073 00:46:30,790 --> 00:46:32,860 У нас есть целый букет устройств Leap Motion, 1074 00:46:32,860 --> 00:46:36,500 которые являются USB устройства для компьютеров Mac и ПК, здесь и снова, в Нью-Хейвене. 1075 00:46:36,500 --> 00:46:40,080 И если вы подключите его к Mac, Вы можете фактически управлять компьютером 1076 00:46:40,080 --> 00:46:42,550 в письменной форме программное обеспечение что с помощью инфракрасных лучей, 1077 00:46:42,550 --> 00:46:46,360 выясняет, где ваши человеческие руки, даже не касаясь клавиатуры. 1078 00:46:46,360 --> 00:46:49,135 Мы думали, что мы разделяем быстро заглянуть в это, например. 1079 00:46:49,135 --> 00:46:51,428 >> [Играет музыка] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Так, у нас есть целый куча из этих вещей, 1082 00:47:57,590 --> 00:48:01,040 тоже называется мио повязки которые вы положили над предплечья 1083 00:48:01,040 --> 00:48:04,595 а затем вы можете контролировать реальный мир или виртуальный мир, как это. 1084 00:48:04,595 --> 00:48:06,471 >> [Играет музыка] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Или, мы также есть Google Картон, который в буквальном смысле, как, 1087 00:49:20,920 --> 00:49:24,841 картонная коробка можно положить на вашем лицо, но слайд в вашем телефоне в него 1088 00:49:24,841 --> 00:49:27,590 так что вы поставить стакан вашего телефон действительно близко к глазам. 1089 00:49:27,590 --> 00:49:30,190 И Google Картон очень дешево в $ 10 или $ 20. 1090 00:49:30,190 --> 00:49:32,230 И это имеет мало линзы что немного не сдвига 1091 00:49:32,230 --> 00:49:35,900 изображение на экране для вашего человека глаза, чтобы дать вам ощущение глубины 1092 00:49:35,900 --> 00:49:39,550 так что вы на самом деле есть 3D среда перед вами. 1093 00:49:39,550 --> 00:49:42,927 У нас также есть некоторые Samsung Gear, которая это более дорогой версии этого, 1094 00:49:42,927 --> 00:49:46,010 но это может так же скольжения в Android-телефон и дать вам иллюзию 1095 00:49:46,010 --> 00:49:48,309 of-- или дать опыт виртуальной реальности. 1096 00:49:48,309 --> 00:49:50,850 И в наших последних двух минут, мы думали, что мы стараемся сделать это. 1097 00:49:50,850 --> 00:49:55,250 Если я могу выступать, что Колтон имеет здесь просто чтобы подогреть аппетит, 1098 00:49:55,250 --> 00:49:58,442 позвольте мне идти вперед и бросить на большом экране здесь. 1099 00:49:58,442 --> 00:49:59,400 Позвольте мне убить огни. 1100 00:49:59,400 --> 00:50:02,290 Колтон, вы хотите, чтобы идти вперед и поставить на свой мобильный на мгновение 1101 00:50:02,290 --> 00:50:05,171 и приходи к Середина этапе? 1102 00:50:05,171 --> 00:50:07,420 И вы хотите, чтобы project-- это то, что видит Колтон. 1103 00:50:07,420 --> 00:50:10,560 >> Теперь, Wi-Fi в здесь не так сильна для этого устройства 1104 00:50:10,560 --> 00:50:13,870 что это супер убедительными, но Колтон буквально 1105 00:50:13,870 --> 00:50:15,710 в этом волшебном месте футуристический. 1106 00:50:15,710 --> 00:50:16,796 Он видит только одно изображение. 1107 00:50:16,796 --> 00:50:19,920 Вы видите его левого и правого глаза что его мозг будут сшивая 1108 00:50:19,920 --> 00:50:22,260 в трехмерном среды на его лице. 1109 00:50:22,260 --> 00:50:24,319 Он просто выбрал опцию меню здесь. 1110 00:50:24,319 --> 00:50:27,360 И так снова, он носит эту гарнитуру с Samsung телефон на нем, что это 1111 00:50:27,360 --> 00:50:29,080 беспроводное проецирование к нашей головой. 1112 00:50:29,080 --> 00:50:30,349 Теперь вы на Марсе, я думаю? 1113 00:50:30,349 --> 00:50:31,140 Колтон: Я так думаю. 1114 00:50:31,140 --> 00:50:32,181 Я не уверен, что [неразборчиво]. 1115 00:50:32,181 --> 00:50:34,250 [Смех] 1116 00:50:34,250 --> 00:50:36,374 >> Дэвид Малан: Оказывается Марс имеет эти меню. 1117 00:50:36,374 --> 00:50:41,590 >> Колтон: [неразборчиво] какой-нибудь классный места, если мы хотим идти, целью которых 1118 00:50:41,590 --> 00:50:43,330 >> Дэвид Малан: Где мы хотим идти? 1119 00:50:43,330 --> 00:50:45,837 >> Колтон: [неразборчиво] 1120 00:50:45,837 --> 00:50:48,170 Дэвид Малан: И давайте посмотрим где Колтон берет с нами сейчас. 1121 00:50:48,170 --> 00:50:48,961 Колтон: [неразборчиво] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> Дэвид Малан: Итак, есть так много различные места, которые вы можете взять себе. 1124 00:50:56,380 --> 00:51:00,590 Там это FAPIs, через который вы можете писать игры или взаимодействий, которые 1125 00:51:00,590 --> 00:51:01,950 бежать, в конечном счете по телефону. 1126 00:51:01,950 --> 00:51:03,908 Таким образом, вы на самом деле просто писать мобильного телефона приложение. 1127 00:51:03,908 --> 00:51:06,380 Но благодаря программного обеспечения и графические возможности, 1128 00:51:06,380 --> 00:51:08,765 Теперь Колтон в этот крошечный домик. 1129 00:51:08,765 --> 00:51:10,515 И на риск подавляющее себя, 1130 00:51:10,515 --> 00:51:13,330 Колтон, и я буду придерживаться вокруг в то время как в конце класса здесь сегодня 1131 00:51:13,330 --> 00:51:14,300 если вы хотите, чтобы подойти и играть. 1132 00:51:14,300 --> 00:51:16,350 И мы будем вернуть их на следующей неделе, а также. 1133 00:51:16,350 --> 00:51:18,420 Без дальнейших церемоний это на сегодня. 1134 00:51:18,420 --> 00:51:21,990 Мы будем видеть Вас на следующей неделе. 1135 00:51:21,990 --> 00:51:24,140 >> [МУЗЫКА - Ragga Twins, "плохой человек"] 1136 00:51:24,140 --> 00:55:23,146