1 00:00:00,000 --> 00:00:03,493 >> [音樂播放] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 道格·勞埃德:在我們的視頻 關於Web開發的話題, 4 00:00:07,100 --> 00:00:10,560 我們已經提到的概念 數據庫幾次,對不對? 5 00:00:10,560 --> 00:00:12,700 所以數據庫你 可能是熟悉的 6 00:00:12,700 --> 00:00:15,780 說使用Microsoft Excel 或谷歌電子表格。 7 00:00:15,780 --> 00:00:20,650 它實際上只是一個有組織的 設置表,行和列。 8 00:00:20,650 --> 00:00:23,140 >> 而數據庫是哪裡 我們的網站商店 9 00:00:23,140 --> 00:00:26,760 這一點很重要信息 為我們的網站能正常工作。 10 00:00:26,760 --> 00:00:30,150 此外,一個非常常見的例子在這裡 在存儲用戶名和密碼 11 00:00:30,150 --> 00:00:32,824 在數據庫中,使得當 用戶登錄到我們的網站, 12 00:00:32,824 --> 00:00:36,690 該數據庫可被查詢,看 如果該用戶在數據庫中存在。 13 00:00:36,690 --> 00:00:39,260 如果是這樣,檢查 他們的密碼是正確的。 14 00:00:39,260 --> 00:00:43,420 而如果他們的密碼是正確的, 那麼,我們可以給他們任何網頁 15 00:00:43,420 --> 00:00:45,370 他們請求。 16 00:00:45,370 --> 00:00:48,590 >> 所以,你很可能再次熟悉 這個想法從Excel或谷歌 17 00:00:48,590 --> 00:00:49,430 電子表格。 18 00:00:49,430 --> 00:00:52,980 我們有數據庫, 表,行和列。 19 00:00:52,980 --> 00:00:56,450 這就是真正的排序 基本集 20 00:00:56,450 --> 00:00:58,470 這裡分層分解。 21 00:00:58,470 --> 00:00:59,800 因此,這裡的Excel電子表格。 22 00:00:59,800 --> 00:01:02,640 如果你曾經開了這 或其他類似的程序 23 00:01:02,640 --> 00:01:06,780 你知道,這些這裡有 rows-- 1,2,3,4,5,6,7。 24 00:01:06,780 --> 00:01:08,760 這些都是列。 25 00:01:08,760 --> 00:01:11,790 >> 也許到這裡,雖然你可能 不使用此功能非常much-- 26 00:01:11,790 --> 00:01:15,370 我會放大in--我們 這一想法的片材。 27 00:01:15,370 --> 00:01:17,930 因此,也許這些表,如果 我交替往復, 28 00:01:17,930 --> 00:01:21,600 不同的表 存在於我的數據庫。 29 00:01:21,600 --> 00:01:25,210 如果我們繼續這個例子所有 順便說一下,這個數據庫的名稱 30 00:01:25,210 --> 00:01:26,940 是書1。 31 00:01:26,940 --> 00:01:28,710 也許我有第二冊和第三冊。 32 00:01:28,710 --> 00:01:33,270 所以,每一個Excel文件是一個 數據庫中,每個片是一個表, 33 00:01:33,270 --> 00:01:39,530 每個表格裡面我有 這一想法的行和列。 34 00:01:39,530 --> 00:01:41,900 >> 那麼,如何使用這個數據庫的工作? 35 00:01:41,900 --> 00:01:43,630 我如何獲得它的信息? 36 00:01:43,630 --> 00:01:47,540 那麼有一個叫做語言SQL-- 我通常只是打電話Sequel-- 37 00:01:47,540 --> 00:01:50,010 它代表的是 結構化查詢語言。 38 00:01:50,010 --> 00:01:52,981 而且它是一種編程語言, 但它是一個相當有限編程 39 00:01:52,981 --> 00:01:53,480 語言。 40 00:01:53,480 --> 00:01:56,407 這不是很喜歡別人 我們已經合作過。 41 00:01:56,407 --> 00:01:58,240 但這樣做的目的 程序設計語言 42 00:01:58,240 --> 00:02:01,570 是查詢數據庫,以 問一個數據庫的信息​​, 43 00:02:01,570 --> 00:02:04,480 找到一個信息 數據庫,等等。 44 00:02:04,480 --> 00:02:08,449 >> 我們在CS50--這是一個非常 共同的平台,這就是所謂的MySQL。 45 00:02:08,449 --> 00:02:10,600 這就是我們在使用過程中使用的。 46 00:02:10,600 --> 00:02:12,880 這是一個開放源碼 平台建立 47 00:02:12,880 --> 00:02:16,732 所謂關係型數據庫 - 一個數據庫,有效。 48 00:02:16,732 --> 00:02:18,440 我們並不需要得到 太多細節 49 00:02:18,440 --> 00:02:20,930 對什麼是關係數據庫。 50 00:02:20,930 --> 00:02:24,650 但是,SQL語言 非常善於工作 51 00:02:24,650 --> 00:02:29,760 與MySQL和其它類似 樣式的關係數據庫。 52 00:02:29,760 --> 00:02:34,010 >> 而很多的安裝 MySQL的來的東西 53 00:02:34,010 --> 00:02:37,760 所謂的phpMyAdmin,這 是一個圖形用戶 54 00:02:37,760 --> 00:02:40,970 interface--一個GUI--的 使得它多一點 55 00:02:40,970 --> 00:02:44,410 用戶友好的執行 數據庫查詢, 56 00:02:44,410 --> 00:02:48,980 因為數據庫不僅用於 由高級程​​序員,對嗎? 57 00:02:48,980 --> 00:02:51,510 有時有 這些小企業, 58 00:02:51,510 --> 00:02:53,900 他們無法承受 聘請程序員的團隊, 59 00:02:53,900 --> 00:02:56,700 但他們仍然需要存儲 在數據庫中的信息。 60 00:02:56,700 --> 00:02:59,300 >> 類似的phpMyAdmin 使得它很容易為別人 61 00:02:59,300 --> 00:03:03,630 誰之前從未編程 拿起和熟悉如何 62 00:03:03,630 --> 00:03:07,710 與數據庫一起工作。 63 00:03:07,710 --> 00:03:11,800 問題是,phpMyAdmin的,而 這是一個奇妙的工具,學習 64 00:03:11,800 --> 00:03:14,850 有關數據庫,它是手動的。 65 00:03:14,850 --> 00:03:18,050 你將不得不登錄 它與執行命令和類型 66 00:03:18,050 --> 00:03:19,910 事情手動研究。 67 00:03:19,910 --> 00:03:23,160 >> 而且,因為我們知道我們的 例如PHP的Web編程, 68 00:03:23,160 --> 00:03:26,550 有做手工 在我們的網站上的東西, 69 00:03:26,550 --> 00:03:30,970 如果我們想要一個充滿活力,積極響應 網站,也許不是最好的方法。 70 00:03:30,970 --> 00:03:33,980 我們希望找到一種方法, 也許是自動完成這一莫名其妙。 71 00:03:33,980 --> 00:03:37,864 和SQL將使我們能夠做到這一點。 72 00:03:37,864 --> 00:03:39,780 所以,當我們要 開始使用SQL工作, 73 00:03:39,780 --> 00:03:41,220 我們首先需要有一個 數據庫一起工作。 74 00:03:41,220 --> 00:03:42,510 創建一個數據庫 一些你可能 75 00:03:42,510 --> 00:03:45,350 會做的phpMyAdmin的,因為 你只需要做一次, 76 00:03:45,350 --> 00:03:49,690 和語法這樣做 很多更簡單。 77 00:03:49,690 --> 00:03:51,940 這是一個更容易做到這一點 在圖形用戶界面 78 00:03:51,940 --> 00:03:53,520 不是打字它作為一個命令。 79 00:03:53,520 --> 00:03:55,186 該命令可能會變得有些繁瑣。 80 00:03:55,186 --> 00:03:58,889 同樣,在創建一個表可以 得到相當有點麻煩,以及。 81 00:03:58,889 --> 00:04:01,930 所以像創建數據庫 並創建一個表,你 82 00:04:01,930 --> 00:04:06,270 大概只打算做once-- 每一次表,每一次數據庫 - 83 00:04:06,270 --> 00:04:09,040 它是確定做,在 圖形界面。 84 00:04:09,040 --> 00:04:11,570 在過程中 創建一個表,你會 85 00:04:11,570 --> 00:04:14,840 還必須指定所有的 列,就可以在該表中。 86 00:04:14,840 --> 00:04:18,149 什麼樣的信息做 要存儲在表中? 87 00:04:18,149 --> 00:04:24,520 也許用戶的姓名和出生日期, 口令,用戶ID號,也許 88 00:04:24,520 --> 00:04:26,170 城市和國家,對不對? 89 00:04:26,170 --> 00:04:30,080 >> 而對於每一次我們要添加一個用戶 到數據庫中,我們希望得到所有六個 90 00:04:30,080 --> 00:04:31,890 的這些信息。 91 00:04:31,890 --> 00:04:34,840 同時,我們也通過添加 行到表。 92 00:04:34,840 --> 00:04:37,800 因此,我們首先創建一個數據庫, 然後我們創建一個表。 93 00:04:37,800 --> 00:04:40,100 作為創建的一部分 一個表中,我們被要求 94 00:04:40,100 --> 00:04:44,280 指定每列 我們希望在此表中。 95 00:04:44,280 --> 00:04:47,247 然後,當我們開始增加 信息到數據庫 96 00:04:47,247 --> 00:04:49,580 和查詢數據庫的更多 generally--不僅僅是增加, 97 00:04:49,580 --> 00:04:51,610 但一切我們 do--我們會處理 98 00:04:51,610 --> 00:04:58,870 與行的表,這是一個 從整組用戶的信息。 99 00:04:58,870 --> 00:05:03,210 >> 所以,每一個SQL列能夠 保持一個特定數據類型的數據。 100 00:05:03,210 --> 00:05:06,560 因此,我們的排序消除了這種 在PHP中的數據類型的想法, 101 00:05:06,560 --> 00:05:08,747 但他們回到這裡SQL。 102 00:05:08,747 --> 00:05:10,080 而且有很多的數據類型。 103 00:05:10,080 --> 00:05:13,420 這裡的只有20人,但 它甚至不是所有的人。 104 00:05:13,420 --> 00:05:16,240 因此,我們有一些理念,如INTs-- Integers--我們大概知道 105 00:05:16,240 --> 00:05:17,760 該列可以容納整數。 106 00:05:17,760 --> 00:05:21,077 而有變化thereon-- SMALLINT,TINYINT,MEDIUMINT,BIGINT。 107 00:05:21,077 --> 00:05:22,660 也許我們並不總是需要四個叮咬。 108 00:05:22,660 --> 00:05:26,800 也許我們需要8個字節,所以我們 可以使用整數這些變化 109 00:05:26,800 --> 00:05:28,510 要多一點空間,高效。 110 00:05:28,510 --> 00:05:31,899 我們可以做的十進制數,我們 可以做浮點數。 111 00:05:31,899 --> 00:05:32,940 這是非常相似的。 112 00:05:32,940 --> 00:05:34,773 有一定的差異, 如果你願意 113 00:05:34,773 --> 00:05:37,330 想查找 SQL排序指導,你 114 00:05:37,330 --> 00:05:40,670 可以看到輕微 區別是它們之間。 115 00:05:40,670 --> 00:05:43,250 >> 也許我們要存儲 關於日期和時間信息。 116 00:05:43,250 --> 00:05:47,047 也許我們跟踪 當用戶加入了我們的網站, 117 00:05:47,047 --> 00:05:48,880 所以,也許我們要 有一列的 118 00:05:48,880 --> 00:05:52,820 日期時間或時間戳 表示當用戶實際上 119 00:05:52,820 --> 00:05:54,130 報了名。 120 00:05:54,130 --> 00:05:56,132 我們可以做的幾何形狀和線串。 121 00:05:56,132 --> 00:05:57,340 這實際上是很酷。 122 00:05:57,340 --> 00:06:01,410 我們可以繪製出 使用地理區域 123 00:06:01,410 --> 00:06:05,110 GIS坐標繪製出的區域。 124 00:06:05,110 --> 00:06:08,580 所以實際上可以存儲排序 在一個SQL列信息。 125 00:06:08,580 --> 00:06:11,390 >> 文本是文本的只是巨大的斑點,也許。 126 00:06:11,390 --> 00:06:12,840 枚舉是一種有趣的。 127 00:06:12,840 --> 00:06:16,080 他們實際上存在於C.我們不 談論他們,因為他們不 128 00:06:16,080 --> 00:06:19,110 非常常用,至少CS50。 129 00:06:19,110 --> 00:06:22,680 但它是一個枚舉數據類型, 能夠保持限制值。 130 00:06:22,680 --> 00:06:25,940 >> 一個真正很好的例子是 創建一個枚舉,其中七 131 00:06:25,940 --> 00:06:29,394 可能的值是星期日,星期一, 週二,週三,週四,週五, 132 00:06:29,394 --> 00:06:30,060 週六,對不對? 133 00:06:30,060 --> 00:06:33,311 對這些數據類型的天 週不存在, 134 00:06:33,311 --> 00:06:35,310 但我們可以創建一個 枚舉數據類型, 135 00:06:35,310 --> 00:06:39,400 這列永遠只能容納 其中的一個七個可能的值。 136 00:06:39,400 --> 00:06:44,300 我們列舉所有 的可能值。 137 00:06:44,300 --> 00:06:47,630 >> 然後我們有CHAR和VARCHAR, 我已經上色這些綠色 138 00:06:47,630 --> 00:06:49,505 因為我們實際上 要採取第二 139 00:06:49,505 --> 00:06:51,950 談論的區別 這兩件事情之間。 140 00:06:51,950 --> 00:06:55,780 所以CHAR,不像C,其中 CHAR是單個字符, 141 00:06:55,780 --> 00:07:00,730 SQL中的CHAR指 一個固定長度的字符串。 142 00:07:00,730 --> 00:07:02,620 而當我們創建這個 專欄中,我們實際上 143 00:07:02,620 --> 00:07:05,070 可以指定字符串的長度。 144 00:07:05,070 --> 00:07:08,080 >> 所以在這個例子中, 我們可以說CHAR(10)。 145 00:07:08,080 --> 00:07:11,190 這意味著,每 該列的元件 146 00:07:11,190 --> 00:07:13,910 將包括10字節的信息。 147 00:07:13,910 --> 00:07:15,770 沒有更多,不會少。 148 00:07:15,770 --> 00:07:21,780 因此,如果我們試圖把一個15 位或15字符元素 149 00:07:21,780 --> 00:07:25,340 或值此列, 我們只拿到了前10。 150 00:07:25,340 --> 00:07:27,290 如果我們把在兩 字符長的值, 151 00:07:27,290 --> 00:07:30,700 我們將有兩個 字符,然後8空叮咬。 152 00:07:30,700 --> 00:07:34,990 我們永遠不會比這更有效。 153 00:07:34,990 --> 00:07:37,727 >> 一個varchar是一種像 我們一串概念 154 00:07:37,727 --> 00:07:39,560 我們已經很熟悉 從C或從PHP。 155 00:07:39,560 --> 00:07:40,830 這是一個可變長度的字符串。 156 00:07:40,830 --> 00:07:42,560 當你創建 這個專欄中,你只要 157 00:07:42,560 --> 00:07:44,860 指定的最大可能長度。 158 00:07:44,860 --> 00:07:49,065 因此,也許99或通常255。 159 00:07:49,065 --> 00:07:50,440 這將是最大長度。 160 00:07:50,440 --> 00:07:52,890 所以,如果我們存儲 15文字串, 161 00:07:52,890 --> 00:07:56,157 我們將使用15個字節,也許16 字節的空終止。 162 00:07:56,157 --> 00:07:57,990 如果我們存儲 三個字符的字符串, 163 00:07:57,990 --> 00:08:01,120 我們將使用三個或四個字節。 164 00:08:01,120 --> 00:08:03,050 但是,我們不會使用完整的99。 165 00:08:03,050 --> 00:08:05,190 >> 那麼,為什麼我們兼得? 166 00:08:05,190 --> 00:08:08,210 那麼,如果我們需要弄清楚如何 長的東西是一個VARCHAR, 167 00:08:08,210 --> 00:08:10,680 我們有一種迭代的 通過它就像我們用C做 168 00:08:10,680 --> 00:08:12,230 並找出它停止。 169 00:08:12,230 --> 00:08:15,920 而如果我們知道這一切 在此列是10個字節​​,也許 170 00:08:15,920 --> 00:08:19,220 我們知道的信息,我們可以跳 10字節,10字節,10字節,10字節, 171 00:08:19,220 --> 00:08:21,790 始終找不到了 開頭的字符串。 172 00:08:21,790 --> 00:08:25,210 >> 因此,我們可能有一些 浪費的空間用CHAR, 173 00:08:25,210 --> 00:08:28,510 但也許有一個貿易 關閉有更好的速度 174 00:08:28,510 --> 00:08:30,160 在導航數據庫。 175 00:08:30,160 --> 00:08:32,330 但也許我們想要的 VARCHAR類型的靈活性 176 00:08:32,330 --> 00:08:36,710 而不是having--如果我們的CHAR 是255的,但我們的大多數用戶 177 00:08:36,710 --> 00:08:40,537 只輸入三個或四個字節 的信息價值或三個或四個 178 00:08:40,537 --> 00:08:41,870 字符的信息價值。 179 00:08:41,870 --> 00:08:44,324 >> 但是,一些用戶使用 整個255,也許 180 00:08:44,324 --> 00:08:45,990 VARCHAR會比較合適那裡。 181 00:08:45,990 --> 00:08:49,840 這有點交易的關閉, 一般為了CS50的, 182 00:08:49,840 --> 00:08:54,107 你不必太擔心 無論您使用的是CHAR或VARCHAR。 183 00:08:54,107 --> 00:08:57,190 但在現實世界中,這些東西 做的事,因為所有這些列 184 00:08:57,190 --> 00:08:59,300 佔用實際的物理空間。 185 00:08:59,300 --> 00:09:04,150 和物理空間,在 現實世界中,是有溢價。 186 00:09:04,150 --> 00:09:06,800 >> 所以有其他考慮 你建立一個表時, 187 00:09:06,800 --> 00:09:09,840 是選擇一列是 什麼叫做一個主鍵。 188 00:09:09,840 --> 00:09:14,350 和主鍵是一列 其中,每一個值是唯一的。 189 00:09:14,350 --> 00:09:19,980 這意味著,你可以很容易地 挑選出的單行只是看 190 00:09:19,980 --> 00:09:22,450 在該行的主鍵。 191 00:09:22,450 --> 00:09:24,580 因此,例如,你 通常,與用戶, 192 00:09:24,580 --> 00:09:27,210 不想讓兩個用戶誰 具有相同的用戶ID號。 193 00:09:27,210 --> 00:09:28,960 所以,也許你有 大量的信息, 194 00:09:28,960 --> 00:09:30,793 也許兩個用戶 具有相同的name-- 195 00:09:30,793 --> 00:09:32,650 你有約翰·史密斯和約翰·史密斯。 196 00:09:32,650 --> 00:09:34,520 這不一定是一個問題, 因為有多人 197 00:09:34,520 --> 00:09:35,830 在名為約翰·史密斯的世界。 198 00:09:35,830 --> 00:09:40,766 但是,我們只有一個用戶ID號 10,一個用戶ID號11,12,13。 199 00:09:40,766 --> 00:09:42,640 我們沒有兩個用戶 用相同的號碼, 200 00:09:42,640 --> 00:09:46,010 所以也許用戶ID號 將是一個好主鍵。 201 00:09:46,010 --> 00:09:48,610 >> 我們沒有任何重複, 我們現在可以唯一地 202 00:09:48,610 --> 00:09:52,619 只是識別每一行 通過查看該列。 203 00:09:52,619 --> 00:09:55,410 選擇主鍵實際上可以 進行後續表操作 204 00:09:55,410 --> 00:09:59,710 輕鬆很多,因為你可以利用 一個事實,即某些行會 205 00:09:59,710 --> 00:10:02,720 是唯一的,或者某些列 你的數據庫或表 206 00:10:02,720 --> 00:10:06,030 將是唯一的挑 出特定的行。 207 00:10:06,030 --> 00:10:08,790 >> 你也可以有一個聯合主 密鑰,你會發現機會 208 00:10:08,790 --> 00:10:11,720 使用,這僅僅是一個 兩列的組合,其 209 00:10:11,720 --> 00:10:13,280 保證是唯一的。 210 00:10:13,280 --> 00:10:16,410 因此,也許你有一個 列的AS和B, 211 00:10:16,410 --> 00:10:19,290 一列這是一個,兩個, 三,但你永遠只 212 00:10:19,290 --> 00:10:23,660 有一個單一的A 1,單 A2,等等等等。 213 00:10:23,660 --> 00:10:28,980 但是,你可能有一個B2,一 C 2,或A1,A2,A3,A4。 214 00:10:28,980 --> 00:10:32,840 所以,你可能有多個如,多 燒烤,多的,多三三兩兩, 215 00:10:32,840 --> 00:10:38,567 但你永遠只能有一個 單A1,B2,C3等。 216 00:10:38,567 --> 00:10:40,400 所以,正如我所說的,SQL是一種 編程語言, 217 00:10:40,400 --> 00:10:42,024 但它有一個相當有限的詞彙。 218 00:10:42,024 --> 00:10:44,880 這是不是很廣闊的 C和PHP等語言 219 00:10:44,880 --> 00:10:46,350 我們在談的過程中。 220 00:10:46,350 --> 00:10:49,960 它是更詳細的一 語言比我們 221 00:10:49,960 --> 00:10:52,789 要在此談談 視頻,因為在這個視頻 222 00:10:52,789 --> 00:10:54,830 我們要談 四則運算我們 223 00:10:54,830 --> 00:10:55,720 可以對表執行。 224 00:10:55,720 --> 00:10:56,761 >> 還有比這更多。 225 00:10:56,761 --> 00:10:58,730 我們可以做的比這更多, 但我們的目的, 226 00:10:58,730 --> 00:11:02,250 我們通常將要使用 短短四年operations--插入, 227 00:11:02,250 --> 00:11:05,360 選擇,更新和刪除。 228 00:11:05,360 --> 00:11:08,750 你大概可以直觀地猜測 什麼所有這四個事情要做。 229 00:11:08,750 --> 00:11:12,520 但是,我們將進入一個位 細節上的每一個。 230 00:11:12,520 --> 00:11:15,780 >> 所以為便於這 視頻,讓我們假設 231 00:11:15,780 --> 00:11:18,870 我們有以下兩種 表在單個數據庫中。 232 00:11:18,870 --> 00:11:23,460 我們有有一個表稱為用戶 4 columns-- ID號,用戶名, 233 00:11:23,460 --> 00:11:25,350 密碼和全名。 234 00:11:25,350 --> 00:11:27,430 我們有一個第二 表在同一數據庫中 235 00:11:27,430 --> 00:11:32,129 叫媽媽,只是存儲信息 關於用戶名和母親。 236 00:11:32,129 --> 00:11:33,920 因此,對於所有的實施例 在這段視頻中,我們將 237 00:11:33,920 --> 00:11:37,945 使用此數據庫並 後續更新它。 238 00:11:37,945 --> 00:11:40,070 因此,讓我們說,我們要 信息添加到表中。 239 00:11:40,070 --> 00:11:44,460 這就是插入操作做什麼。 240 00:11:44,460 --> 00:11:46,550 在解釋所有 這些命令,我​​要去 241 00:11:46,550 --> 00:11:48,860 給你一個總體框架來使用。 242 00:11:48,860 --> 00:11:51,661 因為基本上,查詢 打算看非常相似, 243 00:11:51,661 --> 00:11:54,660 我們只是要改變 略微不同的信息 244 00:11:54,660 --> 00:11:56,750 做不同的事情與表。 245 00:11:56,750 --> 00:11:59,200 >> 所以對於INSERT,骨架 看起來有點像這樣。 246 00:11:59,200 --> 00:12:02,230 我們要插入到 一個特定的表。 247 00:12:02,230 --> 00:12:05,290 然後,我們有一個開放的括號 和列的列表 248 00:12:05,290 --> 00:12:08,070 我們希望把值放入。 249 00:12:08,070 --> 00:12:10,974 關閉括號中, 下面的值,然後 250 00:12:10,974 --> 00:12:13,390 再次,我們列出的值 我們希望把在表中。 251 00:12:13,390 --> 00:12:15,950 >> 這所以一個例子 將是如下。 252 00:12:15,950 --> 00:12:19,170 我想插入到表 用戶以下columns-- 253 00:12:19,170 --> 00:12:21,010 用戶名,密碼和全名。 254 00:12:21,010 --> 00:12:25,282 因此,一個新行,其中我把 在這三列,我們很 255 00:12:25,282 --> 00:12:30,030 打算把在值 紐曼,USMAIL,和紐曼。 256 00:12:30,030 --> 00:12:32,730 因此,在這種情況下,我 把小寫紐曼 257 00:12:32,730 --> 00:12:38,710 入用戶名欄,密碼 USMAIL,並全稱資本ñ 258 00:12:38,710 --> 00:12:41,940 紐曼進入全名列。 259 00:12:41,940 --> 00:12:44,240 >> 因此,這裡就是數據庫 看起來像以前一樣。 260 00:12:44,240 --> 00:12:48,250 下面是用戶表上 頂級前看著我們這樣做等。 261 00:12:48,250 --> 00:12:50,760 當我們執行這個 查詢,我們得到這個。 262 00:12:50,760 --> 00:12:54,790 我們增加了一個新行到表中。 263 00:12:54,790 --> 00:12:56,810 但請注意這樣一件事 我沒有具體說明, 264 00:12:56,810 --> 00:12:59,880 但不知何故,我已經有了一個值 對,這就是這12個就在這裡。 265 00:12:59,880 --> 00:13:02,820 我並沒有說我想 把ID號在那裡。 266 00:13:02,820 --> 00:13:04,900 我希望把用戶名, 密碼,全稱。 267 00:13:04,900 --> 00:13:06,440 而我做了,這很好。 268 00:13:06,440 --> 00:13:07,760 >> 但我也得到了這個12。 269 00:13:07,760 --> 00:13:09,490 為什麼我得到這12? 270 00:13:09,490 --> 00:13:12,904 嗯,事實證明, 當你定義 271 00:13:12,904 --> 00:13:15,570 這將是一列你 主鍵,通常是, 272 00:13:15,570 --> 00:13:16,510 就像我說的,一個ID號。 273 00:13:16,510 --> 00:13:18,718 這並不一定總是 將是一個ID號碼, 274 00:13:18,718 --> 00:13:22,380 但它通常是一個好主意 是某種整數值。 275 00:13:22,380 --> 00:13:25,950 你必須在phpMyAdmin的選擇 你創建數據庫時 276 00:13:25,950 --> 00:13:31,130 或者你的表設置 列自動遞增。 277 00:13:31,130 --> 00:13:34,520 >> 這是一個非常好的主意時, 你有一個主鍵的工作, 278 00:13:34,520 --> 00:13:39,330 因為你想每個值 該列中是唯一的。 279 00:13:39,330 --> 00:13:43,310 如果你忘記指定 它為一個以上的人, 280 00:13:43,310 --> 00:13:46,240 你現在有一個情況 該列不再是唯一的。 281 00:13:46,240 --> 00:13:50,200 你有兩個空格,這樣你就可以沒有 較長的唯一標識一個column-- 282 00:13:50,200 --> 00:13:54,150 或者你可以不再唯一 確定根據該列一行。 283 00:13:54,150 --> 00:13:57,010 它失去了它的所有 值作為主鍵。 284 00:13:57,010 --> 00:14:02,010 >> 所以顯然我做了什麼 這裡被配置的用戶ID 285 00:14:02,010 --> 00:14:07,790 列自動遞增,使每個 時間我想補充信息表, 286 00:14:07,790 --> 00:14:12,220 它會自動給我 對於主鍵的值。 287 00:14:12,220 --> 00:14:15,570 所以,我永遠也不會忘記這樣做,因為 數據庫會為我做的。 288 00:14:15,570 --> 00:14:16,587 所以這是一種很好的。 289 00:14:16,587 --> 00:14:18,670 所以這就是為什麼我們得到 12在那裡,因為我 290 00:14:18,670 --> 00:14:21,772 設置列設置為自動遞增。 291 00:14:21,772 --> 00:14:23,730 如果我加別人 這將會是13,如果我加入 292 00:14:23,730 --> 00:14:27,890 人家這將會是14,依此類推。 293 00:14:27,890 --> 00:14:30,190 >> 因此,讓我們只是做一個更多的插入。 294 00:14:30,190 --> 00:14:34,530 我們會插入到媽媽表中, 特別是,用戶名和母 295 00:14:34,530 --> 00:14:37,390 列,值 克萊默和巴布斯克雷默。 296 00:14:37,390 --> 00:14:39,140 因此,我們以前有這個。 297 00:14:39,140 --> 00:14:41,800 當我們執行該 SQL查詢,我們有這個。 298 00:14:41,800 --> 00:14:47,290 我們增加了克萊默和巴布斯 克萊默向媽媽表。 299 00:14:47,290 --> 00:14:48,350 >> 所以這是插入。 300 00:14:48,350 --> 00:14:51,850 選擇是我們用它來提取 從表中的信息。 301 00:14:51,850 --> 00:14:54,390 因此,這是我們如何得到 信息從數據庫中。 302 00:14:54,390 --> 00:14:59,589 所以SELECT命令都將是 非常經常用於編程。 303 00:14:59,589 --> 00:15:02,130 一般framework--的 普通的骨架看起來是這樣的。 304 00:15:02,130 --> 00:15:06,550 選擇一組列 一個表,然後任選 305 00:15:06,550 --> 00:15:11,090 你可以指定一個condition--或 我們通常所說的謂語, 306 00:15:11,090 --> 00:15:13,010 通常我們在SQL中使用的術語。 307 00:15:13,010 --> 00:15:16,490 >> 但它基本上是什麼 你要特別行獲得。 308 00:15:16,490 --> 00:15:19,100 如果你想要的,而不是獲取 一切,縮小它, 309 00:15:19,100 --> 00:15:20,060 這是在那裡你會做到這一點。 310 00:15:20,060 --> 00:15:22,777 然後選擇性地,你也可以 命令由一個特定的列。 311 00:15:22,777 --> 00:15:25,860 因此,也許你想擁有的東西排序 按字母順序的基礎上一列 312 00:15:25,860 --> 00:15:27,540 按字母順序或基於另一個。 313 00:15:27,540 --> 00:15:30,610 >> 再次,WHERE和ORDER BY是可選的。 314 00:15:30,610 --> 00:15:32,681 但是,他們很可能會 useful--特別 315 00:15:32,681 --> 00:15:34,680 哪裡會是有益的 縮小讓你不 316 00:15:34,680 --> 00:15:37,460 讓你的整個數據庫背部和 必須處理它,你只得到 317 00:15:37,460 --> 00:15:39,300 它的作品,你所關心的。 318 00:15:39,300 --> 00:15:44,932 因此,舉例來說,我可能要選擇 從用戶的ID號和全名。 319 00:15:44,932 --> 00:15:46,140 所以,什麼才是這個樣子呢? 320 00:15:46,140 --> 00:15:48,270 因此,這裡是我的用戶表。 321 00:15:48,270 --> 00:15:51,080 我想選擇IDNUM 和全名的用戶。 322 00:15:51,080 --> 00:15:52,300 我該怎麼走? 323 00:15:52,300 --> 00:15:53,580 我要得到這一點。 324 00:15:53,580 --> 00:15:56,930 我並沒有縮小它,所以我 獲得的ID號的每一行 325 00:15:56,930 --> 00:16:00,850 而我得到的全部 從每列名。 326 00:16:00,850 --> 00:16:02,210 >> 確定。 327 00:16:02,210 --> 00:16:05,640 如果我要選擇密碼 從用戶WHERE--所以現在 328 00:16:05,640 --> 00:16:10,370 我加入一個條件,一個predicate-- 其中IDNUM小於12。 329 00:16:10,370 --> 00:16:13,660 因此,這裡是我的數據庫再次, 我的用戶表的頂部。 330 00:16:13,660 --> 00:16:17,030 我該怎麼得到,如果我想 選擇信息,密碼, 331 00:16:17,030 --> 00:16:21,550 其中用戶ID或IDNUM小於12? 332 00:16:21,550 --> 00:16:24,910 我要得到這 信息反饋,對不對? 333 00:16:24,910 --> 00:16:29,170 它發生IDNUM是10以下, 超過12,ID號11小於12。 334 00:16:29,170 --> 00:16:32,160 我得到的密碼,這些行。 335 00:16:32,160 --> 00:16:33,914 這就是我要的。 336 00:16:33,914 --> 00:16:34,580 怎麼樣? 337 00:16:34,580 --> 00:16:39,170 如果我要選擇從星 媽媽表其中username等於傑里? 338 00:16:39,170 --> 00:16:43,780 OK,選擇明星是特 排序外卡的所謂 339 00:16:43,780 --> 00:16:45,670 我們用它來搞定一切。 340 00:16:45,670 --> 00:16:48,620 所以他們說選擇 用戶名逗號的母親,這 341 00:16:48,620 --> 00:16:51,060 碰巧是僅 兩列此表, 342 00:16:51,060 --> 00:16:53,260 我可以選擇星級 並得到一切 343 00:16:53,260 --> 00:16:55,030 其中,用戶名等於傑里。 344 00:16:55,030 --> 00:16:59,380 所以這就是我會得到 如果我做了特定的查詢。 345 00:16:59,380 --> 00:17:01,810 >> 現在,數據庫 偉大的,因為他們允許 346 00:17:01,810 --> 00:17:06,074 我們也許是組織信息 多一點效率比我們 347 00:17:06,074 --> 00:17:06,740 否則可能會。 348 00:17:06,740 --> 00:17:10,240 我們並不一定存儲 信息各相關件 349 00:17:10,240 --> 00:17:12,230 大約在同一表的用戶。 350 00:17:12,230 --> 00:17:13,730 我們有兩個表存在。 351 00:17:13,730 --> 00:17:15,734 >> 我們需要存儲 每個人的母親的名字, 352 00:17:15,734 --> 00:17:18,900 也許我們沒有社會保障 數,我們有他們的出生日期。 353 00:17:18,900 --> 00:17:21,819 這並不總是需要 是在同一個表。 354 00:17:21,819 --> 00:17:25,339 只要我們可以定義 在tables--之間的關係 355 00:17:25,339 --> 00:17:28,440 而這也正是這關係 哪種數據庫術語起源 356 00:17:28,440 --> 00:17:32,130 進入play--只要我們可以定義 表之間的關係, 357 00:17:32,130 --> 00:17:35,545 之類的,我們可以劃分 或抽象事物的方式, 358 00:17:35,545 --> 00:17:37,670 在這裡我們只有 真正重要的信息 359 00:17:37,670 --> 00:17:39,270 我們關心用戶的表。 360 00:17:39,270 --> 00:17:43,220 然後我們有輔助信息 在其他表或額外的信息 361 00:17:43,220 --> 00:17:48,260 我們可以回到連接到主 用戶表中的某個特定的方式。 362 00:17:48,260 --> 00:17:52,200 >> 所以在這裡,我們有這兩個表,但 有它們之間的關係, 363 00:17:52,200 --> 00:17:53,010 對不對? 364 00:17:53,010 --> 00:17:55,070 這似乎是用戶名 可能是什麼 365 00:17:55,070 --> 00:17:59,909 中存在之間的共同 這兩個不同的表。 366 00:17:59,909 --> 00:18:01,700 那麼,如果我們現在有 的情況下,我們 367 00:18:01,700 --> 00:18:06,046 希望從中獲取用戶的全名 用戶的表,和他們的母親 368 00:18:06,046 --> 00:18:07,170 從母親表名? 369 00:18:07,170 --> 00:18:10,960 我們沒有辦法讓 那樣子,對不對? 370 00:18:10,960 --> 00:18:17,790 有不包含單個表 雙方的全名和母親的名字。 371 00:18:17,790 --> 00:18:20,400 我們沒有這個選項 從我們到目前為止看到的。 372 00:18:20,400 --> 00:18:22,950 >> 因此,我們就來介紹 一個JOIN的想法。 373 00:18:22,950 --> 00:18:24,857 並加入可能 最complex-- 374 00:18:24,857 --> 00:18:27,940 這真是最複雜的操作 我們要談的視頻。 375 00:18:27,940 --> 00:18:30,040 他們是有點複雜, 但一旦你得到了它的竅門, 376 00:18:30,040 --> 00:18:31,248 他們實際上是不是太糟糕。 377 00:18:31,248 --> 00:18:32,820 這只是一個選擇的一個特例。 378 00:18:32,820 --> 00:18:37,120 我們要選擇一組 加入從表中的列 379 00:18:37,120 --> 00:18:40,650 在一些謂詞第二個表。 380 00:18:40,650 --> 00:18:45,340 >> 在這種情況下,考慮一下像this-- 表一是一圈過來, 381 00:18:45,340 --> 00:18:47,530 表二是另一個圈子在這裡。 382 00:18:47,530 --> 00:18:49,410 並說明上游部分 在中間,它的 383 00:18:49,410 --> 00:18:51,701 有點像,如果你認為 關於作為一個維恩圖,是什麼 384 00:18:51,701 --> 00:18:52,670 他們有什麼共同點? 385 00:18:52,670 --> 00:18:55,960 我們想鏈接這兩個表 根據他們的共同點 386 00:18:55,960 --> 00:19:01,230 創造這個假設的表 這是兩人在一起的合併。 387 00:19:01,230 --> 00:19:03,480 所以我們會看到這一點的 例如,也許這會幫助 388 00:19:03,480 --> 00:19:04,521 它清除掉一點點。 389 00:19:04,521 --> 00:19:09,260 因此,也許你想選擇 user.fullname和moms.mother 390 00:19:09,260 --> 00:19:13,220 從用戶的加入,在 在任何情況下媽媽表 391 00:19:13,220 --> 00:19:16,790 其中username列 是它們之間的相同。 392 00:19:16,790 --> 00:19:19,240 這是一個新的 語法在這裡,這個用戶。 393 00:19:19,240 --> 00:19:20,460 和媽媽.. 394 00:19:20,460 --> 00:19:26,697 如果我做多個表 在一起,我可以指定一個表。 395 00:19:26,697 --> 00:19:29,530 我可以在特定的區別 上在最底層那裡。 396 00:19:29,530 --> 00:19:33,220 我可以區分用戶名 用戶表列 397 00:19:33,220 --> 00:19:36,010 從的username列 媽媽表,它是otherwise-- 398 00:19:36,010 --> 00:19:38,070 如果我們剛才說的用戶名等於 用戶名,並沒有真正 399 00:19:38,070 --> 00:19:38,970 意味著什麼。 400 00:19:38,970 --> 00:19:41,440 我們想這樣做,他們匹配。 401 00:19:41,440 --> 00:19:46,080 >> 所以,我可以指定表和 在殼體的情況列名 402 00:19:46,080 --> 00:19:48,370 哪裡會不清楚 我在說什麼。 403 00:19:48,370 --> 00:19:51,880 所以,這就是我做的有我 從這個表說此列, 404 00:19:51,880 --> 00:19:54,020 而且是非常明確的。 405 00:19:54,020 --> 00:19:56,810 所以,再一次,我選擇 全名和母親的名字 406 00:19:56,810 --> 00:20:00,950 從用戶表連接在一起 在任何情況下的媽媽表 407 00:20:00,950 --> 00:20:05,960 在那裡他們共享column-- 它們共享該用戶名的概念。 408 00:20:05,960 --> 00:20:08,580 >> 因此,這裡是我們以前的表。 409 00:20:08,580 --> 00:20:12,210 這是我們的國家 數據庫作為它存在現在。 410 00:20:12,210 --> 00:20:16,390 我們提取信息 這是開始。 411 00:20:16,390 --> 00:20:19,820 這是新的表格,我們要去 創建這些結合在一起。 412 00:20:19,820 --> 00:20:23,585 同時注意我們不突出 紐曼的行中的用戶的表, 413 00:20:23,585 --> 00:20:25,960 我們不是在突出 克萊默的行中的媽媽表 414 00:20:25,960 --> 00:20:31,250 因為沒有一個存在於 無論sets--兩個表。 415 00:20:31,250 --> 00:20:36,260 >> 這是僅有一個共同的信息 它們之間是傑里的兩個表中 416 00:20:36,260 --> 00:20:39,100 和gcostanza既是表。 417 00:20:39,100 --> 00:20:42,620 所以,當我們在SQL JOIN,我們 get--我們做真正得到這一點。 418 00:20:42,620 --> 00:20:44,830 這有點一個臨時變量。 419 00:20:44,830 --> 00:20:47,330 這就像一個假設 合併這兩個表中。 420 00:20:47,330 --> 00:20:49,930 實際上,我們得到的東西 這樣,在 421 00:20:49,930 --> 00:20:54,730 我們在表合併在一起 它們在共同的信息。 422 00:20:54,730 --> 00:20:58,334 >> 所以請注意users.username 和moms.username列, 423 00:20:58,334 --> 00:20:59,250 它是完全一樣的。 424 00:20:59,250 --> 00:21:01,820 這是信息 是來自用戶的一致 425 00:21:01,820 --> 00:21:02,890 表和媽媽表。 426 00:21:02,890 --> 00:21:04,270 所以,我們合併在一起。 427 00:21:04,270 --> 00:21:06,919 我們丟棄的克萊默,因為他 在用戶表中不存在, 428 00:21:06,919 --> 00:21:09,710 我們拋棄紐曼,因為 他沒有在母親表中存在。 429 00:21:09,710 --> 00:21:16,450 因此,這是假設合併 使用SELECT的JOIN操作。 430 00:21:16,450 --> 00:21:21,250 >> 然後,我們正在尋找的 用戶的全名和用戶的媽媽, 431 00:21:21,250 --> 00:21:24,999 因此,這是信息 我們會從整個查詢 432 00:21:24,999 --> 00:21:26,040 我們用SELECT進行。 433 00:21:26,040 --> 00:21:28,873 因此,我們加入了表一起 我們提取這兩列, 434 00:21:28,873 --> 00:21:31,610 所以,這就是我們會得到。 435 00:21:31,610 --> 00:21:33,370 但是SQL連接是一種複雜的。 436 00:21:33,370 --> 00:21:36,770 你可能不會做他們太多, 但只是有骨架的一些想法 437 00:21:36,770 --> 00:21:41,992 你可以用它來合併兩個 表如果你一起需要。 438 00:21:41,992 --> 00:21:43,700 最後兩個是一 簡單一點我保證。 439 00:21:43,700 --> 00:21:48,040 所以在更新,我們可以使用UPDATE 改變表中的信息。 440 00:21:48,040 --> 00:21:53,880 一般格式是更新一些 表中,設置一些列的一些值 441 00:21:53,880 --> 00:21:55,540 WHERE一些謂詞是滿意的。 442 00:21:55,540 --> 00:21:57,850 因此,例如,我們可能要 更新用戶表 443 00:21:57,850 --> 00:22:04,400 並設置密碼亞達 亞達,其中ID號是10。 444 00:22:04,400 --> 00:22:06,400 >> 因此,在這種情況下,我們 更新用戶表。 445 00:22:06,400 --> 00:22:08,275 ID號是10,用於 那裡,第一行中, 446 00:22:08,275 --> 00:22:10,690 我們要更新 密碼內容十分重要。 447 00:22:10,690 --> 00:22:12,170 所以這是會發生什麼。 448 00:22:12,170 --> 00:22:13,628 這是非常簡單的,對不對? 449 00:22:13,628 --> 00:22:17,990 這只是一個很簡單的 修改該表。 450 00:22:17,990 --> 00:22:22,250 >> DELETE是我們用來操作 從表中刪除的信息。 451 00:22:22,250 --> 00:22:24,817 DELETE FROM表WHERE 一些謂詞是滿意的。 452 00:22:24,817 --> 00:22:26,900 我們要從中刪除 用戶表例如 453 00:22:26,900 --> 00:22:28,254 其中,用戶名是紐曼。 454 00:22:28,254 --> 00:22:31,420 你可能已經猜到了什麼事情 在這裡發生之後,我們執行的SQL 455 00:22:31,420 --> 00:22:35,790 查詢,紐曼走了從表中。 456 00:22:35,790 --> 00:22:40,460 >> 因此,所有這些操作,因為我已​​經說過了, 是很容易做到在phpMyAdmin。 457 00:22:40,460 --> 00:22:43,020 這是一個非常友好的用戶界面。 458 00:22:43,020 --> 00:22:45,930 但它確實需要手動操作。 459 00:22:45,930 --> 00:22:47,840 我們不想聘請手動操作。 460 00:22:47,840 --> 00:22:51,280 我們希望我們的節目 做到這一點對我們來說,對不對? 461 00:22:51,280 --> 00:22:53,190 因此,我們可能想要做的 這種編程方式。 462 00:22:53,190 --> 00:22:56,410 我們希望將SQL和有 別的東西,為我們做到這一點。 463 00:22:56,410 --> 00:23:02,710 >> 但是,我們已經看到,它允許 我們以編程方式做一些事情? 464 00:23:02,710 --> 00:23:03,690 我們已經看到了PHP的,對不對? 465 00:23:03,690 --> 00:23:05,760 它介紹了一些 動力到我們的節目。 466 00:23:05,760 --> 00:23:10,430 所以幸運的是,SQL和 PHP玩的很漂亮起來。 467 00:23:10,430 --> 00:23:13,230 有一個在PHP函數 稱為查詢,它都可以使用。 468 00:23:13,230 --> 00:23:15,870 你可以通過為 參數或參數 469 00:23:15,870 --> 00:23:19,210 查詢一個SQL查詢 您想執行。 470 00:23:19,210 --> 00:23:23,250 和PHP會做以您的名義。 471 00:23:23,250 --> 00:23:25,564 >> 所以,你已經接通後 用PHP數據庫, 472 00:23:25,564 --> 00:23:26,980 有兩大初選你這樣做。 473 00:23:26,980 --> 00:23:29,230 有一種叫做MySQLi的 而一些所謂的PDO。 474 00:23:29,230 --> 00:23:31,063 我們不會進入一個巨大的 大量的細節那裡。 475 00:23:31,063 --> 00:23:32,957 在CS50,我們使用PDO。 476 00:23:32,957 --> 00:23:34,790 您已經連接後 你的數據庫, 477 00:23:34,790 --> 00:23:40,980 然後可以進行查詢數據庫 通過把查詢作為參數 478 00:23:40,980 --> 00:23:42,730 到PHP函數。 479 00:23:42,730 --> 00:23:46,460 當你這樣做,你存儲 在關聯數組結果集。 480 00:23:46,460 --> 00:23:50,290 >> 而且我們知道如何一起工作 關聯數組在PHP。 481 00:23:50,290 --> 00:23:52,630 所以,我可能會說 像this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 這是在PHP--等於查詢。 483 00:23:55,470 --> 00:23:57,660 和然後把裡面的 查詢功能參數 484 00:23:57,660 --> 00:24:00,130 那我傳遞查詢 看起來像SQL。 485 00:24:00,130 --> 00:24:01,160 而事實上這是SQL。 486 00:24:01,160 --> 00:24:05,700 這是查詢字符串,我會 喜歡在我的數據庫中執行。 487 00:24:05,700 --> 00:24:09,250 >> 因此紅色,這是PHP。 488 00:24:09,250 --> 00:24:11,890 這是SQL,我很 納入PHP通過 489 00:24:11,890 --> 00:24:15,020 它的參數,查詢功能。 490 00:24:15,020 --> 00:24:19,640 我想從選擇全名 其中,用戶ID號等於10。 491 00:24:19,640 --> 00:24:22,560 然後,也許以後我做到了這一點, 我可能會說這樣的事情。 492 00:24:22,560 --> 00:24:25,550 我想打印出來的 消息謝謝登錄。 493 00:24:25,550 --> 00:24:32,530 >> 我希望它interpolate--我想 插值$結果全名。 494 00:24:32,530 --> 00:24:36,280 所以,這就是我與該是如何工作的 我回來關聯數組。 495 00:24:36,280 --> 00:24:39,730 $結果全稱會 基本上結束了打印輸出, 496 00:24:39,730 --> 00:24:42,870 感謝登錄,傑里宋飛。 497 00:24:42,870 --> 00:24:46,570 這是全名 其中,IDNUM等於10。 498 00:24:46,570 --> 00:24:48,850 >> 所以我做的 是我now--我存儲 499 00:24:48,850 --> 00:24:52,780 我的查詢,我的查詢結果 並導致一個關聯數組, 500 00:24:52,780 --> 00:24:56,330 和全名是名 在專欄中,我漸漸的。 501 00:24:56,330 --> 00:25:01,010 所以這是我的鑰匙插入結果 我想關聯數組。 502 00:25:01,010 --> 00:25:05,930 所以感謝登錄,$結果, 全名會打印出來,將繼續堅持 503 00:25:05,930 --> 00:25:08,654 就在這些花間 牙套,傑里宋飛。 504 00:25:08,654 --> 00:25:11,820 我會想打印出的信息 感謝您登錄傑里宋飛。 505 00:25:11,820 --> 00:25:16,652 >> 現在,我們可能不希望辛苦 代碼之類的東西在,對吧? 506 00:25:16,652 --> 00:25:19,860 我們可能想要做類似打印 f,其中我們可以代替,也許 507 00:25:19,860 --> 00:25:22,443 收集不同的信息, 或者有查詢過程 508 00:25:22,443 --> 00:25:23,370 不同的信息。 509 00:25:23,370 --> 00:25:27,920 因此查詢時,查詢功能有 排序換人的這一概念 510 00:25:27,920 --> 00:25:32,310 非常相似的打印˚F百分之小號 和百分比C,是問號。 511 00:25:32,310 --> 00:25:34,290 >> 我們可以使用問題 標誌非常類似 512 00:25:34,290 --> 00:25:38,400 打印f以替代變量。 513 00:25:38,400 --> 00:25:44,120 因此,也許你的用戶登錄前, 和保存他們的用戶ID號 514 00:25:44,120 --> 00:25:51,710 在$的PHP超_session 全球性的密鑰ID。 515 00:25:51,710 --> 00:25:55,947 他們登錄因此,也許以後, 你設置$ _SESSION ID等於10, 516 00:25:55,947 --> 00:25:58,280 從實例推斷 我們只是在一秒鐘前看到的。 517 00:25:58,280 --> 00:26:01,960 >> 所以,當我們真正執行 此查詢的結果現在, 518 00:26:01,960 --> 00:26:08,440 它會插上10,或任何 在$ _SESSION ID值。 519 00:26:08,440 --> 00:26:10,790 所以,讓我們來 有點更有活力。 520 00:26:10,790 --> 00:26:12,699 我們不是硬編碼了的東西。 521 00:26:12,699 --> 00:26:14,490 我們保存信息 某處,然後 522 00:26:14,490 --> 00:26:18,924 我們可以再次使用這些信息來 排序概括了我們想做的事情, 523 00:26:18,924 --> 00:26:21,090 和公正的插件和變化 我們網頁的行為 524 00:26:21,090 --> 00:26:26,489 基於什麼用戶的ID號碼 實際上,他們已經登錄後。 525 00:26:26,489 --> 00:26:28,530 它也可以,不過, 您的結果集 526 00:26:28,530 --> 00:26:30,840 可能包括多個行。 527 00:26:30,840 --> 00:26:33,990 在這種情況下,你有 arrays--的陣列 528 00:26:33,990 --> 00:26:35,334 關聯數組的數組。 529 00:26:35,334 --> 00:26:37,000 而你只需要遍歷它。 530 00:26:37,000 --> 00:26:41,950 而且我們知道如何遍歷 通過在PHP中的數組,對不對? 531 00:26:41,950 --> 00:26:45,600 因此,這裡可能是最 我們到目前為止看到的複雜的東西。 532 00:26:45,600 --> 00:26:49,640 它實際上是把 三種語言在一起。 533 00:26:49,640 --> 00:26:52,920 >> 在這裡,在紅,這是一些HTML。 534 00:26:52,920 --> 00:26:56,872 我顯然starting--這是 一些HTML,我有一個片段。 535 00:26:56,872 --> 00:26:59,580 我開始一個新的段落 電視的宋飛的媽媽說。 536 00:26:59,580 --> 00:27:02,350 然後隨即 我開始的表。 537 00:27:02,350 --> 00:27:06,060 並在那之後,我 有一些PHP的,對不對? 538 00:27:06,060 --> 00:27:08,229 我有這一切的PHP代碼在那裡。 539 00:27:08,229 --> 00:27:09,645 我顯然會進行查詢。 540 00:27:09,645 --> 00:27:14,180 而為了讓查詢,我要去 可以使用SELECT母親們的媽媽。 541 00:27:14,180 --> 00:27:15,970 >> 因此,這是getting--這是SQL。 542 00:27:15,970 --> 00:27:17,300 所以藍色是SQL。 543 00:27:17,300 --> 00:27:19,680 我們看到在一秒鐘前,紅色是HTML。 544 00:27:19,680 --> 00:27:21,360 在這裡,綠色的是PHP。 545 00:27:21,360 --> 00:27:23,400 所以,我正在做一個查詢 到我的數據庫,我 546 00:27:23,400 --> 00:27:26,040 選擇所有的 母親在母親表。 547 00:27:26,040 --> 00:27:30,710 不只是縮小它歸結為特定的 行,我問了所有的人。 548 00:27:30,710 --> 00:27:33,290 >> 然後我檢查,如果結果是 不等於等於false。 549 00:27:33,290 --> 00:27:37,410 這只是我的檢查方式排序 如果結果不等於空, 550 00:27:37,410 --> 00:27:40,260 我們會看到下例子。 551 00:27:40,260 --> 00:27:44,000 基本上這只是檢查,以 確保它實際上得到的數據備份。 552 00:27:44,000 --> 00:27:47,041 因為我不想開始打印 出的數據,如果我沒有得到任何數據。 553 00:27:47,041 --> 00:27:50,690 然後為每個結果作為結果的 從PHP的foreach語法,我做的 554 00:27:50,690 --> 00:27:53,399 正在打印$結果母親。 555 00:27:53,399 --> 00:27:55,940 所以我要得到一套 所有each--的母親的 556 00:27:55,940 --> 00:27:59,980 它的關聯數組 arrays--,我打印出 557 00:27:59,980 --> 00:28:03,649 每一個作為它自己的一個表中的行。 558 00:28:03,649 --> 00:28:05,690 而這真的很漂亮 很多都在那裡給它。 559 00:28:05,690 --> 00:28:07,750 我知道有一點 位怎麼回事 560 00:28:07,750 --> 00:28:13,210 在這個最後的例子與陣列 arrays--關聯數組的數組。 561 00:28:13,210 --> 00:28:17,340 但它確實剛燒開 倒在SQL中,查詢數據, 562 00:28:17,340 --> 00:28:21,102 通常選擇後,我們已把 把信息到表, 563 00:28:21,102 --> 00:28:22,310 然後就拉出來。 564 00:28:22,310 --> 00:28:25,710 >> 這是我們把它 在這種特殊情況下。 565 00:28:25,710 --> 00:28:31,120 我們將提取所有個人 母親從媽媽表。 566 00:28:31,120 --> 00:28:35,970 我們得到了一整套他們,而我們 要遍歷並打印出 567 00:28:35,970 --> 00:28:37,630 每一個。 568 00:28:37,630 --> 00:28:40,510 如此反复,這可能是 最複雜的例子 569 00:28:40,510 --> 00:28:44,510 我們已經看到,因為我們是混合三種 不同的語言在一起,對不對? 570 00:28:44,510 --> 00:28:50,100 >> 同樣,我們在這裡的HTML紅色, 一些SQL這裡的藍色混合, 571 00:28:50,100 --> 00:28:52,049 在綠一些PHP混合。 572 00:28:52,049 --> 00:28:53,840 但所有這些玩 很好地在一起,這是 573 00:28:53,840 --> 00:28:57,060 發展中的問題而已 良好的生活習慣,這樣你可以得到 574 00:28:57,060 --> 00:28:58,780 他們你想要的方式一起工作。 575 00:28:58,780 --> 00:29:03,790 而只有這樣,才能真正做到這一點 就是練習,練習,再練習。 576 00:29:03,790 --> 00:29:06,740 我是道格·勞埃德,這是CS50。 577 00:29:06,740 --> 00:29:08,647