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 ช่วยให้เราส่งออกในกลุ่มอื่น ๆ สิ่ง HTM​​L และเนื้อหาอื่น ๆ เช่น 10 00:00:26,872 --> 00:00:27,830 ว่าเราจะต้องการที่จะเห็น 11 00:00:27,830 --> 00:00:30,871 แต่เรายังไม่ได้ดูจริงๆที่ว่า เรากำลังจะเก็บข้อมูลใด ๆ 12 00:00:30,871 --> 00:00:34,477 อันที่จริงเกือบใด ๆ ที่ซุปเปอร์ เว็บไซต์ที่น่าสนใจที่คุณเยี่ยมชมในวันนี้ 13 00:00:34,477 --> 00:00:36,560 มีชนิดของฐานข้อมูลบางส่วน ที่ปลายด้านหลังขวา? 14 00:00:36,560 --> 00:00:39,540 Facebook แน่นอนเก็บข้อมูลจำนวนมาก เกี่ยวกับเราทุกคนและร้านค้า Gmail ทั้งหมด 15 00:00:39,540 --> 00:00:40,210 ของอีเมลของคุณ 16 00:00:40,210 --> 00:00:44,150 >> และเพื่อให้เว็บไซต์อื่น ๆ ไม่เพียง แต่ เนื้อหาคงที่ในการให้ข้อมูล 17 00:00:44,150 --> 00:00:45,640 เป็นจริงแบบไดนามิกในทางใดทางหนึ่ง 18 00:00:45,640 --> 00:00:48,480 คุณให้ข้อมูลก็ปรับปรุง หน้าสำหรับคนอื่น ๆ 19 00:00:48,480 --> 00:00:50,620 คุณจะได้รับข้อความที่คุณส่ง ข้อความและอื่น ๆ 20 00:00:50,620 --> 00:00:54,250 ดังนั้นวันนี้เรามองใกล้ที่ หนุนหลังของโครงการ 21 00:00:54,250 --> 00:00:57,330 ที่คุณจะดำน้ำในต่อไป สัปดาห์ CS50 การเงินซึ่ง 22 00:00:57,330 --> 00:01:00,509 เป็นจริงไปได้ที่คุณสร้าง บางสิ่งบางอย่างไม่ได้อยู่ใน C แต่ใน PHP 23 00:01:00,509 --> 00:01:02,550 เว็บไซต์ที่มีลักษณะ บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่นนี้ 24 00:01:02,550 --> 00:01:05,810 ที่ช่วยให้การซื้อและขาย หุ้นที่เป็นจริง 25 00:01:05,810 --> 00:01:09,044 จะวาดตามเวลาจริง ข้อมูลหุ้นจากการเงิน yahoo 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 คุณจะรู้ว่าฐานข้อมูลที่จะเป็น ตอนนี้ในแง่ nontechnical? 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 หรือ Google สเปรดชีตหรือไฟล์เบอร์แอปเปิ้ล 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 ดังนั้นเช่นหมายเลขประจำตัวเช่นฮาร์วาร์ของคุณ ประจำตัวประชาชนหรือบัตรประจำตัวเยลสุทธิของคุณหรือชอบ 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 ลัน: รหัสผ่านอาจจะต่อ A ที่อยู่หมายเลขโทรศัพท์บางทีอาจจะ 58 00:02:29,240 --> 00:02:30,050 ที่อยู่อีเมล 59 00:02:30,050 --> 00:02:32,640 จึงมีที่อัดแน่นของสาขานี้ สามารถเรียงลำดับของเกลียวออกจากการควบคุม 60 00:02:32,640 --> 00:02:34,760 ได้อย่างรวดเร็วทันทีที่คุณเริ่มต้น ตระหนักโอ้ขอเก็บนี้ 61 00:02:34,760 --> 00:02:36,190 และขอเก็บนี้และที่ 62 00:02:36,190 --> 00:02:37,657 >> แต่วิธีการที่เราจะทำจริงหรือไม่? 63 00:02:37,657 --> 00:02:39,740 ดังนั้นอีกครั้งรูปแบบจิต ที่จะมีในวันนี้ในขณะที่เรา 64 00:02:39,740 --> 00:02:42,320 ดำน้ำใน SQL ที่เกิดขึ้นจริง โครงสร้างภาษาแบบสอบถาม 65 00:02:42,320 --> 00:02:44,186 เป็นฐานข้อมูลที่มีลักษณะเช่นนี้ 66 00:02:44,186 --> 00:02:45,310 มันเป็นเพียงแถวและคอลัมน์ 67 00:02:45,310 --> 00:02:48,309 และคุณสามารถจินตนาการ Google สเปรดชีต หรือจำนวนของโปรแกรมอื่น ๆ 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-- อื่น ๆ ฐานข้อมูลร้านค้าสิ่ง relationally 71 00:02:59,200 --> 00:03:01,770 และฐานข้อมูลเชิงสัมพันธ์ ก็หมายความว่าหนึ่งที่แท้จริง 72 00:03:01,770 --> 00:03:03,672 เก็บข้อมูลในแถวและคอลัมน์ 73 00:03:03,672 --> 00:03:04,630 มันเป็นเรื่องง่ายเหมือนที่ 74 00:03:04,630 --> 00:03:07,230 >> ดังนั้นแม้ว่าบางสิ่งบางอย่างเช่น Oracle ที่ คุณอาจเคยได้ยินทั่วไป 75 00:03:07,230 --> 00:03:08,271 เป็นฐานข้อมูลเชิงสัมพันธ์ 76 00:03:08,271 --> 00:03:10,929 และอยู่ภายใต้ฝากระโปรงก็ เก็บข้อมูลในแถวและคอลัมน์ 77 00:03:10,929 --> 00:03:12,970 และ Oracle เรียกเก็บ เงินจำนวนมากจะทำอย่างนั้น 78 00:03:12,970 --> 00:03:15,550 ในขณะที่ค่าใช้จ่าย MySQL คุณไม่มีอะไรเหมือนกัน 79 00:03:15,550 --> 00:03:18,790 ดังนั้น SQL เป็นไปเพื่อให้เรา อย่างน้อยสี่การดำเนินงาน 80 00:03:18,790 --> 00:03:23,190 ความสามารถในการเลือกข้อมูลเช่นการอ่าน ข้อมูลแทรกลบและปรับปรุงข้อมูล 81 00:03:23,190 --> 00:03:25,525 ในคำอื่น ๆ เหล่านั้น จริงๆการดำเนินงานที่สำคัญสี่ 82 00:03:25,525 --> 00:03:28,950 ที่กำลังจะช่วยให้เราสามารถเปลี่ยน สิ่งที่อยู่ในแถวเหล่านั้นและคอลัมน์ 83 00:03:28,950 --> 00:03:33,250 >> เครื่องมือที่เราจะใช้ในวันนี้โดยเฉพาะอย่างยิ่ง ที่จะเรียนรู้ SQL และจะเล่นกับมัน 84 00:03:33,250 --> 00:03:34,627 มีการเรียกอีกครั้ง PHP MyAdmin 85 00:03:34,627 --> 00:03:35,460 มันเป็นเครื่องมือที่ใช้บนเว็บ 86 00:03:35,460 --> 00:03:38,200 รวมบังเอิญว่า มันเขียนใน PHP 87 00:03:38,200 --> 00:03:42,400 แต่มันจะทำให้เรามีกราฟิก ส่วนติดต่อผู้ใช้เพื่อให้เราสามารถจริง 88 00:03:42,400 --> 00:03:46,054 สร้างแถวเหล่านี้และคอลัมน์ แล้วพูดคุยกับพวกเขาผ่านทางรหัส 89 00:03:46,054 --> 00:03:47,970 ดังนั้นขอตอนนี้เริ่มที่จะ สิ่งที่ผมคิดว่าเป็นตรงไปตรงมา 90 00:03:47,970 --> 00:03:51,000 ชนิดของกระบวนการความสนุกของ สร้างปลายด้านหลังของเว็บไซต์ 91 00:03:51,000 --> 00:03:54,580 ชิ้นส่วนที่ผู้ใช้ไม่ได้ เห็น แต่ก็จะดูแลเกี่ยวกับ 92 00:03:54,580 --> 00:03:56,170 เนื่องจากว่าเป็นข้อมูลที่ค่อนข้างจะ 93 00:03:56,170 --> 00:03:59,570 ดังนั้นคล้ายกับ 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 และฉันได้ไปเยี่ยม URL สำหรับ เครื่องมือนี้เรียกว่า PHP MyAdmin 101 00:04:19,372 --> 00:04:22,580 และปัญหาการตั้งเจ็ดเราจะบอก คุณว่าวิธีการที่จะได้รับการอินเตอร์เฟซนี้ 102 00:04:22,580 --> 00:04:23,200 ได้เป็นอย่างดี 103 00:04:23,200 --> 00:04:25,640 ที่มุมซ้ายมือด้านบน แจ้งให้ทราบว่ากล่าวว่าการบรรยาย 104 00:04:25,640 --> 00:04:27,610 และนั่นก็หมายความว่า ล่วงหน้าที่ฉันสร้างขึ้น 105 00:04:27,610 --> 00:04:31,360 ฐานข้อมูลที่ว่างเปล่าที่เรียกว่าการบรรยาย ที่มีสเปรดชีทในมันไม่มีเลย 106 00:04:31,360 --> 00:04:32,600 ไม่มีแถวและคอลัมน์เป็น 107 00:04:32,600 --> 00:04:34,308 เพราะเป็นครั้งแรก สิ่งที่เรากำลังจะทำ 108 00:04:34,308 --> 00:04:37,100 คือการเริ่มต้นในการสร้างตาราง ที่จะเก็บผู้ใช้ของเรา 109 00:04:37,100 --> 00:04:39,100 >> ดังนั้นแท้จริงมากกว่า ที่นี่ไปทางขวาผม 110 00:04:39,100 --> 00:04:42,070 จะบอกฐานข้อมูล ฉันต้องการตารางที่เรียกว่าผู้ใช้ 111 00:04:42,070 --> 00:04:44,845 ดังนั้นนี้เป็นเหมือนไฟล์ที่ผม ต้องการจัดเก็บข้อมูลทั้งหมดของฉันใน 112 00:04:44,845 --> 00:04:45,720 และวิธีการหลายคอลัมน์? 113 00:04:45,720 --> 00:04:47,740 ดีขอให้มันง่ายสำหรับตอนนี้ 114 00:04:47,740 --> 00:04:51,855 ผมแค่อยากจะเก็บเหมือน ชื่อผู้ใช้และชื่อสำหรับผู้ใช้ 115 00:04:51,855 --> 00:04:53,020 เราจะเริ่มต้นเล็ก ๆ 116 00:04:53,020 --> 00:04:55,370 ดังนั้นฉันต้องการสองคอลัมน์รวม 117 00:04:55,370 --> 00:04:57,360 และฉันจะไปข้างหน้าและคลิกไป 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 ฉันจะสร้างตารางที่เรียกว่า ผู้ใช้ที่มีสองคอลัมน์คลิกไปตกลง 122 00:05:09,180 --> 00:05:10,520 ตอนนี้เราได้รับมันได้อย่างรวดเร็วจริงๆ 123 00:05:10,520 --> 00:05:12,065 ขอขอบคุณคุณทำได้ดีมาก 124 00:05:12,065 --> 00:05:14,440 สิทธิทั้งหมดดังนั้นสิ่งที่เราต้องการ คอลัมน์เหล่านี้จะเรียกว่า? 125 00:05:14,440 --> 00:05:16,080 >> ดังนั้นหนึ่งจะถูกเรียกชื่อผู้ใช้ 126 00:05:16,080 --> 00:05:19,480 ดังนั้นสิ่งที่ฉันเห็น here-- และอินเตอร์เฟซ ตรงไปตรงมาได้น่าเกลียดน้อยที่สุด 127 00:05:19,480 --> 00:05:21,270 เมื่อคุณเริ่มต้นการพิมพ์ข้อมูลทั้งหมดนี้ 128 00:05:21,270 --> 00:05:27,450 แต่สิ่งที่ดีคือการจัดเรียงของที่ ขัดแย้งฉันสร้างคอลัมน์ 129 00:05:27,450 --> 00:05:29,977 แต่เครื่องมือที่มีอย่างโง่เขลา วางพวกเขาออกในแถว 130 00:05:29,977 --> 00:05:31,560 เพื่อที่จะสามารถกำหนดค่าคอลัมน์เหล่านี้ 131 00:05:31,560 --> 00:05:33,550 จึงมีสองช่องว่างที่มีอยู่ภายใต้ชื่อ 132 00:05:33,550 --> 00:05:36,180 และเป็นหนึ่งในสาขาเหล่านี้ฉัน ต้องการที่จะเรียกชื่อผู้ใช้ 133 00:05:36,180 --> 00:05:38,000 และเขตอื่น ๆ ที่ฉันต้องการที่จะเรียกชื่อ 134 00:05:38,000 --> 00:05:40,340 >> และตอนนี้ฉันต้องเลือก ชนิดข้อมูลสำหรับสิ่งเหล่านี้ 135 00:05:40,340 --> 00:05:42,330 ดังนั้นในขณะที่ใน Excel และ Google สเปรดชีต 136 00:05:42,330 --> 00:05:45,531 ถ้าคุณต้องการที่คอลัมน์คุณอย่างแท้จริง เพียงแค่พิมพ์ชื่อหรือชื่อผู้ใช้กด Enter 137 00:05:45,531 --> 00:05:48,030 บางทีคุณอาจจะทำให้ใบหน้าหนา เพียงเพื่อความชัดเจน แต่ที่มัน 138 00:05:48,030 --> 00:05:50,140 คุณไม่ได้ระบุ ชนิดของคอลัมน์ 139 00:05:50,140 --> 00:05:53,790 ตอนนี้ใน Google สเปรดชีตหรือ 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 ถ่านไม่ได้จริงๆถ่าน 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 ดังนั้นนี้ไม่ได้ หมายถึงให้ฉันหนึ่ง CHAR 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 ลัน: ใช่เพียง ทำให้พวกเขา null ทั้งหมด 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 ลัน: 5,000 โอ้พระเจ้าของข้าพเจ้า 204 00:08:23,700 --> 00:08:26,309 ดังนั้นที่อาจจะดี ผูกไว้บนเราจะพูดว่า 205 00:08:26,309 --> 00:08:28,350 และที่นี่เรามีชนิดของ โทรตัดสิน 206 00:08:28,350 --> 00:08:30,400 เหมือนไม่มีคำตอบที่ถูกที่นี่ 207 00:08:30,400 --> 00:08:32,740 ไม่มีที่สิ้นสุดเป็นไปไม่ได้มาก เพราะเราในที่สุด 208 00:08:32,740 --> 00:08:34,781 จะ have-- เรา จะวิ่งออกจากหน่วยความจำ 209 00:08:34,781 --> 00:08:36,909 ดังนั้นเราจะต้องทำ สายการตัดสินในบางจุด 210 00:08:36,909 --> 00:08:41,010 >> ที่พบบ่อยมากจะเป็นตัวอย่างเช่น เพื่อ use-- และแจ้งให้เราระบุ CHAR ที่นี่ 211 00:08:41,010 --> 00:08:46,050 เป็น before-- 255 เป็นตัวอักษร ขีด จำกัด บนซอฟต์แวร์ฐานข้อมูลนี้ 212 00:08:46,050 --> 00:08:46,700 ปีที่ผ่านมา 213 00:08:46,700 --> 00:08:48,575 และเพื่อให้มีจำนวนมากของมนุษย์ เพียงแค่จะบอกว่าดี 214 00:08:48,575 --> 00:08:49,420 255 ขีด จำกัด 215 00:08:49,420 --> 00:08:50,620 ขอเพียงใช้สูงสุด 216 00:08:50,620 --> 00:08:51,870 และนี่เป็นเรื่องน่าขันสวย 217 00:08:51,870 --> 00:08:55,060 เช่นถ้าคุณกำลังพิมพ์ใครบางคน ชื่อสำหรับ 200 ตัวอักษรบวก 218 00:08:55,060 --> 00:08:56,140 ที่ไร้สาระเล็ก ๆ น้อย ๆ 219 00:08:56,140 --> 00:08:59,624 >> แต่จำได้ว่า ASCII ไม่ ระบบเดียวสำหรับตัวอักษร 220 00:08:59,624 --> 00:09:01,540 และโดยเฉพาะอย่างยิ่งใน จำนวนมากของภาษาเอเชีย 221 00:09:01,540 --> 00:09:04,248 ที่มีตัวละครที่เราไม่สามารถ แสดงบนแป้นพิมพ์เช่นสหรัฐของฉัน 222 00:09:04,248 --> 00:09:08,209 แป้นพิมพ์ตัวอักษรบางตัวจริง ใช้เวลาถึง 16 บิตแทนแปดบิต 223 00:09:08,209 --> 00:09:10,250 และเป็นเช่นนี้จริง ไม่ได้เป็นสิ่งที่ไม่สมควร 224 00:09:10,250 --> 00:09:12,250 ที่เราต้องการมากขึ้น พื้นที่ถ้าเราต้องการพอดี 225 00:09:12,250 --> 00:09:16,252 ตัวอักษรขนาดใหญ่กว่าสหรัฐมาก คนที่เป็นศูนย์กลางที่เราได้มีแนวโน้มที่จะหารือเกี่ยวกับ 226 00:09:16,252 --> 00:09:17,460 ดังนั้นเราต้องมีขีด จำกัด บน 227 00:09:17,460 --> 00:09:21,470 ผมไม่ทราบว่าสิ่งที่ดีที่สุดคือ แต่โดยทั่วไป 255 หนึ่งที่พบบ่อย 228 00:09:21,470 --> 00:09:22,700 25 รู้สึกต่ำ 229 00:09:22,700 --> 00:09:23,857 16, 32 รู้สึกต่ำ 230 00:09:23,857 --> 00:09:25,690 ฉันจะผิดพลาดในด้านข้าง บางสิ่งบางอย่างที่สูงขึ้น 231 00:09:25,690 --> 00:09:27,330 แต่มีการค้าออกเช่นเคย 232 00:09:27,330 --> 00:09:31,902 อะไรคือสิ่งที่อาจจะเห็นได้ชัด การปิดการจอง 255 ตัวอักษร 233 00:09:31,902 --> 00:09:33,360 สำหรับชื่อของทุกคนในฐานข้อมูลของฉันได้อย่างไร 234 00:09:33,360 --> 00:09:34,230 >> ผู้ชม: [ไม่ได้ยิน] 235 00:09:34,230 --> 00:09:34,510 >> 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 defensively เพียงในกรณีที่มีคน ในชั้นเรียนที่มีชื่อยาวจริงๆ 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 อาจจะหกไบต์เช่น อักขระ null ต่อท้าย 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 แต่มีเสมอ tradeoff 254 00:10:29,140 --> 00:10:33,024 ดังนั้นในมือข้างหนึ่งชื่อผู้ใช้ฉัน ระบุที่จะเขียนยากที่ 16 255 00:10:33,024 --> 00:10:34,940 และบางทีที่ไม่ได้ โทรขวาบางทีมันอาจจะ 256 00:10:34,940 --> 00:10:40,040 แต่ทำไมไม่ใช้ varchars สำหรับทุกอย่าง? 257 00:10:40,040 --> 00:10:42,020 >> มันอยู่ที่เหตุผล 258 00:10:42,020 --> 00:10:46,200 ทำไมไม่ใช้ varchars สำหรับทุกสาขา มีความยาวคุณไม่ทราบล่วงหน้า 259 00:10:46,200 --> 00:10:48,180 ถ้ามันดูเหมือนว่าจะเป็นสิ่งที่ดีใช่มั้ย? 260 00:10:48,180 --> 00:10:50,482 ใช้พื้นที่มากที่สุดเท่าที่เป็นเพียง คุณจะต้องขึ้นอยู่กับขีด จำกัด นี้? 261 00:10:50,482 --> 00:10:51,271 >> ผู้ชม: ช้าลง 262 00:10:51,271 --> 00:10:52,146 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 ลัน: มอง สำหรับจุดสิ้นสุด null 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 ฉัน preemptively สามารถบอก ฐานข้อมูลที่ผมรู้มากกว่าคุณ 326 00:13:24,770 --> 00:13:29,220 และฉันต้องการที่จะออกคำสั่งว่า คุณควรดัชนีข้อมูลนี้ 327 00:13:29,220 --> 00:13:33,200 ดัชนีที่ไหนฟิลด์หรือคอลัมน์ หมายความว่าฐานข้อมูลล่วงหน้า 328 00:13:33,200 --> 00:13:37,040 ควรยืมความคิดจากการเช่น สัปดาห์ที่สี่และห้าและหกจาก CS50 329 00:13:37,040 --> 00:13:39,240 และที่จริงการสร้าง สิ่งที่ต้องการค้นหาแบบทวิภาค 330 00:13:39,240 --> 00:13:41,560 ต้นไม้หรือบางสิ่งบางอย่าง โดยทั่วไปเรียกว่าต้นไม้ B 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 ฐานข้อมูลที่จะให้คุณถ้าคุณบอก มัน preemptively ดัชนีข้อมูลนี้ 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 ฐานข้อมูลจะไม่ยอมให้คนสองคนที่ชื่อ เดวิดหรือ Malans ลงทะเบียนในกรณีนี้ 355 00:14:46,690 --> 00:14:50,030 >> และเป็นกันแม้ว่านี้ เมนูเพียงช่วยให้คุณเลือกอย่างใดอย่างหนึ่ง 356 00:14:50,030 --> 00:14:54,550 ดัชนีที่ไม่ซ้ำกันเป็นหนึ่งที่เป็น จัดทำดัชนีสำหรับการทำงานเร็วสุด 357 00:14:54,550 --> 00:14:56,100 แต่ก็ยังบังคับใช้เอกลักษณ์ 358 00:14:56,100 --> 00:14:58,850 และเราจะกลับมากับสิ่งที่ อีกสองหมายถึงในสักครู่ 359 00:14:58,850 --> 00:15:00,930 ในขณะเดียวกันถ้าผมไป แถวที่สองของฉันซึ่ง 360 00:15:00,930 --> 00:15:06,230 เป็นชื่อของผู้ใช้ที่ฉันควรจะระบุ ว่าชื่อต้องไม่ซ้ำกัน? 361 00:15:06,230 --> 00:15:09,550 ไม่มีเพราะคุณสามารถแน่นอน have-- ไม่มีสองเดวิด 362 00:15:09,550 --> 00:15:11,050 Malans ในห้องนี้ได้มากที่สุด 363 00:15:11,050 --> 00:15:14,290 แต่ถ้าเราเลือกชื่อที่แตกต่างกัน เราก็อาจจะมีการชนกัน 364 00:15:14,290 --> 00:15:16,130 >> คิดว่ากลับไปสับตารางและไม่ชอบ 365 00:15:16,130 --> 00:15:18,604 ดังนั้นเราอย่างแน่นอนไม่ต้องการ ที่จะทำให้สนามชื่อที่ไม่ซ้ำกัน 366 00:15:18,604 --> 00:15:21,270 ดังนั้นเรากำลังจะออกจาก ว่ารีบรีบรีบอะไร 367 00:15:21,270 --> 00:15:22,660 และฉันจะออกจาก ทุกอย่างอื่นเพียงอย่างเดียว 368 00:15:22,660 --> 00:15:25,035 อันที่จริงส่วนใหญ่ของเขตข้อมูลเหล่านี้ เราจะได้ไม่ต้องดูแลเกี่ยวกับ 369 00:15:25,035 --> 00:15:27,830 และเมื่อผมพร้อมที่จะบันทึกนี้ ถ้าอินเทอร์เน็ตให้ความร่วมมือ 370 00:15:27,830 --> 00:15:35,032 ผมคลิกบันทึกและมากมาก ช้าไม่ได้รับฐานข้อมูลที่บันทึกไว้ 371 00:15:35,032 --> 00:15:37,240 และตอนนี้ฉันกลับไปนี้ อินเตอร์เฟซซึ่งเป็นที่ยอมรับ 372 00:15:37,240 --> 00:15:38,680 ถูกครอบงำได้อย่างรวดเร็วก่อน 373 00:15:38,680 --> 00:15:42,450 แต่ทั้งหมดที่ผมจะทำคือการคลิก ที่ผู้ใช้คำที่ด้านบนซ้าย 374 00:15:42,450 --> 00:15:47,630 ฉันจะไปขึ้นที่นี่คลิก ผู้ใช้และโดยค่าเริ่มต้นมัน 375 00:15:47,630 --> 00:15:50,180 ได้ดำเนินการ SQL บางอย่าง แต่ เพิ่มเติมว่าในช่วงเวลาที่ 376 00:15:50,180 --> 00:15:52,654 นี่เป็นเพียงบทสรุปของสิ่งที่ฉันทำ 377 00:15:52,654 --> 00:15:55,320 และไม่ต้องกังวลที่คุณเห็น พูดถึงลาตินและสวีเดนที่นี่ 378 00:15:55,320 --> 00:16:00,490 เหล่านี้เป็นเพียงการเริ่มต้น การตั้งค่าเพราะ MySQL เดิม 379 00:16:00,490 --> 00:16:04,000 หรือ PHP MyAdmin หนึ่งของทั้งสองที่เกิดขึ้น จะถูกเขียนโดยคนสวีเดนบาง 380 00:16:04,000 --> 00:16:06,100 แต่มันเป็นเรื่องที่ไม่เกี่ยวข้องในกรณีของเราที่นี่ 381 00:16:06,100 --> 00:16:08,280 >> สิทธิทั้งหมดดังนั้นจึงเป็น นี้ที่น่าสนใจทั้งหมดหรือไม่ 382 00:16:08,280 --> 00:16:13,050 มันจะเปิดออกฉันสามารถแทรกข้อมูล ลงในฐานข้อมูลโดยการเขียนรหัส 383 00:16:13,050 --> 00:16:15,940 และฉันไปข้างหน้าและ ในแฟ้มของฉันที่นี่ฉัน 384 00:16:15,940 --> 00:16:19,000 จะไปข้างหน้าและหลอกเช่น นี้เป็นสายไปยังฐานข้อมูลที่ซึ่ง 385 00:16:19,000 --> 00:16:23,040 มันไม่ได้ในขณะนี้ แต่มันจะ เมื่อเราได้รับการแก้ไขปัญหาการตั้งเจ็ด 386 00:16:23,040 --> 00:16:25,640 และฉันจะไปข้างหน้าและ ดำเนินการฟังก์ชั่นที่เรียกว่าแบบสอบถาม 387 00:16:25,640 --> 00:16:28,730 ซึ่งเราจะให้คุณในปัญหา ตั้งรหัสกระจายเจ็ดของที่ 388 00:16:28,730 --> 00:16:31,490 ใช้เวลาอย่างน้อยหนึ่งอาร์กิวเมนต์ ซึ่งเป็นเพียงสตริง 389 00:16:31,490 --> 00:16:33,460 สตริงของ SQL รหัส 390 00:16:33,460 --> 00:16:36,700 ดังนั้นคุณจะเรียนรู้วิธีการ เขียนภาษาแบบสอบถามที่มีโครงสร้าง 391 00:16:36,700 --> 00:16:41,270 >> ถ้าผมต้องการที่จะแทรกแถวใหม่ในของฉัน ฐานข้อมูลเพราะมีคนส่ง 392 00:16:41,270 --> 00:16:47,600 แบบฟอร์มเพื่อรหัสของฉันฉันจะตามตัวอักษร เขียนแทรกลงในผู้ใช้งานดังต่อไปนี้ 393 00:16:47,600 --> 00:16:52,800 สาขา: ชื่อผู้ใช้ จุลภาคชื่อค่า 394 00:16:52,800 --> 00:16:57,480 และตอนนี้ฉันต้องใส่ สิ่งที่ต้องการลันและอ้าง 395 00:16:57,480 --> 00:17:01,490 ได้นำมาอ้างเดวิดลัน. และตอนนี้ แม้สำหรับผู้ที่ไม่คุ้นเคยกับ SQL, 396 00:17:01,490 --> 00:17:07,830 ฉันกำลังใช้ราคาเดียวทำไม ภายในของสตริงสีเขียวนี้หรือไม่? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 สิ่งที่อาจจะเป็นเหตุผลที่นี่? 399 00:17:13,040 --> 00:17:14,609 >> ขอให้สังเกตที่ผมร่วมมั่วสุมสองภาษา 400 00:17:14,609 --> 00:17:18,099 คำที่เป็นฟังก์ชั่น PHP, แต่จะใช้เวลาโต้เถียง 401 00:17:18,099 --> 00:17:21,740 และข้อโต้แย้งที่มีตัวเองเป็น เขียนในภาษาอื่นที่เรียกว่า 402 00:17:21,740 --> 00:17:23,500 SQL, ภ​​าษา Structured Query 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 ฉันต้องการที่จะ plug-in และ ตอนนี้สำหรับมาตรการที่ดี 440 00:18:53,520 --> 00:18:55,010 ฉันจะใส่เครื่องหมายอัฒภาคที่สิ้นสุด 441 00:18:55,010 --> 00:18:56,570 ดังนั้นนี้ไม่ได้เป็นซีนี้ไม่ PHP 442 00:18:56,570 --> 00:18:59,970 นี่คือตอนนี้ SQL และฉันวาง ลงในเว็บนี้อินเตอร์เฟซที่เป็น 443 00:18:59,970 --> 00:19:02,710 เพียงแค่จะให้ฉัน, ทันทีที่ผมคลิกไป 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 ดังนั้นนี้เป็นเพียงวิธีที่ซับซ้อนมากขึ้น วิธีการเปิด Google สเปรดชีต 461 00:19:52,390 --> 00:19:54,010 และเพียงแค่พิมพ์แถวลงในคอลัมน์ 462 00:19:54,010 --> 00:19:57,070 แต่สิ่งที่สำคัญคือ ตอนนี้เรามีไวยากรณ์ 463 00:19:57,070 --> 00:20:00,220 ที่จะเขียนโค้ดเพื่อให้ ท้ายที่สุดที่เราสามารถทำได้จริง 464 00:20:00,220 --> 00:20:01,790 และทำบางนี้ 465 00:20:01,790 --> 00:20:05,380 จำได้ว่า PHP สนับสนุน ซุปเปอร์ตัวแปรทั่วโลก 466 00:20:05,380 --> 00:20:08,415 >> สิ่งที่อยู่ภายในของเงินดอลลาร์ เข้าสู่ระบบขีด GET ใน PHP? 467 00:20:08,415 --> 00:20:10,290 เราจึงมองที่หนึ่ง หรือสองตัวอย่างง่ายๆ 468 00:20:10,290 --> 00:20:15,640 และใน PSet6, จำที่คุณต้องทักทาย จุด PHP ซึ่งใช้ตัวแปรนี้ 469 00:20:15,640 --> 00:20:17,870 ในสิ่งที่จะไปที่นั่น? 470 00:20:17,870 --> 00:20:21,015 หรือมันคืออะไร? 471 00:20:21,015 --> 00:20:22,522 ดังน้อย 472 00:20:22,522 --> 00:20:23,790 >> ผู้ชม: [ไม่ได้ยิน] 473 00:20:23,790 --> 00:20:25,030 >> 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 >> [LAUGHTER] 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 ดังนั้นถ้าคุณย้อนกลับในเวลาที่จะ เมื่อเราได้เล่นด้วย Google 491 00:20:55,380 --> 00:20:59,600 และเราได้ไปที่ Google.com เฉือน ค้นหาเครื่องหมายคำถามคิวเท่ากับแมว 492 00:20:59,600 --> 00:21:03,550 ถ้าผมจะกด Enter และถ้า Google ถูกนำมาใช้ใน PHP 493 00:21:03,550 --> 00:21:07,017 โค้ด PHP ว่า Google เขียน จะมีการเข้าถึงเครื่องหมายดอลลาร์ 494 00:21:07,017 --> 00:21:11,600 ขีดได้รับภายในซึ่ง เป็นกุญแจสำคัญที่เรียกว่า Q และความคุ้มค่า 495 00:21:11,600 --> 00:21:17,680 ที่เรียกว่าแมวที่จะสามารถใช้ ที่ใช้ในการทำการค้นหาที่เกิดขึ้นจริงกับ 496 00:21:17,680 --> 00:21:20,860 >> ดังนั้นในความเป็นจริงสิ่งที่ฉันกำลังจะไป ทำตอนนี้คือกลับไปโค้ด PHP ของฉัน 497 00:21:20,860 --> 00:21:23,140 อีกครั้งที่คุณจะเห็นมากขึ้นใน PSet7 498 00:21:23,140 --> 00:21:25,440 และแทนที่จะเสียบ ค่ารหัสยากที่ 499 00:21:25,440 --> 00:21:27,630 ดูเหมือนจะไม่เหมือน เว็บไซต์แบบไดนามิกมาก 500 00:21:27,630 --> 00:21:30,680 ฉันจะให้คุณทีเซอร์ของ สิ่งที่รหัสที่แท้จริงของคุณจะทำอย่างไร 501 00:21:30,680 --> 00:21:32,854 คุณจะใส่ในสอง เครื่องหมายคำถามเช่นนี้ 502 00:21:32,854 --> 00:21:34,270 ผมไม่ทราบว่าสิ่งที่เป็นชื่อผู้ใช้ 503 00:21:34,270 --> 00:21:37,390 ผมไม่ทราบว่าสิ่งที่ ชื่อเป็นไปได้, 504 00:21:37,390 --> 00:21:39,470 แต่ฉันรู้ว่าฉันสามารถ พวกเขาได้รับแบบไดนามิก 505 00:21:39,470 --> 00:21:43,420 >> ดังนั้นถ้ารหัสที่เรากำลังเขียนตอนนี้คือ รหัสที่ทำงานบนเซิร์ฟเวอร์ของ Google 506 00:21:43,420 --> 00:21:46,940 หรือว่านี่คือจุดสวัสดี PHP ซึ่งมาพร้อมกับ PSet6, 507 00:21:46,940 --> 00:21:48,650 ฉันจะผ่านเข้าไปใน ฟังก์ชั่นการสอบถาม 508 00:21:48,650 --> 00:21:51,450 เช่นเดียวกับ printf สองข้อโต้แย้งอื่น ๆ 509 00:21:51,450 --> 00:21:57,120 GET, อ้างชื่อผู้ใช้นำมาอ้าง, และได้รับการอ้างชื่อได้นำมาอ้าง 510 00:21:57,120 --> 00:22:00,720 และตอนนี้สังเกตเห็นว่า โครงสร้างทั่วไปอยู่ที่นี่ 511 00:22:00,720 --> 00:22:03,320 ฉันมีด้านซ้าย ด้านของการโทร, 512 00:22:03,320 --> 00:22:05,480 ฟังก์ชั่นที่เรียกว่าแบบสอบถามใน PHP 513 00:22:05,480 --> 00:22:08,160 ฉันยังคงมีเป็นครั้งแรก อาร์กิวเมนต์เพียงสตริงของข้อความ 514 00:22:08,160 --> 00:22:11,000 >> แต่สตริงของข้อความที่ เขียนในภาษาที่เรียกว่าของ SQL 515 00:22:11,000 --> 00:22:12,616 และตรงไปตรงก็ไม่ได้เป็นภาษาที่มีขนาดใหญ่ 516 00:22:12,616 --> 00:22:14,990 เราเพียงจะพูดคุยเกี่ยวกับ มันอย่างเป็นทางการในวันนี้จริงๆ 517 00:22:14,990 --> 00:22:17,031 และจากนั้นในปัญหาตั้ง เจ็ดมีค่อนข้าง 518 00:22:17,031 --> 00:22:18,800 คุณสมบัติบางอย่างที่เรากำลัง จะยกระดับ 519 00:22:18,800 --> 00:22:22,530 เครื่องหมายคำถาม แต่หมายถึงการเชื่อมต่อ มูลค่าที่นี่และเสียบค่าอื่น 520 00:22:22,530 --> 00:22:23,130 ที่นี่ 521 00:22:23,130 --> 00:22:26,010 และแจ้งให้ทราบผมเคยมองข้ามสิ่งที่ จากทั่วแช่ง quote-- 522 00:22:26,010 --> 00:22:30,470 it-- รอบใบเสนอราคา นับเป็นเวลานี้ 523 00:22:30,470 --> 00:22:34,930 ผมเคยมองข้ามคำพูด เครื่องหมายรอบเครื่องหมายคำถาม 524 00:22:34,930 --> 00:22:36,410 ขออภัยในเวลานี้ 525 00:22:36,410 --> 00:22:38,870 >> ดังนั้นสิ่งที่ดีเกี่ยวกับเรื่องนี้ คุณลักษณะเครื่องหมายคำถามที่ 526 00:22:38,870 --> 00:22:42,830 PHP มีแนวโน้มที่จะสนับสนุนและทับทิม งูหลามและภาษาอื่น ๆ 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 ชื่อผู้ใช้ในกรณีที่มีค่าเท่ากับ อ้างนำมาอ้างลัน 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 คุณสามารถมีศูนย์หรือหนึ่ง Malans ในตารางฐานข้อมูลนี้โดยเฉพาะ 583 00:25:07,940 --> 00:25:10,965 ขณะนี้เป็นกันเพียงเพื่อให้คุณได้เห็น มันแม้ว่าฉันให้ใช้ GET 584 00:25:10,965 --> 00:25:14,350 และแม้ว่า PSet6 ใช้เฉพาะ GET คุณอย่างแน่นอนจะมีการโพสต์ 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 นี่คือ backtick ที่เรียกว่าซึ่ง โดยทั่วไปบนซ้ายมือด้านบน 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 ในทางตรงกันข้ามถ้าผมทำเช่นนี้อีกครั้งและทำ ดาวเลือกจากผู้ใช้ที่ชื่อผู้ใช้ 613 00:26:28,580 --> 00:26:31,840 เท่ากับอ้างนำมาอ้าง ลันตอนนี้ถ้าผมคลิกไป 614 00:26:31,840 --> 00:26:33,970 ฉันเพียงจะได้รับกลับมาหนึ่งแถว 615 00:26:33,970 --> 00:26:36,499 และสุดท้ายถ้าผมทำ บางสิ่งบางอย่างเช่นนี้คิดว่า 616 00:26:36,499 --> 00:26:38,290 ที่ฉันไม่สนใจเกี่ยวกับ ได้รับทุกอย่าง 617 00:26:38,290 --> 00:26:41,020 ซึ่งเป็นชนิดของความหมายในขณะนี้ เพราะมีเพียงสองคอลัมน์ 618 00:26:41,020 --> 00:26:43,103 มันไม่เหมือนที่ฉันเลือก เป็นจำนวนมากของข้อมูล 619 00:26:43,103 --> 00:26:46,720 สมมติว่าฉันไปข้างหน้าและ ไม่เลือกชื่อจาก 620 00:26:46,720 --> 00:26:51,990 ผู้ใช้ที่ชื่อผู้ใช้เท่ากับลัน สิ่งที่ดีเกี่ยวกับ SQL ตรงไปตรงมา 621 00:26:51,990 --> 00:26:54,290 ก็คือว่ามันไม่จริงเพียง สิ่งที่คุณบอกว่าจะทำอย่างไร 622 00:26:54,290 --> 00:26:57,550 มันรวบรัดสวย แต่คุณอย่างแท้จริง เพียงแค่บอกว่าสิ่งที่คุณต้องการจะทำ 623 00:26:57,550 --> 00:27:01,130 เลือกชื่อจากผู้ใช้ที่ ชื่อผู้ใช้เท่ากับลัน 624 00:27:01,130 --> 00:27:03,440 และมันคือเรื่องจริงที่ชัดเจน 625 00:27:03,440 --> 00:27:08,410 ดังนั้นตอนนี้ถ้าผมตีไปหลายวิธี แถวที่ฉันจะได้รับกลับมา? 626 00:27:08,410 --> 00:27:10,770 หนึ่งเพราะมันเป็นเพียงลันหวังว่า 627 00:27:10,770 --> 00:27:13,100 หรือศูนย์ถ้าเขาไม่ได้ มี แต่หนึ่งในที่สุด 628 00:27:13,100 --> 00:27:17,610 >> และวิธีการหลายคอลัมน์ฉันจะได้รับกลับมา? 629 00:27:17,610 --> 00:27:18,450 วิธีการหลายคอลัมน์? 630 00:27:18,450 --> 00:27:20,658 เวลานี้ฉันแค่ไป จะได้รับหนึ่งเพราะผมไม่ได้ 631 00:27:20,658 --> 00:27:22,380 เลือกดาวซึ่งเป็นทุกอย่าง 632 00:27:22,380 --> 00:27:27,900 ตอนนี้ฉันเลือกชื่อเพียงเพื่อให้ฉัน เพียงแค่ได้รับกลับมาหนึ่งคอลัมน์และแถวหนึ่ง 633 00:27:27,900 --> 00:27:31,730 และมันก็ดูการจัดเรียงของที่เหมาะสม ไร้สาระเพียงแค่มองหาสุด 634 00:27:31,730 --> 00:27:33,060 เล็ก ๆ เช่นนี้ 635 00:27:33,060 --> 00:27:34,290 ดังนั้นสิ่งที่เกิดขึ้นจริงเหรอ? 636 00:27:34,290 --> 00:27:36,890 เมื่อคุณดำเนินการของ SQL โดยใช้แบบสอบถามเลือก 637 00:27:36,890 --> 00:27:38,700 สิ่งที่คุณจะได้รับ กลับมาจากฐานข้อมูล 638 00:27:38,700 --> 00:27:42,970 เป็นเหมือนตารางชั่วคราว มีแถวและคอลัมน์อาจจะ 639 00:27:42,970 --> 00:27:46,260 แต่ที่เอาสิ่งที่ ไม่ได้รับเลือกจากคุณจริงๆ 640 00:27:46,260 --> 00:27:49,010 ดังนั้นจึงเป็นเช่นถ้ามีคนมีขนาดใหญ่ สเปรดชีทของนักเรียนทุกคน 641 00:27:49,010 --> 00:27:51,610 ลงทะเบียนสำหรับบางคน กลุ่มนักเรียนและคุณจะพูดว่า 642 00:27:51,610 --> 00:27:55,097 ให้ฉันทั้งหมดของน้องที่ได้ ลงทะเบียนสำหรับกลุ่มนักเรียนของเราสิ่งที่ 643 00:27:55,097 --> 00:27:56,930 เพื่อนร่วมงานของคุณใน กลุ่มนักเรียนอาจจะทำ 644 00:27:56,930 --> 00:27:58,430 คือพวกเขาก็สามารถมอบ คุณทั้งสเปรดชีท 645 00:27:58,430 --> 00:27:59,742 ที่ชอบพูดว่าเลือกดาว 646 00:27:59,742 --> 00:28:02,200 และมันเป็นที่น่ารำคาญเล็ก ๆ น้อย ๆ ถ้า คุณเพียงต้องการน้อง 647 00:28:02,200 --> 00:28:05,640 ดังนั้นถ้าคุณแทนกล่าวว่า เลือกดาวจากตารางฐานข้อมูล 648 00:28:05,640 --> 00:28:08,470 ที่เท่ากับปี อ้างน้องได้นำมาอ้าง, 649 00:28:08,470 --> 00:28:10,810 มันเหมือนกับว่าเพื่อนของคุณ ในกลุ่มนักเรียน 650 00:28:10,810 --> 00:28:13,770 เน้นตัวอักษรและ คัดลอกเฉพาะแถวน้อง 651 00:28:13,770 --> 00:28:16,780 วางไว้ใน Google ใหม่ สเปรดชีตหรือแฟ้ม Excel 652 00:28:16,780 --> 00:28:18,860 และส่งกลับมาที่คุณ แฟ้มผลเท่านั้น 653 00:28:18,860 --> 00:28:21,710 นั่นคือทั้งหมดที่เกิดขึ้น บนแนวคิดที่นี่ 654 00:28:21,710 --> 00:28:23,920 >> ดังนั้นในท้ายที่สุดที่เราสามารถทำได้ บางสิ่งบางอย่างแฟนซีสวย 655 00:28:23,920 --> 00:28:26,560 โดยการจัดเก็บสิ่งที่ชอบชื่อผู้ใช้ และรหัสผ่านและไม่ชอบ 656 00:28:26,560 --> 00:28:30,310 แต่มันจะเปิดออกที่เราควรทำ แตกต่างกันเล็กน้อยกว่านี้ 657 00:28:30,310 --> 00:28:34,750 มันไม่ได้ว่าสมาร์ทเท่านั้น เก็บชื่อผู้ใช้และรหัสผ่าน 658 00:28:34,750 --> 00:28:37,790 ก่อนหน้านี้คนที่ผมคิดว่า ลงที่นี่แนะนำประชาชน 659 00:28:37,790 --> 00:28:40,787 ตอนนี้ 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 ฉันต้องการสี่พันล้านค่าที่เป็นไปได้ ไม่ได้สี่พันล้านค่าที่เป็นไปได้ 690 00:29:48,470 --> 00:29:50,699 ดังนั้นฉันเพียงแค่สองเท่า ความจุของ INT ของฉัน 691 00:29:50,699 --> 00:29:53,490 เช่นกันถ้าคุณต้องการที่จะสร้างความสัมพันธ์ นี้เพื่อบางสิ่งบางอย่างเช่น Facebook, 692 00:29:53,490 --> 00:29:56,190 กลับมาอยู่ในการจัดเรียงของวันของฉันเมื่อ Facebook แรกออกมา 693 00:29:56,190 --> 00:29:59,510 ผมเชื่อว่าสิ่งที่พวกเขา โดยใช้ฐานข้อมูล MySQL ในของพวกเขา 694 00:29:59,510 --> 00:30:02,856 ในการจัดเก็บของผู้ใช้ ระบุเป็นเพียง INT 695 00:30:02,856 --> 00:30:05,230 แต่แน่นอนว่ามีจำนวนมาก ของคนจริงในโลก 696 00:30:05,230 --> 00:30:07,438 มีจำนวนมากของปลอมของ Facebook เป็น บัญชีในโลก 697 00:30:07,438 --> 00:30:11,701 และเพื่อให้ในที่สุด Facebook ล้น ขนาดของ INT เป็นสี่พันล้าน 698 00:30:11,701 --> 00:30:12,200 มูลค่า 699 00:30:12,200 --> 00:30:15,032 ซึ่งเป็นเหตุผลที่ถ้าคุณดู ไปรอบ ๆ และมีเว็บไซต์ 700 00:30:15,032 --> 00:30:16,740 ที่สามารถบอกคุณว่า รหัสเฉพาะของคุณคือ 701 00:30:16,740 --> 00:30:19,781 และถ้าคุณไม่เคยเลือกชื่อผู้ใช้ใน Facebook, คุณจะเห็นรหัสเฉพาะของคุณ 702 00:30:19,781 --> 00:30:23,080 ฉันคิดว่ามันเป็นจุด PHP รายละเอียด ID เครื่องหมายคำถามเท่ากับบางสิ่งบางอย่าง 703 00:30:23,080 --> 00:30:27,210 นั่นคือตอนนี้สิ่งที่ต้องการขนาดใหญ่ INT หรือนานถ้าคุณจะ 704 00:30:27,210 --> 00:30:29,700 ซึ่งเป็นค่า 64 บิต หรือสิ่งที่เทียบเคียง 705 00:30:29,700 --> 00:30:33,620 >> ดังนั้นแม้จะอยู่ในโลกแห่งความจริงทำสิ่งเหล่านี้ ประเด็นสำคัญบางครั้งในที่สุด 706 00:30:33,620 --> 00:30:37,600 และมันจะเปิดออกจากที่นี่ถ้าฉัน ให้ทั้งหมดของผู้ใช้ของฉันที่ไม่ซ้ำกันประจำ 707 00:30:37,600 --> 00:30:41,750 ฉันต้องการที่จะเป็นซุปเปอร์ที่ชัดเจนและ อย่างน้อยที่สุดทำให้ฟิลด์นี้ที่ไม่ซ้ำกัน 708 00:30:41,750 --> 00:30:44,750 แต่มันกลับกลายเป็นมีหนึ่ง ชิ้นส่วนของระบบการตั้งชื่อในวันนี้มากเกินไป 709 00:30:44,750 --> 00:30:46,470 ที่เป็นคีย์หลัก 710 00:30:46,470 --> 00:30:49,800 หากคุณกำลังออกแบบฐานข้อมูล ตารางและคุณรู้ล่วงหน้า 711 00:30:49,800 --> 00:30:55,580 ว่าหนึ่งในคอลัมน์ในตารางที่ ควรและไม่ซ้ำกันจะระบุแถว 712 00:30:55,580 --> 00:30:58,500 ในตารางที่คุณต้องการ ระบุว่าและบอกฐานข้อมูล 713 00:30:58,500 --> 00:31:00,250 นี้เป็นกุญแจสำคัญหลักของฉัน 714 00:31:00,250 --> 00:31:02,110 อาจจะมีรายการที่ซ้ำกัน ในสาขาอื่น ๆ 715 00:31:02,110 --> 00:31:06,330 แต่ฉันบอกว่าฐานข้อมูลนี้ เป็นหลักของฉันข้อมูลที่สำคัญที่สุดของฉัน 716 00:31:06,330 --> 00:31:08,420 ที่รับประกันว่าจะไม่ซ้ำกัน 717 00:31:08,420 --> 00:31:09,660 >> ตอนนี้ดูเหมือนว่าซ้ำซ้อน 718 00:31:09,660 --> 00:31:13,830 ตอนนี้ฉันเสนอว่าเรา เพิ่มโดยการคลิกที่บันทึกนี่ 719 00:31:13,830 --> 00:31:17,210 called-- สนามและฉันจะ ไปข้างหน้าและคลิกไอ 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 เรียกประชาชน สนาม CHAR ที่เรียกว่าชื่อผู้ใช้ 723 00:31:26,305 --> 00:31:31,100 สนาม VARCHAR ที่เรียกชื่อ แต่ประชาชน ถ้าหากมันเป็นหลักและไม่ซ้ำกันจึง 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 บิตหรือสี่ไบต์ 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 เช่น MA สำหรับแมสซาชูเซตและอื่น ๆ 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 ปีที่ผ่านมาเมื่อผมเคยใช้ Microsoft Outlook สำหรับอีเมลของฉัน 806 00:34:43,179 --> 00:34:45,150 ในที่สุดผมอยากจะเปลี่ยนไปใช้ Gmail 807 00:34:45,150 --> 00:34:48,949 และเพื่อให้ผมส่งออกทั้งหมดของฉัน รายชื่อผู้ติดต่อจาก Outlook เป็นไฟล์ CSV 808 00:34:48,949 --> 00:34:50,699 คั่นด้วยเครื่องหมายจุลภาค, ซึ่งหมายความว่าเพียงแค่ฉัน 809 00:34:50,699 --> 00:34:54,060 มีชื่อที่เพื่อน ๆ ทุกคนและครั้งสุดท้าย ชื่อและหมายเลขโทรศัพท์และรหัสไปรษณีย์ 810 00:34:54,060 --> 00:34:54,747 และทุกที่ 811 00:34:54,747 --> 00:34:56,580 แล้วฉันทำ ความผิดพลาดของการเปิดมันขึ้นมา 812 00:34:56,580 --> 00:34:58,640 ใน Excel ซึ่งเป็น โปรแกรมสเปรดชีตที่ 813 00:34:58,640 --> 00:35:00,289 เข้าใจ CSV ไฟล์ที่เราเคยเห็น 814 00:35:00,289 --> 00:35:03,080 แต่แล้วก็ต้องมีการตีเช่น คำสั่งหรือการควบคุม S เมื่อถึงจุดหนึ่ง 815 00:35:03,080 --> 00:35:06,250 และ Excel เห็นได้ชัดในเวลา มีคุณลักษณะโดยเวลาใดก็ 816 00:35:06,250 --> 00:35:08,100 เห็นเป็นจำนวนมากก็พยายามที่จะเป็นประโยชน์ 817 00:35:08,100 --> 00:35:11,610 และถ้าตัวเลขที่เริ่มต้นด้วย ศูนย์ก็แค่จะกำจัดของพวกเขา 818 00:35:11,610 --> 00:35:13,420 ทำไมคุณต้องชั้นนำ ศูนย์ในจำนวนเต็ม? 819 00:35:13,420 --> 00:35:15,140 พวกเขากำลังความหมายทางคณิตศาสตร์ 820 00:35:15,140 --> 00:35:17,530 พวกเขาไม่ได้มีความหมาย ในสหรัฐอเมริการะบบไปรษณีย์ 821 00:35:17,530 --> 00:35:19,954 ดังนั้นฉันได้มีมานานหลายปี จนถึงวันนี้ผมยัง 822 00:35:19,954 --> 00:35:22,370 เพื่อนที่มีเมื่อ กรณีที่หายากที่ฉันต้องการใครบางคน 823 00:35:22,370 --> 00:35:24,078 ที่อยู่วันนี้ ฉันจะยังคงเห็นว่าผม 824 00:35:24,078 --> 00:35:26,767 มีเพื่อนในเคมบริดจ์ที่ แมสซาชูเซต 2138 825 00:35:26,767 --> 00:35:29,350 และมันก็เป็นที่น่ารำคาญถ้าคุณ พยายามที่จะเรียงลำดับของโปรแกรม 826 00:35:29,350 --> 00:35:30,975 สร้างซองจดหมายหรือเพียงแค่จดมันลง 827 00:35:30,975 --> 00:35:33,599 และนั่นก็เป็นเพราะเหตุผลนี้ ผมเลือกชนิดของข้อมูลที่ไม่ถูกต้อง 828 00:35:33,599 --> 00:35:34,490 ดังนั้นฉันรักความคิดของคุณ 829 00:35:34,490 --> 00:35:35,650 ลองใช้สนามถ่าน 830 00:35:35,650 --> 00:35:38,340 ห้าตัวละครยกเว้น มีกรณีมุม 831 00:35:38,340 --> 00:35:42,220 หากคุณยังส่งจดหมาย บางครั้งรหัสไปรษณีย์วันนี้ 832 00:35:42,220 --> 00:35:45,360 พวกเขากำลังเช่นบวกสี่ 833 00:35:45,360 --> 00:35:48,200 ดังนั้นเราต้องยัติภังค์แล้ว เราจำเป็นต้องมีตัวเลขสี่มากขึ้น 834 00:35:48,200 --> 00:35:50,330 ดังนั้นจะซื่อสัตย์มันอาจ ไปตามทางที่แตกต่างกัน 835 00:35:50,330 --> 00:35:52,371 >> สำหรับตอนนี้ฉันจะให้ มันง่ายและฉันแค่ 836 00:35:52,371 --> 00:35:54,780 จะพูดว่ามันเป็น ห้าค่า CHAR และเรา 837 00:35:54,780 --> 00:35:56,739 จะข้ามเส้นประทั้งบวกสี่ 838 00:35:56,739 --> 00:35:58,280 แต่เหล่านี้เป็นชนิดของความสมดุล 839 00:35:58,280 --> 00:36:00,196 และคุณสามารถคิด ปัญหาที่เกิดขึ้นเหมือนกัน 840 00:36:00,196 --> 00:36:01,860 มีหมายเลขโทรศัพท์หรือสาขาอื่น ๆ 841 00:36:01,860 --> 00:36:04,350 >> และตอนนี้เป็นจริง ถนนโง่ที่จะลงไป 842 00:36:04,350 --> 00:36:08,000 สมมติว่าทั้งร็อบและฉันและฮันนาห์ และมาเรียและ [? Davon?] และแอนดี้ 843 00:36:08,000 --> 00:36:12,820 และคนอื่น ๆ ในพนักงานทุกคนอาศัยอยู่ ในเคมบริดจ์, แมสซาชูเซต 02138 844 00:36:12,820 --> 00:36:17,970 นี้ที่จริงรู้สึกโง่ว่าฉัน เพิ่มในตารางผู้ใช้ของฉัน, เมือง, รัฐ, 845 00:36:17,970 --> 00:36:18,630 และไปรษณีย์ 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 ลัน: Say อีกครั้งหรือไม่ 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 ซิปเดียวกันซึ่งเป็นลาง 855 00:36:35,060 --> 00:36:40,580 แต่ถ้าเรากำหนดสำหรับตอนนี้ที่ 02138 อยู่เสมอเคมบริดจ์, แมสซาชูเซต 856 00:36:40,580 --> 00:36:44,910 ทำไมในโลกที่คุณจะเก็บไว้ใน ฐานข้อมูลของคุณและเคมบริดจ์แมสซาชูเซตและ 02138 857 00:36:44,910 --> 00:36:49,357 สำหรับผมและสำหรับฮันนาห์และร็อบและ สำหรับ [? Davon?] และอื่น ๆ ที่อาศัยอยู่ 858 00:36:49,357 --> 00:36:51,190 ที่นี่ในเคมบริดจ์ก็ อย่างสมบูรณ์แบบซ้ำซ้อน 859 00:36:51,190 --> 00:36:54,480 >> เราควรจะได้รับไป มีเพียงการจัดเก็บสิ่งที่? 860 00:36:54,480 --> 00:36:55,610 เพียงแค่รหัสไปรษณีย์ 861 00:36:55,610 --> 00:36:58,660 แต่แล้วถ้าเราเก็บเพียง รหัสไปรษณีย์ผมไม่ต้องการที่อาจจะ 862 00:36:58,660 --> 00:37:02,160 สำหรับเว็บไซต์ของฉันที่จะทราบว่าเป็น 02138 863 00:37:02,160 --> 00:37:03,910 ดังนั้นฉันจึงต้องตารางอื่น 864 00:37:03,910 --> 00:37:04,697 และที่ตกลง 865 00:37:04,697 --> 00:37:07,530 และในความเป็นจริงนี้เป็นหนึ่งใน กระบวนการการออกแบบของตารางการออกแบบ 866 00:37:07,530 --> 00:37:11,472 ที่คุณจะทำอย่างไรใน PSet7 เช่นกันโดย คุณต้องการที่จะเป็นปัจจัยจากข้อมูลร่วม 867 00:37:11,472 --> 00:37:14,430 เช่นเดียวกับที่เราได้รับจากแฟ รหัสร่วมกันและร่วมกันออกแฟ 868 00:37:14,430 --> 00:37:17,380 รูปแบบจาก CSS ที่นี่ เกินไปในฐานข้อมูล 869 00:37:17,380 --> 00:37:21,180 ถ้าฉันเพียงต้องการที่จะไม่ซ้ำกัน 02138 ระบุบ้านเกิดของใครบางคน 870 00:37:21,180 --> 00:37:25,020 ไม่เก็บ Cambridge, Mass สำหรับ ผู้ใช้ทุกยี้ในตารางของคุณ 871 00:37:25,020 --> 00:37:29,770 >> แต่มีตารางแยกต่างหากที่เรียกว่า บีบอัดข้อมูลที่ควรมีสิ่งที่คอลัมน์? 872 00:37:29,770 --> 00:37:33,490 น่าจะเป็นสนามประจำตัวประชาชนเพียงเพราะสำหรับ หลักการที่เรากำลังพูดถึงในขณะนี้ 873 00:37:33,490 --> 00:37:35,720 น่าจะเป็นสนามซิปสำหรับ 02138 874 00:37:35,720 --> 00:37:38,400 และจากนั้นก็อาจเป็นสิ่งที่คอลัมน์อื่น ๆ ? 875 00:37:38,400 --> 00:37:42,950 เมืองและรัฐ แต่มีเพียงหนึ่ง แถวสำหรับ 02138 หนึ่งแถวสำหรับ 02139, 876 00:37:42,950 --> 00:37:44,772 หนึ่งแถวสำหรับ 90210 877 00:37:44,772 --> 00:37:46,730 และที่เป็นตัวอักษร ทุกรหัสไปรษณีย์ฉันรู้ว่า 878 00:37:46,730 --> 00:37:49,012 >> ดังนั้นตอนนี้สิ่งที่คุณสามารถทำอะไร? 879 00:37:49,012 --> 00:37:51,220 นี่คือปัญหาเพราะ ตอนนี้ฉันมีสองตาราง 880 00:37:51,220 --> 00:37:54,660 ดังนั้นผู้ใช้ส่วนใหญ่จะเป็นของฉันมากกว่าที่นี่ แต่ข้อมูลของรัฐเป็นเมืองของพวกเขา 881 00:37:54,660 --> 00:37:55,390 มากกว่าที่นี่ 882 00:37:55,390 --> 00:37:58,635 ดังนั้นก็จะเปิดออกกับ SQL มี จริงวิธีการเข้าร่วมข้อมูล 883 00:37:58,635 --> 00:38:00,470 และคุณจะเห็นใน PSet 884 00:38:00,470 --> 00:38:03,000 >> แต่มันกลับกลายเป็นคุณสามารถ ทำอะไรเช่นนี้ 885 00:38:03,000 --> 00:38:10,501 ดาวเลือกจากผู้ใช้เข้าร่วมซิปบน ผู้ใช้จุดซิปซิปเท่ากับจุดรหัสไปรษณีย์ 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 คุณกำลังจะไปพบ ปัญหาของ atomicity ที่ 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 ผมได้เรียนรู้ว่าตัวเองอยู่ใน Margo โซดา 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 ฉันจะทำให้การเรียกร้องไม่ว่า ระบบ PIN ฮาร์วาร์ 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 และบัตรประจำตัวสุทธิเยลมีที่คล้ายกัน มองหน้าจอวันนี้ 970 00:41:29,620 --> 00:41:33,190 และมันจะเปิดออกที่อาจจะ ระบบ PIN จะดำเนินการใน PHP 971 00:41:33,190 --> 00:41:37,050 >> และถ้ามัน were-- มัน not-- พวกเขา อาจจะมีรหัสที่มีลักษณะเช่นนี้ 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 ที่ชื่อผู้ใช้เท่ากับว่า และรหัสผ่านเท่ากับว่า 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 ต่อภาพยนตร์ที่เรียกว่า "Spaceballs" 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 รหัสผ่านเท่ากับ 12,345 หรือเท่ากับหนึ่ง 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 จะเขียนมากขึ้น defensively 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 injection ที่ 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 ดังนั้นนี้เป็นภาพที่ถ่าย ของ geek บางในลานจอดรถ 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 >> [LAUGHTER] 1042 00:45:04,750 --> 00:45:05,910 >> ใช่เย็น 1043 00:45:05,910 --> 00:45:06,800 ชนิดของ geeking ออก 1044 00:45:06,800 --> 00:45:08,800 ดังนั้นเหล่านี้แล้วเป็น SQL โจมตีฉีด 1045 00:45:08,800 --> 00:45:13,050 และพวกเขากำลังเพื่อง่ายต่อการหลีกเลี่ยงโดยใช้ รหัสที่ถูกหรือห้องสมุดที่เหมาะสม 1046 00:45:13,050 --> 00:45:15,947 และคุณจะเห็นใน PSet7 ที่ เหตุผลที่เราให้คุณฟังก์ชั่นการค้นหา 1047 00:45:15,947 --> 00:45:17,780 ดังนั้นคู่ของทีเซอร์ ที่เราคิดว่าเราต้องการ 1048 00:45:17,780 --> 00:45:19,930 ให้คุณที่นี่ในของเรา นาทีที่เหลืออยู่ด้วยกัน 1049 00:45:19,930 --> 00:45:24,030 ดังนั้นที่คุณจำได้จากสัปดาห์ที่ศูนย์เรา แนะนำทั้งสองหลอดไฟที่ 1050 00:45:24,030 --> 00:45:26,610 จะดีไม่เพียงเพราะ พวกเขากำลังสวยและมีสีสัน 1051 00:45:26,610 --> 00:45:29,450 แต่เพราะพวกเขาสนับสนุนบางสิ่งบางอย่าง เรียกว่า API, แอพลิเคชัน 1052 00:45:29,450 --> 00:45:31,980 อินเตอร์เฟซการเขียนโปรแกรมและ ใน CS50 ป่านนี้เราได้ 1053 00:45:31,980 --> 00:45:34,440 ส่วนใหญ่จะมุ่งเน้นไปที่ GET และ โพสต์ แต่ก็จะเปิดออก 1054 00:45:34,440 --> 00:45:37,390 มีกิริยา HTTP อื่น ๆ เช่น PUT 1055 00:45:37,390 --> 00:45:39,430 >> และในความเป็นจริงนี้เป็น ภาพนิ่งจากสัปดาห์ที่ศูนย์ 1056 00:45:39,430 --> 00:45:44,930 โดยถ้าคุณเขียนรหัสที่ส่ง ลา PSet6 ร้องขอ HTTP ที่ 1057 00:45:44,930 --> 00:45:49,647 ลักษณะเช่นนี้กับก้อนของข้อความนี้ ที่ด้านล่างซึ่งเรียกว่า JSON, 1058 00:45:49,647 --> 00:45:52,230 หรือ JavaScript Object สัญลักษณ์ ที่เราจะพูดถึงในสัปดาห์หน้า 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 เรามีทั้งกลุ่ม อุปกรณ์ Leap เคลื่อนไหว 1074 00:46:32,860 --> 00:46:36,500 ซึ่งเป็นอุปกรณ์ USB สำหรับแม็คและ เครื่องคอมพิวเตอร์ที่นี่และอีกครั้งในนิวเฮเวน 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 เกินไปที่เรียกว่าวงดนตรีที่แขน Myo ที่คุณใส่ในช่วงปลายแขนของคุณ 1083 00:48:01,040 --> 00:48:04,595 และจากนั้นคุณสามารถควบคุมจริง โลกหรือโลกเสมือนจริงเช่นนี้ 1084 00:48:04,595 --> 00:48:06,471 >> [เล่นเพลง] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 หรือเรายังมีบางส่วนของ Google กระดาษแข็งที่เป็นตัวอักษรเช่น 1087 00:49:20,920 --> 00:49:24,841 กล่องกระดาษแข็งคุณสามารถใส่บน ใบหน้า แต่ภาพนิ่งในโทรศัพท์ของคุณเป็นมัน 1088 00:49:24,841 --> 00:49:27,590 เพื่อที่คุณจะใส่แก้วของคุณ โทรศัพท์จริงใกล้เคียงกับดวงตาของคุณ 1089 00:49:27,590 --> 00:49:30,190 และ Google เป็นกระดาษแข็ง สวยราคาถูกที่ $ 10 หรือ $ 20 1090 00:49:30,190 --> 00:49:32,230 และก็จะมีเลนส์เล็ก ๆ น้อย ๆ ที่ปิดเปลี่ยนแปลงเล็กน้อย 1091 00:49:32,230 --> 00:49:35,900 ภาพบนหน้าจอสำหรับมนุษย์ ตาที่ให้ความรู้สึกของความลึก 1092 00:49:35,900 --> 00:49:39,550 เพื่อที่คุณจะมี 3 มิติ สภาพแวดล้อมในหน้าของคุณ 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 และคุณต้องการโครงการที่ท่านสนใจ นี่คือสิ่งที่ Colton เห็น 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 [LAUGHTER] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID ลัน: เปิดออก ดาวอังคารมีเมนูเหล่านี้ 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [ไม่ได้ยิน] บางเย็น สถานที่ถ้าเราต้องการที่จะไป to-- 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 Colton และฉันจะติดรอบ ในขณะที่ในตอนท้ายของการเรียนที่นี่ในวันนี้ 1131 00:51:13,330 --> 00:51:14,300 ถ้าคุณต้องการที่จะเกิดขึ้นและเล่น 1132 00:51:14,300 --> 00:51:16,350 และเราจะนำพวกเขา กลับมาในสัปดาห์หน้าเช่นกัน 1133 00:51:16,350 --> 00:51:18,420 โดยไม่ต้องต่อไปกังวลใจ ที่มันสำหรับวันนี้ 1134 00:51:18,420 --> 00:51:21,990 เราจะเห็นคุณในสัปดาห์ถัดไป 1135 00:51:21,990 --> 00:51:24,140 >> [ดนตรี - Ragga ฝาแฝด "BAD MAN"] 1136 00:51:24,140 --> 00:55:23,146