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 DAVID馬蘭:好吧,這是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 會後,實時繪製 股票數據來自雅虎財經。 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 >> DAVID馬蘭:所以,信息的列表, 或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文件或者谷歌 電子表格或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 >> DAVID馬蘭:名稱。 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 >> DAVID馬蘭:一個ID。 54 00:02:19,561 --> 00:02:23,320 因此,像一個ID號,如您哈佛 ID或您的耶魯大學網絡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 >> DAVID馬蘭:密碼,也許一個 地址,可以是電話號碼,也許 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 你能想像谷歌電子表格 或任何數量的其他方案。 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 >> 因此,即使是像甲骨文的 你可能也聽到了 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 而甲骨文向您收取 大量的資金要做到這一點, 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 它是基於Web的工具。 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 如此,類似於C和一個 少一點像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 CHAR,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 而且我還參觀了一個網址 該工具被稱為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 而且我要繼續前進,然後點擊開始。 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 所以,我看到這裡 - 和接口 坦率地說變得有點難看,最終, 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中 和谷歌電子表格, 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 現在,在谷歌電子表格或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 CHAR,VARCHAR,TINYTEXT, MEDIUMTEXT,LONGTEXT。 155 00:06:32,740 --> 00:06:34,110 而且它是一種勢不可擋。 156 00:06:34,110 --> 00:06:37,610 不幸的是,有些 矛盾的是,以C, 157 00:06:37,610 --> 00:06:40,120 一個CHAR是不是一個真正的CHAR。 158 00:06:40,120 --> 00:06:44,170 如果您在數據庫中指定 您的數據類型為CHAR, 159 00:06:44,170 --> 00:06:47,390 這意味著,是的,這是一個 CHAR,但它是一個或多個字符。 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 >> DAVID馬蘭: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 >> DAVID馬蘭:是啊,剛 讓他們都為空。 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 DAVID馬蘭: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位而不是8位。 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 >> DAVID馬蘭:那是什麼? 236 00:09:34,510 --> 00:09:35,430 >> 聽眾:[聽不清] 237 00:09:35,430 --> 00:09:37,138 >> DAVID馬蘭:這是一個 大量的內存,對不對? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N。我也只是浪費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 如果放在M-A-L-A-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 是的,但為什麼不使用 VARCHAR處理的一切? 257 00:10:40,040 --> 00:10:42,020 >> 它的存在是有原因的。 258 00:10:42,020 --> 00:10:46,200 為什麼不使用VARCHAR處理的各個領域 其長度不知道提前 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 DAVID馬蘭:拼寫? 263 00:10:52,146 --> 00:10:53,120 聽眾:使得它更慢? 264 00:10:53,120 --> 00:10:53,970 DAVID馬蘭:哦,它的速度較慢。 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 >> DAVID馬蘭:好。 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 如果你要調用malloc 引擎蓋下,也許 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 >> DAVID馬蘭:你看 通過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 DAVID馬蘭:展望 對於空終結 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 和索引是告訴的方法 數據庫事先知道我的人 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 應借鑒一些想法的,比如, 4週,五,六從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 DAVID馬蘭:是的, 用戶名必須是唯一的。 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 該數據庫不會讓兩個人命名 大衛或馬蘭斯登記在這種情況下。 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 馬蘭斯在這個房間裡,最有可能的。 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 但是,所有我要做的就是點擊 就在左上角的Word用戶。 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 我們會給你的問題 設置SEVEN公司的分銷代碼,這 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,結構化查詢語言。 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 而只是想直觀地現在, 知道你知道C和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 DAVID馬蘭:沒錯。 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 緊接著又括號, 然後這兩個值 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 所以,這不是C.這是不PHP的。 442 00:18:56,570 --> 00:18:59,970 這是現在的SQL,而我把它粘貼 這個基於Web的界面, 443 00:18:59,970 --> 00:19:02,710 只是要告訴我, 當我點擊進入, 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 哎呀,寧願去。 459 00:19:46,140 --> 00:19:48,890 >> 再次單擊瀏覽, 現在發現我有兩行。 460 00:19:48,890 --> 00:19:52,390 所以,這只是一種方式更加複雜 開放的谷歌電子表格的方式 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 >> 什麼是美元內 登錄下劃線得到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 >> DAVID馬蘭:這是一個雪 種子陣列,這 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 DAVID馬蘭:沒有? 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 DAVID馬蘭:是啊,他們 來自查詢字符串。 490 00:20:52,560 --> 00:20:55,380 所以,如果你在時間倒帶 當我們發揮與谷歌 491 00:20:55,380 --> 00:20:59,600 我們已經去了Google.com斜線 搜索問號Q等於貓, 492 00:20:59,600 --> 00:21:03,550 如果我敲回車,如果 谷歌是在PHP實現, 493 00:21:03,550 --> 00:21:07,017 PHP代碼,谷歌寫道: 將有機會獲得美元符號 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 >> 所以,如果我們現在編寫的代碼 在谷歌的服務器上運行的代碼, 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 它 - 各地報價 標誌著這個時候。 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傾向於支持,Ruby和 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 DAVID馬蘭:沒錯。 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 你可以說選擇,讓我們說 明星,其中星級意味著一切。 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 其中username等於 報價,引文結束馬蘭。 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 而我要放好 這個技巧的布雷迪,並進入 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 可如果有人剛剛登錄我 要檢查,如果他或她實際上是 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 DAVID馬蘭:是的。 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 >> DAVID馬蘭:我說的唯一的,對不對? 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 你只能有零個或一個馬蘭斯 在這個特殊的數據庫表中。 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 鍵入了擇思达用戶的。 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 DAVID馬蘭:行數,確保萬無一失。 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 相反,如果我這樣做又做 擇思达用戶的,其中username 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 用戶,其中username等於馬蘭, 什麼是好的關於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 使用select查詢, 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 粘貼成一個新的谷歌 電子表格或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可以像 哈佛ID或耶魯大學的網絡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 >> 我有一大堆 值的Numerics的。 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 我買4十億可能的值, 不是四十億可能的值, 690 00:29:48,470 --> 00:29:50,699 所以我只是一倍 我INT的能力。 691 00:29:50,699 --> 00:29:53,490 順便說一句,如果你想關聯 這有點像臉譜, 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 可以告訴你什麼 您獨有的ID是。 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 而事實證明,在這裡,如果我 給我的所有用戶一個唯一的ID, 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, 所謂用戶名的煤焦領域, 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 有效地是一個第二唯一 現場叫號這是一個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 一個int我唯一的標識呢? 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 >> DAVID馬蘭:隨機 訪問更容易,為什麼呢? 734 00:31:59,534 --> 00:32:00,410 >> 聽眾:[聽不清] 735 00:32:00,410 --> 00:32:02,367 DAVID馬蘭:是的,這 剛剛訪問號碼。 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位或4個字節。 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 事實證明你能適應像 INT或某事的32位值 756 00:32:52,420 --> 00:32:55,330 所謂在計算機中的寄存器 CPU,這意味著它的超, 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 這將是郵編。 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 CHAR或五人,但我想要一個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 >> DAVID馬蘭:佔用更多的內存。 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 幾年前,當我用用 微軟的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 讓我們用一個煤焦領域。 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 會說,這是一個 5 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 假設這兩個Rob和我和漢娜 和瑪麗亞和[? 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 和拉鍊。 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 >> DAVID馬蘭:再說一遍嗎? 849 00:36:22,918 --> 00:36:24,310 聽眾:[聽不清] 850 00:36:24,310 --> 00:36:25,850 >> DAVID馬蘭:他們總是 要去一起去,好嗎? 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 同一個zip,這是奇怪的。 855 00:36:35,060 --> 00:36:40,580 但是,如果我們現在02138規定的 永遠是馬薩諸塞州劍橋市, 856 00:36:40,580 --> 00:36:44,910 為什麼在世界上,你將存儲在 數據庫劍橋和MA和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 也許一個ID字段,只是,因為 的原則,我們現在談論。 873 00:37:33,490 --> 00:37:35,720 可能是一個zip字段為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 擇思达從用戶,ON 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 DAVID馬蘭:留一個便條,對不對? 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 而耶魯大學的網絡ID也有類似的 看著屏幕上的這些日子。 970 00:41:29,620 --> 00:41:33,190 而事實證明,這也許是 PIN系統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 也許哈佛有一個查詢 像選擇星級用戶的 976 00:41:47,310 --> 00:41:50,005 其中username等於說 和密碼等於這一點。 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 在E-Z通的事情。 1029 00:44:20,660 --> 00:44:24,490 所以,這個人推測,也許 人們寫E-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 有種出來狂人。 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對象符號 我們將討論下週, 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 也有一些微軟 樂隊,這是像 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代碼,以便 1066 00:46:12,490 --> 00:46:15,510 如果你有一個蘋果的手錶或 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 我們有一大堆 的飛躍運動設備, 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 或者,我們也有一些谷歌 紙板,這實際上是一樣, 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 而谷歌紙板 非常便宜$ 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 我們也有一些三星的齒輪,其中 是這種更昂貴的版本, 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 那你想項目 - 這是科爾頓看到。 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 而如此反复,他戴著這款耳機 與三星手機上這是 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 COLTON:我想是這樣。 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 >> DAVID馬蘭:原來 火星有這些菜單。 1117 00:50:36,374 --> 00:50:41,590 >> COLTON:[聽不清]一些很酷 地方,如果我們想要去用於: 1118 00:50:41,590 --> 00:50:43,330 >> DAVID馬蘭:我們在哪裡要去? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON:[聽不清] 1120 00:50:45,837 --> 00:50:48,170 DAVID馬蘭:,讓我們看看 其中,科爾頓的,現在把我們。 1121 00:50:48,170 --> 00:50:48,961 COLTON:[聽不清] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID馬蘭:那麼,有這麼多 不同的地方,你可以把自己。 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 如果沒有進一步的,ADO 這就是它的今天。 1134 00:51:18,420 --> 00:51:21,990 我們會看到你下週。 1135 00:51:21,990 --> 00:51:24,140 >> [MUSIC - RAGGA TWINS,“壞男人”] 1136 00:51:24,140 --> 00:55:23,146