1 00:00:00,000 --> 00:00:03,493 >> [MUSIC CHƠI] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: Trong video của chúng tôi về chủ đề phát triển web, 4 00:00:07,100 --> 00:00:10,560 chúng tôi đã đề cập đến các khái niệm về một cơ sở dữ liệu một vài lần, phải không? 5 00:00:10,560 --> 00:00:12,700 Vì vậy, một cơ sở dữ liệu bạn có lẽ quen thuộc với từ 6 00:00:12,700 --> 00:00:15,780 nói bằng cách sử dụng Microsoft Excel hoặc Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Nó thực sự chỉ là một tổ chức thiết lập các bảng, hàng và cột. 8 00:00:20,650 --> 00:00:23,140 >> Và một cơ sở dữ liệu là nơi cửa hàng web của chúng tôi 9 00:00:23,140 --> 00:00:26,760 thông tin quan trọng cho trang web của chúng tôi để làm việc đúng cách. 10 00:00:26,760 --> 00:00:30,150 Một lần nữa, một ví dụ thực sự phổ biến ở đây được lưu trữ username và password 11 00:00:30,150 --> 00:00:32,824 trong một cơ sở dữ liệu, do đó khi một người dùng đăng nhập vào trang web của chúng tôi, 12 00:00:32,824 --> 00:00:36,690 cơ sở dữ liệu có thể được truy vấn để xem nếu người dùng tồn tại trong cơ sở dữ liệu. 13 00:00:36,690 --> 00:00:39,260 Và nếu họ đang có, kiểm tra xem mật khẩu của họ là đúng. 14 00:00:39,260 --> 00:00:43,420 Và nếu mật khẩu của họ là đúng, sau đó chúng tôi có thể cung cấp cho họ bất cứ trang 15 00:00:43,420 --> 00:00:45,370 họ đang yêu cầu. 16 00:00:45,370 --> 00:00:48,590 >> Vì vậy, có lẽ bạn đang, một lần nữa, quen thuộc với ý tưởng này từ Excel hoặc Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Chúng tôi có cơ sở dữ liệu, bảng, hàng và cột. 19 00:00:52,980 --> 00:00:56,450 Và đó là thực sự loại của tập cơ bản 20 00:00:56,450 --> 00:00:58,470 của sự cố phân cấp ở đây. 21 00:00:58,470 --> 00:00:59,800 Vì vậy, đây là một bảng tính Excel. 22 00:00:59,800 --> 00:01:02,640 Và nếu bạn đã từng mở này hoặc một chương trình khác tương tự 23 00:01:02,640 --> 00:01:06,780 bạn biết rằng đây là những rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Đây là cột. 25 00:01:08,760 --> 00:01:11,790 >> Có lẽ ở đây, mặc dù bạn có thể không sử dụng tính năng này khủng khiếp much-- 26 00:01:11,790 --> 00:01:15,370 Tôi sẽ phóng to in-- chúng tôi có Ý tưởng này của một tờ. 27 00:01:15,370 --> 00:01:17,930 Vì vậy, có lẽ những tờ, nếu Tôi luân phiên qua lại, 28 00:01:17,930 --> 00:01:21,600 là bảng khác nhau mà tồn tại trong cơ sở dữ liệu của tôi. 29 00:01:21,600 --> 00:01:25,210 Và nếu chúng ta tiếp tục ví dụ tất cả cách, tên của cơ sở dữ liệu này 30 00:01:25,210 --> 00:01:26,940 là Book 1. 31 00:01:26,940 --> 00:01:28,710 Có lẽ tôi có Book 2 và 3 Book. 32 00:01:28,710 --> 00:01:33,270 Vì vậy, mỗi tập tin Excel là một cơ sở dữ liệu, mỗi tấm là một bảng, 33 00:01:33,270 --> 00:01:39,530 và bên trong của mỗi bảng tôi có Ý tưởng này của các hàng và cột. 34 00:01:39,530 --> 00:01:41,900 >> Vậy làm thế nào để tôi làm việc với cơ sở dữ liệu này? 35 00:01:41,900 --> 00:01:43,630 Làm thế nào để tôi nhận được thông tin từ nó? 36 00:01:43,630 --> 00:01:47,540 Cũng có một ngôn ngữ được gọi SQL-- mà tôi thường chỉ cần gọi Sequel-- 37 00:01:47,540 --> 00:01:50,010 và nó là viết tắt của các Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 Và nó là một ngôn ngữ lập trình, nhưng đó là một chương trình khá hạn chế 39 00:01:52,981 --> 00:01:53,480 ngôn ngữ. 40 00:01:53,480 --> 00:01:56,407 Nó không hoàn toàn giống như những người khác rằng chúng tôi đã làm việc với. 41 00:01:56,407 --> 00:01:58,240 Nhưng mục đích của việc này ngôn ngữ lập trình 42 00:01:58,240 --> 00:02:01,570 là để truy vấn một cơ sở dữ liệu, để yêu cầu thông tin của một cơ sở dữ liệu, 43 00:02:01,570 --> 00:02:04,480 tìm kiếm thông tin trong một cơ sở dữ liệu, và như vậy. 44 00:02:04,480 --> 00:02:08,449 >> Chúng tôi cũng có, trong CS50-- và đó là một rất nền tảng phổ biến, nó được gọi là MySQL. 45 00:02:08,449 --> 00:02:10,600 Đó là những gì chúng tôi sử dụng trong khóa học. 46 00:02:10,600 --> 00:02:12,880 Đó là một mã nguồn mở nền tảng lập 47 00:02:12,880 --> 00:02:16,732 một cái gọi là database-- quan hệ một cơ sở dữ liệu, hiệu quả. 48 00:02:16,732 --> 00:02:18,440 Chúng tôi không cần phải nhận được vào chi tiết quá nhiều 49 00:02:18,440 --> 00:02:20,930 về những gì một CSDL quan hệ là. 50 00:02:20,930 --> 00:02:24,650 Nhưng ngôn ngữ SQL là rất giỏi trong việc làm việc 51 00:02:24,650 --> 00:02:29,760 với MySQL và khác tương tự phong cách của cơ sở dữ liệu quan hệ. 52 00:02:29,760 --> 00:02:34,010 >> Và nhiều cài đặt của MySQL đi kèm với một cái gì đó 53 00:02:34,010 --> 00:02:37,760 gọi là phpMyAdmin, mà là một người dùng đồ họa 54 00:02:37,760 --> 00:02:40,970 interface-- một GUI-- đó làm cho nó nhiều hơn một chút 55 00:02:40,970 --> 00:02:44,410 thân thiện với người sử dụng thực hiện truy vấn cơ sở dữ liệu, 56 00:02:44,410 --> 00:02:48,980 vì cơ sở dữ liệu không chỉ được sử dụng bởi các lập trình tiên tiến, phải không? 57 00:02:48,980 --> 00:02:51,510 Đôi khi có những các doanh nghiệp nhỏ, 58 00:02:51,510 --> 00:02:53,900 và họ không thể đủ khả năng để thuê một đội ngũ lập trình, 59 00:02:53,900 --> 00:02:56,700 nhưng họ vẫn cần phải lưu trữ thông tin trong một cơ sở dữ liệu. 60 00:02:56,700 --> 00:02:59,300 >> Một cái gì đó giống như phpMyAdmin làm cho nó rất dễ dàng cho ai đó 61 00:02:59,300 --> 00:03:03,630 người chưa bao giờ được lập trình trước để nhận và trở nên quen thuộc với cách 62 00:03:03,630 --> 00:03:07,710 để làm việc với một cơ sở dữ liệu. 63 00:03:07,710 --> 00:03:11,800 Vấn đề là, phpMyAdmin, trong khi đó là một công cụ tuyệt vời cho học tập 64 00:03:11,800 --> 00:03:14,850 về cơ sở dữ liệu, nó là thủ công. 65 00:03:14,850 --> 00:03:18,050 Bạn sẽ phải đăng nhập vào nó và thực hiện các lệnh và gõ 66 00:03:18,050 --> 00:03:19,910 mọi thứ trong tay. 67 00:03:19,910 --> 00:03:23,160 >> Và như chúng ta đã biết từ chúng tôi Ví dụ về lập trình web PHP, 68 00:03:23,160 --> 00:03:26,550 phải tự làm thứ trên trang web của chúng tôi, 69 00:03:26,550 --> 00:03:30,970 nếu chúng ta muốn có một năng động, chủ động đáp ứng trang web, có lẽ không phải là cách tiếp cận tốt nhất. 70 00:03:30,970 --> 00:03:33,980 Chúng tôi muốn tìm một cách để có lẽ tự động hoá này bằng cách nào đó. 71 00:03:33,980 --> 00:03:37,864 Và SQL sẽ cho phép chúng tôi làm điều này. 72 00:03:37,864 --> 00:03:39,780 Vì vậy, khi chúng tôi đang đi để bắt đầu làm việc với SQL, 73 00:03:39,780 --> 00:03:41,220 trước tiên chúng ta cần phải có một cơ sở dữ liệu để làm việc với. 74 00:03:41,220 --> 00:03:42,510 Tạo một cơ sở dữ liệu một cái gì đó bạn có thể 75 00:03:42,510 --> 00:03:45,350 sẽ làm trong phpMyAdmin, vì bạn sẽ chỉ cần phải làm điều đó một lần, 76 00:03:45,350 --> 00:03:49,690 và cú pháp để làm như vậy là rất nhiều đơn giản hơn. 77 00:03:49,690 --> 00:03:51,940 Nó dễ dàng hơn rất nhiều để làm điều đó trong một giao diện người dùng đồ họa 78 00:03:51,940 --> 00:03:53,520 hơn gõ nó ra như là một mệnh lệnh. 79 00:03:53,520 --> 00:03:55,186 Các lệnh có thể có được một chút rườm rà. 80 00:03:55,186 --> 00:03:58,889 Tương tự như vậy, việc tạo ra một bảng có thể nhận được khá một chút rườm rà là tốt. 81 00:03:58,889 --> 00:04:01,930 Và như vậy những thứ như việc tạo ra một cơ sở dữ liệu và tạo ra một bảng, trong đó bạn 82 00:04:01,930 --> 00:04:06,270 có lẽ chỉ đi làm once-- một lần cho mỗi bảng, một lần mỗi database-- 83 00:04:06,270 --> 00:04:09,040 đó là OK để làm điều đó trong một giao diện đồ họa. 84 00:04:09,040 --> 00:04:11,570 Trong quá trình tạo ra một bảng, bạn sẽ 85 00:04:11,570 --> 00:04:14,840 cũng phải xác định tất cả các cột rằng sẽ có trong bảng đó. 86 00:04:14,840 --> 00:04:18,149 Những loại thông tin nào bạn muốn lưu trữ trong bảng? 87 00:04:18,149 --> 00:04:24,520 Có lẽ tên của người dùng và ngày tháng năm sinh, mật khẩu, số lượng người sử dụng ID, và có lẽ 88 00:04:24,520 --> 00:04:26,170 thành phố và tiểu bang, phải không? 89 00:04:26,170 --> 00:04:30,080 >> Và mỗi khi chúng ta muốn thêm một người sử dụng cơ sở dữ liệu, chúng tôi muốn có được tất cả sáu 90 00:04:30,080 --> 00:04:31,890 những mẩu thông tin. 91 00:04:31,890 --> 00:04:34,840 Và chúng tôi làm điều đó bằng cách thêm hàng vào bảng. 92 00:04:34,840 --> 00:04:37,800 Vì vậy, đầu tiên chúng ta tạo ra một cơ sở dữ liệu, sau đó chúng tôi tạo ra một bảng. 93 00:04:37,800 --> 00:04:40,100 Là một phần của việc tạo ra một bảng, chúng tôi được yêu cầu 94 00:04:40,100 --> 00:04:44,280 để xác định mỗi cột đó chúng tôi muốn trong bảng này. 95 00:04:44,280 --> 00:04:47,247 Và sau đó khi chúng tôi bắt đầu để thêm thông tin cơ sở dữ liệu 96 00:04:47,247 --> 00:04:49,580 và truy vấn cơ sở dữ liệu hơn generally-- không chỉ cần thêm, 97 00:04:49,580 --> 00:04:51,610 nhưng mọi thứ khác chúng tôi do-- chúng ta sẽ đối phó 98 00:04:51,610 --> 00:04:58,870 với các hàng của bảng, mà là một thông tin của người dùng từ toàn bộ tập hợp. 99 00:04:58,870 --> 00:05:03,210 >> Vì vậy, mỗi cột SQL có khả năng giữ dữ liệu của một kiểu dữ liệu cụ thể. 100 00:05:03,210 --> 00:05:06,560 Vì vậy, chúng tôi sắp xếp của loại này Ý tưởng của các kiểu dữ liệu trong PHP, 101 00:05:06,560 --> 00:05:08,747 nhưng họ đang trở lại đây trong SQL. 102 00:05:08,747 --> 00:05:10,080 Và có rất nhiều loại dữ liệu. 103 00:05:10,080 --> 00:05:13,420 Dưới đây chỉ là 20 trong số họ, nhưng nó thậm chí không tất cả chúng. 104 00:05:13,420 --> 00:05:16,240 Vì vậy, chúng tôi có những ý tưởng như INTs-- Integers-- chúng ta có thể biết 105 00:05:16,240 --> 00:05:17,760 cột này có thể giữ nguyên. 106 00:05:17,760 --> 00:05:21,077 Và có những biến thể thereon-- SMALLINT, TINYINT, MEDIUMINT, bigint. 107 00:05:21,077 --> 00:05:22,660 Có lẽ chúng ta không luôn luôn cần bốn cắn. 108 00:05:22,660 --> 00:05:26,800 Có lẽ chúng ta cần tám byte, và vì vậy chúng tôi có thể sử dụng các biến thể trên các số nguyên 109 00:05:26,800 --> 00:05:28,510 để có nhiều không gian hơn một chút hiệu quả. 110 00:05:28,510 --> 00:05:31,899 Chúng tôi có thể làm các số thập phân, chúng tôi có thể làm nổi số điểm. 111 00:05:31,899 --> 00:05:32,940 Đây là khá tương tự. 112 00:05:32,940 --> 00:05:34,773 Có một số khác biệt, và nếu bạn làm 113 00:05:34,773 --> 00:05:37,330 thích nhìn lên SQL loại hướng dẫn, bạn 114 00:05:37,330 --> 00:05:40,670 có thể xem những gì nhẹ khác biệt giữa chúng. 115 00:05:40,670 --> 00:05:43,250 >> Có lẽ chúng ta muốn lưu trữ thông tin về ngày tháng và thời gian. 116 00:05:43,250 --> 00:05:47,047 Có lẽ chúng ta đang theo dõi các khi người dùng tham gia trang web của chúng tôi, 117 00:05:47,047 --> 00:05:48,880 và như vậy có lẽ chúng ta muốn để có một cột đó 118 00:05:48,880 --> 00:05:52,820 một thời gian ngày hay một dấu thời gian chỉ khi người sử dụng thực sự 119 00:05:52,820 --> 00:05:54,130 đăng kí. 120 00:05:54,130 --> 00:05:56,132 Chúng tôi có thể làm hình học và linestrings. 121 00:05:56,132 --> 00:05:57,340 Đây thực sự là khá mát mẻ. 122 00:05:57,340 --> 00:06:01,410 Chúng tôi có thể vạch ra một khu vực địa lý sử dụng 123 00:06:01,410 --> 00:06:05,110 GIS tọa độ để vẽ ra một khu vực. 124 00:06:05,110 --> 00:06:08,580 Vì vậy, thực sự có thể lưu trữ loại đó thông tin trong một cột SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT chỉ là đốm màu khổng lồ của văn bản, có thể. 126 00:06:11,390 --> 00:06:12,840 Enums là loại thú vị. 127 00:06:12,840 --> 00:06:16,080 Họ thực sự tồn tại trong C. Chúng tôi làm không nói chuyện về họ bởi vì họ không 128 00:06:16,080 --> 00:06:19,110 khủng khiếp thường được sử dụng, ít nhất là CS50. 129 00:06:19,110 --> 00:06:22,680 Nhưng nó là một kiểu dữ liệu liệt kê, trong đó là khả năng nắm giữ các giá trị giới hạn. 130 00:06:22,680 --> 00:06:25,940 >> Một ví dụ thực sự tốt ở đây sẽ là để tạo ra một enum này bảy 131 00:06:25,940 --> 00:06:29,394 giá trị có thể là chủ nhật, thứ hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu, 132 00:06:29,394 --> 00:06:30,060 Thứ bảy, phải không? 133 00:06:30,060 --> 00:06:33,311 Đó là kiểu dữ liệu ngày của Tuần không tồn tại, 134 00:06:33,311 --> 00:06:35,310 nhưng chúng ta có thể tạo ra một kiểu dữ liệu liệt kê như vậy 135 00:06:35,310 --> 00:06:39,400 cột rằng chỉ có bao giờ có thể giữ một trong những bảy giá trị có thể. 136 00:06:39,400 --> 00:06:44,300 Chúng tôi đã liệt kê tất cả các của các giá trị có thể. 137 00:06:44,300 --> 00:06:47,630 >> Sau đó, chúng tôi có CHAR và VARCHAR, và tôi đã tô màu các màu xanh lá cây 138 00:06:47,630 --> 00:06:49,505 bởi vì chúng tôi đang thực sự sẽ mất một giây 139 00:06:49,505 --> 00:06:51,950 để nói về sự khác biệt giữa hai điều này. 140 00:06:51,950 --> 00:06:55,780 Vì vậy, CHAR, không giống như C, nơi CHAR là một nhân vật duy nhất, 141 00:06:55,780 --> 00:07:00,730 trong SQL một CHAR đề cập đến một chuỗi dài cố định. 142 00:07:00,730 --> 00:07:02,620 Và khi chúng ta tạo này cột, chúng tôi thực sự 143 00:07:02,620 --> 00:07:05,070 có thể xác định độ dài của chuỗi. 144 00:07:05,070 --> 00:07:08,080 >> Vì vậy, trong ví dụ này, chúng ta có thể nói CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Điều đó có nghĩa rằng tất cả phần tử của cột đó 146 00:07:11,190 --> 00:07:13,910 sẽ bao gồm 10 byte thông tin. 147 00:07:13,910 --> 00:07:15,770 Không nhiều không ít. 148 00:07:15,770 --> 00:07:21,780 Vì vậy, nếu chúng ta cố gắng và đặt trong một 15 bit hoặc một yếu tố 15 ký tự 149 00:07:21,780 --> 00:07:25,340 hoặc giá trị vào cột này, chúng ta chỉ có được 10 người đầu tiên. 150 00:07:25,340 --> 00:07:27,290 Nếu chúng ta đặt trong hai giá trị lâu nhân vật, 151 00:07:27,290 --> 00:07:30,700 chúng ta sẽ có hai ký tự, và sau đó tám cắn null. 152 00:07:30,700 --> 00:07:34,990 Chúng tôi sẽ không bao giờ có hiệu quả hơn đó. 153 00:07:34,990 --> 00:07:37,727 >> Một VARCHAR là loại giống như khái niệm của chúng ta về một chuỗi 154 00:07:37,727 --> 00:07:39,560 mà chúng ta đã quen thuộc với từ C hoặc từ PHP. 155 00:07:39,560 --> 00:07:40,830 Đó là một chuỗi dài biến. 156 00:07:40,830 --> 00:07:42,560 Và khi bạn tạo cột này, bạn chỉ 157 00:07:42,560 --> 00:07:44,860 xác định độ dài tối đa có thể. 158 00:07:44,860 --> 00:07:49,065 Vì vậy có lẽ 99, hay thường 255. 159 00:07:49,065 --> 00:07:50,440 Đó sẽ là chiều dài tối đa. 160 00:07:50,440 --> 00:07:52,890 Và vì vậy nếu chúng được lưu trữ 15 chuỗi ký tự, 161 00:07:52,890 --> 00:07:56,157 chúng tôi sẽ sử dụng 15 byte, có thể 16 byte cho terminator null. 162 00:07:56,157 --> 00:07:57,990 Nếu chúng ta lưu trữ một ba chuỗi ký tự, 163 00:07:57,990 --> 00:08:01,120 chúng tôi sẽ sử dụng ba hay bốn byte. 164 00:08:01,120 --> 00:08:03,050 Nhưng chúng tôi sẽ không sử dụng đầy đủ các 99. 165 00:08:03,050 --> 00:08:05,190 >> Vì vậy, tại sao chúng ta có cả hai? 166 00:08:05,190 --> 00:08:08,210 Vâng, nếu chúng ta cần phải tìm ra cách cái gì đó dài là với một VARCHAR, 167 00:08:08,210 --> 00:08:10,680 chúng ta phải loại iterate qua nó chỉ giống như chúng tôi đã làm trong C 168 00:08:10,680 --> 00:08:12,230 và tìm ra nơi nó dừng lại. 169 00:08:12,230 --> 00:08:15,920 Trong khi đó nếu chúng ta biết rằng mọi thứ trong cột này là 10 byte, có thể 170 00:08:15,920 --> 00:08:19,220 chúng tôi biết thông tin đó, chúng ta có thể nhảy 10 byte, 10 byte, 10 byte, 10 byte, 171 00:08:19,220 --> 00:08:21,790 và luôn luôn tìm thấy bắt đầu của chuỗi. 172 00:08:21,790 --> 00:08:25,210 >> Vì vậy, chúng tôi có thể có một số không gian lãng phí với một CHAR, 173 00:08:25,210 --> 00:08:28,510 nhưng có lẽ có một thương mại off của việc có tốc độ tốt hơn 174 00:08:28,510 --> 00:08:30,160 trong điều hướng các cơ sở dữ liệu. 175 00:08:30,160 --> 00:08:32,330 Nhưng có lẽ chúng ta muốn linh hoạt của một VARCHAR 176 00:08:32,330 --> 00:08:36,710 thay vì having-- Nếu CHAR của chúng tôi là 255, nhưng hầu hết người sử dụng của chúng tôi 177 00:08:36,710 --> 00:08:40,537 chỉ được nhập vào ba hoặc bốn byte giá trị của thông tin hoặc ba hoặc bốn 178 00:08:40,537 --> 00:08:41,870 nhân vật có giá trị của thông tin. 179 00:08:41,870 --> 00:08:44,324 >> Nhưng một số người dùng đã sử dụng toàn bộ 255, có lẽ 180 00:08:44,324 --> 00:08:45,990 VARCHAR sẽ thích hợp hơn đó. 181 00:08:45,990 --> 00:08:49,840 Đó là sắp xếp của một thương mại giảm, và nói chung cho các mục đích của CS50, 182 00:08:49,840 --> 00:08:54,107 bạn không cần phải lo lắng quá nhiều về cho dù bạn sử dụng một CHAR hay VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Nhưng trong thế giới thực, những điều này không quan trọng bởi vì tất cả các cột 184 00:08:57,190 --> 00:08:59,300 mất không gian vật lý thực tế. 185 00:08:59,300 --> 00:09:04,150 Và không gian vật lý, trong thế giới thực, đi kèm với một bảo hiểm. 186 00:09:04,150 --> 00:09:06,800 >> Vì vậy, một xem xét khác khi bạn đang xây dựng một bảng 187 00:09:06,800 --> 00:09:09,840 là để chọn một cột được những gì gọi là khóa chính. 188 00:09:09,840 --> 00:09:14,350 Và một khóa chính là một cột nơi mỗi giá trị duy nhất là duy nhất. 189 00:09:14,350 --> 00:09:19,980 Và điều đó có nghĩa rằng bạn có thể dễ dàng chọn ra một hàng duy nhất chỉ bằng cách nhìn 190 00:09:19,980 --> 00:09:22,450 tại các trọng điểm chính của hàng đó. 191 00:09:22,450 --> 00:09:24,580 Vì vậy, ví dụ, bạn nói chung, với người dùng, 192 00:09:24,580 --> 00:09:27,210 không muốn hai người dùng có số lượng người sử dụng cùng một ID. 193 00:09:27,210 --> 00:09:28,960 Và như vậy có lẽ bạn có rất nhiều thông tin, 194 00:09:28,960 --> 00:09:30,793 và có lẽ hai người sử dụng có thể có name-- cùng 195 00:09:30,793 --> 00:09:32,650 bạn có John Smith và John Smith. 196 00:09:32,650 --> 00:09:34,520 Đó không nhất thiết phải là một vấn đề, bởi vì có nhiều người 197 00:09:34,520 --> 00:09:35,830 trong thế giới tên là John Smith. 198 00:09:35,830 --> 00:09:40,766 Nhưng chúng tôi chỉ có một người sử dụng số ID 10, một người sử dụng ID số 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Chúng tôi không có hai người dùng với cùng một số, 200 00:09:42,640 --> 00:09:46,010 và như vậy có lẽ số người sử dụng ID sẽ là một khóa chính tốt. 201 00:09:46,010 --> 00:09:48,610 >> Chúng tôi không có bất kỳ sự trùng lặp, và chúng tôi có thể bây giờ duy nhất 202 00:09:48,610 --> 00:09:52,619 xác định mỗi đơn hàng chỉ bằng cách nhìn vào cột đó. 203 00:09:52,619 --> 00:09:55,410 Chọn khóa chính có thể thực sự làm cho hoạt động bàn tiếp theo 204 00:09:55,410 --> 00:09:59,710 dễ dàng hơn rất nhiều vì bạn có thể tận dụng thực tế là hàng nhất định sẽ 205 00:09:59,710 --> 00:10:02,720 là duy nhất, hoặc một cột nào đó của cơ sở dữ liệu hoặc bảng của bạn 206 00:10:02,720 --> 00:10:06,030 sẽ là duy nhất để chọn ra các hàng cụ thể. 207 00:10:06,030 --> 00:10:08,790 >> Bạn cũng có thể có một chính doanh chìa khóa, mà bạn có thể tìm được một cớ 208 00:10:08,790 --> 00:10:11,720 để sử dụng, mà chỉ cần một là sự kết hợp của hai cột 209 00:10:11,720 --> 00:10:13,280 được đảm bảo là duy nhất. 210 00:10:13,280 --> 00:10:16,410 Vì vậy, có thể bạn có một cột đó là A và B, 211 00:10:16,410 --> 00:10:19,290 một cột đó là một, hai, và ba, nhưng bạn sẽ chỉ bao giờ 212 00:10:19,290 --> 00:10:23,660 có một A1 duy nhất, một đơn A2, và vv và vv. 213 00:10:23,660 --> 00:10:28,980 Nhưng bạn có thể có một B2, một C2, hoặc A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Vì vậy, bạn có thể có nhiều As, nhiều Bs, nhiều người, nhiều twos, 215 00:10:32,840 --> 00:10:38,567 nhưng bạn chỉ có thể bao giờ có một đơn A1, B2, C3, và như vậy. 216 00:10:38,567 --> 00:10:40,400 Vì vậy, như tôi đã nói, SQL là một ngôn ngữ lập trình, 217 00:10:40,400 --> 00:10:42,024 nhưng nó có một vốn từ vựng khá hạn chế. 218 00:10:42,024 --> 00:10:44,880 Nó không phải là khá rộng như C và PHP và các ngôn ngữ khác 219 00:10:44,880 --> 00:10:46,350 mà chúng ta nói trong khóa học. 220 00:10:46,350 --> 00:10:49,960 Đó là tiết nhiều hơn một ngôn ngữ hơn so với những gì chúng tôi 221 00:10:49,960 --> 00:10:52,789 sẽ nói về trong này video, bởi vì trong video này 222 00:10:52,789 --> 00:10:54,830 chúng ta sẽ nói về bốn hoạt động mà chúng ta 223 00:10:54,830 --> 00:10:55,720 có thể thực hiện trên một bảng. 224 00:10:55,720 --> 00:10:56,761 >> Hiện có hơn này. 225 00:10:56,761 --> 00:10:58,730 Chúng ta có thể làm nhiều hơn này, nhưng đối với mục đích của chúng tôi, 226 00:10:58,730 --> 00:11:02,250 nói chung chúng ta đang đi để được sử dụng chỉ bốn chèn operations--, 227 00:11:02,250 --> 00:11:05,360 chọn, cập nhật, và xóa. 228 00:11:05,360 --> 00:11:08,750 Và bạn có thể có thể trực giác đoán những gì tất cả bốn trong số những làm. 229 00:11:08,750 --> 00:11:12,520 Nhưng chúng ta sẽ đi vào một chút các chi tiết trên mỗi một. 230 00:11:12,520 --> 00:11:15,780 >> Vì vậy, mục đích của việc này video, chúng ta hãy giả 231 00:11:15,780 --> 00:11:18,870 chúng tôi đã hai sau đây bảng trong một cơ sở dữ liệu duy nhất. 232 00:11:18,870 --> 00:11:23,460 Chúng tôi có một bảng gọi là Người dùng có bốn columns-- số ID, tên người dùng, 233 00:11:23,460 --> 00:11:25,350 mật khẩu, và tên đầy đủ. 234 00:11:25,350 --> 00:11:27,430 Và chúng ta có một thứ hai bảng trong cơ sở dữ liệu tương tự 235 00:11:27,430 --> 00:11:32,129 được gọi là Mẹ mà chỉ cần lưu trữ thông tin về một tên người dùng và một người mẹ. 236 00:11:32,129 --> 00:11:33,920 Vì vậy, đối với tất cả các ví dụ trong video này, chúng tôi sẽ 237 00:11:33,920 --> 00:11:37,945 được sử dụng cơ sở dữ liệu này và cập nhật tiếp theo cho nó. 238 00:11:37,945 --> 00:11:40,070 Vì vậy, chúng ta hãy nói rằng chúng ta muốn thêm thông tin vào một bảng. 239 00:11:40,070 --> 00:11:44,460 Đó là những gì các hoạt động chèn không. 240 00:11:44,460 --> 00:11:46,550 Trong việc giải thích tất cả các lệnh này, tôi sẽ 241 00:11:46,550 --> 00:11:48,860 để cung cấp cho bạn một bộ xương nói chung để sử dụng. 242 00:11:48,860 --> 00:11:51,661 Bởi vì về cơ bản, các truy vấn sẽ nhìn khá giống nhau, 243 00:11:51,661 --> 00:11:54,660 chúng tôi chỉ cần đi để được thay đổi miếng hơi khác nhau của thông tin 244 00:11:54,660 --> 00:11:56,750 để làm những việc khác nhau với bảng. 245 00:11:56,750 --> 00:11:59,200 >> Vì vậy, cho INSERT, bộ xương trông loại như thế này. 246 00:11:59,200 --> 00:12:02,230 Chúng tôi muốn chèn vào một bảng cụ thể. 247 00:12:02,230 --> 00:12:05,290 Sau đó, chúng ta có một dấu ngoặc mở và một danh sách các cột 248 00:12:05,290 --> 00:12:08,070 mà chúng tôi muốn đưa các giá trị vào. 249 00:12:08,070 --> 00:12:10,974 Đóng ngoặc đơn, các sau các giá trị, và sau đó 250 00:12:10,974 --> 00:12:13,390 một lần nữa, chúng ta ra khỏi danh sách các giá trị chúng tôi muốn đặt trong bảng. 251 00:12:13,390 --> 00:12:15,950 >> Vì vậy, một ví dụ về điều này sẽ là như sau. 252 00:12:15,950 --> 00:12:19,170 Tôi muốn chèn vào bảng người sử dụng các columns-- sau 253 00:12:19,170 --> 00:12:21,010 Tên truy nhập, mật khẩu, và họ tên. 254 00:12:21,010 --> 00:12:25,282 Vì vậy, một hàng mới, nơi tôi đang đặt trong ba cột và chúng tôi 255 00:12:25,282 --> 00:12:30,030 sẽ đưa vào các giá trị Newman, USMAIL, và Newman. 256 00:12:30,030 --> 00:12:32,730 Vì vậy, trong trường hợp này, tôi đặt newman chữ thường 257 00:12:32,730 --> 00:12:38,710 vào cột tên truy cập, mật khẩu USMAIL, và vốn tên đầy đủ N 258 00:12:38,710 --> 00:12:41,940 Newman vào cột fullname. 259 00:12:41,940 --> 00:12:44,240 >> Vì vậy, đây là những gì các cơ sở dữ liệu trông giống như trước đây. 260 00:12:44,240 --> 00:12:48,250 Dưới đây là những gì các bảng người sử dụng trên đầu trông giống như trước khi chúng tôi đã làm điều này. 261 00:12:48,250 --> 00:12:50,760 Sau khi chúng tôi thực hiện điều này truy vấn, chúng tôi có được điều này. 262 00:12:50,760 --> 00:12:54,790 Chúng tôi đã thêm một hàng mới vào bảng. 263 00:12:54,790 --> 00:12:56,810 Nhưng cần chú ý một điều này mà tôi đã không xác định, 264 00:12:56,810 --> 00:12:59,880 nhưng bằng cách nào đó tôi đã có một giá trị cho, mà là 12 này ngay tại đây. 265 00:12:59,880 --> 00:13:02,820 Tôi không nói rằng tôi muốn đưa số ID trong đó. 266 00:13:02,820 --> 00:13:04,900 Tôi muốn đặt tên người dùng, mật khẩu, fullname. 267 00:13:04,900 --> 00:13:06,440 Và tôi đã làm điều đó, đó là tốt. 268 00:13:06,440 --> 00:13:07,760 >> Nhưng tôi cũng đã nhận 12 này. 269 00:13:07,760 --> 00:13:09,490 Tại sao tôi lại nhận được 12 này? 270 00:13:09,490 --> 00:13:12,904 Vâng, nó chỉ ra rằng khi bạn đang xác định 271 00:13:12,904 --> 00:13:15,570 một cột đó sẽ là của bạn khóa chính, mà thường là, 272 00:13:15,570 --> 00:13:16,510 như tôi đã nói, một số ID. 273 00:13:16,510 --> 00:13:18,718 Nó không phải luôn luôn cần thiết sẽ là một số ID, 274 00:13:18,718 --> 00:13:22,380 nhưng nó thường là một ý tưởng tốt để có một số loại giá trị số nguyên. 275 00:13:22,380 --> 00:13:25,950 Bạn có một tùy chọn trong phpMyAdmin khi bạn đang tạo ra cơ sở dữ liệu của bạn 276 00:13:25,950 --> 00:13:31,130 hoặc bảng của bạn để thiết lập đó cột như tự động incrementing. 277 00:13:31,130 --> 00:13:34,520 >> Đó là một ý tưởng thực sự tốt khi bạn đang làm việc với một khóa chính, 278 00:13:34,520 --> 00:13:39,330 bởi vì bạn muốn mỗi giá trị trong cột đó phải là duy nhất. 279 00:13:39,330 --> 00:13:43,310 Và nếu bạn quên để xác định nó cho nhiều hơn một người, 280 00:13:43,310 --> 00:13:46,240 bây giờ bạn có một tình huống mà cột đó không còn độc đáo. 281 00:13:46,240 --> 00:13:50,200 Bạn có hai khoảng trống, vì vậy bạn có thể không còn xác định duy nhất một column-- 282 00:13:50,200 --> 00:13:54,150 hoặc bạn có thể không còn độc đáo xác định một hàng dựa trên cột đó. 283 00:13:54,150 --> 00:13:57,010 Nó sẽ mất đi tất cả của nó giá trị như là một khóa chính. 284 00:13:57,010 --> 00:14:02,010 >> Và như vậy rõ ràng những gì tôi đã làm đây là cấu hình ID người dùng 285 00:14:02,010 --> 00:14:07,790 cột để tự động tăng để mỗi khi tôi thêm thông tin vào bảng, 286 00:14:07,790 --> 00:14:12,220 nó sẽ tự động cung cấp cho tôi một giá trị cho khóa chính. 287 00:14:12,220 --> 00:14:15,570 Vì vậy, tôi không bao giờ có thể quên làm điều đó bởi vì cơ sở dữ liệu sẽ làm điều đó cho tôi. 288 00:14:15,570 --> 00:14:16,587 Vì vậy, đó là loại tốt đẹp. 289 00:14:16,587 --> 00:14:18,670 Và đó là lý do tại sao chúng tôi nhận 12 trong đó, bởi vì tôi đã 290 00:14:18,670 --> 00:14:21,772 đặt cột lên để tự động tăng. 291 00:14:21,772 --> 00:14:23,730 Nếu tôi thêm một người khác nó muốn được 13, nếu tôi thêm 292 00:14:23,730 --> 00:14:27,890 người khác nó muốn được 14, và như vậy. 293 00:14:27,890 --> 00:14:30,190 >> Vì vậy, chúng ta hãy chỉ làm một chèn nhiều hơn. 294 00:14:30,190 --> 00:14:34,530 Chúng tôi sẽ chèn vào bảng các bà mẹ, trong Đặc biệt, tên người dùng và mẹ 295 00:14:34,530 --> 00:14:37,390 cột, các giá trị Kramer và Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Và vì vậy chúng tôi đã có điều này trước đây. 297 00:14:39,140 --> 00:14:41,800 Sau khi chúng tôi thực hiện mà Truy vấn SQL, chúng ta có điều này. 298 00:14:41,800 --> 00:14:47,290 Chúng tôi đã thêm Kramer và Babs Kramer vào bảng các bà mẹ. 299 00:14:47,290 --> 00:14:48,350 >> Vì vậy, đó là chèn. 300 00:14:48,350 --> 00:14:51,850 SELECT được chúng tôi sử dụng để trích xuất thông tin từ bảng. 301 00:14:51,850 --> 00:14:54,390 Vì vậy, đây là làm thế nào chúng ta có được thông tin từ các cơ sở dữ liệu. 302 00:14:54,390 --> 00:14:59,589 Và các lệnh để CHỌN đang có được rất thường xuyên được sử dụng trong chương trình. 303 00:14:59,589 --> 00:15:02,130 Tổng framework-- sự bộ xương nói chung trông như thế này. 304 00:15:02,130 --> 00:15:06,550 Chọn một tập các cột từ một bảng, và sau đó tùy chọn 305 00:15:06,550 --> 00:15:11,090 bạn có thể chỉ định một hoặc condition-- những gì chúng ta thường gọi một vị ngữ, 306 00:15:11,090 --> 00:15:13,010 thường là thuật ngữ chúng ta sử dụng trong SQL. 307 00:15:13,010 --> 00:15:16,490 >> Nhưng đó là những gì cơ bản hàng cụ thể mà bạn muốn nhận. 308 00:15:16,490 --> 00:15:19,100 Nếu bạn muốn, thay vì nhận được tất cả mọi thứ, thu hẹp nó xuống, 309 00:15:19,100 --> 00:15:20,060 đây là nơi mà bạn sẽ làm điều đó. 310 00:15:20,060 --> 00:15:22,777 Và sau đó tùy chọn, bạn cũng có thể đặt hàng bởi một cột cụ thể. 311 00:15:22,777 --> 00:15:25,860 Vì vậy, có thể bạn muốn có những thứ được sắp xếp theo bảng chữ cái dựa trên một cột 312 00:15:25,860 --> 00:15:27,540 hoặc chữ cái dựa trên khác. 313 00:15:27,540 --> 00:15:30,610 >> Một lần nữa, WHERE và ORDER BY là tùy chọn. 314 00:15:30,610 --> 00:15:32,681 Nhưng có lẽ họ sẽ được useful-- đặc biệt 315 00:15:32,681 --> 00:15:34,680 Đâu sẽ có ích cho thu hẹp, do đó bạn không 316 00:15:34,680 --> 00:15:37,460 có được toàn bộ cơ sở dữ liệu của bạn trở lại và phải xử lý nó, bạn chỉ nhận được 317 00:15:37,460 --> 00:15:39,300 các mảnh của nó mà bạn quan tâm. 318 00:15:39,300 --> 00:15:44,932 Vì vậy, ví dụ, tôi có thể muốn chọn Số ID và fullname từ người sử dụng. 319 00:15:44,932 --> 00:15:46,140 Vì vậy, điều này có thể trông như thế nào? 320 00:15:46,140 --> 00:15:48,270 Vì vậy, đây là bảng người dùng của tôi. 321 00:15:48,270 --> 00:15:51,080 Tôi muốn chọn idnum Họ và tên và từ người dùng. 322 00:15:51,080 --> 00:15:52,300 Tôi sẽ làm gì để có được? 323 00:15:52,300 --> 00:15:53,580 Tôi sẽ có được điều này. 324 00:15:53,580 --> 00:15:56,930 Tôi đã không thu hẹp nó xuống, vì vậy tôi được nhận số ID cho mỗi hàng 325 00:15:56,930 --> 00:16:00,850 và tôi nhận được đầy đủ tên từ mỗi hàng. 326 00:16:00,850 --> 00:16:02,210 >> ĐƯỢC. 327 00:16:02,210 --> 00:16:05,640 Nếu tôi muốn chọn mật khẩu từ những người dùng WHERE-- vì vậy bây giờ 328 00:16:05,640 --> 00:16:10,370 Tôi thêm một điều kiện, một predicate-- nơi idnum là ít hơn 12. 329 00:16:10,370 --> 00:16:13,660 Vì vậy, đây là cơ sở dữ liệu của tôi một lần nữa, người sử dụng bảng của tôi lên hàng đầu. 330 00:16:13,660 --> 00:16:17,030 Tôi sẽ làm gì để có được nếu tôi muốn chọn thông tin, mật khẩu, 331 00:16:17,030 --> 00:16:21,550 nơi ID người dùng hoặc idnum là ít hơn 12? 332 00:16:21,550 --> 00:16:24,910 Tôi sẽ có được điều này thông tin trở lại, phải không? 333 00:16:24,910 --> 00:16:29,170 Nó sẽ xảy ra rằng idnum là 10, ít hơn hơn 12, ID số 11 ít hơn 12. 334 00:16:29,170 --> 00:16:32,160 Tôi nhận được mật khẩu cho những hàng. 335 00:16:32,160 --> 00:16:33,914 Đó là những gì tôi yêu cầu. 336 00:16:33,914 --> 00:16:34,580 Cái này thì sao? 337 00:16:34,580 --> 00:16:39,170 Nếu tôi muốn chọn ngôi sao từ bảng các bà mẹ nơi tên người dùng bằng Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, chọn sao là đặc biệt loại thẻ hoang dã được gọi là 339 00:16:43,780 --> 00:16:45,670 mà chúng tôi sử dụng để có được tất cả mọi thứ. 340 00:16:45,670 --> 00:16:48,620 Vì vậy, họ đang nói chọn username mẹ dấu phẩy, mà 341 00:16:48,620 --> 00:16:51,060 đã xảy ra được các chỉ hai cột của bảng này, 342 00:16:51,060 --> 00:16:53,260 Tôi chỉ có thể chọn sao và có được mọi thứ 343 00:16:53,260 --> 00:16:55,030 nơi tên người dùng bằng Jerry. 344 00:16:55,030 --> 00:16:59,380 Và đó là những gì tôi sẽ nhận được nếu tôi thực hiện truy vấn cụ thể. 345 00:16:59,380 --> 00:17:01,810 >> Bây giờ, cơ sở dữ liệu là tuyệt vời vì chúng cho phép 346 00:17:01,810 --> 00:17:06,074 chúng tôi tổ chức thông tin có lẽ một chút hiệu quả hơn so với chúng tôi 347 00:17:06,074 --> 00:17:06,740 nếu không có thể. 348 00:17:06,740 --> 00:17:10,240 Chúng ta không nhất thiết phải để lưu trữ mỗi mảnh có liên quan của thông tin 349 00:17:10,240 --> 00:17:12,230 về một người sử dụng trong cùng một bảng. 350 00:17:12,230 --> 00:17:13,730 Chúng tôi đã có hai bảng đó. 351 00:17:13,730 --> 00:17:15,734 >> Chúng ta cần lưu trữ Tên của mọi người mẹ, 352 00:17:15,734 --> 00:17:18,900 và có lẽ chúng ta không có an ninh xã hội số, chúng tôi có ngày sinh của họ. 353 00:17:18,900 --> 00:17:21,819 Điều đó không phải lúc nào cũng cần để được ở cùng một bảng. 354 00:17:21,819 --> 00:17:25,339 Miễn là chúng ta có thể xác định mối quan hệ giữa các tables-- 355 00:17:25,339 --> 00:17:28,440 và đó là nơi mà quan hệ hạn cơ sở dữ liệu loại đi kèm 356 00:17:28,440 --> 00:17:32,130 vào play-- miễn là chúng ta có thể xác định mối quan hệ giữa các bảng, 357 00:17:32,130 --> 00:17:35,545 chúng ta có thể loại compartmentalize hoặc những thứ trừu tượng một cách, 358 00:17:35,545 --> 00:17:37,670 nơi mà chúng ta chỉ có thông tin thực sự quan trọng 359 00:17:37,670 --> 00:17:39,270 chúng ta quan tâm trong bảng của người dùng. 360 00:17:39,270 --> 00:17:43,220 Và sau đó chúng tôi có thông tin phụ trợ hoặc thông tin thêm trong các bảng khác 361 00:17:43,220 --> 00:17:48,260 rằng chúng ta có thể kết nối lại với chính bảng người sử dụng một cách đặc biệt. 362 00:17:48,260 --> 00:17:52,200 >> Vì vậy, ở đây chúng tôi có hai bảng trên, nhưng có một mối quan hệ giữa chúng, 363 00:17:52,200 --> 00:17:53,010 bên phải? 364 00:17:53,010 --> 00:17:55,070 Nó có vẻ như username có thể là một cái gì đó 365 00:17:55,070 --> 00:17:59,909 tồn tại trong chung giữa hai bảng khác nhau. 366 00:17:59,909 --> 00:18:01,700 Vì vậy, nếu chúng ta bây giờ có một tình huống mà chúng ta 367 00:18:01,700 --> 00:18:06,046 muốn có được tên đầy đủ của người dùng từ bảng của người dùng, và mẹ của họ 368 00:18:06,046 --> 00:18:07,170 tên từ bảng mẹ? 369 00:18:07,170 --> 00:18:10,960 Chúng tôi không có một cách để có được mà như nó đứng, phải không? 370 00:18:10,960 --> 00:18:17,790 Không có bảng duy nhất có chứa cả tên đầy đủ và tên mẹ. 371 00:18:17,790 --> 00:18:20,400 Chúng tôi không có lựa chọn đó từ những gì chúng ta đã thấy cho đến nay. 372 00:18:20,400 --> 00:18:22,950 >> Và vì vậy chúng tôi phải giới thiệu ý tưởng về một JOIN. 373 00:18:22,950 --> 00:18:24,857 Và có lẽ JOIN các complex-- nhất 374 00:18:24,857 --> 00:18:27,940 nó thực sự hoạt động phức tạp nhất chúng ta sẽ nói về trong video. 375 00:18:27,940 --> 00:18:30,040 Họ là một chút phức tạp, nhưng một khi bạn nhận được hang của nó, 376 00:18:30,040 --> 00:18:31,248 chúng thật sự không phải là quá xấu. 377 00:18:31,248 --> 00:18:32,820 Nó chỉ là một trường hợp đặc biệt của một SELECT. 378 00:18:32,820 --> 00:18:37,120 Chúng tôi sẽ chọn một tập hợp các cột từ một bảng tham gia 379 00:18:37,120 --> 00:18:40,650 trong một bảng thứ hai trên một số vị ngữ. 380 00:18:40,650 --> 00:18:45,340 >> Trong trường hợp này, hãy nghĩ về nó như this-- bảng một là một vòng tròn trên đây, 381 00:18:45,340 --> 00:18:47,530 bảng hai là một vòng tròn trên đây. 382 00:18:47,530 --> 00:18:49,410 Và đó là một phần vị ngữ ở giữa, nó 383 00:18:49,410 --> 00:18:51,701 loại giống như nếu bạn nghĩ về như một sơ đồ Venn, những gì 384 00:18:51,701 --> 00:18:52,670 Họ có điểm gì chung? 385 00:18:52,670 --> 00:18:55,960 Chúng tôi muốn liên kết hai bảng dựa trên những gì họ có điểm chung 386 00:18:55,960 --> 00:19:01,230 và tạo bảng tính giả thuyết này đó là sự hợp nhất của hai cùng nhau. 387 00:19:01,230 --> 00:19:03,480 Vì vậy, chúng ta sẽ thấy điều này trong một ví dụ và có lẽ đó sẽ giúp 388 00:19:03,480 --> 00:19:04,521 xóa nó lên một chút. 389 00:19:04,521 --> 00:19:09,260 Vì vậy, có thể bạn muốn chọn user.fullname và moms.mother 390 00:19:09,260 --> 00:19:13,220 từ những người dùng tham gia vào các bảng các bà mẹ trong mọi tình huống 391 00:19:13,220 --> 00:19:16,790 nơi cột username là như nhau giữa chúng. 392 00:19:16,790 --> 00:19:19,240 Và đây là một mới cú pháp ở đây, người dùng này. 393 00:19:19,240 --> 00:19:20,460 và bà mẹ .. 394 00:19:20,460 --> 00:19:26,697 Nếu tôi đang làm nhiều bảng với nhau, tôi có thể chỉ định một bảng. 395 00:19:26,697 --> 00:19:29,530 Tôi có thể phân biệt ở trên đặc biệt mà về ở rất dưới đó. 396 00:19:29,530 --> 00:19:33,220 Tôi có thể phân biệt tên người dùng cột của bảng người dùng 397 00:19:33,220 --> 00:19:36,010 từ cột tên người dùng của bảng các bà mẹ, mà là otherwise-- 398 00:19:36,010 --> 00:19:38,070 nếu chúng ta chỉ nói bằng username Tên truy nhập, mà không thực sự 399 00:19:38,070 --> 00:19:38,970 có ý nghĩa gì. 400 00:19:38,970 --> 00:19:41,440 Chúng tôi muốn làm điều đó mà chúng phù hợp. 401 00:19:41,440 --> 00:19:46,080 >> Vì vậy, tôi có thể chỉ định các bảng và các Tên cột trong trường hợp của một tình huống 402 00:19:46,080 --> 00:19:48,370 nơi nó sẽ là không rõ ràng những gì tôi đang nói về. 403 00:19:48,370 --> 00:19:51,880 Vì vậy, đó là tất cả tôi đang làm có tôi nói cột này từ bảng này, 404 00:19:51,880 --> 00:19:54,020 và đang được rất rõ ràng. 405 00:19:54,020 --> 00:19:56,810 Vì vậy, một lần nữa, tôi chọn Tên đầy đủ và tên của người mẹ 406 00:19:56,810 --> 00:20:00,950 từ bảng người dùng liên kết với nhau với bảng các bà mẹ trong mọi tình huống 407 00:20:00,950 --> 00:20:05,960 nơi họ chia sẻ rằng column-- họ chia sẻ rằng tên người dùng khái niệm. 408 00:20:05,960 --> 00:20:08,580 >> Vì vậy, đây là những bảng chúng ta có trước. 409 00:20:08,580 --> 00:20:12,210 Đây là trạng thái của chúng tôi cơ sở dữ liệu như nó tồn tại ngay bây giờ. 410 00:20:12,210 --> 00:20:16,390 Những thông tin chúng tôi đang giải nén là này để bắt đầu. 411 00:20:16,390 --> 00:20:19,820 Đây là bảng mới, chúng tôi đang đi để tạo ra những kết hợp với nhau. 412 00:20:19,820 --> 00:20:23,585 Và lưu ý chúng tôi không làm nổi bật Hàng Newman trong bảng của người dùng, 413 00:20:23,585 --> 00:20:25,960 và chúng tôi không làm nổi bật Hàng Kramer trong bảng các bà mẹ 414 00:20:25,960 --> 00:20:31,250 vì không ai tồn tại trong cả sets-- ở cả hai bảng. 415 00:20:31,250 --> 00:20:36,260 >> Thông tin duy nhất mà là phổ biến giữa chúng là Jerry là ở cả hai bảng 416 00:20:36,260 --> 00:20:39,100 và gcostanza là ở cả hai bảng. 417 00:20:39,100 --> 00:20:42,620 Và như vậy khi chúng ta làm những SQL JOIN, những gì chúng tôi get-- và chúng tôi đang làm thực sự có được điều này. 418 00:20:42,620 --> 00:20:44,830 Đó là loại một biến tạm thời. 419 00:20:44,830 --> 00:20:47,330 Nó giống như một giả thuyết sáp nhập của hai bảng. 420 00:20:47,330 --> 00:20:49,930 Chúng tôi thực sự có được một cái gì đó như thế này, nơi 421 00:20:49,930 --> 00:20:54,730 chúng tôi đã sáp nhập với nhau các bảng trên thông tin mà họ có điểm chung. 422 00:20:54,730 --> 00:20:58,334 >> Vì vậy, nhận thấy rằng users.username và cột moms.username, 423 00:20:58,334 --> 00:20:59,250 đó là chính xác như nhau. 424 00:20:59,250 --> 00:21:01,820 Đó là thông tin mà đã được thống nhất từ ​​người sử dụng 425 00:21:01,820 --> 00:21:02,890 bảng và các bảng các bà mẹ. 426 00:21:02,890 --> 00:21:04,270 Và vì vậy chúng tôi kết hợp chúng lại với nhau. 427 00:21:04,270 --> 00:21:06,919 Chúng ta bỏ đi vì ông Kramer không tồn tại trong bảng người dùng, 428 00:21:06,919 --> 00:21:09,710 và chúng tôi bỏ đi Newman, bởi vì ông đã không tồn tại trong bảng các bà mẹ. 429 00:21:09,710 --> 00:21:16,450 Vì vậy, đây là việc sáp nhập giả sử dụng lệnh JOIN SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Và sau đó, chúng tôi đang tìm kiếm các Tên đầy đủ của người dùng và mẹ của người dùng, 431 00:21:21,250 --> 00:21:24,999 và vì vậy đây là những thông tin mà chúng ta sẽ nhận được từ các truy vấn tổng thể 432 00:21:24,999 --> 00:21:26,040 mà chúng ta thực hiện với SELECT. 433 00:21:26,040 --> 00:21:28,873 Vì vậy, chúng tôi đã tham gia các bảng với nhau và chúng tôi lấy ra hai cột, 434 00:21:28,873 --> 00:21:31,610 và đó là những gì chúng tôi sẽ nhận được. 435 00:21:31,610 --> 00:21:33,370 Tuy nhiên, SQL JOIN một loại phức tạp. 436 00:21:33,370 --> 00:21:36,770 Bạn có thể sẽ không làm họ quá nhiều, nhưng chỉ có một số ý tưởng của bộ xương 437 00:21:36,770 --> 00:21:41,992 mà bạn có thể sử dụng để kết hợp hai bàn với nhau nếu bạn cần. 438 00:21:41,992 --> 00:21:43,700 Hai cuối cùng là một chút đơn giản tôi hứa. 439 00:21:43,700 --> 00:21:48,040 Vì vậy, việc cập nhật, chúng ta có thể sử dụng CẬP NHẬT thay đổi thông tin trong một bảng. 440 00:21:48,040 --> 00:21:53,880 Định dạng chung là một số CẬP NHẬT bảng, SET một số cột để một số giá trị 441 00:21:53,880 --> 00:21:55,540 ĐÂU một số vị là hài lòng. 442 00:21:55,540 --> 00:21:57,850 Vì vậy, ví dụ, chúng ta có thể muốn để cập nhật bảng người sử dụng 443 00:21:57,850 --> 00:22:04,400 và thiết lập mật khẩu để yada yada, nơi có số ID là 10. 444 00:22:04,400 --> 00:22:06,400 >> Vì vậy, trong trường hợp này, chúng tôi cập nhật các bảng người sử dụng. 445 00:22:06,400 --> 00:22:08,275 Số ID là 10 cho mà hàng đầu tiên ở đó, 446 00:22:08,275 --> 00:22:10,690 và chúng tôi muốn cập nhật mật khẩu để yada yada. 447 00:22:10,690 --> 00:22:12,170 Và đó là những gì sẽ xảy ra. 448 00:22:12,170 --> 00:22:13,628 Nó khá đơn giản, phải không? 449 00:22:13,628 --> 00:22:17,990 Nó chỉ là một rất đơn giản sửa đổi để bàn. 450 00:22:17,990 --> 00:22:22,250 >> DELETE được các hoạt động, chúng tôi sử dụng để xóa thông tin từ một bảng. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM table WHERE một số vị là hài lòng. 452 00:22:24,817 --> 00:22:26,900 Chúng tôi muốn xóa từ bảng người dùng ví dụ 453 00:22:26,900 --> 00:22:28,254 nơi tên người dùng là Newman. 454 00:22:28,254 --> 00:22:31,420 Bạn có thể đoán những gì đang xảy đến xảy ra ở đây sau khi chúng tôi thực hiện SQL 455 00:22:31,420 --> 00:22:35,790 truy vấn, Newman đã biến mất khỏi bảng. 456 00:22:35,790 --> 00:22:40,460 >> Vì vậy, tất cả các hoạt động này, như tôi đã nói, rất dễ dàng để làm trong phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Đó là một giao diện rất thân thiện với người sử dụng. 458 00:22:43,020 --> 00:22:45,930 Nhưng nó đòi hỏi nỗ lực của nhãn hiệu. 459 00:22:45,930 --> 00:22:47,840 Chúng tôi không muốn sử dụng nhãn hiệu nỗ lực. 460 00:22:47,840 --> 00:22:51,280 Chúng tôi muốn các chương trình của chúng tôi để làm điều này cho chúng ta, phải không? 461 00:22:51,280 --> 00:22:53,190 Vì vậy, chúng ta có thể muốn làm điều này lập trình. 462 00:22:53,190 --> 00:22:56,410 Chúng tôi muốn kết hợp SQL và có cái gì khác để làm điều này cho chúng ta. 463 00:22:56,410 --> 00:23:02,710 >> Nhưng những gì chúng tôi đã nhìn thấy rằng cho phép chúng ta phải lập trình làm một cái gì đó? 464 00:23:02,710 --> 00:23:03,690 Chúng tôi đã nhìn thấy PHP, phải không? 465 00:23:03,690 --> 00:23:05,760 Nó giới thiệu một số năng động vào các chương trình của chúng tôi. 466 00:23:05,760 --> 00:23:10,430 Và do đó, may mắn thay, SQL và PHP chơi rất độc đáo với nhau. 467 00:23:10,430 --> 00:23:13,230 Có một chức năng trong PHP gọi là truy vấn, mà có thể được sử dụng. 468 00:23:13,230 --> 00:23:15,870 Và bạn có thể vượt qua như các tham số hoặc các tham số 469 00:23:15,870 --> 00:23:19,210 để truy vấn một truy vấn SQL bạn muốn thực hiện. 470 00:23:19,210 --> 00:23:23,250 Và PHP sẽ làm điều đó thay cho bạn. 471 00:23:23,250 --> 00:23:25,564 >> Vì vậy, sau khi bạn đã kết nối cơ sở dữ liệu của bạn với PHP, 472 00:23:25,564 --> 00:23:26,980 có hai sơ bạn làm điều này. 473 00:23:26,980 --> 00:23:29,230 Có một cái gì đó gọi là MySQLi và một cái gì đó gọi là PDO. 474 00:23:29,230 --> 00:23:31,063 Chúng tôi sẽ không đi vào một lớn số lượng chi tiết đó. 475 00:23:31,063 --> 00:23:32,957 Trong CS50 chúng tôi sử dụng PDO. 476 00:23:32,957 --> 00:23:34,790 Sau khi bạn đã kết nối cơ sở dữ liệu của bạn, bạn 477 00:23:34,790 --> 00:23:40,980 sau đó có thể thực hiện các truy vấn cơ sở dữ liệu của bạn bằng cách thông qua các truy vấn như các đối số 478 00:23:40,980 --> 00:23:42,730 PHP functions. 479 00:23:42,730 --> 00:23:46,460 Và khi bạn làm điều đó, bạn lưu trữ các kết quả thiết lập trong một mảng kết hợp. 480 00:23:46,460 --> 00:23:50,290 >> Và chúng tôi biết làm thế nào để làm việc với mảng kết hợp trong PHP. 481 00:23:50,290 --> 00:23:52,630 Vì vậy, tôi có thể nói điều gì đó như this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 đây là trong PHP-- bằng truy vấn. 483 00:23:55,470 --> 00:23:57,660 Và sau đó bên trong chức năng truy vấn rằng lập luận 484 00:23:57,660 --> 00:24:00,130 rằng tôi đang đi qua để truy vấn trông giống như SQL. 485 00:24:00,130 --> 00:24:01,160 Và trên thực tế đó là SQL. 486 00:24:01,160 --> 00:24:05,700 Đó là chuỗi truy vấn mà tôi sẽ muốn thực hiện trên cơ sở dữ liệu của tôi. 487 00:24:05,700 --> 00:24:09,250 >> Và như vậy trong màu đỏ, đây là PHP. 488 00:24:09,250 --> 00:24:11,890 Đây là SQL mà tôi tích hợp vào PHP bằng cách làm 489 00:24:11,890 --> 00:24:15,020 nó đối số cho hàm truy vấn. 490 00:24:15,020 --> 00:24:19,640 Tôi muốn chọn fullname từ người sử dụng trong đó số ID bằng 10. 491 00:24:19,640 --> 00:24:22,560 Và sau đó có lẽ sau khi tôi đã làm điều đó, Tôi có thể nói một cái gì đó như thế này. 492 00:24:22,560 --> 00:24:25,550 Tôi muốn in ra Cảm ơn nhắn để đăng nhập. 493 00:24:25,550 --> 00:24:32,530 >> Và tôi muốn nó interpolate-- tôi muốn để nội suy kết quả $ fullname. 494 00:24:32,530 --> 00:24:36,280 Và đó là cách tôi làm việc với điều đó mảng kết hợp mà tôi đã trở lại. 495 00:24:36,280 --> 00:24:39,730 $ fullname kết quả sẽ về cơ bản kết thúc việc in ra, 496 00:24:39,730 --> 00:24:42,870 cảm ơn cho đăng nhập, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Đó là tên đầy đủ nơi idnum bằng 10. 498 00:24:46,570 --> 00:24:48,850 >> Và vì vậy tất cả tôi đang làm là tôi đang now-- tôi lưu trữ 499 00:24:48,850 --> 00:24:52,780 truy vấn của tôi, kết quả truy vấn của tôi và kết quả là một mảng kết hợp, 500 00:24:52,780 --> 00:24:56,330 và họ tên là tên của cột tôi đã nhận được cho. 501 00:24:56,330 --> 00:25:01,010 Vì vậy, đó là chìa khóa của tôi vào các kết quả mảng kết hợp mà tôi muốn. 502 00:25:01,010 --> 00:25:05,930 Vì vậy, cám ơn cho đăng nhập, $ kết quả, fullname sẽ in ra, sẽ dính 503 00:25:05,930 --> 00:25:08,654 ngay trong giữa những xoăn niềng răng, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Và tôi sẽ muốn in ra thông điệp Cảm ơn cho đăng nhập vào Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Bây giờ, chúng ta có lẽ không muốn cứng mã những điều như thế trong, phải không? 506 00:25:16,652 --> 00:25:19,860 Chúng tôi có thể muốn làm một cái gì đó như in f, nơi chúng tôi có thể thay thế và có thể 507 00:25:19,860 --> 00:25:22,443 thu thập thông tin khác nhau, hoặc có thể có quá trình truy vấn 508 00:25:22,443 --> 00:25:23,370 thông tin khác nhau. 509 00:25:23,370 --> 00:25:27,920 Và do đó, truy vấn, các chức năng truy vấn có khái niệm về loại thay thế 510 00:25:27,920 --> 00:25:32,310 rất giống với in f trăm s và phần trăm c, là dấu hỏi. 511 00:25:32,310 --> 00:25:34,290 >> Và chúng ta có thể sử dụng câu hỏi đánh dấu rất Tương tự 512 00:25:34,290 --> 00:25:38,400 in f để biến thay thế. 513 00:25:38,400 --> 00:25:44,120 Vì vậy, có lẽ người dùng của bạn đăng nhập trước đó, và bạn đã lưu số ID người dùng của họ 514 00:25:44,120 --> 00:25:51,710 trong $ _SESSION của PHP siêu toàn cầu trong ID chính. 515 00:25:51,710 --> 00:25:55,947 Vì vậy, có lẽ sau khi họ đăng nhập, bạn thiết lập $ _SESSION ID tương đương với 10, 516 00:25:55,947 --> 00:25:58,280 ngoại suy từ các ví dụ chúng ta chỉ thấy một giây trước đó. 517 00:25:58,280 --> 00:26:01,960 >> Và như vậy khi chúng tôi thực sự thực thi này truy vấn kết quả bây giờ, 518 00:26:01,960 --> 00:26:08,440 nó sẽ cắm 10, hoặc bất cứ giá trị ID $ _SESSION là. 519 00:26:08,440 --> 00:26:10,790 Và do đó cho phép chúng tôi có một chút năng động hơn. 520 00:26:10,790 --> 00:26:12,699 Chúng tôi không cứng mã hóa mọi thứ được nữa. 521 00:26:12,699 --> 00:26:14,490 Chúng tôi đang lưu thông tin một nơi nào đó và sau đó 522 00:26:14,490 --> 00:26:18,924 chúng ta có thể sử dụng thông tin đó một lần nữa để loại khái quát những gì chúng tôi muốn làm, 523 00:26:18,924 --> 00:26:21,090 và chỉ cần cắm vào và thay đổi hành vi của các trang của chúng tôi 524 00:26:21,090 --> 00:26:26,489 dựa trên những gì số ID của người dùng thực sự là sau khi họ đã đăng nhập. 525 00:26:26,489 --> 00:26:28,530 Nó cũng có thể, mặc dù, mà kết quả của bạn thiết lập 526 00:26:28,530 --> 00:26:30,840 có thể bao gồm nhiều hàng. 527 00:26:30,840 --> 00:26:33,990 Trong trường hợp đó, bạn có một mảng của arrays-- 528 00:26:33,990 --> 00:26:35,334 một mảng của các mảng kết hợp. 529 00:26:35,334 --> 00:26:37,000 Và bạn chỉ cần để lặp qua nó. 530 00:26:37,000 --> 00:26:41,950 Và chúng tôi biết làm thế nào để lặp thông qua một mảng trong PHP, phải không? 531 00:26:41,950 --> 00:26:45,600 Vì vậy, đây có lẽ là nhất điều phức tạp, chúng tôi đã nhìn thấy cho đến nay. 532 00:26:45,600 --> 00:26:49,640 Nó thực sự tích hợp ba ngôn ngữ với nhau. 533 00:26:49,640 --> 00:26:52,920 >> Ở đây trong màu đỏ, đây là một số mã HTML. 534 00:26:52,920 --> 00:26:56,872 Tôi dường như đang starting-- này là một đoạn của một số HTML mà tôi có. 535 00:26:56,872 --> 00:26:59,580 Tôi bắt đầu một đoạn mới nói rằng bà mẹ của Seinfeld TV. 536 00:26:59,580 --> 00:27:02,350 Và rồi ngay sau đó Tôi bắt đầu một bảng. 537 00:27:02,350 --> 00:27:06,060 Và rồi sau đó, tôi có một số PHP, phải không? 538 00:27:06,060 --> 00:27:08,229 Tôi có tất cả các mã PHP này trong đó. 539 00:27:08,229 --> 00:27:09,645 Tôi dường như đang đi làm cho một truy vấn. 540 00:27:09,645 --> 00:27:14,180 Và để thực hiện các truy vấn, tôi sẽ được sử dụng mẹ CHỌN TỪ bà mẹ. 541 00:27:14,180 --> 00:27:15,970 >> Vì vậy, đây là getting-- này là SQL. 542 00:27:15,970 --> 00:27:17,300 Vì vậy, các màu xanh là SQL. 543 00:27:17,300 --> 00:27:19,680 Các màu đỏ, chúng tôi thấy một giây trước đó là HTML. 544 00:27:19,680 --> 00:27:21,360 Và màu xanh lá cây ở đây là PHP. 545 00:27:21,360 --> 00:27:23,400 Vì vậy, tôi đang làm cho một truy vấn cơ sở dữ liệu của tôi, tôi 546 00:27:23,400 --> 00:27:26,040 chọn tất cả các các bà mẹ trong bảng các bà mẹ. 547 00:27:26,040 --> 00:27:30,710 Không chỉ thu hẹp nó xuống để cụ thể hàng, tôi yêu cầu cho tất cả chúng. 548 00:27:30,710 --> 00:27:33,290 >> Sau đó, tôi kiểm tra nếu kết quả là không bình đẳng bằng giả. 549 00:27:33,290 --> 00:27:37,410 Đây chỉ là cách tôi kiểm tra loại nếu các kết quả không bằng null, 550 00:27:37,410 --> 00:27:40,260 rằng chúng ta sẽ thấy c ví dụ. 551 00:27:40,260 --> 00:27:44,000 Về cơ bản này chỉ được kiểm tra để chắc chắc chắn rằng nó thực sự có dữ liệu trở lại. 552 00:27:44,000 --> 00:27:47,041 Bởi vì tôi không muốn để bắt đầu in ra dữ liệu nếu tôi không nhận được bất kỳ dữ liệu. 553 00:27:47,041 --> 00:27:50,690 Sau đó cho từng kết quả kết quả là cú pháp foreach từ PHP, tất cả tôi đang làm 554 00:27:50,690 --> 00:27:53,399 được in ra bà mẹ $ kết quả. 555 00:27:53,399 --> 00:27:55,940 Và do đó, tôi sẽ có được một bộ của tất cả các bà mẹ của each-- 556 00:27:55,940 --> 00:27:59,980 nó là một mảng của liên kết arrays-- và tôi in ra 557 00:27:59,980 --> 00:28:03,649 mỗi một khi hàng riêng của một bảng. 558 00:28:03,649 --> 00:28:05,690 Và đó là thực sự khá nhiều tất cả để có nó. 559 00:28:05,690 --> 00:28:07,750 Tôi biết có một chút bit xảy ra ở đây 560 00:28:07,750 --> 00:28:13,210 trong ví dụ cuối cùng này với mảng arrays-- mảng của các mảng kết hợp. 561 00:28:13,210 --> 00:28:17,340 Nhưng nó thực sự chỉ đun sôi xuống trong SQL để thực hiện một truy vấn, 562 00:28:17,340 --> 00:28:21,102 thường chọn sau khi chúng tôi đã đã đưa thông tin vào bảng, 563 00:28:21,102 --> 00:28:22,310 và sau đó chỉ cần kéo nó ra. 564 00:28:22,310 --> 00:28:25,710 >> Và điều này là chúng ta sẽ kéo nó trong trường hợp đặc biệt này. 565 00:28:25,710 --> 00:28:31,120 Chúng tôi sẽ trích xuất tất cả các cá nhân các bà mẹ từ bảng các bà mẹ. 566 00:28:31,120 --> 00:28:35,970 Chúng tôi có một tập hợp toàn bộ chúng, và chúng tôi muốn lặp qua và in ra 567 00:28:35,970 --> 00:28:37,630 mỗi cái. 568 00:28:37,630 --> 00:28:40,510 Vì vậy, một lần nữa, điều này có lẽ ví dụ phức tạp nhất 569 00:28:40,510 --> 00:28:44,510 chúng tôi đã nhìn thấy bởi vì chúng tôi đang trộn ba ngôn ngữ khác nhau với nhau, phải không? 570 00:28:44,510 --> 00:28:50,100 >> Một lần nữa, chúng tôi có HTML ở đây màu đỏ, trộn với một số SQL ở đây trong xanh, 571 00:28:50,100 --> 00:28:52,049 trộn với một số PHP trong xanh. 572 00:28:52,049 --> 00:28:53,840 Nhưng tất cả những đóng độc đáo với nhau, đó là 573 00:28:53,840 --> 00:28:57,060 chỉ là vấn đề của phát triển thói quen tốt để bạn có thể nhận được 574 00:28:57,060 --> 00:28:58,780 họ làm việc với nhau theo cách mà bạn muốn. 575 00:28:58,780 --> 00:29:03,790 Và cách duy nhất để thực sự làm điều đó là thực hành, thực tập, thực hành. 576 00:29:03,790 --> 00:29:06,740 Tôi Doug Lloyd, đây là CS50. 577 00:29:06,740 --> 00:29:08,647