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 Malan: Εντάξει, αυτό είναι CS50. 4 00:00:11,980 --> 00:00:13,740 Αυτό είναι το τέλος της εβδομάδας οκτώ. 5 00:00:13,740 --> 00:00:15,887 Και σήμερα, έχουμε αρχίσει να συμπληρώσετε κάποια κομμάτια 6 00:00:15,887 --> 00:00:17,720 όταν πρόκειται για την οικοδόμηση τα πράγματα στο διαδίκτυο. 7 00:00:17,720 --> 00:00:20,020 Έτσι, υπενθυμίζουν ότι τη Δευτέρα ξοδεύουμε πολύ περισσότερο χρόνο 8 00:00:20,020 --> 00:00:22,530 σε PHP, η οποία είναι αυτή η δυναμική γλώσσα προγραμματισμού που 9 00:00:22,530 --> 00:00:26,872 μας δίνει τη δυνατότητα εξόδου, μεταξύ άλλων, πράγματα, HTML και άλλα τέτοιου είδους περιεχόμενο 10 00:00:26,872 --> 00:00:27,830 ότι θα θέλουν να δουν. 11 00:00:27,830 --> 00:00:30,871 Αλλά δεν έχουμε πραγματικά κοίταξε πώς θα πάμε να αποθηκεύει πληροφορίες. 12 00:00:30,871 --> 00:00:34,477 Πράγματι, σχεδόν κανέναν από το σούπερ Ενδιαφέρουσες ιστοσελίδες που επισκέπτεστε σήμερα 13 00:00:34,477 --> 00:00:36,560 έχουν κάποιο είδος της βάσης δεδομένων στο πίσω άκρο, έτσι δεν είναι; 14 00:00:36,560 --> 00:00:39,540 Facebook αποθηκεύει σίγουρα πολλά δεδομένα για όλους μας και όλα τα καταστήματα του Gmail 15 00:00:39,540 --> 00:00:40,210 του e-mail σας. 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 Finance. 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 Malan: Έτσι, ένας κατάλογος των πληροφοριών, ή 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 Υπολογιστικό φύλλο ή αρχείο της Apple αριθμοί. 45 00:02:05,810 --> 00:02:08,280 >> Λοιπόν, τι νομίζεις της όταν σκέφτεστε ένα χρήστη; 46 00:02:08,280 --> 00:02:11,290 Τι έχουν; 47 00:02:11,290 --> 00:02:11,790 Τι είναι αυτό? 48 00:02:11,790 --> 00:02:12,470 >> Κοινό: Ένα όνομα. 49 00:02:12,470 --> 00:02:13,303 >> DAVID Malan: Ένα όνομα. 50 00:02:13,303 --> 00:02:16,840 Έτσι, αν το όνομα, όπως ο David Malan θα είναι το όνομα κάποιου χρήστη. 51 00:02:16,840 --> 00:02:17,980 Τι άλλο μπορεί ένας χρήστης να έχει; 52 00:02:17,980 --> 00:02:18,770 >> Κοινό: Ένα αναγνωριστικό. 53 00:02:18,770 --> 00:02:19,561 >> DAVID Malan: Ένα αναγνωριστικό. 54 00:02:19,561 --> 00:02:23,320 Έτσι, σαν ένα αριθμό ταυτότητας, όπως το Harvard σας ID σας ή του Yale Net ID ή τα παρόμοια. 55 00:02:23,320 --> 00:02:24,923 Τι άλλο θα μπορούσε να έχει ένας χρήστης; 56 00:02:24,923 --> 00:02:25,890 >> Κοινό: Κωδικός πρόσβασης. 57 00:02:25,890 --> 00:02:29,240 >> DAVID Malan: Ο κωδικός πρόσβασης, ίσως μια διεύθυνση, ίσως ένας αριθμός τηλεφώνου, ίσως 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 γρήγορα μόλις ξεκινήσετε συνειδητοποιώντας, OH, ας αποθηκεύσετε αυτή 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, Structured Query Language, 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 >> Έτσι, ακόμη και κάτι σαν χρησμό ότι μπορεί να έχετε ακούσει γενικά 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 Είναι web-based εργαλείο. 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 ΧΑΡ, 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-- εάν αυτό το internet 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 Θα μπορούσατε να πάτε στο μενού Format, και να καθορίσετε δείξτε αυτό σαν σύμβολο του δολαρίου, 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 ΧΑΡ, 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 Εάν έχετε ορίσει σε μια βάση δεδομένων ότι ο τύπος δεδομένων σας είναι ΧΑΡ, 159 00:06:44,170 --> 00:06:47,390 αυτό σημαίνει ότι ναι, είναι ένα ΧΑΡ, αλλά είναι ένα ή περισσότερα χαρ. 160 00:06:47,390 --> 00:06:49,630 Και θα πρέπει να καθορίσετε πόσα Chars θέλετε. 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 Malan: 16 ίσως; 165 00:06:55,050 --> 00:06:55,990 Κάτι τέτοιο. 166 00:06:55,990 --> 00:06:57,948 Ξέρετε, στην πίσω ημέρα, χρησιμοποιείται για να είναι οκτώ. 167 00:06:57,948 --> 00:07:00,289 Μερικές φορές είναι 16, μερικές φορές Είναι ακόμη περισσότερο από αυτό. 168 00:07:00,289 --> 00:07:02,080 Και έτσι, αυτό δεν σημαίνει να μου δώσει ένα ΧΑΡ. 169 00:07:02,080 --> 00:07:04,730 Αυτό σημαίνει ότι πρέπει να καθορίσετε το μήκος του πεδίου, 170 00:07:04,730 --> 00:07:07,402 και τώρα μπορώ να πω κάτι σαν 16. 171 00:07:07,402 --> 00:07:08,610 Και υπάρχει ένας συμβιβασμός εδώ. 172 00:07:08,610 --> 00:07:11,360 Έτσι, θα δούμε σε μια στιγμή αυτό σημαίνει ότι το ένα, 173 00:07:11,360 --> 00:07:14,620 Κάθε όνομα χρήστη πρέπει να είναι 16 χαρακτήρες. 174 00:07:14,620 --> 00:07:18,720 Αλλά περιμένετε ένα λεπτό, Μ-Α-Ι-Α-Ν. Αν αυτό είναι όνομα χρήστη μου και είμαι μόνο με τη χρήση πέντε, 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 Malan: Ναι, μόνο τα κάνουν όλα 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 Bigger; 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 Malan: 5000, Θεέ μου. 204 00:08:23,700 --> 00:08:26,309 Έτσι, αυτό είναι πιθανώς μια αξιοπρεπή άνω όριο, ας πούμε. 205 00:08:26,309 --> 00:08:28,350 Και εδώ έχουμε το είδος της έχουν να κάνει μια κλήση κρίσης. 206 00:08:28,350 --> 00:08:30,400 Όπως, δεν υπάρχει σωστή απάντηση εδώ. 207 00:08:30,400 --> 00:08:32,740 Άπειρο δεν είναι αρκετά πιθανό, γιατί είμαστε τελικά 208 00:08:32,740 --> 00:08:34,781 πρόκειται να have-- είμαστε πρόκειται να τρέξει έξω από τη μνήμη. 209 00:08:34,781 --> 00:08:36,909 Έτσι, πρέπει να κάνουμε μια απόφαση κλήση σε κάποιο σημείο. 210 00:08:36,909 --> 00:08:41,010 >> Πολύ συχνές ήταν, για παράδειγμα, να use-- και επιτρέψτε μου να καθορίσετε ΧΑΡ εδώ 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 bits αντί των οκτώ bits. 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 μεγαλύτερο χαρακτήρες από την ίδια ΗΠΑ centric αυτά που έχουμε την τάση να συζητήσουν. 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 Ποια είναι η, ίσως, προφανείς εμπόριο off της επιφυλάσσει 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 Malan: Τι είναι αυτό; 236 00:09:34,510 --> 00:09:35,430 >> Κοινό: [δεν ακούγεται] 237 00:09:35,430 --> 00:09:37,138 >> DAVID Malan: Είναι μια πολλή μνήμη, έτσι δεν είναι; 238 00:09:37,138 --> 00:09:42,280 M-Α-L-Α-N. Έχω χάσει λίγο 250 χαρακτήρες ακριβώς για να αποθηκεύσετε το όνομά μου 239 00:09:42,280 --> 00:09:46,000 αμυντικά, μόνο σε περίπτωση που κάποιος στην τάξη έχει ένα πραγματικά μεγάλο όνομα. 240 00:09:46,000 --> 00:09:47,940 Αυτό που φαίνεται σαν μια αδικαιολόγητη δίλημμα. 241 00:09:47,940 --> 00:09:52,040 >> Έτσι, αποδεικνύεται ότι ο SQL, Αυτή η γλώσσα της βάσης δεδομένων, 242 00:09:52,040 --> 00:09:55,480 υποστηρίζει πραγματικά κάτι που ονομάζεται VARCHAR, ή ασταθούς ΧΑΡ. 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 Εάν έχετε θέσει σε Μ-Α-Ι-Α-Ν, πρόκειται μόνο να χρησιμοποιήσει πέντε, 250 00:10:14,860 --> 00:10:18,120 ίσως έξι bytes για ομοειδή μία οπίσθια null χαρακτήρα, 251 00:10:18,120 --> 00:10:23,330 και να μην ξοδεύουν ένα επιπρόσθετο 249 ή 250 bytes άσκοπα. 252 00:10:23,330 --> 00:10:27,380 >> Έτσι, αυτό φαίνεται σαν να πρέπει να έχουν αρχίσει με αυτή την ιστορία. 253 00:10:27,380 --> 00:10:29,140 Αλλά υπάρχει πάντα μια ανταλλαγή. 254 00:10:29,140 --> 00:10:33,024 Έτσι, από τη μία πλευρά, ένα όνομα χρήστη που έχω καθορίζονται πρόκειται να κωδικοποιηθεί σκληρά σε 16, 255 00:10:33,024 --> 00:10:34,940 και ίσως αυτό δεν ήταν το δικαίωμα κλήσης, ίσως 256 00:10:34,940 --> 00:10:40,040 είναι, αλλά γιατί να μην χρησιμοποιούν 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 Malan: ορθογραφικού ελέγχου; 263 00:10:52,146 --> 00:10:53,120 Κοινό: Κάνει πιο αργά; 264 00:10:53,120 --> 00:10:53,970 DAVID Malan: Ω, είναι πιο αργή. 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 Malan: Καλή. 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 Malan: Κοίτα μέσω της 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 Malan: Κοιτώντας για τις μηδενικές εξολοθρευτές 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 >> Τώρα, υπάρχει αυτό το drop down μενού. 313 00:12:48,570 --> 00:12:50,810 Και παρατηρήσετε είμαι ακόμα στην πρώτη σειρά εκεί, 314 00:12:50,810 --> 00:12:52,520 έτσι είμαι μιλάμε για το όνομα τώρα. 315 00:12:52,520 --> 00:12:56,290 Και αποδεικνύεται ότι μια βάση δεδομένων, σε αντίθεση με μια απλή απλή υπολογιστικό φύλλο, 316 00:12:56,290 --> 00:12:58,520 έχει ισχυρά χαρακτηριστικά ονομάζεται ευρετήρια. 317 00:12:58,520 --> 00:13:02,600 Και ένας δείκτης είναι ένας τρόπος να λέει ο βάση δεδομένων εκ των προτέρων ότι η ανθρώπινη 318 00:13:02,600 --> 00:13:03,900 Είμαι πιο έξυπνος από εσάς. 319 00:13:03,900 --> 00:13:10,430 >> Ξέρω τι είδους ερωτήματα, επιλέξτε ή εισάγετε ή να διαγράψετε ή ενημέρωσης, 320 00:13:10,430 --> 00:13:13,182 ότι ο κωδικός μου θα τελειώσει να μην κάνουμε σε αυτή τη βάση δεδομένων. 321 00:13:13,182 --> 00:13:14,390 Θέλω να διαβάσω πολλά δεδομένα. 322 00:13:14,390 --> 00:13:15,681 Θέλω να εισάγετε πολλά δεδομένα. 323 00:13:15,681 --> 00:13:17,530 Θέλω να συνεχώς διαγράψει πολλά δεδομένα. 324 00:13:17,530 --> 00:13:21,520 Αν ξέρω ότι θα πάω να είναι πρόσβαση σε ένα πεδίο όπως Όνομα Χρήστη πολύ, 325 00:13:21,520 --> 00:13:24,770 Μπορώ να πω προληπτικά η βάση δεδομένων, ξέρω περισσότερα από ό, τι, 326 00:13:24,770 --> 00:13:29,220 και θέλω να αποφασίσει ότι θα πρέπει ο δείκτης αυτό το πεδίο. 327 00:13:29,220 --> 00:13:33,200 Όταν ευρετηρίαση ένα πεδίο ή μια στήλη σημαίνει ότι η βάση δεδομένων εκ των προτέρων 328 00:13:33,200 --> 00:13:37,040 πρέπει να δανειστεί μερικές ιδέες από, όπως, εβδομάδα τέσσερα και πέντε και έξι από CS50 329 00:13:37,040 --> 00:13:39,240 και πράγματι δημιουργία κάτι σαν μια δυαδική αναζήτηση 330 00:13:39,240 --> 00:13:41,560 δέντρο ή κάτι γενικά ονομάζεται ένα δέντρο Β 331 00:13:41,560 --> 00:13:43,410 ότι θα μάθετε σε μια κατηγορία όπως CS124 332 00:13:43,410 --> 00:13:46,710 στο Χάρβαρντ, μια κατηγορία αλγορίθμων, ή οποιοδήποτε αριθμό από άλλα μέρη. 333 00:13:46,710 --> 00:13:49,570 >> Η βάση δεδομένων και η έξυπνη οι άνθρωποι που θα εφαρμοστεί 334 00:13:49,570 --> 00:13:53,880 θα καταλάβω πώς να αποθηκεύσετε ότι ο πίνακας των πληροφοριών 335 00:13:53,880 --> 00:13:57,061 στη μνήμη, έτσι ώστε οι έρευνες και άλλες εργασίες είναι εξαιρετικά γρήγορη. 336 00:13:57,061 --> 00:13:58,060 Δεν χρειάζεται να το κάνουμε. 337 00:13:58,060 --> 00:14:00,640 Δεν χρειάζεται να εφαρμόσουν γραμμική αναζήτηση ή δυαδική αναζήτηση 338 00:14:00,640 --> 00:14:03,300 ή ταξινόμηση με συγχώνευση ή επιλογή είδος, τίποτα από αυτά. 339 00:14:03,300 --> 00:14:06,590 Η βάση δεδομένων το κάνει για σας, αν σας πω ότι προληπτικά στο δείκτη αυτό το πεδίο. 340 00:14:06,590 --> 00:14:09,100 >> Και μπορείτε να δείτε πάρα πολύ, δεν υπάρχει κάποια άλλα χαρακτηριστικά 341 00:14:09,100 --> 00:14:11,010 μπορούμε να πούμε, η βάση δεδομένων για την επιβολή. 342 00:14:11,010 --> 00:14:16,431 Τι μπορεί να σημαίνει αυτό, αν μπορώ να επιλέξω Μοναδικό από αυτό το μενού, απλά διαισθητικά; 343 00:14:16,431 --> 00:14:16,930 Ναι; 344 00:14:16,930 --> 00:14:17,889 >> Κοινό: [δεν ακούγεται] 345 00:14:17,889 --> 00:14:19,930 DAVID Malan: Ναι, η το όνομα χρήστη πρέπει να είναι μοναδική. 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 Η βάση δεδομένων δεν θα αφήσει δύο άτομα που ονομάζεται David ή 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-- δεν υπάρχει δύο David 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 >> Σκεφτείτε πίσω στο hash πίνακες και τα παρόμοια. 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 χρειάζεται τουλάχιστον ένα επιχείρημα, το οποίο απέχει μόλις ένα string. 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 και τώρα θα πρέπει να εισάγετε κάτι σαν Malan, και παραθέτω, 395 00:16:57,480 --> 00:17:01,490 εισαγωγικά «Δαβίδ Malan.» Και τωρα ακόμη και για όσους δεν είναι εξοικειωμένοι με τον 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 Language. 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 Έτσι, παραθέτω, εισαγωγικά Malan και παραθέτω, εισαγωγικά David Malan είναι χορδές. 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 Malan: Ακριβώς. 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 Έτσι, αυτό δεν είναι C. Αυτό δεν είναι PHP. 442 00:18:56,570 --> 00:18:59,970 Αυτό είναι τώρα το SQL, και είμαι το επικόλληση σε αυτό το web-based interface που είναι 443 00:18:59,970 --> 00:19:02,710 ακριβώς πρόκειται να με αφήσει, μόλις κάνω κλικ Go, 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 Και αυτή τη φορά θα εισάγετε κάτι σαν Rob και το όνομά του θα είναι ο Rob Bowden. 456 00:19:40,723 --> 00:19:42,330 Bowden. 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 Spreadsheets 461 00:19:52,390 --> 00:19:54,010 και απλά πληκτρολογώντας μια γραμμή σε μια στήλη. 462 00:19:54,010 --> 00:19:57,070 Αλλά αυτό που είναι βασικό είναι ότι τώρα έχουμε την σύνταξη 463 00:19:57,070 --> 00:20:00,220 με την οποία να γράφουν κώδικα, έτσι ώστε εν τέλει, θα μπορούσαμε να 464 00:20:00,220 --> 00:20:01,790 κάνετε κάποια και αυτό. 465 00:20:01,790 --> 00:20:05,380 Ανάκληση που υποστηρίζει PHP σούπερ καθολικές μεταβλητές. 466 00:20:05,380 --> 00:20:08,415 >> Τι είναι μέσα από δολαρίου υπογράψουν υπογράμμισης έρθετε σε PHP; 467 00:20:08,415 --> 00:20:10,290 Πήραμε μια ματιά σε ένα ή δύο απλά παραδείγματα. 468 00:20:10,290 --> 00:20:15,640 Και σε PSet6, ανάκληση έχετε γεια dot 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 Malan: Είναι ένα χιόνι σπόρων προς σπορά του πίνακα, ο οποίος 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 Malan: Όχι; 482 00:20:37,660 --> 00:20:40,700 Όταν κάνετε αυτά τα βασικά τιμή ζευγάρια προέρχονται από; 483 00:20:40,700 --> 00:20:42,490 Πες το ξανά? 484 00:20:42,490 --> 00:20:44,610 Και πάλι; 485 00:20:44,610 --> 00:20:46,472 Είμαι ο μόνος που κάτι επ 'ακροατηρίου συζήτηση; 486 00:20:46,472 --> 00:20:47,810 >> [Γέλια] 487 00:20:47,810 --> 00:20:49,042 >> Αυτό είναι σωστό, ναι; 488 00:20:49,042 --> 00:20:50,435 >> Κοινό: [δεν ακούγεται] 489 00:20:50,435 --> 00:20:52,560 DAVID Malan: Ναι, προέρχονται από τη συμβολοσειρά ερωτήματος. 490 00:20:52,560 --> 00:20:55,380 Έτσι, αν πίσω στο χρόνο για να όταν έχουμε παίξει με το Google 491 00:20:55,380 --> 00:20:59,600 και έχουμε πάει στο Google.com κάθετο αναζήτηση ερωτηματικό q ισούται με γάτες, 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 ή αν αυτό είναι γειά σου dot PHP, η οποία έρχεται με PSet6, 507 00:21:46,940 --> 00:21:48,650 Πάω να περάσει σε η λειτουργία ερωτήματος 508 00:21:48,650 --> 00:21:51,450 ακριβώς όπως printf, δύο άλλα επιχειρήματα. 509 00:21:51,450 --> 00:21:57,120 GET, παραθέτω, εισαγωγικά το όνομα χρήστη, και GET, παραθέτω, εισαγωγικά όνομα. 510 00:21:57,120 --> 00:22:00,720 Και τώρα, παρατηρήστε τι το γενική δομή είναι εδώ. 511 00:22:00,720 --> 00:22:03,320 Έχω στα αριστερά πλευρά της πρόσκλησης, 512 00:22:03,320 --> 00:22:05,480 Η λειτουργία αυτή ονομάζεται ερώτημα σε PHP. 513 00:22:05,480 --> 00:22:08,160 Εξακολουθώ να έχω ως πρώτη επιχείρημα, απλά μια σειρά κειμένου. 514 00:22:08,160 --> 00:22:11,000 >> Αλλά αυτό κομμάτι κειμένου είναι γραμμένο σε μια γλώσσα που ονομάζεται SQL. 515 00:22:11,000 --> 00:22:12,616 Και ειλικρινά, δεν είναι μια μεγάλη γλώσσα. 516 00:22:12,616 --> 00:22:14,990 Είμαστε μόνο πρόκειται να μιλήσουμε για αυτό επίσημα σήμερα, πραγματικά. 517 00:22:14,990 --> 00:22:17,031 Και στη συνέχεια στο πρόβλημα που επτά, υπάρχει σχετικά 518 00:22:17,031 --> 00:22:18,800 μερικά χαρακτηριστικά που είμαστε πρόκειται για τη μόχλευση. 519 00:22:18,800 --> 00:22:22,530 Τα ερωτηματικά, όμως, σημαίνει συνδέστε μια τιμή εδώ και βύσμα στο άλλο αξίας 520 00:22:22,530 --> 00:22:23,130 εδώ. 521 00:22:23,130 --> 00:22:26,010 Και προειδοποίηση, έχω παραλείψει τι από όλο τον quote-- βλασφημία 522 00:22:26,010 --> 00:22:30,470 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 τείνει να υποστηρίζει, Ruby και Python και άλλες γλώσσες, 527 00:22:42,830 --> 00:22:45,730 Αυτό σημαίνει απλά συνδέστε σε ορισμένες εκτιμούν εδώ και ξέρετε τι; 528 00:22:45,730 --> 00:22:48,300 Θα καταλάβω αν θέλετε να χρησιμοποιήσετε μονά εισαγωγικά ή διπλά εισαγωγικά. 529 00:22:48,300 --> 00:22:50,966 Δεν με ενοχλεί με αυτά πνευματικά πληκτικός λεπτομέρειες. 530 00:22:50,966 --> 00:22:53,780 Αλλά, βεβαιωθείτε ότι είναι σωστό έτσι ώστε ο κωδικός μου είναι, τελικά, 531 00:22:53,780 --> 00:22:57,010 λειτουργική και ασφαλής, η οποία θα έχει νόημα πριν από καιρό. 532 00:22:57,010 --> 00:23:00,460 >> Τώρα, πόσα επιχειρήματα συνολικά, μόνο και μόνο για να να είναι σαφής, είναι η λειτουργία λήψης ερώτημα; 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Όποιος θέλει να ψηφίσει για περισσότερο από δύο; 535 00:23:07,581 --> 00:23:08,080 Τρία; 536 00:23:08,080 --> 00:23:10,001 Σίγουρα, γιατί; 537 00:23:10,001 --> 00:23:10,920 Γιατί τα τρία; 538 00:23:10,920 --> 00:23:12,305 >> Κοινό: [δεν ακούγεται] 539 00:23:12,305 --> 00:23:13,180 DAVID Malan: Ακριβώς. 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 Έτσι με άλλα λόγια, τώρα αν είχα μια μορφή web 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 >> Τώρα αντίθετα, ας fast forward. 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 Μπορείτε να πείτε SELECT, ας πούμε Star, όπου αστέρι σημαίνει τα πάντα. 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 Όταν το όνομα χρήστη ισούται παραθέτω, εισαγωγικά Malan. 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 για να αναζητήσετε το απόσπασμα, πελάτη στο Malan. 563 00:24:21,790 --> 00:24:24,420 >> Τώρα που δεν είναι όλα τόσο χρήσιμα, έτσι Πάω να παρακάμψετε ότι 564 00:24:24,420 --> 00:24:28,650 και Πάω να θέσει μακριά Αυτή η συμβουλή από Brady, και να πάει 565 00:24:28,650 --> 00:24:30,990 και plug-in, αντί ένα ερωτηματικό εδώ. 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 Malan: Ναι. 571 00:24:40,890 --> 00:24:44,120 Ακούω σύμβολο του δολαρίου υπογράμμισης Get Quote, εισαγωγικά το όνομα χρήστη. 572 00:24:44,120 --> 00:24:50,040 Και αυτό θα πρέπει να επιστρέψει σε μένα κάποια από τις γραμμές βάσης δεδομένων μου 573 00:24:50,040 --> 00:24:51,986 ότι έχουν ένα όνομα χρήστη Malan. 574 00:24:51,986 --> 00:24:54,860 Τώρα ελπίζω, είμαι πρόκειται να πάρει πίσω μηδέν εάν δεν Malan είναι εδώ, 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 Malan: Είπα μοναδικό, σωστά; 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, μπορείτε σίγουρα να έχετε POST. 585 00:25:14,350 --> 00:25:17,212 Και υπενθυμίζουν ότι Post είναι ένα άλλο τεχνική για την υποβολή πληροφοριών 586 00:25:17,212 --> 00:25:19,170 από μια μορφή, αλλά δεν εμφανίζεται στη διεύθυνση URL. 587 00:25:19,170 --> 00:25:22,690 Είναι λίγο πιο ασφαλές σίγουρα για πράγματα όπως usernames και passwords, 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 πληκτρολογήσετε SELECT αστέρων από τους χρήστες. 597 00:25:45,920 --> 00:25:48,294 >> Τώρα τεχνικά, μπορείτε να αναφέρετε το όνομα των πινάκων. 598 00:25:48,294 --> 00:25:50,460 Είναι σπάνιο ότι θα πρέπει να, αλλά παρατηρήσετε αυτά δεν είναι 599 00:25:50,460 --> 00:25:52,240 κανονική εισαγωγικά σας στο πληκτρολόγιο ΗΠΑ. 600 00:25:52,240 --> 00:25:54,760 Αυτή είναι η λεγόμενη βαρεία, η οποία είναι γενικά στο πάνω αριστερό χέρι 601 00:25:54,760 --> 00:25:56,000 γωνία του πληκτρολογίου σας. 602 00:25:56,000 --> 00:25:58,500 Αλλά είναι σπάνιο ότι θα πρέπει πραγματικά να ασχοληθείτε με αυτό, 603 00:25:58,500 --> 00:25:59,950 γι 'αυτό θα παραλείψουμε τους ακριβώς έτσι κι αλλιώς. 604 00:25:59,950 --> 00:26:02,280 Έτσι τώρα, επιτρέψτε μου να προχωρήσει και να πάει να χτυπήσει. 605 00:26:02,280 --> 00:26:06,616 Και πόσες γραμμές θα πρέπει να πάρω πίσω όταν επιλέγω αστέρι από τους χρήστες; 606 00:26:06,616 --> 00:26:08,407 >> Κοινό: [δεν ακούγεται] 607 00:26:08,407 --> 00:26:09,990 DAVID Malan: Ο αριθμός των γραμμών, σίγουρα. 608 00:26:09,990 --> 00:26:12,390 Αλλά πόσοι σε αυτό σκυρόδεμα ιστορία τώρα; 609 00:26:12,390 --> 00:26:14,640 Δύο, επειδή δεν υπήρχε μένα και ήταν εκεί Rob. 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 ισούται με απόσπασμα, unquote Malan, τώρα αν κάνω κλικ Go, 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 χρήστες, όπου το όνομα χρήστη ισούται με Malan, τι είναι καλό για τον 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 Επιλέξτε το όνομα από τους χρήστες, όπου ισούται με το όνομα χρήστη Malan. 624 00:27:01,130 --> 00:27:03,440 Και είναι πραγματικά τόσο σαφής. 625 00:27:03,440 --> 00:27:08,410 Έτσι, τώρα αν χτύπησα Go, πόσα γραμμές είμαι πρόκειται να πάρει πίσω; 626 00:27:08,410 --> 00:27:10,770 Ένα, επειδή είναι απλά Malan, ελπίζω. 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 Τώρα ένα αναγνωριστικό θα μπορούσε να είναι σαν ένα Χάρβαρντ ταυτότητα ή Net ID του Yale, 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 Πάω να προσθέσετε ένα πεδίο που ονομάζεται αναγνωριστικό. 669 00:29:00,170 --> 00:29:03,070 Και Πάω να το αριθμητικό τύπο κάνουν. 670 00:29:03,070 --> 00:29:05,362 >> Έχω ένα σωρό τιμών για αριθμών. 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 bits δεν έχει σημασία τι. 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 Νομίζω ότι είναι το προφίλ dot PHP ID ερωτηματικό ισούται με κάτι. 703 00:30:23,080 --> 00:30:27,210 Αυτό είναι τώρα κάτι σαν ένα μεγάλο INT, ή ένα πολύ μεγάλο, αν θέλετε, 704 00:30:27,210 --> 00:30:29,700 η οποία είναι μία τιμή 64-bit ή κάτι συγκρίσιμο. 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-- τομέα και θα πάω να προχωρήσει και κάντε κλικ στο AI, 720 00:31:17,210 --> 00:31:19,720 Θα επανέλθουμε για να ότι σε μια στιγμή, Αποθήκευση. 721 00:31:19,720 --> 00:31:22,540 Προτείνω τώρα που τραπέζι μου μοιάζει με αυτό. 722 00:31:22,540 --> 00:31:26,305 Έχω ένα πεδίο που ονομάζεται αναγνωριστικό INT, ένα πεδίο που ονομάζεται ΧΑΡ Όνομα Χρήστη, 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 Malan: Τυχαία η πρόσβαση είναι πιο εύκολη, γιατί; 734 00:31:59,534 --> 00:32:00,410 >> Κοινό: [δεν ακούγεται] 735 00:32:00,410 --> 00:32:02,367 DAVID Malan: Ναι, είναι απλά πρόσβαση σε αριθμούς. 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 bit και τέσσερα byte. 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 bytes. 745 00:32:22,880 --> 00:32:26,080 >> Έτσι, αν είστε πραγματικά νοιάζονται για η απόδοση του κωδικού σας, 746 00:32:26,080 --> 00:32:31,390 Αναπολώ PSet5, θα προτιμούσατε να ψάξει για μια τιμή τεσσάρων byte ή 16 747 00:32:31,390 --> 00:32:32,240 byte τιμή, σωστά; 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 bytes. 751 00:32:38,830 --> 00:32:41,320 Έτσι, θα πρέπει να κυριολεκτικά συγκρίνετε τα 16 bytes να είναι 752 00:32:41,320 --> 00:32:43,140 βέβαιος ότι ναι, αυτό είναι το όνομα χρήστη που θέλω. 753 00:32:43,140 --> 00:32:46,610 Ενώ για ένα INT, μπορείτε να το κάνουμε με μόλις τέσσερα bytes. 754 00:32:46,610 --> 00:32:49,212 >> Και ως ένα μέρος για εκείνους ενδιαφέρονται για το υλικό του υπολογιστή, 755 00:32:49,212 --> 00:32:52,420 αποδεικνύεται μπορούν να χωρέσουν κάτι σαν ένα INT ή μια τιμή 32-bit σε κάτι 756 00:32:52,420 --> 00:32:55,330 που ονομάζεται μητρώο σε έναν υπολογιστή CPU, το οποίο σημαίνει ότι είναι σούπερ, 757 00:32:55,330 --> 00:32:58,400 σούπερ γρήγορο, ακόμη και στη χαμηλότερη το επίπεδο του υλικού του υπολογιστή. 758 00:32:58,400 --> 00:33:00,530 Έτσι, υπάρχει μόνο πλεονεκτήματα όλων των γύρω. 759 00:33:00,530 --> 00:33:01,530 Λοιπόν, τι σημαίνει αυτό? 760 00:33:01,530 --> 00:33:04,850 Στην πραγματικότητα, όταν σχεδιάζετε ένα πίνακα βάσης δεδομένων, σχεδόν όλος ο χρόνος 761 00:33:04,850 --> 00:33:07,170 θα πας να μην έχουν μόνο τα στοιχεία που σας ενδιαφέρει, 762 00:33:07,170 --> 00:33:09,280 αλλά και κάτι σαν ένα μοναδικό αναγνωριστικό 763 00:33:09,280 --> 00:33:11,280 επειδή αυτό πρόκειται να ας κάνουμε άλλα πράγματα. 764 00:33:11,280 --> 00:33:13,160 Και ας σκοντάψει επάνω ένα πρόβλημα εδώ. 765 00:33:13,160 --> 00:33:15,990 >> Ας υποθέσουμε ότι οι χρήστες δεν έχουν μόνο ονόματα και ονόματα, 766 00:33:15,990 --> 00:33:19,540 αλλά έχουν επίσης τα πράγματα όπως πόλεις και τα κράτη και τους ταχυδρομικούς κώδικες, τουλάχιστον 767 00:33:19,540 --> 00:33:20,432 εδώ στις ΗΠΑ. 768 00:33:20,432 --> 00:33:22,390 Έτσι, Πάω να πάει μπροστά και απλά να πω γρήγορα, 769 00:33:22,390 --> 00:33:26,180 να μου δώσει τρεις περισσότερες στήλες στο τέλος του πίνακα. 770 00:33:26,180 --> 00:33:28,900 Και αυτό πρόκειται να είναι Σίτι, Αυτό πρόκειται να είναι μέλος, 771 00:33:28,900 --> 00:33:30,400 και αυτό πρόκειται να είναι Ταχ. 772 00:33:30,400 --> 00:33:32,710 >> Τώρα τύποι Πόλη, ποια δεδομένα θα πρέπει αυτό να είναι, ίσως; 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR; 775 00:33:35,989 --> 00:33:37,780 Δεν ξέρω ποια είναι η μεγαλύτερο όνομα της πόλης είναι. 776 00:33:37,780 --> 00:33:40,571 Κάπου στην Αμερική, δεν υπάρχει πιθανώς κάποια γελοία μεγάλη λέξη, 777 00:33:40,571 --> 00:33:43,605 οπότε ας πάει με 255, κάπως ιστορικά ή αυθαίρετα. 778 00:33:43,605 --> 00:33:44,730 Κράτος, τι θέλετε να κάνετε; 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Απόφαση κλήση, σωστά; 781 00:33:50,367 --> 00:33:51,700 Τι είναι ίσως η πιο αποτελεσματική; 782 00:33:51,700 --> 00:33:53,500 Πόσους χαρακτήρες; 783 00:33:53,500 --> 00:33:55,950 Ίσως μόνο δύο, αν μπορούμε να ξεφύγει με κάνει ακριβώς, 784 00:33:55,950 --> 00:33:58,250 όπως, ΜΑ για Μασαχουσέτης και ούτω καθεξής. 785 00:33:58,250 --> 00:34:00,520 Έτσι, Πάω να πάει μια τιμή ΧΑΡ των δύο. 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 ΧΑΡ ή πέντε, αλλά θέλω μια 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 Malan: Πάρτε περισσότερη μνήμη. 801 00:34:32,909 --> 00:34:35,310 Τέσσερα bytes, αλλά είστε προτείνοντας ένα ταχυδρομικό κώδικα 802 00:34:35,310 --> 00:34:39,000 ως πέντε bytes ή κάποιος ήταν ως ΧΑΡ, που αισθάνεται σαν ρε, αυτό δεν είναι πραγματικά 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 Στη συνέχεια, όμως, πρέπει να έχω χτυπήσει, όπως, Command Control 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 έχετε κάποιο φίλο στο Cambridge, Μασαχουσέτη, 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 Αν εξακολουθείτε να στείλετε e-mail, Μερικές φορές zip κωδικούς αυτές τις μέρες, 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 πρόκειται να πω ότι είναι μια πέντε ΧΑΡ αξία και είμαστε 837 00:35:54,780 --> 00:35:56,739 πρόκειται να παρακάμψετε το σύνολο του ταμπλό συν τέσσερα. 838 00:35:56,739 --> 00:35:58,280 Αλλά αυτά είναι τα είδη της τήρησης ισορροπιών. 839 00:35:58,280 --> 00:36:00,196 Και μπορείτε να σκεφτείτε το ίδια προβλήματα που προκύπτουν 840 00:36:00,196 --> 00:36:01,860 με αριθμούς τηλεφώνου ή άλλους τομείς. 841 00:36:01,860 --> 00:36:04,350 >> Και τώρα, αυτό είναι πράγματι ανόητη δρόμο για να πάει κάτω. 842 00:36:04,350 --> 00:36:08,000 Ας υποθέσουμε ότι τόσο Rob και εγώ και η Hannah και η Μαρία και [; Davon;] και ο Andy 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 Malan: Πείτε ξανά; 849 00:36:22,918 --> 00:36:24,310 Κοινό: [δεν ακούγεται] 850 00:36:24,310 --> 00:36:25,850 >> DAVID Malan: Είναι πάντα πρόκειται να πάνε μαζί, έτσι δεν είναι; 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 είναι πάντα Cambridge της Μασαχουσέτης, 856 00:36:40,580 --> 00:36:44,910 γιατί στον κόσμο θα αποθηκεύσετε σε τη βάση δεδομένων σας Cambridge και MA και 02138 857 00:36:44,910 --> 00:36:49,357 για μένα και για την Hannah και για τον Rob και για [? Davon?] Και για τους άλλους που ζουν 858 00:36:49,357 --> 00:36:51,190 εδώ στο Cambridge, είναι απολύτως περιττή. 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 Ακριβώς όπως έχουμε ήδη factoring έξω κοινό κώδικα και factoring κοινούς 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 Πιθανώς ένα πεδίο ID, μόνο και μόνο επειδή, για οι αρχές μιλάμε για τώρα. 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 ΕΠΙΛΟΓΗ αστέρι από τους χρήστες, JOIN φερμουάρ ON Οι χρήστες dot φερμουάρ ισούται με φερμουάρ dot φερμουάρ. 886 00:38:10,501 --> 00:38:13,360 Ποια είναι λίγο φλύαρο, ομολογουμένως, αλλά αυτό μόνο 887 00:38:13,360 --> 00:38:17,590 Επιλέξτε σημαίνει τα πάντα, από το διαδικασία λήψης των χρηστών τραπέζι μου 888 00:38:17,590 --> 00:38:19,580 και φερμουάρ τραπέζι μου. 889 00:38:19,580 --> 00:38:22,120 Ενώστε τους, από τη μία τομέα έχουν στη στήλη. 890 00:38:22,120 --> 00:38:24,780 Έτσι, κυριολεκτικά κάνουν κάτι όπως αυτό και να μου δώσει πίσω 891 00:38:24,780 --> 00:38:27,360 ένα νέο προσωρινό πίνακα ότι είναι ευρύτερο, αυτό είναι το μεγαλύτερο, 892 00:38:27,360 --> 00:38:29,450 που έχει όλα τα στήλες από τα δύο. 893 00:38:29,450 --> 00:38:33,510 Και αυτό, πολύ απλά, θα είναι η σύνταξη για να κάνει κάτι τέτοιο. 894 00:38:33,510 --> 00:38:35,540 >> Έτσι, υπάρχει αυτό το μέλλον, αλλά εκεί πρόκειται 895 00:38:35,540 --> 00:38:38,950 να είναι άλλες σχεδιαστικές αποφάσεις εσείς θα έχουν να κάνουν, όχι μόνο με τους δείκτες 896 00:38:38,950 --> 00:38:40,550 αλλά και τρέχει σε προκλήσεις. 897 00:38:40,550 --> 00:38:43,360 Στην πραγματικότητα, υπάρχει μια πρόκληση σε οποιοδήποτε σχέδιο της βάσης δεδομένων 898 00:38:43,360 --> 00:38:47,930 σύμφωνα με την οποία μερικές φορές δύο άνθρωποι μπορεί να θέλουν να έχουν πρόσβαση στις ίδιες γραμμές της βάσης δεδομένων 899 00:38:47,930 --> 00:38:48,530 τραπέζι. 900 00:38:48,530 --> 00:38:51,450 Έτσι, αυτό είναι κάτι που θα αντιμετωπίζουν στην PSet7, καθώς και. 901 00:38:51,450 --> 00:38:54,686 >> Αλλά σκέφτηκα ότι θα δούμε ένα επίθεση που είναι δυνατό με SQL. 902 00:38:54,686 --> 00:38:56,560 Ποια είναι μερικά από τα προβλήματα που μπορεί να προκύψουν; 903 00:38:56,560 --> 00:38:58,170 Έτσι, θα συναντήσετε αυτό PSet7. 904 00:38:58,170 --> 00:39:01,874 Και θα σας πω ποια είναι η ολοκληρωτική κωδικοποίησης λύση για αυτό το πρόβλημα είναι. 905 00:39:01,874 --> 00:39:04,790 Αλλά αν πάρετε ένα υψηλότερο επίπεδο τάξης, ειδικά σε λειτουργικά συστήματα, 906 00:39:04,790 --> 00:39:06,950 θα πάμε να αντιμετωπίσετε θέμα της ατομικότητας, 907 00:39:06,950 --> 00:39:10,080 το πρόβλημα της προσπαθεί να κάνει πολλαπλές πράγματα ταυτόχρονα 908 00:39:10,080 --> 00:39:11,000 χωρίς διακοπή. 909 00:39:11,000 --> 00:39:14,560 >> Και σκέφτηκα να εισαγάγει αυτό ιδέα για PSet7 με μια αλληγορία 910 00:39:14,560 --> 00:39:18,160 ότι εγώ έμαθα στη Μάργκο Λειτουργικά Συστήματα CS164 Seltzer του 911 00:39:18,160 --> 00:39:18,990 κλάση χρόνια. 912 00:39:18,990 --> 00:39:22,230 Ας υποθέσουμε ότι έχετε ένα από αυτά τα κοιτώνα ψυγεία στο δωμάτιο dorm ή το σπίτι σας, 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 Έτσι, μπορείτε να κλείσετε το ψυγείο, κλειδώσει την πόρτα, ασφαλίστε dorm σας, 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 έρθουν στο σπίτι και ugh, το χειρότερο πρόβλημα ποτέ. 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 Malan: Αφήστε μια σημείωση, έτσι δεν είναι; 940 00:40:19,430 --> 00:40:21,850 Να αφήνετε πάντα ένα σημείωμα, αν είστε εξοικειωμένοι με αυτό το show. 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 αλλά αυτά είναι atrociously κοινή αυτές τις μέρες ακόμα. 964 00:41:17,430 --> 00:41:18,680 Έτσι, αυτό είναι μόνο ένα παράδειγμα. 965 00:41:18,680 --> 00:41:21,290 Κάνω καμία αξίωση ότι Σύστημα Harvard 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 Και Net ID Γέιλ έχει μια παρόμοια κοιτάζοντας την οθόνη αυτές τις μέρες. 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 Δώσε μου το username και το password από τη θέση σούπερ παγκόσμια μεταβλητή 974 00:41:42,495 --> 00:41:43,970 ότι μιλήσαμε νωρίτερα. 975 00:41:43,970 --> 00:41:47,310 Ίσως Χάρβαρντ έχει ένα ερώτημα όπως SELECT αστέρι από τους χρήστες 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 Είμαι απλά κυριολεκτικά κατασκευάζοντας το string τον εαυτό μου. 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 Κωδικός ισούται με 12345 ή ένα ισούται με ένα. 1005 00:43:11,760 --> 00:43:14,820 Το αποτέλεσμα της οποίας, λογικά, είναι ότι αυτό θα συνδεθείτε scroob 1006 00:43:14,820 --> 00:43:18,360 αν ο κωδικός του είναι 12345 ή εάν ένα ίσον 1007 00:43:18,360 --> 00:43:22,660 ένα, το οποίο είναι φυσικά πάντα αλήθεια, πράγμα που σημαίνει scroob παίρνει πάντα. 1008 00:43:22,660 --> 00:43:26,060 >> Και έτσι, ο τρόπος για να διορθωθεί αυτό, όπως και σε πολλές περιπτώσεις, 1009 00:43:26,060 --> 00:43:28,140 θα ήταν να γράψω πιο αμυντικά. 1010 00:43:28,140 --> 00:43:30,390 Για να χρησιμοποιήσετε κάτι σαν μας πραγματική λειτουργία του ερωτήματος, το οποίο 1011 00:43:30,390 --> 00:43:33,980 θα δείτε στο PSet7, όπου θα συνδέσετε κάτι σαν ερωτηματικά εδώ. 1012 00:43:33,980 --> 00:43:35,980 Και η ομορφιά της Λειτουργία ερώτημα που εμείς 1013 00:43:35,980 --> 00:43:40,010 να σας δώσω είναι να υπερασπίζεται εναντίον αυτών λεγόμενη SQL ένεση επιθέσεις, όπου 1014 00:43:40,010 --> 00:43:44,260 κάποιος εξαπάτηση κωδικό σας σε ενέσιμη δική του SQL κώδικα. 1015 00:43:44,260 --> 00:43:47,380 Διότι αυτό το ερώτημα λειτουργία δίνουμε θα κάνετε στην πραγματικότητα, 1016 00:43:47,380 --> 00:43:51,270 εάν χρησιμοποιείτε τη σύνταξη ερωτηματικό και ένα δεύτερο και ένα τρίτο επιχείρημα εδώ, 1017 00:43:51,270 --> 00:43:54,590 είναι ό, τι έκανε το προσθέσετε στη εισόδου ώστε ο χρήστης να παρέχεται; 1018 00:43:54,590 --> 00:43:56,060 Όσοι ανάστροφη κάθετο εισαγωγικά. 1019 00:43:56,060 --> 00:43:58,590 >> Έτσι, δραπετεύει κάθε δυνητικά επικίνδυνη χαρακτήρων. 1020 00:43:58,590 --> 00:44:01,000 Αυτό φαίνεται παράξενο σήμερα, αλλά δεν είναι ευάλωτη 1021 00:44:01,000 --> 00:44:03,260 επειδή δεν αλλάξετε τη λογική πια 1022 00:44:03,260 --> 00:44:06,470 γιατί όλο αυτό τον κωδικό είναι τώρα μια και μόνη προσφορά που δεν είναι, 1023 00:44:06,470 --> 00:44:07,596 Στην πραγματικότητα, τον κωδικό πρόσβασης scroob του. 1024 00:44:07,596 --> 00:44:09,845 Έτσι, έχει υπάρξει κάποια αστεία γι 'αυτό όλα αυτά τα χρόνια. 1025 00:44:09,845 --> 00:44:12,570 Έτσι, αυτό ήταν μια φωτογραφία που τραβήχτηκε κάποια 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 το πράγμα Ε-Ζ Pass. 1029 00:44:20,660 --> 00:44:24,490 Έτσι, το πρόσωπο αυτό τεκμαίρεται ότι ίσως οι άνθρωποι που γράφουν το σύστημα Ε-Ζ Πέρασμα 1030 00:44:24,490 --> 00:44:28,240 δεν ήταν τόσο φωτεινά, και ίσως απλά συνεχόμενα μαζί μια σειρά, 1031 00:44:28,240 --> 00:44:32,190 έτσι ώστε αυτός ή αυτή δεν θα μπορούσε κακόβουλα όχι μόνο να ολοκληρώσει τη σκέψη τους, 1032 00:44:32,190 --> 00:44:35,150 αλλά στην πραγματικότητα εκτελεί μια κακή εντολή, το οποίο δεν έχω αναφερθεί ακόμη, 1033 00:44:35,150 --> 00:44:36,380 αλλά μπορείτε να μαντέψετε. 1034 00:44:36,380 --> 00:44:39,820 Ότι εκτός από την διαγραφή και εισαγάγετε και να ενημερώσετε και να επιλέξετε, 1035 00:44:39,820 --> 00:44:43,370 υπάρχει επίσης μια λέξη-κλειδί που ονομάζεται πτώση, η οποία κυριολεκτικά θα διαγράψει τα πάντα 1036 00:44:43,370 --> 00:44:45,300 στη βάση δεδομένων, η οποία είναι ιδιαίτερα κακή. 1037 00:44:45,300 --> 00:44:48,760 >> Μπορούμε να εστιάσετε σε αυτό, αν είναι λίγο δύσκολο να δούμε. 1038 00:44:48,760 --> 00:44:52,300 Αυτό, τώρα, είναι ένα διάσημο καρτούν ότι είναι θαυμάσια έξυπνος τώρα 1039 00:44:52,300 --> 00:44:53,145 και κατανοητό. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Γέλια] 1042 00:45:04,750 --> 00:45:05,910 >> Ναι, δροσερό. 1043 00:45:05,910 --> 00:45:06,800 Είδος 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 Έτσι, ένα ζευγάρι των teasers ότι σκεφτήκαμε 1048 00:45:17,780 --> 00:45:19,930 να σας δώσω εδώ στην μας υπολειπόμενα λεπτά μαζί. 1049 00:45:19,930 --> 00:45:24,030 Έτσι, όπως θυμάστε από το μηδέν εβδομάδα, εμείς εισήγαγε αυτές τις δύο λαμπτήρες που 1050 00:45:24,030 --> 00:45:26,610 είναι ωραίο, όχι μόνο επειδή ότι είναι πολύ και είναι πολύχρωμα, 1051 00:45:26,610 --> 00:45:29,450 αλλά επειδή υποστηρίζουν κάτι ονομάζεται ένα API, μια Αίτηση 1052 00:45:29,450 --> 00:45:31,980 Διασύνδεση Προγραμματισμού και σε CS50 μέχρι σήμερα, έχουμε 1053 00:45:31,980 --> 00:45:34,440 επικεντρώθηκε κυρίως στη GET και POST, αλλά αποδεικνύεται 1054 00:45:34,440 --> 00:45:37,390 υπάρχει άλλη ρήματα HTTP PUT όπως. 1055 00:45:37,390 --> 00:45:39,430 >> Και στην πραγματικότητα, αυτό ήταν μια διαφάνεια από το μηδέν εβδομάδα 1056 00:45:39,430 --> 00:45:44,930 σύμφωνα με την οποία αν γράφετε κώδικα που στέλνει a la PSet6 ένα αίτημα HTTP που 1057 00:45:44,930 --> 00:45:49,647 Μοιάζει με αυτό με αυτό το κομμάτι του κειμένου στο κάτω μέρος, η οποία ονομάζεται JSON, 1058 00:45:49,647 --> 00:45:52,230 ή JavaScript Object Notation ότι θα μιλήσουμε για την επόμενη εβδομάδα, 1059 00:45:52,230 --> 00:45:57,030 μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε ή αλλαγή το χρώμα των φώτων, όπως εκείνες. 1060 00:45:57,030 --> 00:46:00,480 Έτσι, εάν CS50 έχει επίσης εκτός από κάποια αυτών των ηλεκτρικών λαμπτήρων εδώ στο New Haven 1061 00:46:00,480 --> 00:46:02,480 αν θέλετε να δανειστείτε τους για την τελική έργων, 1062 00:46:02,480 --> 00:46:04,370 Επίσης, κάποια Microsoft Συγκροτήματα, τα οποία είναι σαν 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 της Apple έτσι 1066 00:46:12,490 --> 00:46:15,510 ότι αν έχετε ένα Apple Παρακολουθήστε ή ένα 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 Motion, 1074 00:46:32,860 --> 00:46:36,500 τα οποία είναι συσκευές USB για Mac και Υπολογιστές, εδώ και πάλι, στο New Haven. 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 έτσι ώστε να έχετε πραγματικά ένα 3D περιβάλλον μπροστά σας. 1093 00:49:39,550 --> 00:49:42,927 Έχουμε επίσης κάποια Samsung Gear, η οποία είναι η πιο ακριβή έκδοση αυτού, 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 Αν μπορώ να προβάλει ό, τι έχει Colton εδώ μόνο για να σας ανοίξουν την όρεξη, 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 Colton, θέλεις να πάμε μπροστά και να θέσει στο κινητό σας για μια στιγμή 1101 00:50:02,290 --> 00:50:05,171 και έλα πάνω στην μέση της σκηνής; 1102 00:50:05,171 --> 00:50:07,420 Και θέλετε να project-- Αυτό είναι ό, τι βλέπει Colton. 1103 00:50:07,420 --> 00:50:10,560 >> Τώρα, η σύνδεση Wi-Fi σε εδώ είναι δεν είναι τόσο ισχυρή για τη συγκεκριμένη συσκευή 1104 00:50:10,560 --> 00:50:13,870 ότι αυτό είναι εξαιρετικά συναρπαστικό, αλλά είναι κυριολεκτικά Colton 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 Και έτσι πάλι, φοράει αυτά τα ακουστικά με ένα τηλέφωνο της Samsung για το ότι είναι 1111 00:50:27,360 --> 00:50:29,080 ασύρματα προεξέχει πάνω από το κεφάλι για να μας. 1112 00:50:29,080 --> 00:50:30,349 Τώρα είστε στον Άρη, νομίζω; 1113 00:50:30,349 --> 00:50:31,140 COLTON: Νομίζω πως ναι. 1114 00:50:31,140 --> 00:50:32,181 Δεν είμαι σίγουρος [δεν ακούγεται]. 1115 00:50:32,181 --> 00:50:34,250 [Γέλια] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID Malan: Βγάζει Ο Άρης έχει αυτά τα μενού. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [δεν ακούγεται] μερικά δροσερά θέσεις, αν θέλουμε να πάμε to-- 1118 00:50:41,590 --> 00:50:43,330 >> DAVID Malan: Πού θέλουμε να πάμε; 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [δεν ακούγεται] 1120 00:50:45,837 --> 00:50:48,170 DAVID Malan: Και ας δούμε όπου Colton, μας παίρνετε τώρα. 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 Malan: Λοιπόν, υπάρχουν τόσα πολλά διαφορετικά μέρη που μπορείτε να πάρετε τον εαυτό σας. 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 Έτσι, μπορείτε πραγματικά μόνο γράφει ένα κινητό τηλέφωνο app. 1127 00:51:03,908 --> 00:51:06,380 Αλλά χάρη στο λογισμικό και οι δυνατότητες γραφικών, 1128 00:51:06,380 --> 00:51:08,765 τώρα Colton είναι σε αυτό το μικροσκοπικό εξοχικό σπίτι. 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 TWINS, «κακός άνθρωπος»] 1136 00:51:24,140 --> 00:55:23,146