1 00:00:00,000 --> 00:00:03,493 >> [เล่นเพลง] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: ในวิดีโอของเรา ในหัวข้อการพัฒนาเว็บ 4 00:00:07,100 --> 00:00:10,560 เราได้กล่าวถึงแนวคิดของ ฐานข้อมูลไม่กี่ครั้งใช่มั้ย? 5 00:00:10,560 --> 00:00:12,700 ดังนั้นฐานข้อมูลคุณ อาจคุ้นเคยกับจาก 6 00:00:12,700 --> 00:00:15,780 บอกว่าใช้โปรแกรม Microsoft Excel หรือ Google Spreadsheets 7 00:00:15,780 --> 00:00:20,650 มันจริงๆเพียงแค่การจัดระเบียบ ชุดของตารางแถวและคอลัมน์ 8 00:00:20,650 --> 00:00:23,140 >> และฐานข้อมูลเป็นที่ที่ ร้านค้าที่เว็บไซต์ของเรา 9 00:00:23,140 --> 00:00:26,760 ข้อมูลที่มีความสำคัญ สำหรับเว็บไซต์ของเราที่จะทำงานอย่างถูกต้อง 10 00:00:26,760 --> 00:00:30,150 อีกครั้งเช่นกันที่นี่จริงๆ มีการจัดเก็บชื่อผู้ใช้และรหัสผ่าน 11 00:00:30,150 --> 00:00:32,824 ในฐานข้อมูลเพื่อที่ว่าเมื่อ ผู้ใช้บันทึกลงในเว็บไซต์ของเรา 12 00:00:32,824 --> 00:00:36,690 ฐานข้อมูลสามารถสอบถามเพื่อดู หากผู้ใช้ที่มีอยู่ในฐานข้อมูล 13 00:00:36,690 --> 00:00:39,260 และถ้าพวกเขามีการตรวจสอบว่า รหัสผ่านที่ถูกต้อง 14 00:00:39,260 --> 00:00:43,420 และถ้ารหัสผ่านถูกต้อง แล้วเราสามารถให้พวกเขามีสิ่งที่หน้า 15 00:00:43,420 --> 00:00:45,370 พวกเขากำลังขอ 16 00:00:45,370 --> 00:00:48,590 >> ดังนั้นคุณอาจจะอีกครั้งคุ้นเคย กับความคิดนี้จาก Excel หรือ Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets 18 00:00:49,430 --> 00:00:52,980 เรามีฐานข้อมูล ตารางแถวและคอลัมน์ 19 00:00:52,980 --> 00:00:56,450 และนั่นคือการจัดเรียงจริงๆ ของชุดพื้นฐาน 20 00:00:56,450 --> 00:00:58,470 ลำดับชั้นของรายละเอียดที่นี่ 21 00:00:58,470 --> 00:00:59,800 ดังนั้นนี่คือกระดาษคำนวณ Excel 22 00:00:59,800 --> 00:01:02,640 และถ้าคุณได้เคยเปิดนี้ หรืออีกโปรแกรมที่คล้ายกัน 23 00:01:02,640 --> 00:01:06,780 คุณรู้ว่าสิ่งเหล่านี้ที่นี่ rows-- 1, 2, 3, 4, 5, 6, 7 24 00:01:06,780 --> 00:01:08,760 เหล่านี้เป็นคอลัมน์ 25 00:01:08,760 --> 00:01:11,790 >> อาจจะลงที่นี่ถึงแม้ว่าคุณอาจจะ ไม่ใช้คุณลักษณะนี้ชะมัด much-- 26 00:01:11,790 --> 00:01:15,370 ฉันจะซูม in-- เรามี ความคิดของแผ่นนี้ 27 00:01:15,370 --> 00:01:17,930 ดังนั้นบางทีแผ่นเหล่านี้ถ้า ผมสลับกันไปมา 28 00:01:17,930 --> 00:01:21,600 ตารางที่แตกต่างกัน ที่มีอยู่ในฐานข้อมูลของฉัน 29 00:01:21,600 --> 00:01:25,210 และถ้าเรายังคงตัวอย่างทั้งหมด วิธีการที่ชื่อของฐานข้อมูลนี้ 30 00:01:25,210 --> 00:01:26,940 เป็นเล่ม 1 31 00:01:26,940 --> 00:01:28,710 บางทีฉันอาจจะมีหนังสือ 2 เล่ม 3 32 00:01:28,710 --> 00:01:33,270 ดังนั้นแต่ละไฟล์ Excel เป็น ฐานข้อมูลแต่ละแผ่นตาราง 33 00:01:33,270 --> 00:01:39,530 และภายในของแต่ละตารางฉันมี ความคิดของแถวและคอลัมน์นี้ 34 00:01:39,530 --> 00:01:41,900 >> ดังนั้นฉันจะทำงานกับฐานข้อมูลนี้หรือไม่? 35 00:01:41,900 --> 00:01:43,630 ฉันจะได้รับข้อมูลจากมันได้หรือไม่ 36 00:01:43,630 --> 00:01:47,540 ดีมีภาษาที่เรียกว่า SQL-- ซึ่งผมมักจะเพียงแค่เรียก Sequel-- 37 00:01:47,540 --> 00:01:50,010 และมันหมายถึง ภาษาของแบบสอบถาม 38 00:01:50,010 --> 00:01:52,981 และมันก็เป็นภาษาการเขียนโปรแกรม แต่มันเป็นการเขียนโปรแกรมที่ค่อนข้าง จำกัด 39 00:01:52,981 --> 00:01:53,480 ภาษา. 40 00:01:53,480 --> 00:01:56,407 ก็ไม่เชิงเหมือนคนอื่น ๆ ที่เราได้ทำงานร่วมกับ 41 00:01:56,407 --> 00:01:58,240 แต่จุดประสงค์ของการนี​​้ การเขียนโปรแกรมภาษา 42 00:01:58,240 --> 00:02:01,570 คือการสืบค้นฐานข้อมูลเพื่อ ขอข้อมูลจากฐานข้อมูล 43 00:02:01,570 --> 00:02:04,480 ค้นหาข้อมูลใน ฐานข้อมูลและอื่น ๆ 44 00:02:04,480 --> 00:02:08,449 >> นอกจากนี้เรายังอยู่ใน CS50-- และมันเป็นอย่างมาก แพลตฟอร์มร่วมกันก็เรียกว่า MySQL 45 00:02:08,449 --> 00:02:10,600 นั่นคือสิ่งที่เราใช้ในการเรียนการสอน 46 00:02:10,600 --> 00:02:12,880 มันเป็นโอเพนซอร์ส แพลตฟอร์มที่กำหนด 47 00:02:12,880 --> 00:02:16,732 database-- สัมพันธ์ที่เรียกว่า ฐานข้อมูลได้อย่างมีประสิทธิภาพ 48 00:02:16,732 --> 00:02:18,440 เราไม่จำเป็นต้องที่จะได้รับ ลงรายละเอียดมากเกินไป 49 00:02:18,440 --> 00:02:20,930 เกี่ยวกับสิ่งที่ฐานข้อมูลเชิงสัมพันธ์คือ 50 00:02:20,930 --> 00:02:24,650 แต่ภาษา SQL เป็น เก่งมากในการทำงาน 51 00:02:24,650 --> 00:02:29,760 กับ MySQL และอื่น ๆ ที่คล้ายกัน รูปแบบของฐานข้อมูลเชิงสัมพันธ์ 52 00:02:29,760 --> 00:02:34,010 >> และการติดตั้งหลาย MySQL มาพร้อมกับบางสิ่งบางอย่าง 53 00:02:34,010 --> 00:02:37,760 เรียกว่า phpMyAdmin ซึ่ง เป็นผู้ใช้แบบกราฟิก 54 00:02:37,760 --> 00:02:40,970 interface-- GUI-- ที่ ทำให้มันเล็ก ๆ น้อย ๆ 55 00:02:40,970 --> 00:02:44,410 ใช้งานง่ายที่จะดำเนินการ สืบค้นฐานข้อมูล 56 00:02:44,410 --> 00:02:48,980 เพราะฐานข้อมูลที่ไม่ได้ใช้เพียงแค่ โดยการเขียนโปรแกรมขั้นสูงใช่มั้ย? 57 00:02:48,980 --> 00:02:51,510 บางครั้งมี เหล่านี้ธุรกิจขนาดเล็ก 58 00:02:51,510 --> 00:02:53,900 และพวกเขาไม่สามารถที่จะ จ้างทีมงานของโปรแกรมเมอร์ 59 00:02:53,900 --> 00:02:56,700 แต่พวกเขายังคงต้องเก็บ ข้อมูลในฐานข้อมูล 60 00:02:56,700 --> 00:02:59,300 >> บางอย่างเช่น phpMyAdmin ทำให้มันง่ายมากสำหรับคน 61 00:02:59,300 --> 00:03:03,630 ที่ไม่เคยตั้งโปรแกรมก่อน รับและกลายเป็นที่คุ้นเคยกับวิธีการ 62 00:03:03,630 --> 00:03:07,710 จะทำงานร่วมกับฐานข้อมูล 63 00:03:07,710 --> 00:03:11,800 ปัญหาคือ phpMyAdmin ในขณะที่ มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเรียนรู้ 64 00:03:11,800 --> 00:03:14,850 เกี่ยวกับฐานข้อมูลมันเป็นคู่มือ 65 00:03:14,850 --> 00:03:18,050 คุณจะต้องเข้าสู่ และรันคำสั่งและชนิด 66 00:03:18,050 --> 00:03:19,910 สิ่งที่อยู่ในตนเอง 67 00:03:19,910 --> 00:03:23,160 >> และในขณะที่เรารู้จากเรา ตัวอย่างเช่นในการเขียนโปรแกรม PHP เว็บ 68 00:03:23,160 --> 00:03:26,550 ต้องทำด้วยตนเอง สิ่งที่อยู่บนเว็บไซต์ของเรา 69 00:03:26,550 --> 00:03:30,970 ถ้าเราต้องการแบบไดนามิกที่ใช้งานที่ตอบสนองต่อ เว็บไซต์อาจจะไม่วิธีที่ดีที่สุด 70 00:03:30,970 --> 00:03:33,980 เราอยากที่จะหาวิธีการ อาจจะโดยอัตโนมัตินี้อย่างใด 71 00:03:33,980 --> 00:03:37,864 และ SQL จะทำให้เราสามารถทำเช่นนี้ 72 00:03:37,864 --> 00:03:39,780 ดังนั้นเมื่อเรากำลังจะไป เริ่มต้นการทำงานกับ SQL, 73 00:03:39,780 --> 00:03:41,220 ครั้งแรกที่เราจะต้องมี ฐานข้อมูลในการทำงานร่วมกับ 74 00:03:41,220 --> 00:03:42,510 การสร้างฐานข้อมูลเป็น บางสิ่งบางอย่างที่คุณอาจ 75 00:03:42,510 --> 00:03:45,350 จะทำใน phpMyAdmin เพราะ คุณจะต้องทำมันครั้งเดียว 76 00:03:45,350 --> 00:03:49,690 และไวยากรณ์สำหรับการทำเช่นนั้น เป็นจำนวนมากตรงไปตรงมามากขึ้น 77 00:03:49,690 --> 00:03:51,940 มันง่ายมากที่จะทำมัน ในอินเตอร์เฟซผู้ใช้แบบกราฟิก 78 00:03:51,940 --> 00:03:53,520 กว่าการพิมพ์ออกเป็นคำสั่ง 79 00:03:53,520 --> 00:03:55,186 คำสั่งจะได้รับความยุ่งยากน้อย 80 00:03:55,186 --> 00:03:58,889 ในทำนองเดียวกันการสร้างตารางสามารถ ได้รับไม่น้อยยุ่งยากเช่นกัน 81 00:03:58,889 --> 00:04:01,930 และเพื่อให้สิ่งที่ต้องการสร้างฐานข้อมูล และการสร้างตารางที่คุณ 82 00:04:01,930 --> 00:04:06,270 อาจเป็นเพียงจะทำ once-- ครั้งต่อตารางครั้งต่อ database-- 83 00:04:06,270 --> 00:04:09,040 มันตกลงที่จะทำใน ส่วนติดต่อแบบกราฟิก 84 00:04:09,040 --> 00:04:11,570 ในกระบวนการของ การสร้างตารางที่คุณจะ 85 00:04:11,570 --> 00:04:14,840 ยังมีการระบุทั้งหมดของ คอลัมน์ที่จะอยู่ในตารางที่ 86 00:04:14,840 --> 00:04:18,149 สิ่งที่จัดเรียงข้อมูลทำ คุณต้องการที่จะเก็บไว้ในตารางหรือไม่ 87 00:04:18,149 --> 00:04:24,520 บางทีชื่อผู้ใช้และวันเดือนปีเกิด รหัสผ่านหมายเลข ID ผู้ใช้และอาจ 88 00:04:24,520 --> 00:04:26,170 เมืองและรัฐใช่มั้ย? 89 00:04:26,170 --> 00:04:30,080 >> และทุกครั้งที่เราต้องการที่จะเพิ่มผู้ใช้ ไปยังฐานข้อมูลที่เราต้องการที่จะได้รับทั้งหก 90 00:04:30,080 --> 00:04:31,890 ของชิ้นส่วนเหล่านั้นของข้อมูล 91 00:04:31,890 --> 00:04:34,840 และเราจะทำอย่างนั้นได้โดยการเพิ่ม แถวในตาราง 92 00:04:34,840 --> 00:04:37,800 ดังนั้นครั้งแรกที่เราสร้างฐานข้อมูล แล้วเราสร้างตาราง 93 00:04:37,800 --> 00:04:40,100 ในฐานะที่เป็นส่วนหนึ่งของการสร้าง ตารางที่เราจะถาม 94 00:04:40,100 --> 00:04:44,280 เพื่อระบุว่าทุกคอลัมน์ เราต้องการในตารางนี้ 95 00:04:44,280 --> 00:04:47,247 และแล้วในขณะที่เราเริ่มที่จะเพิ่ม ข้อมูลในฐานข้อมูล 96 00:04:47,247 --> 00:04:49,580 และสืบค้นฐานข้อมูลมากขึ้น generally-- ไม่ได้เป็นเพียงการเพิ่ม 97 00:04:49,580 --> 00:04:51,610 แต่ทุกอย่างอื่นที่เรา do-- เราจะจัดการ 98 00:04:51,610 --> 00:04:58,870 กับแถวของตารางซึ่งเป็นหนึ่งใน ข้อมูลของผู้ใช้จากการตั้งค่าทั้งหมด 99 00:04:58,870 --> 00:05:03,210 >> ดังนั้นทุกคอลัมน์ SQL เป็นความสามารถในการ ถือข้อมูลชนิดข้อมูลที่เฉพาะเจาะจง 100 00:05:03,210 --> 00:05:06,560 ดังนั้นเราจึงจัดเรียงของการตัดออกนี้ ความคิดของชนิดข้อมูลใน PHP 101 00:05:06,560 --> 00:05:08,747 แต่พวกเขากลับมาที่นี่ใน SQL 102 00:05:08,747 --> 00:05:10,080 และมีจำนวนมากของชนิดข้อมูล 103 00:05:10,080 --> 00:05:13,420 นี่เป็นเพียง 20 ของพวกเขา แต่ ก็ไม่ได้ทั้งหมดของพวกเขา 104 00:05:13,420 --> 00:05:16,240 ดังนั้นเราจึงมีความคิดเช่น INTs-- Integers-- เราอาจจะรู้ 105 00:05:16,240 --> 00:05:17,760 ที่คอลัมน์นี้สามารถถือจำนวนเต็ม 106 00:05:17,760 --> 00:05:21,077 และมีรูปแบบที่มีความ thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT 107 00:05:21,077 --> 00:05:22,660 บางทีเราไม่เคยต้องสี่กัด 108 00:05:22,660 --> 00:05:26,800 บางทีเราต้องแปดไบต์และเพื่อให้เรา สามารถใช้รูปแบบเหล่านี้บนจำนวนเต็ม 109 00:05:26,800 --> 00:05:28,510 จะเป็นพื้นที่เล็กน้อยมีประสิทธิภาพมากขึ้น 110 00:05:28,510 --> 00:05:31,899 เราสามารถทำตัวเลขทศนิยมเรา สามารถทำตัวเลขทศนิยม 111 00:05:31,899 --> 00:05:32,940 เหล่านี้จะคล้ายสวย 112 00:05:32,940 --> 00:05:34,773 มีความแตกต่างบางอย่างที่ และถ้าคุณจะ 113 00:05:34,773 --> 00:05:37,330 ชอบที่จะมองขึ้น การเรียงลำดับของ SQL คู่มือคุณ 114 00:05:37,330 --> 00:05:40,670 สามารถมองเห็นสิ่งเล็กน้อย ความแตกต่างระหว่างพวกเขา 115 00:05:40,670 --> 00:05:43,250 >> บางทีเราต้องการจัดเก็บ ข้อมูลเกี่ยวกับวันที่และเวลา 116 00:05:43,250 --> 00:05:47,047 บางทีเรากำลังติดตามความเคลื่อนไหวของ เมื่อผู้ใช้เข้าร่วมเว็บไซต์ของเรา 117 00:05:47,047 --> 00:05:48,880 และดังนั้นบางทีเราต้องการ ที่จะมีคอลัมน์ที่เป็น 118 00:05:48,880 --> 00:05:52,820 ช่วงเวลาวันที่หรือการประทับเวลาที่ บ่งชี้ว่าเมื่อผู้ใช้จริง 119 00:05:52,820 --> 00:05:54,130 ลงทะเบียน. 120 00:05:54,130 --> 00:05:56,132 เราสามารถทำรูปทรงเรขาคณิตและ linestrings 121 00:05:56,132 --> 00:05:57,340 นี้เป็นจริงเย็นสวย 122 00:05:57,340 --> 00:06:01,410 เราสามารถแผนที่ออก พื้นที่ทางภูมิศาสตร์ที่ใช้ 123 00:06:01,410 --> 00:06:05,110 ระบบสารสนเทศภูมิศาสตร์พิกัดพล็อตออกจากพื้นที่ 124 00:06:05,110 --> 00:06:08,580 ดังนั้นจริงสามารถจัดเก็บการจัดเรียงที่ ของข้อมูลในคอลัมน์ SQL 125 00:06:08,580 --> 00:06:11,390 >> ข้อความเป็นเพียงหยดยักษ์ของข้อความที่อาจจะ 126 00:06:11,390 --> 00:06:12,840 enums เป็นชนิดที่น่าสนใจของ 127 00:06:12,840 --> 00:06:16,080 จริงๆแล้วพวกเขามีอยู่ในซีเราไม่ พูดคุยเกี่ยวกับพวกเขาเพราะพวกเขาไม่ได้ 128 00:06:16,080 --> 00:06:19,110 ชะมัดที่ใช้กันทั่วไปอย่างน้อย CS50 129 00:06:19,110 --> 00:06:22,680 แต่มันเป็นชนิดข้อมูลที่ระบุซึ่ง มีความสามารถในการถือครองค่า จำกัด 130 00:06:22,680 --> 00:06:25,940 >> เป็นตัวอย่างที่ดีจริงๆที่นี่จะเป็น เพื่อสร้าง enum ที่เจ็ด 131 00:06:25,940 --> 00:06:29,394 ค่าที่เป็นไปได้วันอาทิตย์วันจันทร์ วันอังคารวันพุธวันพฤหัสบดีวันศุกร์ 132 00:06:29,394 --> 00:06:30,060 วันเสาร์ที่ใช่มั้ย? 133 00:06:30,060 --> 00:06:33,311 วันที่ชนิดข้อมูลของ สัปดาห์ที่ไม่ได้อยู่ 134 00:06:33,311 --> 00:06:35,310 แต่เราสามารถสร้าง ชนิดข้อมูลที่ระบุเช่น 135 00:06:35,310 --> 00:06:39,400 คอลัมน์ที่สามารถเท่านั้นที่เคยถือ หนึ่งในบรรดาเจ็ดค่าที่เป็นไป 136 00:06:39,400 --> 00:06:44,300 เราได้แจกแจงทั้งหมด ของค่าที่เป็นไปได้ 137 00:06:44,300 --> 00:06:47,630 >> แล้วเรามี CHAR และ VARCHAR, และผมสีเหล่านี้เป็นสีเขียว 138 00:06:47,630 --> 00:06:49,505 เพราะเราจริง จะใช้เวลาเป็นครั้งที่สอง 139 00:06:49,505 --> 00:06:51,950 พูดคุยเกี่ยวกับความแตกต่าง ระหว่างทั้งสองสิ่ง 140 00:06:51,950 --> 00:06:55,780 ดังนั้น CHAR ซึ่งแตกต่างจาก C ที่ CHAR เป็นตัวละครเดียว 141 00:06:55,780 --> 00:07:00,730 ใน SQL ถ่านหมายถึง สตริงความยาวคงที่ 142 00:07:00,730 --> 00:07:02,620 และเมื่อเราสร้างนี้ คอลัมน์เราจริง 143 00:07:02,620 --> 00:07:05,070 สามารถระบุความยาวของสตริง 144 00:07:05,070 --> 00:07:08,080 >> ดังนั้นในตัวอย่างนี้ เราอาจจะบอกว่า CHAR (10) 145 00:07:08,080 --> 00:07:11,190 นั่นหมายความว่าทุก องค์ประกอบของคอลัมน์นั้น 146 00:07:11,190 --> 00:07:13,910 จะประกอบด้วย 10 ไบต์ของข้อมูล 147 00:07:13,910 --> 00:07:15,770 ไม่มากไม่น้อย. 148 00:07:15,770 --> 00:07:21,780 ดังนั้นถ้าเราพยายามและใส่ใน 15 บิตหรือองค์ประกอบ 15 ตัวอักษร 149 00:07:21,780 --> 00:07:25,340 หรือค่าลงในคอลัมน์นี้ เรากำลังจะได้รับครั้งแรก 10 150 00:07:25,340 --> 00:07:27,290 ถ้าเราใส่ในสอง ตัวอักษรค่ายาว 151 00:07:27,290 --> 00:07:30,700 เรากำลังจะมีทั้งสอง ตัวอักษรแล้วแปดกัด null 152 00:07:30,700 --> 00:07:34,990 เราจะไม่เคยจะมีประสิทธิภาพมากขึ้นกว่าที่ 153 00:07:34,990 --> 00:07:37,727 >> VARCHAR เป็นชนิดเช่น ความคิดของเราของสตริง 154 00:07:37,727 --> 00:07:39,560 ที่เราคุ้นเคย กับการจาก C หรือจาก PHP 155 00:07:39,560 --> 00:07:40,830 มันเป็นความยาวตัวแปรสตริง 156 00:07:40,830 --> 00:07:42,560 และเมื่อคุณสร้าง คอลัมน์นี้คุณเพียงแค่ 157 00:07:42,560 --> 00:07:44,860 ระบุความยาวเป็นไปได้สูงสุด 158 00:07:44,860 --> 00:07:49,065 ดังนั้นอาจจะ 99 หรือ 255 ทั่วไป 159 00:07:49,065 --> 00:07:50,440 ที่จะเป็นความยาวสูงสุด 160 00:07:50,440 --> 00:07:52,890 ดังนั้นถ้าเราได้รับการจัดเก็บ 15 ตัวอักษร, 161 00:07:52,890 --> 00:07:56,157 เราจะใช้ 15 ไบต์อาจจะ 16 ไบต์สำหรับเทอร์มิ null 162 00:07:56,157 --> 00:07:57,990 ถ้าเราได้รับการจัดเก็บ สามตัวอักษร, 163 00:07:57,990 --> 00:08:01,120 เราจะใช้สามหรือสี่ไบต์ 164 00:08:01,120 --> 00:08:03,050 แต่เราจะไม่ใช้เต็ม 99 165 00:08:03,050 --> 00:08:05,190 >> ดังนั้นทำไมเราจะมีทั้งสอง? 166 00:08:05,190 --> 00:08:08,210 ดีถ้าเราจำเป็นต้องคิดออกว่า บางสิ่งบางอย่างที่มีความยาวเป็น VARCHAR ที่ 167 00:08:08,210 --> 00:08:10,680 เรามีชนิดของย้ำ ข้ามมันเช่นเดียวกับที่เราทำใน C 168 00:08:10,680 --> 00:08:12,230 และคิดออกว่าจะหยุด 169 00:08:12,230 --> 00:08:15,920 ในขณะที่ถ้าเรารู้ว่าทุกอย่าง ในคอลัมน์นี้คือ 10 ไบต์อาจจะ 170 00:08:15,920 --> 00:08:19,220 เรารู้ว่าข้อมูลที่เราสามารถกระโดด 10 ไบต์ 10 ไบต์ 10 ไบต์ 10 ไบต์ 171 00:08:19,220 --> 00:08:21,790 และมักจะพบ จุดเริ่มต้นของสตริง 172 00:08:21,790 --> 00:08:25,210 >> ดังนั้นเราอาจจะมีบางส่วน การสูญเสียพื้นที่ที่มี CHAR ที่ 173 00:08:25,210 --> 00:08:28,510 แต่อาจจะมีการค้า ออกจากการมีความเร็วที่ดีกว่า 174 00:08:28,510 --> 00:08:30,160 ในการนำฐานข้อมูล 175 00:08:30,160 --> 00:08:32,330 แต่บางทีเราต้องการ ความยืดหยุ่นของ VARCHAR 176 00:08:32,330 --> 00:08:36,710 แทนการ having-- หาก CHAR ของเรา เป็น 255 แต่ส่วนใหญ่ของผู้ใช้ของเรา 177 00:08:36,710 --> 00:08:40,537 เป็นเพียงป้อนสามหรือสี่ไบต์ มูลค่าของข้อมูลหรือสามหรือสี่ 178 00:08:40,537 --> 00:08:41,870 ตัวอักษรมูลค่าของข้อมูล 179 00:08:41,870 --> 00:08:44,324 >> แต่ผู้ใช้บางคนได้ใช้ ทั้งหมด 255 อาจจะ 180 00:08:44,324 --> 00:08:45,990 VARCHAR จะมีความเหมาะสมมากขึ้นมี 181 00:08:45,990 --> 00:08:49,840 มันเรียงลำดับของการค้าออกและ โดยทั่วไปสำหรับวัตถุประสงค์ของการ CS50, 182 00:08:49,840 --> 00:08:54,107 คุณไม่จำเป็นต้องกังวลมากเกินไปเกี่ยวกับ ไม่ว่าคุณจะใช้ CHAR หรือ VARCHAR 183 00:08:54,107 --> 00:08:57,190 แต่ในโลกแห่งความจริงสิ่งเหล่านี้ ไม่สำคัญเพราะทั้งหมดของคอลัมน์เหล่านี้ 184 00:08:57,190 --> 00:08:59,300 ใช้พื้นที่ทางกายภาพที่เกิดขึ้นจริง 185 00:08:59,300 --> 00:09:04,150 และพื้นที่ทางกายภาพใน โลกแห่งความจริงมาในพรีเมี่ยม 186 00:09:04,150 --> 00:09:06,800 >> ดังนั้นหนึ่งในการพิจารณาอื่น ๆ เมื่อคุณกำลังสร้างตาราง 187 00:09:06,800 --> 00:09:09,840 คือการเลือกคอลัมน์หนึ่งที่จะเป็น สิ่งที่เรียกว่าคีย์หลัก 188 00:09:09,840 --> 00:09:14,350 และที่สำคัญหลักคือคอลัมน์ ที่ทุกค่าเดียวจะไม่ซ้ำกัน 189 00:09:14,350 --> 00:09:19,980 และนั่นหมายความว่าคุณสามารถได้อย่างง่ายดาย เลือกออกแถวเดียวเพียงแค่มอง 190 00:09:19,980 --> 00:09:22,450 ที่คีย์หลักของแถวนั้น 191 00:09:22,450 --> 00:09:24,580 ดังนั้นสำหรับตัวอย่างเช่นคุณ โดยทั่วไปกับผู้ใช้ 192 00:09:24,580 --> 00:09:27,210 ไม่ต้องการให้ผู้ใช้ที่สอง มีจำนวนผู้ใช้ ID เดียวกัน 193 00:09:27,210 --> 00:09:28,960 ดังนั้นบางทีคุณอาจมี จำนวนมากของข้อมูล 194 00:09:28,960 --> 00:09:30,793 และอาจจะสองผู้ใช้สามารถ มี name-- เดียวกัน 195 00:09:30,793 --> 00:09:32,650 คุณมีจอห์นสมิ ธ และจอห์นสมิ ธ 196 00:09:32,650 --> 00:09:34,520 ที่ไม่จำเป็นต้องมีปัญหา เพราะมีคนหลายคน 197 00:09:34,520 --> 00:09:35,830 ในโลกที่ชื่อจอห์นสมิ ธ 198 00:09:35,830 --> 00:09:40,766 แต่เรามีเพียงหมายเลขรหัสผู้ใช้คนหนึ่ง 10 ID ผู้ใช้จำนวนหนึ่ง 11, 12, 13 199 00:09:40,766 --> 00:09:42,640 เราไม่ได้มีผู้ใช้สองคน ที่มีหมายเลขเดียวกัน 200 00:09:42,640 --> 00:09:46,010 และดังนั้นบางทีหมายเลข ID ผู้ใช้ จะเป็นคีย์หลักที่ดี 201 00:09:46,010 --> 00:09:48,610 >> เราไม่ได้มีการทำสำเนาใด ๆ และที่เราสามารถทำได้ในขณะนี้ไม่ซ้ำกัน 202 00:09:48,610 --> 00:09:52,619 ระบุทุกเพียงแถวเดียว โดยดูที่คอลัมน์นั้น 203 00:09:52,619 --> 00:09:55,410 การเลือกคีย์หลักสามารถจริง ทำให้การดำเนินงานตารางที่ตามมา 204 00:09:55,410 --> 00:09:59,710 มากขึ้นเพราะคุณสามารถใช้ประโยชน์จาก ความจริงที่ว่าแถวบางอย่างจะ 205 00:09:59,710 --> 00:10:02,720 จะไม่ซ้ำกันหรือคอลัมน์บางอย่าง ของฐานข้อมูลหรือตารางของคุณ 206 00:10:02,720 --> 00:10:06,030 จะไม่ซ้ำกันที่จะเลือก โดยเฉพาะอย่างยิ่งแถวออก 207 00:10:06,030 --> 00:10:08,790 >> นอกจากนี้คุณยังสามารถมีหลักร่วมกัน ที่สำคัญที่คุณอาจพบโอกาส 208 00:10:08,790 --> 00:10:11,720 ในการใช้งานซึ่งเป็นเพียง การรวมกันของสองคอลัมน์ที่ 209 00:10:11,720 --> 00:10:13,280 รับประกันได้ว่าจะไม่ซ้ำกัน 210 00:10:13,280 --> 00:10:16,410 ดังนั้นบางทีคุณมีหนึ่ง คอลัมน์ที่เป็นและชัด ๆ 211 00:10:16,410 --> 00:10:19,290 คอลัมน์หนึ่งที่หนึ่งสอง และสาม แต่คุณจะเท่านั้นที่เคย 212 00:10:19,290 --> 00:10:23,660 มี A1 เดียวเดียว A2 และอื่น ๆ และอื่น ๆ 213 00:10:23,660 --> 00:10:28,980 แต่คุณอาจจะมี B2 เป็น C2 หรือ A1, A2, A3, A4 214 00:10:28,980 --> 00:10:32,840 ดังนั้นคุณอาจจะมีหลาย ๆ คนขณะที่หลาย Bs คนหลายเจ้าตัวหลาย 215 00:10:32,840 --> 00:10:38,567 แต่คุณสามารถเท่านั้นที่เคยมี เดียว A1, B2, C3 และอื่น ๆ 216 00:10:38,567 --> 00:10:40,400 ดังนั้นที่ผมกล่าวว่า SQL เป็น ภาษาโปรแกรม 217 00:10:40,400 --> 00:10:42,024 แต่มันก็มีคำศัพท์ที่ค่อนข้าง จำกัด 218 00:10:42,024 --> 00:10:44,880 มันไม่ได้ค่อนข้างเป็นที่ขยายตัวเป็น C และ PHP และภาษาอื่น ๆ 219 00:10:44,880 --> 00:10:46,350 ที่เราพูดคุยในหลักสูตร 220 00:10:46,350 --> 00:10:49,960 มันเป็นความละเอียดมากขึ้น ภาษากว่าสิ่งที่เรากำลัง 221 00:10:49,960 --> 00:10:52,789 จะพูดถึงในเรื่องนี้ วิดีโอเพราะในวิดีโอนี้ 222 00:10:52,789 --> 00:10:54,830 ที่เรากำลังจะพูดคุยเกี่ยวกับ สี่การดำเนินงานที่เรา 223 00:10:54,830 --> 00:10:55,720 สามารถดำเนินการบนโต๊ะ 224 00:10:55,720 --> 00:10:56,761 >> มีมากกว่านี้ 225 00:10:56,761 --> 00:10:58,730 เราสามารถทำอะไรได้มากกว่านี้ แต่สำหรับวัตถุประสงค์ของเรา 226 00:10:58,730 --> 00:11:02,250 โดยทั่วไปเราจะต้องใช้ เพียงสี่แทรก operations--, 227 00:11:02,250 --> 00:11:05,360 เลือกปรับปรุงและลบ 228 00:11:05,360 --> 00:11:08,750 และคุณอาจจะสามารถคาดเดาสังหรณ์ใจ สิ่งที่ทั้งสี่ของสิ่งเหล่านี้ทำ 229 00:11:08,750 --> 00:11:12,520 แต่เราจะไปลงเล็กน้อย รายละเอียดในแต่ละ 230 00:11:12,520 --> 00:11:15,780 >> ดังนั้นเพื่อวัตถุประสงค์ในการนี​​้ วิดีโอสมมติ 231 00:11:15,780 --> 00:11:18,870 เราได้ที่สองต่อไป ตารางในฐานข้อมูลเดียว 232 00:11:18,870 --> 00:11:23,460 เรามีตารางที่เรียกว่าผู้ใช้ที่มี สี่ columns-- หมายเลขรหัสชื่อผู้ใช้ 233 00:11:23,460 --> 00:11:25,350 รหัสผ่านและชื่อเต็ม 234 00:11:25,350 --> 00:11:27,430 และเรามีสอง ตารางในฐานข้อมูลเดียวกัน 235 00:11:27,430 --> 00:11:32,129 เรียกว่าคุณแม่ที่เพิ่งเก็บข้อมูล เกี่ยวกับชื่อผู้ใช้และแม่ 236 00:11:32,129 --> 00:11:33,920 ดังนั้นสำหรับตัวอย่าง ในวิดีโอนี้เราจะ 237 00:11:33,920 --> 00:11:37,945 จะใช้ฐานข้อมูลนี้และ การปรับปรุงที่ตามมากับมัน 238 00:11:37,945 --> 00:11:40,070 ดังนั้นสมมติว่าเราต้องการที่จะ เพิ่มข้อมูลในตาราง 239 00:11:40,070 --> 00:11:44,460 นั่นคือสิ่งที่ดำเนินการแทรกไม่ 240 00:11:44,460 --> 00:11:46,550 ในการอธิบายทั้งหมดของ คำสั่งเหล่านี้ฉันจะ 241 00:11:46,550 --> 00:11:48,860 เพื่อให้คุณมีโครงกระดูกทั่วไปที่จะใช้ 242 00:11:48,860 --> 00:11:51,661 เพราะโดยทั่วไปแบบสอบถาม จะดูสวยคล้ายกัน 243 00:11:51,661 --> 00:11:54,660 เรากำลังจะมีการเปลี่ยนแปลง ชิ้นส่วนที่แตกต่างกันเล็กน้อยจากข้อมูล 244 00:11:54,660 --> 00:11:56,750 ที่จะทำสิ่งที่แตกต่างกับโต๊ะ 245 00:11:56,750 --> 00:11:59,200 >> ดังนั้นสำหรับ INSERT, โครงกระดูก ลักษณะชนิดเช่นนี้ 246 00:11:59,200 --> 00:12:02,230 เราต้องการที่จะใส่ลงใน ตารางโดยเฉพาะอย่างยิ่ง 247 00:12:02,230 --> 00:12:05,290 แล้วเรามีวงเล็บเปิด และรายชื่อของคอลัมน์ 248 00:12:05,290 --> 00:12:08,070 ว่าเราต้องการที่จะนำค่าลง 249 00:12:08,070 --> 00:12:10,974 วงเล็บปิดที่ ต่อไปนี้ค่าแล้ว 250 00:12:10,974 --> 00:12:13,390 อีกครั้งที่เราออกรายการค่า เราต้องการที่จะใส่ในตาราง 251 00:12:13,390 --> 00:12:15,950 >> ดังนั้นตัวอย่างนี้ จะเป็นดังต่อไปนี้ 252 00:12:15,950 --> 00:12:19,170 ฉันต้องการที่จะใส่ลงในตาราง ผู้ใช้ columns-- ดังต่อไปนี้ 253 00:12:19,170 --> 00:12:21,010 ชื่อผู้ใช้รหัสผ่านและชื่อเต็ม 254 00:12:21,010 --> 00:12:25,282 ดังนั้นแถวใหม่ที่ฉันวาง ในบรรดาสามคอลัมน์และเรา 255 00:12:25,282 --> 00:12:30,030 ไปใส่ในค่า นิวแมน USMAIL และนิวแมน 256 00:12:30,030 --> 00:12:32,730 ดังนั้นในกรณีนี้ผม วางนิวแมนตัวพิมพ์เล็ก 257 00:12:32,730 --> 00:12:38,710 ลงในคอลัมน์ชื่อผู้ใช้รหัสผ่าน USMAIL และเมืองหลวงชื่อเต็มยังไม่มี 258 00:12:38,710 --> 00:12:41,940 นิวแมนลงในคอลัมน์ชื่อเต็ม 259 00:12:41,940 --> 00:12:44,240 >> ดังนั้นนี่คือสิ่งฐานข้อมูล มองเหมือนก่อน 260 00:12:44,240 --> 00:12:48,250 นี่คือสิ่งที่ผู้ใช้ตารางบน ด้านบนดูเหมือนก่อนที่เราจะทำอย่างนี้ 261 00:12:48,250 --> 00:12:50,760 หลังจากที่เราดำเนินการนี​​้ แบบสอบถามที่เราได้รับนี้ 262 00:12:50,760 --> 00:12:54,790 เราได้เพิ่มแถวใหม่ในตาราง 263 00:12:54,790 --> 00:12:56,810 แต่แจ้งให้ทราบนี้สิ่งหนึ่งที่ ที่ฉันไม่ได้ระบุ 264 00:12:56,810 --> 00:12:59,880 แต่อย่างใดฉันมีค่า สำหรับซึ่งเป็น 12 ขวาที่นี่ 265 00:12:59,880 --> 00:13:02,820 ผมไม่ได้บอกว่าผมต้องการที่จะ ใส่หมายเลข ID ในการมี 266 00:13:02,820 --> 00:13:04,900 ผมอยากที่จะใส่ชื่อผู้ใช้ รหัสผ่านชื่อเต็ม 267 00:13:04,900 --> 00:13:06,440 และผมว่าที่ดี 268 00:13:06,440 --> 00:13:07,760 >> แต่ฉันยังมี 12 269 00:13:07,760 --> 00:13:09,490 ฉันไม่ได้รับนี้ 12 ทำไม? 270 00:13:09,490 --> 00:13:12,904 ดีก็ปรากฎว่า เมื่อคุณกำหนด 271 00:13:12,904 --> 00:13:15,570 คอลัมน์ที่เป็นไปได้ของคุณ คีย์หลักซึ่งเป็นปกติ 272 00:13:15,570 --> 00:13:16,510 ชอบพูดว่าจำนวนประชาชน 273 00:13:16,510 --> 00:13:18,718 มันไม่จำเป็นเสมอ จะเป็นหมายเลขประจำตัวที่ 274 00:13:18,718 --> 00:13:22,380 แต่ก็มักจะเป็นความคิดที่ดีที่จะ จะเรียงลำดับของค่าจำนวนเต็มบาง 275 00:13:22,380 --> 00:13:25,950 คุณมีตัวเลือกใน phpMyAdmin เมื่อคุณกำลังสร้างฐานข้อมูลของคุณ 276 00:13:25,950 --> 00:13:31,130 หรือตารางของคุณเพื่อตั้งว่า คอลัมน์เป็น incrementing อัตโนมัติ 277 00:13:31,130 --> 00:13:34,520 >> ซึ่งเป็นความคิดที่ดีจริงๆเมื่อ คุณกำลังทำงานกับคีย์หลัก 278 00:13:34,520 --> 00:13:39,330 เพราะคุณต้องการให้ค่าทุก ในคอลัมน์ที่จะไม่ซ้ำกัน 279 00:13:39,330 --> 00:13:43,310 และถ้าคุณลืมที่จะระบุ มันสำหรับคนมากกว่าหนึ่งคน, 280 00:13:43,310 --> 00:13:46,240 ขณะนี้คุณมีสถานการณ์ที่ คอลัมน์ที่ไม่ซ้ำกัน 281 00:13:46,240 --> 00:13:50,200 คุณมีสองช่องว่างเพื่อให้คุณไม่สามารถ อีกต่อไปไม่ซ้ำกันระบุ column-- 282 00:13:50,200 --> 00:13:54,150 หรือคุณไม่สามารถที่ไม่ซ้ำกัน ระบุแถวขึ้นอยู่กับคอลัมน์ว่า 283 00:13:54,150 --> 00:13:57,010 มันหายไปทั้งหมดของมัน ค่าเป็นคีย์หลัก 284 00:13:57,010 --> 00:14:02,010 >> และเห็นได้ชัดดังนั้นสิ่งที่ฉันได้ทำ ที่นี่มีการกำหนดค่า ID ผู้ใช้ 285 00:14:02,010 --> 00:14:07,790 คอลัมน์ที่เพิ่มขึ้นรถยนต์เพื่อให้ทุก ทุกครั้งที่ผมเพิ่มข้อมูลในตาราง 286 00:14:07,790 --> 00:14:12,220 ก็จะให้ฉัน ค่าสำหรับคีย์หลัก 287 00:14:12,220 --> 00:14:15,570 ดังนั้นผมจึงไม่เคยลืมที่จะทำเพราะ ฐานข้อมูลจะทำเพื่อฉัน 288 00:14:15,570 --> 00:14:16,587 เพื่อให้เป็นชนิดของความสุข 289 00:14:16,587 --> 00:14:18,670 และนั่นเป็นเหตุผลที่เราได้รับ 12 ในที่นั่นเพราะผมได้ 290 00:14:18,670 --> 00:14:21,772 ตั้งคอลัมน์ว่าจะเพิ่มขึ้นโดยอัตโนมัติ 291 00:14:21,772 --> 00:14:23,730 ถ้าฉันจะเพิ่มคนอื่น มันจะเป็นแค่ 13 ถ้าผมเพิ่ม 292 00:14:23,730 --> 00:14:27,890 คนอื่นมันจะเป็นวันที่ 14 และอื่น ๆ 293 00:14:27,890 --> 00:14:30,190 >> ดังนั้นขอเพียงแค่ทำแทรกอีกหนึ่ง 294 00:14:30,190 --> 00:14:34,530 เราจะใส่ลงในตารางแม่ใน โดยเฉพาะอย่างยิ่งชื่อผู้ใช้และแม่ 295 00:14:34,530 --> 00:14:37,390 คอลัมน์ค่า kramer แบ็บส์และเครเมอ 296 00:14:37,390 --> 00:14:39,140 และเพื่อให้เรามีแบบนี้มาก่อน 297 00:14:39,140 --> 00:14:41,800 หลังจากที่เราดำเนินการที่ แบบสอบถาม SQL เรามีนี้ 298 00:14:41,800 --> 00:14:47,290 เราได้เพิ่มและเครเมอส์ เครเมอตารางแม่ 299 00:14:47,290 --> 00:14:48,350 >> ดังนั้นที่ใส่ 300 00:14:48,350 --> 00:14:51,850 เลือกเป็นสิ่งที่เราใช้ในการสกัด ข้อมูลจากตาราง 301 00:14:51,850 --> 00:14:54,390 ดังนั้นนี่คือวิธีการที่เราได้รับ ข้อมูลจากฐานข้อมูล 302 00:14:54,390 --> 00:14:59,589 และคำสั่ง SELECT เพื่อให้เป็นไปได้ ที่ใช้บ่อยมากในการเขียนโปรแกรม 303 00:14:59,589 --> 00:15:02,130 ทั่วไป framework-- โครงกระดูกโดยทั่วไปมีลักษณะเช่นนี้ 304 00:15:02,130 --> 00:15:06,550 เลือกชุดของคอลัมน์จาก ตารางแล้วเลือก 305 00:15:06,550 --> 00:15:11,090 คุณสามารถระบุสภาพที่หรือ สิ่งที่เรามักจะเรียกกริยาที่ 306 00:15:11,090 --> 00:15:13,010 มักจะเป็นคำที่เราใช้ในการ SQL 307 00:15:13,010 --> 00:15:16,490 >> แต่มันก็เป็นสิ่งที่ แถวโดยเฉพาะอย่างยิ่งคุณต้องการที่จะได้รับ 308 00:15:16,490 --> 00:15:19,100 หากคุณต้องการแทนการรับ ทุกอย่างแคบลง 309 00:15:19,100 --> 00:15:20,060 นี่คือที่ที่คุณจะทำอย่างนั้น 310 00:15:20,060 --> 00:15:22,777 และจากนั้นก็เลือกที่คุณยังสามารถ สั่งซื้อโดยเฉพาะคอลัมน์ 311 00:15:22,777 --> 00:15:25,860 ดังนั้นบางทีคุณอาจต้องการที่จะมีสิ่งที่เรียง ตามลำดับตัวอักษรในหนึ่งคอลัมน์ 312 00:15:25,860 --> 00:15:27,540 ที่หรือตัวอักษรขึ้นอยู่กับอีกคนหนึ่ง 313 00:15:27,540 --> 00:15:30,610 >> อีกครั้งที่สถานที่และตามคำสั่งเป็นตัวเลือก 314 00:15:30,610 --> 00:15:32,681 แต่พวกเขาอาจจะ useful-- โดยเฉพาะอย่างยิ่ง 315 00:15:32,681 --> 00:15:34,680 สถานที่จะเป็นประโยชน์กับ แคบลงเพื่อให้คุณทำไม่ได้ 316 00:15:34,680 --> 00:15:37,460 ได้รับฐานข้อมูลทั้งหมดของคุณกลับมาและ มีการประมวลผลนั้นคุณเพิ่งได้รับ 317 00:15:37,460 --> 00:15:39,300 ชิ้นส่วนของว่าที่คุณดูแลเกี่ยวกับ 318 00:15:39,300 --> 00:15:44,932 ดังนั้นสำหรับตัวอย่างเช่นผมอาจต้องการที่จะเลือก หมายเลขรหัสและชื่อเต็มจากผู้ใช้ 319 00:15:44,932 --> 00:15:46,140 ดังนั้นสิ่งนี้อาจจะมีลักษณะอย่างไร 320 00:15:46,140 --> 00:15:48,270 ดังนั้นนี่คือตารางผู้ใช้ของฉัน 321 00:15:48,270 --> 00:15:51,080 ฉันต้องการที่จะเลือก idnum และชื่อเต็มจากผู้ใช้ 322 00:15:51,080 --> 00:15:52,300 สิ่งที่ฉันจะได้รับ? 323 00:15:52,300 --> 00:15:53,580 ฉันจะได้รับนี้ 324 00:15:53,580 --> 00:15:56,930 ผมไม่ได้แคบลงดังนั้นฉัน ได้รับหมายเลขประจำตัวสำหรับทุกแถว 325 00:15:56,930 --> 00:16:00,850 และฉันได้รับเต็มรูปแบบ ชื่อจากทุกแถว 326 00:16:00,850 --> 00:16:02,210 >> ตกลง. 327 00:16:02,210 --> 00:16:05,640 เกิดอะไรขึ้นถ้าผมต้องการที่จะเลือกรหัสผ่าน จากผู้ใช้ WHERE-- ดังนั้นตอนนี้ 328 00:16:05,640 --> 00:16:10,370 ฉันเพิ่มสภาพเป็น predicate-- ที่ idnum น้อยกว่า 12 329 00:16:10,370 --> 00:16:13,660 ดังนั้นนี่คือฐานข้อมูลของฉันอีกครั้ง ตารางผู้ใช้ของฉันด้านบน 330 00:16:13,660 --> 00:16:17,030 สิ่งที่ฉันจะได้รับหากฉันต้องการ เลือกข้อมูลที่รหัสผ่าน 331 00:16:17,030 --> 00:16:21,550 ที่ ID ผู้ใช้หรือ idnum น้อยกว่า 12 332 00:16:21,550 --> 00:16:24,910 ฉันจะได้รับนี้ ข้อมูลกลับไปใช่มั้ย? 333 00:16:24,910 --> 00:16:29,170 มันเกิดขึ้นที่ idnum 10 น้อย กว่า 12 หมายเลขประจำตัว 11 น้อยกว่า 12 334 00:16:29,170 --> 00:16:32,160 ฉันได้รับรหัสผ่านสำหรับผู้ที่แถว 335 00:16:32,160 --> 00:16:33,914 นั่นคือสิ่งที่ฉันขอ 336 00:16:33,914 --> 00:16:34,580 อะไรเกี่ยวกับเรื่องนี้? 337 00:16:34,580 --> 00:16:39,170 เกิดอะไรขึ้นถ้าผมต้องการที่จะเลือกดาวจาก ตารางที่คุณแม่ชื่อผู้ใช้เท่ากับเจอร์รี่? 338 00:16:39,170 --> 00:16:43,780 ตกลงเลือกดาวเป็นพิเศษ การเรียงลำดับของป่าการ์ดที่เรียกว่า 339 00:16:43,780 --> 00:16:45,670 ที่เราใช้ทุกอย่างที่จะได้รับ 340 00:16:45,670 --> 00:16:48,620 ดังนั้นพวกเขากำลังจะบอกว่าเลือก แม่ชื่อผู้ใช้เครื่องหมายจุลภาคซึ่ง 341 00:16:48,620 --> 00:16:51,060 เกิดขึ้นจะเป็นเพียง สองคอลัมน์ของตารางนี้ 342 00:16:51,060 --> 00:16:53,260 ฉันสามารถเลือกดาว และได้รับทุกอย่าง 343 00:16:53,260 --> 00:16:55,030 ชื่อผู้ใช้ที่เท่ากับเจอร์ 344 00:16:55,030 --> 00:16:59,380 และนั่นคือสิ่งที่ผมจะได้รับ ถ้าฉันทำว่าแบบสอบถามโดยเฉพาะอย่างยิ่ง 345 00:16:59,380 --> 00:17:01,810 >> ตอนนี้มีฐานข้อมูล ที่ดีเพราะพวกเขาช่วยให้ 346 00:17:01,810 --> 00:17:06,074 เราสามารถจัดระเบียบข้อมูลอาจจะ บิตมีประสิทธิภาพมากขึ้นกว่าที่เรา 347 00:17:06,074 --> 00:17:06,740 อาจจะเป็นอย่างอื่น 348 00:17:06,740 --> 00:17:10,240 เราไม่จำเป็นต้องในการจัดเก็บ ทุกชิ้นที่เกี่ยวข้องของข้อมูล 349 00:17:10,240 --> 00:17:12,230 เกี่ยวกับผู้ใช้ในตารางเดียวกัน 350 00:17:12,230 --> 00:17:13,730 เรามีสองตารางมี 351 00:17:13,730 --> 00:17:15,734 >> เราจำเป็นต้องมีการจัดเก็บ ชื่อแม่ของทุกคนของ 352 00:17:15,734 --> 00:17:18,900 และบางทีเราไม่ได้มีการรักษาความปลอดภัยทางสังคม จำนวนที่เรามีวันเกิดของพวกเขา 353 00:17:18,900 --> 00:17:21,819 แต่นั่นไม่ได้มักจะต้อง ที่จะอยู่ในตารางเดียวกัน 354 00:17:21,819 --> 00:17:25,339 ตราบใดที่เราสามารถกำหนด ความสัมพันธ์ระหว่าง tables-- 355 00:17:25,339 --> 00:17:28,440 และที่ที่ว่าสัมพันธ์ ระยะฐานข้อมูลชนิดของมา 356 00:17:28,440 --> 00:17:32,130 เข้า play-- ตราบใดที่เราสามารถกำหนด ความสัมพันธ์ระหว่างตารางที่ 357 00:17:32,130 --> 00:17:35,545 เราสามารถจัดเรียงของ compartmentalize หรือสิ่งที่เป็นนามธรรมทาง 358 00:17:35,545 --> 00:17:37,670 ที่เรามีเพียง ข้อมูลที่สำคัญจริงๆ 359 00:17:37,670 --> 00:17:39,270 เราดูแลเกี่ยวกับในตารางของผู้ใช้ 360 00:17:39,270 --> 00:17:43,220 แล้วเรามีข้อมูลเสริม หรือข้อมูลเพิ่มเติมในตารางอื่น ๆ 361 00:17:43,220 --> 00:17:48,260 ที่เราสามารถเชื่อมต่อกลับไปหลัก ตารางผู้ใช้ในทางหนึ่ง 362 00:17:48,260 --> 00:17:52,200 >> ดังนั้นที่นี่เรามีทั้งสองตาราง แต่ มีความสัมพันธ์ระหว่างพวกเขา 363 00:17:52,200 --> 00:17:53,010 ขวา? 364 00:17:53,010 --> 00:17:55,070 ดูเหมือนว่าชื่อผู้ใช้ อาจจะมีสิ่ง 365 00:17:55,070 --> 00:17:59,909 ที่มีอยู่ในร่วมกันระหว่าง ทั้งสองตารางที่แตกต่าง 366 00:17:59,909 --> 00:18:01,700 ดังนั้นสิ่งที่ถ้าตอนนี้เรามี สถานการณ์ที่เรา 367 00:18:01,700 --> 00:18:06,046 ต้องการที่จะได้รับชื่อเต็มของผู้ใช้จาก ตารางของผู้ใช้และแม่ของพวกเขา 368 00:18:06,046 --> 00:18:07,170 ชื่อจากตารางแม่? 369 00:18:07,170 --> 00:18:10,960 เราไม่ได้มีวิธีการที่จะได้รับ ที่มันยืนใช่มั้ย? 370 00:18:10,960 --> 00:18:17,790 ไม่มีตารางเดียวที่มีคือ ทั้งชื่อเต็มและชื่อของแม่ 371 00:18:17,790 --> 00:18:20,400 เราไม่ได้มีตัวเลือกที่ จากสิ่งที่เราได้เห็นเพื่อให้ห่างไกล 372 00:18:20,400 --> 00:18:22,950 >> และเพื่อให้เรามีที่จะแนะนำ ความคิดของการเข้าร่วม 373 00:18:22,950 --> 00:18:24,857 และเข้าร่วมอาจจะ complex-- มากที่สุด 374 00:18:24,857 --> 00:18:27,940 ก็จริงๆการดำเนินงานที่ซับซ้อนมากที่สุด ที่เรากำลังจะพูดคุยเกี่ยวกับในวิดีโอ 375 00:18:27,940 --> 00:18:30,040 พวกเขากำลังมีความซับซ้อนน้อย แต่เมื่อคุณได้รับการแขวนของมัน 376 00:18:30,040 --> 00:18:31,248 พวกเขากำลังจริงไม่ได้เลวร้ายเกินไป 377 00:18:31,248 --> 00:18:32,820 มันเป็นเพียงกรณีพิเศษของ SELECT 378 00:18:32,820 --> 00:18:37,120 เรากำลังจะไปเลือกชุดของ คอลัมน์จากตารางการเข้าร่วม 379 00:18:37,120 --> 00:18:40,650 ในตารางที่สองในกริยาบาง 380 00:18:40,650 --> 00:18:45,340 >> ในกรณีนี้คิดเกี่ยวกับมันชอบ this-- โต๊ะหนึ่งเป็นหนึ่งในวงกลมมากกว่าที่นี่ 381 00:18:45,340 --> 00:18:47,530 ตารางที่สองคือวงกลมมากกว่าที่นี่อีก 382 00:18:47,530 --> 00:18:49,410 และนั่นเป็นส่วนหนึ่งกริยา ที่อยู่ตรงกลางก็ 383 00:18:49,410 --> 00:18:51,701 ประเภทเช่นถ้าคุณคิด เกี่ยวกับการเป็นแผนภาพเวนน์สิ่งที่ 384 00:18:51,701 --> 00:18:52,670 พวกเขามีเหมือนกัน? 385 00:18:52,670 --> 00:18:55,960 เราต้องการที่จะเชื่อมโยงทั้งสองตาราง ขึ้นอยู่กับสิ่งที่พวกเขามีเหมือนกัน 386 00:18:55,960 --> 00:19:01,230 และสร้างตารางสมมุตินี้ ที่มีการควบรวมกิจการของทั้งสองเข้าด้วยกัน 387 00:19:01,230 --> 00:19:03,480 ดังนั้นเราจะเห็นสิ่งนี้ใน ตัวอย่างและอาจที่จะช่วยให้ 388 00:19:03,480 --> 00:19:04,521 ชัดเจนขึ้นนิด ๆ หน่อย ๆ 389 00:19:04,521 --> 00:19:09,260 ดังนั้นบางทีคุณอาจต้องการที่จะเลือก USER.FULLNAME และ moms.mother 390 00:19:09,260 --> 00:19:13,220 จากผู้ใช้ในการเข้าร่วม ตารางแม่ในทุกสถานการณ์ 391 00:19:13,220 --> 00:19:16,790 ที่คอลัมน์ชื่อผู้ใช้ จะเหมือนกันระหว่างพวกเขา 392 00:19:16,790 --> 00:19:19,240 และนี่คือใหม่ ไวยากรณ์ที่นี่ผู้ใช้นี้ 393 00:19:19,240 --> 00:19:20,460 และคุณแม่ .. 394 00:19:20,460 --> 00:19:26,697 ถ้าฉันทำหลายตาราง ร่วมกันฉันสามารถระบุตาราง 395 00:19:26,697 --> 00:19:29,530 ฉันสามารถแยกแยะความแตกต่างในโดยเฉพาะอย่างยิ่ง ว่าเมื่อวันที่ด้านล่างสุดมี 396 00:19:29,530 --> 00:19:33,220 ฉันสามารถแยกแยะความแตกต่างชื่อผู้ใช้ คอลัมน์ของตารางผู้ใช้ 397 00:19:33,220 --> 00:19:36,010 จากคอลัมน์ชื่อผู้ใช้ของ ตารางที่คุณแม่ซึ่งเป็น otherwise-- 398 00:19:36,010 --> 00:19:38,070 ถ้าเราเพียงแค่บอกชื่อผู้ใช้เท่ากับ ชื่อผู้ใช้ที่ไม่ได้จริงๆ 399 00:19:38,070 --> 00:19:38,970 หมายถึงอะไร 400 00:19:38,970 --> 00:19:41,440 เราต้องการที่จะทำมันตรงกับที่พวกเขา 401 00:19:41,440 --> 00:19:46,080 >> ดังนั้นผมจึงสามารถระบุโต๊ะและ ชื่อคอลัมน์ในกรณีของสถ​​านการณ์ 402 00:19:46,080 --> 00:19:48,370 ที่มันจะไม่ชัดเจน สิ่งที่ฉันพูดคุยเกี่ยวกับ 403 00:19:48,370 --> 00:19:51,880 ดังนั้นนั่นคือทั้งหมดที่ผมทำมีฉัน บอกว่าคอลัมน์นี้จากตารางนี้ 404 00:19:51,880 --> 00:19:54,020 และเป็นที่ชัดเจนมาก 405 00:19:54,020 --> 00:19:56,810 ดังนั้นอีกครั้งฉันเลือก ชื่อเต็มและชื่อของแม่ 406 00:19:56,810 --> 00:20:00,950 จากตารางผู้ใช้เชื่อมโยงกัน กับตารางแม่ในทุกสถานการณ์ 407 00:20:00,950 --> 00:20:05,960 ที่พวกเขาร่วมกัน column-- ว่า พวกเขาร่วมกันคิดชื่อผู้ใช้ว่า 408 00:20:05,960 --> 00:20:08,580 >> ดังนั้นนี่คือตารางที่เรามีมาก่อน 409 00:20:08,580 --> 00:20:12,210 นี่คือสถานะของเรา ฐานข้อมูลที่มีอยู่ในขณะนี้ 410 00:20:12,210 --> 00:20:16,390 ข้อมูลที่เรากำลังสกัด นี้จะเริ่มต้นด้วย 411 00:20:16,390 --> 00:20:19,820 นี่คือตารางใหม่ที่เรากำลังจะ เพื่อสร้างการรวมเหล่านี้ร่วมกัน 412 00:20:19,820 --> 00:20:23,585 และแจ้งให้ทราบเราไม่ได้ไฮไลท์ แถวนิวแมนในตารางของผู้ใช้ 413 00:20:23,585 --> 00:20:25,960 และเราไม่ได้ไฮไลท์ แถวเครเมอร์ในตารางแม่ 414 00:20:25,960 --> 00:20:31,250 เพราะไม่อยู่ใน ทั้ง sets-- ในตารางทั้งสอง 415 00:20:31,250 --> 00:20:36,260 >> ข้อมูลเพียงอย่างเดียวที่เหมือนกัน ระหว่างพวกเขาเป็นเจอร์รี่อยู่ในตารางทั้งสอง 416 00:20:36,260 --> 00:20:39,100 และ gcostanza อยู่ในตารางทั้งสอง 417 00:20:39,100 --> 00:20:42,620 ดังนั้นเมื่อเราทำ SQL JOIN สิ่งที่เรา get-- และเราทำจริงได้รับนี้ 418 00:20:42,620 --> 00:20:44,830 มันเรียงลำดับของตัวแปรชั่วคราว 419 00:20:44,830 --> 00:20:47,330 มันก็เหมือนกับการสมมุติ การควบรวมกิจการของทั้งสองตาราง 420 00:20:47,330 --> 00:20:49,930 เราได้รับจริงบางสิ่งบางอย่าง เช่นนี้ที่ 421 00:20:49,930 --> 00:20:54,730 เราได้รวมกันตารางบน ข้อมูลที่พวกเขามีเหมือนกัน 422 00:20:54,730 --> 00:20:58,334 >> ดังนั้นสังเกตเห็นว่า users.username และคอลัมน์ moms.username, 423 00:20:58,334 --> 00:20:59,250 มันตรงเดียวกัน 424 00:20:59,250 --> 00:21:01,820 นั่นคือข้อมูลที่ สอดคล้องจากผู้ใช้ 425 00:21:01,820 --> 00:21:02,890 ตารางและตารางแม่ 426 00:21:02,890 --> 00:21:04,270 และเพื่อให้เรารวมไว้ด้วยกัน 427 00:21:04,270 --> 00:21:06,919 เราทิ้งเพราะเขาเครเมอ ไม่ได้อยู่ในตารางผู้ใช้ 428 00:21:06,919 --> 00:21:09,710 และเราทิ้งนิวแมนเพราะ เขาไม่ได้อยู่ในตารางแม่ 429 00:21:09,710 --> 00:21:16,450 ดังนั้นนี่คือการควบรวมกิจการสมมุติ โดยใช้การดำเนินการเข้าร่วมของ SELECT 430 00:21:16,450 --> 00:21:21,250 >> และจากนั้นเรากำลังมองหา ชื่อเต็มของผู้ใช้และแม่ของผู้ใช้ 431 00:21:21,250 --> 00:21:24,999 และเพื่อให้เป็นข้อมูลที่ เราจะได้รับจากแบบสอบถามโดยรวม 432 00:21:24,999 --> 00:21:26,040 ที่เราทำด้วย SELECT 433 00:21:26,040 --> 00:21:28,873 ดังนั้นเราจึงได้เข้าร่วมโต๊ะด้วยกัน และเราสกัดทั้งสองคอลัมน์ 434 00:21:28,873 --> 00:21:31,610 และนั่นคือสิ่งที่เราจะได้รับ 435 00:21:31,610 --> 00:21:33,370 แต่ SQL ร่วมชนิดของซับซ้อน 436 00:21:33,370 --> 00:21:36,770 คุณอาจจะไม่ทำพวกเขามากเกินไป แต่ก็มีความคิดของโครงกระดูกบาง 437 00:21:36,770 --> 00:21:41,992 ที่คุณสามารถใช้ในการผสานสอง ตารางร่วมกันหากคุณจำเป็นต้อง 438 00:21:41,992 --> 00:21:43,700 สุดท้ายทั้งสองเป็น บิตง่ายฉันสัญญา 439 00:21:43,700 --> 00:21:48,040 ดังนั้นการปรับปรุงเราสามารถใช้ UPDATE ในการเปลี่ยนแปลงข้อมูลในตาราง 440 00:21:48,040 --> 00:21:53,880 รูปแบบทั่วไปคือการปรับปรุงบางส่วน ตาราง SET คอลัมน์บางอย่างเพื่อให้ค่าบางอย่าง 441 00:21:53,880 --> 00:21:55,540 WHERE กริยาบางอย่างเป็นที่พอใจ 442 00:21:55,540 --> 00:21:57,850 ดังนั้นสำหรับตัวอย่างเช่นเราอาจต้องการ การปรับปรุงตารางผู้ใช้ 443 00:21:57,850 --> 00:22:04,400 และตั้งรหัสผ่านเพื่อญาดา ญาดาที่หมายเลขประจำตัวคือ 10 444 00:22:04,400 --> 00:22:06,400 >> ดังนั้นในกรณีนี้เรา การปรับปรุงตารางผู้ใช้ 445 00:22:06,400 --> 00:22:08,275 หมายเลขประจำตัวคือ 10 ที่แถวแรกที่นั่น 446 00:22:08,275 --> 00:22:10,690 และเราต้องการที่จะปรับปรุง รหัสผ่านเพื่อญาดาญาดา 447 00:22:10,690 --> 00:22:12,170 และเพื่อให้เป็นสิ่งที่จะเกิดขึ้น 448 00:22:12,170 --> 00:22:13,628 มันตรงไปตรงสวยใช่มั้ย? 449 00:22:13,628 --> 00:22:17,990 มันเป็นเพียงที่ง่ายมาก การปรับเปลี่ยนตาราง 450 00:22:17,990 --> 00:22:22,250 >> ลบการดำเนินงานที่เราเคยเป็น เอาข้อมูลจากตาราง 451 00:22:22,250 --> 00:22:24,817 ลบตารางจากที่ไหน กริยาบางอย่างเป็นที่พอใจ 452 00:22:24,817 --> 00:22:26,900 เราต้องการที่จะลบจาก ตารางผู้ใช้ตัวอย่างเช่น 453 00:22:26,900 --> 00:22:28,254 ชื่อผู้ใช้ที่เป็นนิวแมน 454 00:22:28,254 --> 00:22:31,420 คุณอาจจะคิดว่าสิ่งที่จะ เกิดขึ้นที่นี่หลังจากที่เราดำเนินการ SQL ที่ 455 00:22:31,420 --> 00:22:35,790 แบบสอบถามนิวแมนจะหายไปจากโต๊ะ 456 00:22:35,790 --> 00:22:40,460 >> ดังนั้นการดำเนินการทั้งหมดเหล่านี้ที่ผมได้กล่าวว่า เป็นเรื่องง่ายมากที่จะทำใน phpMyAdmin 457 00:22:40,460 --> 00:22:43,020 มันเป็นผู้มากได้ง่าย 458 00:22:43,020 --> 00:22:45,930 แต่จะต้องใช้ความพยายามด้วยตนเอง 459 00:22:45,930 --> 00:22:47,840 เราไม่ต้องการที่จะจ้างงานพยายามด้วยตนเอง 460 00:22:47,840 --> 00:22:51,280 เราต้องการให้โปรแกรมของเราไป ทำเช่นนี้สำหรับเราใช่มั้ย? 461 00:22:51,280 --> 00:22:53,190 ดังนั้นเราอาจจะต้องการที่จะทำ โปรแกรมนี้ 462 00:22:53,190 --> 00:22:56,410 เราต้องการที่จะรวม SQL และมี บางสิ่งบางอย่างอื่นที่จะทำเช่นนี้สำหรับเรา 463 00:22:56,410 --> 00:23:02,710 >> แต่สิ่งที่เราได้เห็นว่าจะช่วยให้ เราสามารถเขียนโปรแกรมทำอะไร? 464 00:23:02,710 --> 00:23:03,690 เราได้เห็น PHP ใช่มั้ย? 465 00:23:03,690 --> 00:23:05,760 แนะนำบางอย่าง แคล่วคล่องในโปรแกรมของเรา 466 00:23:05,760 --> 00:23:10,430 และเพื่อให้โชคดี SQL และ PHP เล่นกันอย่างมาก 467 00:23:10,430 --> 00:23:13,230 มีฟังก์ชั่นใน PHP ครับ เรียกว่าแบบสอบถามซึ่งสามารถนำมาใช้ 468 00:23:13,230 --> 00:23:15,870 และคุณสามารถผ่านการเป็น พารามิเตอร์หรือโต้แย้ง 469 00:23:15,870 --> 00:23:19,210 เพื่อสอบถามแบบสอบถาม SQL ที่ คุณต้องการที่จะดำเนินการ 470 00:23:19,210 --> 00:23:23,250 และ PHP จะทำในนามของคุณ 471 00:23:23,250 --> 00:23:25,564 >> ดังนั้นหลังจากที่คุณได้เชื่อมต่อ ไปยังฐานข้อมูลของคุณด้วย PHP, 472 00:23:25,564 --> 00:23:26,980 มีสองพรรคคุณทำเช่นนี้ 473 00:23:26,980 --> 00:23:29,230 มีบางอย่างที่เรียกว่า MySQLi และสิ่งที่เรียกว่า PDO 474 00:23:29,230 --> 00:23:31,063 เราจะไม่ไปเป็นอย่างมาก รายละเอียดจำนวนเงินที่มี 475 00:23:31,063 --> 00:23:32,957 ใน CS50 เราใช้ PDO 476 00:23:32,957 --> 00:23:34,790 หลังจากที่คุณได้เชื่อมต่อ ไปยังฐานข้อมูลของคุณคุณ 477 00:23:34,790 --> 00:23:40,980 แล้วสามารถทำให้คำสั่งฐานข้อมูลของคุณ โดยผ่านแบบสอบถามเป็นข้อโต้แย้ง 478 00:23:40,980 --> 00:23:42,730 ฟังก์ชั่น PHP 479 00:23:42,730 --> 00:23:46,460 และเมื่อคุณทำเช่นนั้นคุณจัดเก็บ ผลตั้งอยู่ในอาเรย์ 480 00:23:46,460 --> 00:23:50,290 >> และเรารู้วิธีการทำงานกับ เชื่อมโยงอาร์เรย์ใน PHP 481 00:23:50,290 --> 00:23:52,630 ดังนั้นผมอาจจะบอกว่าบางสิ่งบางอย่าง เช่น this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 นี้อยู่ใน PHP-- เท่ากับแบบสอบถาม 483 00:23:55,470 --> 00:23:57,660 และจากนั้นภายในของ ฟังก์ชั่นการสอบถามที่โต้แย้ง 484 00:23:57,660 --> 00:24:00,130 ที่ฉันผ่านไปสอบถาม ที่มีลักษณะเช่น SQL 485 00:24:00,130 --> 00:24:01,160 และในความเป็นจริงที่เป็น SQL 486 00:24:01,160 --> 00:24:05,700 นั่นคือสตริงแบบสอบถามที่ฉันจะ ชอบที่จะดำเนินการเกี่ยวกับฐานข้อมูลของฉัน 487 00:24:05,700 --> 00:24:09,250 >> และเพื่อให้เป็นสีแดงนี้เป็น PHP 488 00:24:09,250 --> 00:24:11,890 นี่คือ SQL ที่ฉัน การบูรณาการเข้าไปใน PHP โดยการ 489 00:24:11,890 --> 00:24:15,020 มันอาร์กิวเมนต์ฟังก์ชั่นแบบสอบถาม 490 00:24:15,020 --> 00:24:19,640 ฉันต้องการที่จะเลือกจากชื่อเต็ม ผู้ใช้ที่หมายเลขรหัสเท่ากับ 10 491 00:24:19,640 --> 00:24:22,560 และแล้วหลังจากที่ผมอาจจะทำที่ ผมอาจจะพูดอะไรบางอย่างเช่นนี้ 492 00:24:22,560 --> 00:24:25,550 ฉันต้องการที่จะพิมพ์ ข้อความขอบคุณสำหรับการเข้าสู่ระบบ 493 00:24:25,550 --> 00:24:32,530 >> และฉันต้องการมัน interpolate-- ฉันต้องการ การสอดแทรกผล $ ชื่อเต็ม 494 00:24:32,530 --> 00:24:36,280 และเพื่อให้เป็นวิธีที่ผมทำงานกับที่ อาเรย์ที่ผมได้กลับมา 495 00:24:36,280 --> 00:24:39,730 $ ผลชื่อเต็มจะ โดยทั่วไปจะจบลงด้วยการพิมพ์ออกมา 496 00:24:39,730 --> 00:24:42,870 ขอบคุณสำหรับการเข้าสู่ระบบเจอร์รี่ 497 00:24:42,870 --> 00:24:46,570 นั่นคือชื่อเต็ม ที่ idnum เท่ากับ 10 498 00:24:46,570 --> 00:24:48,850 >> และเพื่อให้ทุกคนที่ฉันทำ คือฉัน now-- ฉันเก็บไว้ 499 00:24:48,850 --> 00:24:52,780 แบบสอบถามของฉันผลลัพธ์ของแบบสอบถามของฉัน และผลในอาเรย์, 500 00:24:52,780 --> 00:24:56,330 และชื่อเต็มคือชื่อของ คอลัมน์ผมได้รับสำหรับ 501 00:24:56,330 --> 00:25:01,010 ดังนั้นที่สำคัญของฉันเป็นผล อาเรย์ที่ฉันต้องการ 502 00:25:01,010 --> 00:25:05,930 ดังนั้นขอบคุณสำหรับการเข้าสู่ระบบในผล $, ชื่อเต็มจะพิมพ์ออกมาจะติด 503 00:25:05,930 --> 00:25:08,654 ที่ถูกต้องในระหว่างหยิกเหล่านั้น วงเล็บเจอร์รี่ 504 00:25:08,654 --> 00:25:11,820 และผมก็จะชอบที่จะพิมพ์ออกข้อความ ขอบคุณสำหรับการเข้าสู่ระบบในเจอร์รี่ 505 00:25:11,820 --> 00:25:16,652 >> ตอนนี้เราอาจไม่ต้องการที่จะยาก สิ่งรหัสต้องการที่อยู่ในใช่มั้ย? 506 00:25:16,652 --> 00:25:19,860 เราอาจจะต้องการที่จะทำบางสิ่งบางอย่างเช่นการพิมพ์ ฉที่เราสามารถใช้แทนและอาจจะ 507 00:25:19,860 --> 00:25:22,443 เก็บรวบรวมข้อมูลที่แตกต่างกัน หรืออาจจะมีขั้นตอนการสอบถาม 508 00:25:22,443 --> 00:25:23,370 ข้อมูลที่แตกต่าง 509 00:25:23,370 --> 00:25:27,920 และเพื่อให้แบบสอบถามฟังก์ชั่นการค้นหาที่มี ความคิดของการจัดเรียงของการแทนนี้ 510 00:25:27,920 --> 00:25:32,310 คล้ายกับพิมพ์ฉ s ร้อยละ c และร้อยละเป็นเครื่องหมายคำถาม 511 00:25:32,310 --> 00:25:34,290 >> และเราสามารถใช้คำถาม เครื่องหมายมาก analogously 512 00:25:34,290 --> 00:25:38,400 พิมพ์ f เพื่อตัวแปรแทน 513 00:25:38,400 --> 00:25:44,120 ดังนั้นบางทีผู้ใช้ของคุณเข้าสู่ระบบก่อนหน้านี้ และคุณได้บันทึกหมายเลข ID ผู้ใช้ของพวกเขา 514 00:25:44,120 --> 00:25:51,710 ใน $ _SESSION ของ PHP สุด ระดับโลกใน ID ที่สำคัญ 515 00:25:51,710 --> 00:25:55,947 ดังนั้นบางทีหลังจากที่พวกเขาเข้าสู่ระบบ คุณตั้ง $ _SESSION ID เท่ากับ 10 516 00:25:55,947 --> 00:25:58,280 คะเนจากตัวอย่าง เราเพิ่งเห็นที่สองที่ผ่านมา 517 00:25:58,280 --> 00:26:01,960 >> ดังนั้นเมื่อเราดำเนินการจริง นี้ผลการค้นหาในขณะนี้ 518 00:26:01,960 --> 00:26:08,440 มันจะเชื่อมต่อ 10 หรืออะไรก็ตาม ค่า ID $ _SESSION คือ 519 00:26:08,440 --> 00:26:10,790 และอื่น ๆ ที่ช่วยให้เรา เป็นบิตแบบไดนามิกมากขึ้น 520 00:26:10,790 --> 00:26:12,699 เราไม่ได้เข้ารหัสยากอีกต่อไปสิ่งที่อยู่ใน 521 00:26:12,699 --> 00:26:14,490 เรากำลังบันทึกข้อมูล ที่ไหนสักแห่งแล้ว 522 00:26:14,490 --> 00:26:18,924 เราสามารถใช้ข้อมูลนั้นอีกครั้งเพื่อ การเรียงลำดับของคุยสิ่งที่เราต้องการจะทำ 523 00:26:18,924 --> 00:26:21,090 และเพียงแค่ plug-in และการเปลี่ยนแปลง พฤติกรรมของหน้าของเรา 524 00:26:21,090 --> 00:26:26,489 ขึ้นอยู่กับสิ่งหมายเลขประจำตัวของผู้ใช้ เป็นจริงหลังจากที่พวกเขาได้เข้าสู่ระบบ 525 00:26:26,489 --> 00:26:28,530 นอกจากนี้ยังเป็นไปได้ว่า ว่าผลของคุณตั้ง 526 00:26:28,530 --> 00:26:30,840 อาจประกอบด้วยหลายแถว 527 00:26:30,840 --> 00:26:33,990 ซึ่งในกรณีที่คุณมี อาร์เรย์ของ arrays-- 528 00:26:33,990 --> 00:26:35,334 อาร์เรย์ของเชื่อมโยงอาร์เรย์ 529 00:26:35,334 --> 00:26:37,000 และคุณก็ต้องย้ำผ่านมัน 530 00:26:37,000 --> 00:26:41,950 และเรารู้วิธีที่จะย้ำ ผ่านแถวใน PHP แล้วใช่มั้ย? 531 00:26:41,950 --> 00:26:45,600 ดังนั้นนี่คืออาจจะมากที่สุด สิ่งที่ซับซ้อนที่เราได้เห็นเพื่อให้ห่างไกล 532 00:26:45,600 --> 00:26:49,640 มันจริงรวม สามภาษาด้วยกัน 533 00:26:49,640 --> 00:26:52,920 >> ที่นี่เป็นสีแดงนี้เป็น HTML บาง 534 00:26:52,920 --> 00:26:56,872 ฉัน starting-- เห็นได้ชัดนี้ ตัวอย่างของ HTM​​L ที่ฉันมีบาง 535 00:26:56,872 --> 00:26:59,580 ฉันเริ่มย่อหน้าใหม่ที่ กล่าวว่าแม่ของไฟล์ทีวี 536 00:26:59,580 --> 00:27:02,350 และแล้วหลังจากนั้นทันที ฉันเริ่มที่โต๊ะ 537 00:27:02,350 --> 00:27:06,060 และแล้วหลังจากนั้นผม มีบาง PHP ใช่มั้ย? 538 00:27:06,060 --> 00:27:08,229 ฉันมีทั้งหมดของรหัส PHP นี้มี 539 00:27:08,229 --> 00:27:09,645 เห็นได้ชัดว่าผมจะทำแบบสอบถาม 540 00:27:09,645 --> 00:27:14,180 และเพื่อให้แบบสอบถามฉันจะ จะใช้แม่เลือกจากคุณแม่ 541 00:27:14,180 --> 00:27:15,970 >> ดังนั้นนี้จะ getting-- นี้ SQL 542 00:27:15,970 --> 00:27:17,300 ดังนั้นสีฟ้าเป็น SQL 543 00:27:17,300 --> 00:27:19,680 สีแดงที่เราเห็นเป็นครั้งที่สองที่ผ่านมาคือ HTML 544 00:27:19,680 --> 00:27:21,360 และสีเขียวนี่คือ PHP 545 00:27:21,360 --> 00:27:23,400 ดังนั้นฉันทำแบบสอบถาม ไปยังฐานข้อมูลของฉันฉัน 546 00:27:23,400 --> 00:27:26,040 เลือกทั้งหมดของ มารดาในตารางแม่ 547 00:27:26,040 --> 00:27:30,710 ไม่เพียง แต่ลดลงไปโดยเฉพาะอย่างยิ่ง แถวที่ฉันขอทั้งหมดของพวกเขา 548 00:27:30,710 --> 00:27:33,290 >> แล้วฉันจะตรวจสอบว่าผลที่ได้คือ ไม่เท่ากับเท่ากับเท็จ 549 00:27:33,290 --> 00:27:37,410 นี่เป็นเพียงวิธีการของฉันของการตรวจสอบการจัดเรียง หากผลไม่เท่ากับโมฆะ, 550 00:27:37,410 --> 00:27:40,260 ที่เราจะได้เห็นคตัวอย่างเช่น 551 00:27:40,260 --> 00:27:44,000 โดยทั่วไปนี้เป็นเพียงการตรวจสอบเพื่อให้ แน่ใจว่ามันเป็นจริงได้ข้อมูลกลับ 552 00:27:44,000 --> 00:27:47,041 เพราะผมไม่ต้องการที่จะเริ่มต้นการพิมพ์ จากข้อมูลหากฉันไม่ได้รับข้อมูลใด ๆ 553 00:27:47,041 --> 00:27:50,690 จากนั้นเพื่อให้ได้ผลลัพธ์ในแต่ละเป็นผล ไวยากรณ์ foreach PHP จากทั้งหมดที่ฉันทำ 554 00:27:50,690 --> 00:27:53,399 จะถูกพิมพ์ออกมารดาผล $ 555 00:27:53,399 --> 00:27:55,940 และเพื่อที่ฉันจะได้รับการตั้งค่า ทั้งหมดของคุณแม่ของ each-- 556 00:27:55,940 --> 00:27:59,980 มันเป็นอาเรย์ของสมาคม arrays-- และฉันพิมพ์ออก 557 00:27:59,980 --> 00:28:03,649 แต่ละคนเป็นแถวของตัวเองของตาราง 558 00:28:03,649 --> 00:28:05,690 และที่สวยจริงๆ มากทั้งหมดที่มีให้มัน 559 00:28:05,690 --> 00:28:07,750 ฉันรู้ว่ามีเล็ก ๆ น้อย ๆ บิตเกิดขึ้นที่นี่ 560 00:28:07,750 --> 00:28:13,210 ในตัวอย่างที่ผ่านมานี้กับอาร์เรย์ของ arrays-- อาร์เรย์ของอาร์เรย์เชื่อมโยง 561 00:28:13,210 --> 00:28:17,340 แต่จริงๆมันไม่เพียงแค่ต้ม ลงใน SQL ในการทำแบบสอบถาม 562 00:28:17,340 --> 00:28:21,102 มักจะเลือกหลังจากที่เราได้อยู่แล้ว ใส่ข้อมูลลงในตาราง 563 00:28:21,102 --> 00:28:22,310 แล้วก็ดึงมันออกมา 564 00:28:22,310 --> 00:28:25,710 >> และนี่คือที่เราจะดึงมัน ออกมาในกรณีนี้โดยเฉพาะ 565 00:28:25,710 --> 00:28:31,120 เราจะดึงทั้งหมดของแต่ละบุคคล แม่จากตารางแม่ 566 00:28:31,120 --> 00:28:35,970 เรามีทั้งชุดของพวกเขาและเรา ต้องการที่จะย้ำถึงและพิมพ์ออกมา 567 00:28:35,970 --> 00:28:37,630 แต่ละอัน, แต่ละคน. 568 00:28:37,630 --> 00:28:40,510 ดังนั้นครั้งนี้น่าจะเป็น ตัวอย่างที่ซับซ้อนมากที่สุด 569 00:28:40,510 --> 00:28:44,510 ที่เราเคยเห็นเพราะเรากำลังผสมสาม ภาษาที่แตกต่างกันใช่มั้ย? 570 00:28:44,510 --> 00:28:50,100 >> อีกครั้งที่เรามีที่นี่ใน HTML แดง ผสมกับ SQL บางอย่างที่นี่สีฟ้า 571 00:28:50,100 --> 00:28:52,049 ผสมกับ PHP สีเขียวบาง 572 00:28:52,049 --> 00:28:53,840 แต่สิ่งเหล่านี้เล่น กันอย่างก็ 573 00:28:53,840 --> 00:28:57,060 เพียงเรื่องของการพัฒนา นิสัยที่ดีเพื่อที่คุณจะได้รับ 574 00:28:57,060 --> 00:28:58,780 พวกเขาจะทำงานร่วมกันแบบที่คุณต้องการ 575 00:28:58,780 --> 00:29:03,790 และวิธีเดียวที่จะทำจริงๆที่ คือการปฏิบัติปฏิบัติปฏิบัติ 576 00:29:03,790 --> 00:29:06,740 ฉันลอยด์ดั๊กนี้เป็น CS50 577 00:29:06,740 --> 00:29:08,647