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, Мова Структурованих Запитів, 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 є друг в Кембриджі, Массачусетс, 2138. 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 Але, якщо ми передбачають, що в даний час 02 138 Завжди Кембридж, штат Массачусетс, 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