[Παίζει μουσική] DOUG LLOYD: Στο βίντεο μας για θέματα ανάπτυξης ιστοσελίδων, έχουμε αναφέρει την έννοια της μια βάση δεδομένων μερικές φορές, σωστά; Έτσι, μια βάση δεδομένων είστε πιθανώς εξοικειωμένοι με την από δηλαδή χρησιμοποιώντας το Microsoft Excel ή το Google Spreadsheets. Είναι πραγματικά ακριβώς μια οργανωμένη τυποποιημένους πίνακες, σειρές, στήλες και. Και μια βάση δεδομένων όπου είναι καταστήματα ιστοσελίδα μας πληροφορίες που είναι σημαντικό για την ιστοσελίδα μας για να λειτουργήσει σωστά. Και πάλι, ένα πολύ κοινό παράδειγμα εδώ αποθηκεύει ονόματα χρήστη και κωδικούς σε μια βάση δεδομένων, έτσι ώστε όταν ένας χρήστης συνδέεται στην ιστοσελίδα μας, η βάση δεδομένων μπορεί να ερωτηθούν για να δείτε αν υπάρχει ο χρήστης στη βάση δεδομένων. Και αν είναι, ελέγχοντας ότι τον κωδικό πρόσβασής τους είναι σωστή. Και αν ο κωδικός τους είναι σωστή, τότε μπορούμε να τους δώσουμε τη σελίδα Ό, τι από όπου και αν ζητούν. Έτσι είστε κατά πάσα πιθανότητα, και πάλι, εξοικειωμένοι με αυτήν την ιδέα από το Excel ή το Google Υπολογιστικά φύλλα. Έχουμε τις βάσεις δεδομένων, πίνακες, σειρές, στήλες και. Και αυτό είναι πραγματικά το είδος του συνόλου των θεμελιωδών της ιεραρχικής κατανομή εδώ. Έτσι, εδώ είναι ένα υπολογιστικό φύλλο Excel. Και αν έχετε ανοίξει ποτέ αυτό ή άλλο παρόμοιο πρόγραμμα ξέρετε ότι αυτά είναι εδώ rows-- 1, 2, 3, 4, 5, 6, 7. Αυτά είναι στήλες. Ίσως εδώ κάτω, αν και μπορεί να Δεν χρησιμοποιήσετε αυτήν τη δυνατότητα τρομερά much-- Θα zoom in-- έχουμε αυτή η ιδέα ενός φύλλου. Έτσι ίσως αυτά τα φύλλα, αν Έχω εναλλάσσονται μπροστά και πίσω, είναι διαφορετικοί πίνακες που υπάρχουν στη βάση δεδομένων μου. Και αν συνεχίσουμε το παράδειγμα όλων ο τρόπος, το όνομα αυτής της βάσης δεδομένων Κάντε κράτηση είναι 1. Ίσως έχω Βιβλίο 2 και 3 Βιβλίου. Έτσι, κάθε αρχείο Excel είναι ένα βάσεων δεδομένων, κάθε φύλλο είναι ένας πίνακας, και στο εσωτερικό της κάθε τραπέζι που έχω αυτή η ιδέα των γραμμών και στηλών. Λοιπόν, πώς μπορώ να δουλεύω με αυτή τη βάση δεδομένων; Πώς μπορώ να πάρω πληροφορίες από αυτό; Λοιπόν υπάρχει μια γλώσσα που ονομάζεται SQL-- η οποία συνήθως απλά τηλεφωνήστε Sequel-- και αντιπροσωπεύει το Structured Query Language. Και αυτή είναι μια γλώσσα προγραμματισμού, αλλά είναι μια αρκετά περιορισμένη προγραμματισμού γλώσσα. Δεν είναι αρκετά όπως και άλλοι ότι έχουμε εργαστεί με. Αλλά ο σκοπός αυτού γλώσσα προγραμματισμού είναι για την αναζήτηση σε μια βάση δεδομένων, να να ζητήσει πληροφορίες από μια βάση δεδομένων, βρείτε πληροφορίες για ένα βάσεων δεδομένων, και ούτω καθεξής. Επίσης, σε CS50-- και είναι ένα πολύ κοινής πλατφόρμας, θα ονομάζεται MySQL. Αυτό είναι αυτό που χρησιμοποιούμε στο μάθημα. Είναι ένα open source πλατφόρμα που θεσπίζει το λεγόμενο σχεσιακή database-- μια βάση δεδομένων, αποτελεσματικά. Δεν πρέπει να πάρετε σε πάρα πολλή λεπτομέρεια Σε ό, τι μια σχεσιακή βάση δεδομένων είναι. Αλλά η γλώσσα SQL είναι πολύ έμπειροι στην εργασία με MySQL και άλλα παρόμοια στυλ των σχεσιακών βάσεων δεδομένων. Και πολλές εγκαταστάσεις MySQL έρθει με κάτι που ονομάζεται phpMyAdmin, η οποία είναι ένα Graphical User interface-- μια GUI-- ότι καθιστά λίγο πιο φιλική προς το χρήστη να εκτελέσει αναζητήσεις στη βάση δεδομένων, επειδή οι βάσεις δεδομένων δεν χρησιμοποιούνται μόνο από την προηγμένη προγραμματιστές, έτσι δεν είναι; Μερικές φορές υπάρχουν Αυτές οι μικρές επιχειρήσεις, και δεν μπορούν να αντέξουν οικονομικά να προσλάβει μια ομάδα προγραμματιστών, αλλά πρέπει ακόμα να αποθηκεύσετε πληροφορίες σε μια βάση δεδομένων. Κάτι σαν το phpMyAdmin καθιστά πολύ εύκολο για κάποιον που ποτέ δεν προγραμματίζονται, πριν να επιβιβάζουν και να εξοικειωθεί με το πώς να συνεργαστεί με μια βάση δεδομένων. Το πρόβλημα είναι, phpMyAdmin, ενώ είναι ένα φανταστικό εργαλείο για την εκμάθηση σχετικά με τις βάσεις δεδομένων, είναι χειροκίνητη. Θα πάμε να πρέπει να συνδεθείτε αυτό και να εκτελέσουν εντολές και τον τύπο τα πράγματα με το χέρι. Και όπως γνωρίζουμε από μας παράδειγμα σε PHP Προγραμματισμός στο Web, που έχουν να κάνουν με το χέρι τα πράγματα στην ιστοσελίδα μας, αν θέλουμε μια δυναμική, ενεργητική απόκριση δικτυακό τόπο, ίσως να μην είναι η καλύτερη προσέγγιση. Θα θέλαμε να βρούμε έναν τρόπο για να ίσως να αυτοματοποιήσει αυτό με κάποιο τρόπο. Και SQL θα μας επιτρέψει να το κάνουμε αυτό. Έτσι, όταν θα πάμε να αρχίσουν να εργάζονται με SQL, θα πρέπει πρώτα να έχουν μια βάση δεδομένων για να εργαστείτε με. Η δημιουργία μιας βάσης δεδομένων κάτι που πιθανώς θα κάνουμε στο phpMyAdmin, επειδή θα πρέπει μόνο να το κάνουμε μια φορά, και η σύνταξη για να κάνει έτσι είναι πολύ πιο απλή. Είναι πολύ πιο εύκολο να το κάνουμε σε μια γραφική διεπαφή χρήστη ό, τι πληκτρολογείτε έξω ως εντολή. Η εντολή μπορεί να πάρει λίγο περίπλοκη. Ομοίως, δημιουργώντας ένα τραπέζι μπορεί να πάρει αρκετά λίγο περίπλοκη, καθώς και. Και έτσι τα πράγματα όπως τη δημιουργία μιας βάσης δεδομένων και τη δημιουργία ενός πίνακα, το οποίο είστε πιθανώς μόνο πρόκειται να κάνει once-- μία φορά ανά τραπέζι, μία φορά ανά database-- είναι ΟΚ για να το κάνουμε αυτό σε ένα γραφικό περιβάλλον. Κατά τη διαδικασία της τη δημιουργία ενός πίνακα, θα Πρέπει επίσης να προσδιορίζει όλα τα στήλες που θα είναι σε αυτό το τραπέζι. Τι είδους πληροφορίες κάνουν θέλετε να αποθηκεύσετε στον πίνακα; Ίσως το όνομα και την ημερομηνία γέννησης ενός χρήστη, κωδικό πρόσβασης, τον αριθμό ταυτότητας του χρήστη, και ίσως πόλη και την πολιτεία, σωστά; Και για κάθε φορά που θέλουμε να προσθέσουμε ένα χρήστη με τη βάση δεδομένων, θέλουμε να πάρει όλα τα έξι από αυτά τα κομμάτια των πληροφοριών. Και το κάνουμε αυτό με την προσθήκη γραμμών στον πίνακα. Γι 'αυτό πρώτα να δημιουργήσετε μια βάση δεδομένων, τότε δημιουργούμε ένα πίνακα. Ως μέρος της δημιουργίας ένα τραπέζι, καλούμαστε για να καθορίσετε κάθε στήλη, η οποία θα θέλαμε σε αυτόν τον πίνακα. Και τότε, όπως θα αρχίσουμε να προσθέσουμε πληροφορίες στη βάση δεδομένων και το ερώτημα της βάσης δεδομένων περισσότερα generally-- όχι μόνο προσθέτοντας, αλλά ό, τι άλλο μας do-- θα είμαστε ασχολούνται με σειρές του πίνακα, το οποίο είναι ένα πληροφορίες των χρηστών από ολόκληρο το σύνολο. Έτσι, κάθε SQL στήλη είναι σε θέση να κρατώντας τα δεδομένα ενός συγκεκριμένου τύπου δεδομένων. Γι 'αυτό το είδος της εξαλειφθεί αυτό ιδέα των τύπων δεδομένων σε PHP, αλλά είναι πίσω εδώ στην SQL. Και υπάρχουν πολλά είδη δεδομένων. Εδώ είναι μόνο 20 από αυτούς, αλλά δεν είναι καν όλα αυτά. Έτσι έχουμε ιδέες όπως INTs-- Integers-- που ίσως γνωρίζετε ότι αυτή η στήλη μπορεί να κρατήσει ακέραιοι. Και υπάρχουν παραλλαγές thereon-- SMALLINT, tinyint, MEDIUMINT, BIGINT. Ίσως δεν χρειαζόμαστε πάντα τέσσερις τσιμπήματα. Ίσως χρειαζόμαστε οκτώ bytes, και γι 'αυτό μπορούν να χρησιμοποιήσουν αυτές τις παραλλαγές σε ακέραιους αριθμούς να είναι λίγο περισσότερο χώρο αποτελεσματική. Μπορούμε να κάνουμε δεκαδικούς αριθμούς, μπορούμε μπορούν να κάνουν αριθμούς κινητής υποδιαστολής. Αυτά είναι αρκετά παρόμοια. Υπάρχουν κάποιες διαφορές, και αν έχετε την καλοσύνη αρέσει να κοιτάζω προς τα πάνω το SQL είδος του οδηγού, μπορείτε μπορούν να δουν ποια είναι η μικρή διαφορές μεταξύ τους. Ίσως θέλουμε να αποθηκεύσουμε πληροφορίες σχετικά με την ημερομηνία και ώρα. Ίσως είμαστε παρακολούθηση των όταν ο χρήστης προσχώρησε ιστοσελίδα μας, και έτσι ίσως θέλουμε να έχει μια στήλη που είναι ένας χρόνος ημερομηνία ή μια χρονική σήμανση ότι υποδεικνύει πότε ο χρήστης πράγματι υπογράψει. Μπορούμε να κάνουμε γεωμετρίες και linestrings. Αυτό είναι στην πραγματικότητα αρκετά δροσερό. Θα μπορούσαμε να χαράξουμε μια γεωγραφική περιοχή, χρησιμοποιώντας GIS συντεταγμένες για να σχεδιάσετε μια περιοχή έξω. Έτσι, μπορεί να αποθηκεύσει στην πραγματικότητα αυτό το είδος πληροφοριών σε μια στήλη SQL. TEXT είναι απλά γίγαντας σταγόνες του κειμένου, ίσως. ENUMs είναι είδος ενδιαφέρον. Στην πραγματικότητα υπάρχουν σε C. Δεν κάνουμε μιλήσουμε γι 'αυτούς επειδή δεν είναι τρομερά χρησιμοποιούνται συνήθως, τουλάχιστον CS50. Αλλά είναι μια αριθμητικού τύπου δεδομένων, η οποία είναι ικανή Holding Limited τιμές. Ένα πολύ καλό παράδειγμα εδώ θα ήταν για να δημιουργήσετε ένα enum όπου ο επτά πιθανές τιμές είναι Κυριακή, Δευτέρα, ΤΡΙΤΗ ΤΕΤΑΡΤΗ ΠΕΜΠΤΗ ΠΑΡΑΣΚΕΥΗ, Σάββατο, σωστά; Αυτός ο τύπος δεδομένων Ημέρας Εβδομάδα δεν υπάρχει, αλλά θα μπορούσαμε να δημιουργήσουμε μια απαριθμούνται τύπο δεδομένων, όπως ότι η στήλη μπορεί να κρατήσει μόνο ποτέ ένα από αυτά τα επτά πιθανές τιμές. Έχουμε απαριθμούνται όλες των πιθανών τιμών. Στη συνέχεια έχουμε CHAR και VARCHAR, και έχω το χρώμα αυτών των πράσινων γιατί στην πραγματικότητα είμαστε πρόκειται να λάβει μια δεύτερη για να μιλήσουμε για τη διαφορά μεταξύ αυτών των δύο πράγματα. Έτσι ΧΑΡ, σε αντίθεση με C όπου ΧΑΡ ήταν ένα ενιαίο χαρακτήρα, σε SQL ένα ΧΑΡ ​​αναφέρεται σε μια σταθερή συμβολοσειρά μήκους. Και όταν δημιουργούμε αυτό στήλη, στην πραγματικότητα μπορείτε να καθορίσετε το μήκος του string. Έτσι, σε αυτό το παράδειγμα, θα μπορούσαμε να πούμε CHAR (10). Αυτό σημαίνει ότι κάθε στοιχείο αυτής της στήλης θα αποτελείται από 10 bytes πληροφοριών. Όχι περισσότερο, όχι λιγότερο. Έτσι, αν προσπαθήσουμε και να θέσει σε 15 bit ή ένα στοιχείο 15 χαρακτήρων ή την αξία σε αυτή τη στήλη, είμαστε μόνο να πάρει το πρώτο 10. Αν βάλουμε στα δύο χαρακτήρα καιρό αξίας, θα πάμε να έχουν τα δύο χαρακτήρες, και στη συνέχεια οκτώ null τσιμπήματα. Εμείς ποτέ δεν θα είναι πιο αποτελεσματική από ό, τι αυτό. Μια VARCHAR είναι κάτι σαν αντίληψή μας για μια σειρά ότι είμαστε εξοικειωμένοι με από C ή από την PHP. Είναι μια συμβολοσειρά μεταβλητού μήκους. Και όταν δημιουργείτε αυτή η στήλη, απλά Καθορίστε το μέγιστο δυνατό μήκος. Έτσι ίσως 99, ή κοινώς 255. Αυτό θα είναι το μέγιστο μήκος. Και έτσι, αν ήμασταν αποθήκευση 15 ακολουθία χαρακτήρων, θα χρησιμοποιήσει 15 bytes, ίσως 16 byte για τη μηδενική τερματισμού. Αν ήμασταν μια αποθήκευση τρία σειρά χαρακτήρων, θα χρησιμοποιήσει τρία ή τέσσερα byte. Αλλά εμείς δεν θα χρησιμοποιούν την πλήρη 99. Επομένως, γιατί θα έχουμε και τα δύο; Λοιπόν, αν θα πρέπει να καταλάβω πώς μακριά κάτι με VARCHAR, θα πρέπει να επαναλάβει το είδος του πάνω σε αυτό ακριβώς όπως κάναμε σε C και να καταλάβω πού να σταματήσει. Ενώ αν γνωρίζουμε ότι τα πάντα σε αυτήν τη στήλη είναι 10 bytes, ίσως Γνωρίζουμε ότι οι πληροφορίες, μπορούμε να πηδήξει 10 bytes, 10 bytes, 10 bytes, 10 bytes, και πάντα βρίσκουν το αρχή του string. Έτσι μπορεί να έχουμε κάποια σπατάλη χώρου με ΧΑΡ, αλλά ίσως υπάρχει ένα εμπόριο εκτός από έχοντας την καλύτερη ταχύτητα στην πλοήγηση της βάσης δεδομένων. Αλλά ίσως θέλουμε η ευελιξία ενός VARCHAR αντί having-- Αν ΧΑΡ μας ήταν 255, αλλά οι περισσότεροι από τους χρήστες μας ήταν μόνο εισαγωγή τρεις ή τέσσερις ψηφιολέξεις Αξίζει πληροφοριών ή τρεις ή τέσσερις χαρακτήρες αξίας των πληροφοριών. Αλλά μερικοί χρήστες που χρησιμοποιούν το σύνολο 255, ίσως VARCHAR θα ήταν πιο κατάλληλο εκεί. Είναι ένα είδος εμπορίου off, και γενικότερα, για σκοπούς του CS50, δεν χρειάζεται να ανησυχείτε πάρα πολύ για αν χρησιμοποιείτε ένα CHAR ή VARCHAR. Αλλά στον πραγματικό κόσμο, αυτά τα πράγματα έχουν σημασία, διότι όλες αυτές οι στήλες καταλαμβάνουν πραγματικό φυσικό χώρο. Και φυσικό χώρο, στο πραγματικό κόσμο, έρχεται σε ένα ασφάλιστρο. Έτσι, μία άλλη μελέτη όταν είστε οικοδόμηση ενός πίνακα είναι να διαλέξετε μία στήλη να είναι αυτό που λέγεται πρωτεύον κλειδί. Και ένα πρωτεύον κλειδί είναι μια στήλη όπου κάθε τιμή είναι μοναδική. Και αυτό σημαίνει ότι μπορείτε εύκολα ξεχωρίσω μια ενιαία γραμμή μόνο κοιτώντας στο πρωτεύον κλειδί του εν λόγω σειράς. Έτσι, για παράδειγμα, γενικά, με τους χρήστες, Δεν θέλω δύο χρήστες που έχουν τον ίδιο αριθμό ταυτότητας χρήστη. Και έτσι ίσως έχετε πολλές πληροφορίες, και ίσως δύο χρήστες μπορούν να έχουν την ίδια name-- Έχετε John Smith και John Smith. Αυτό δεν είναι απαραιτήτως ένα πρόβλημα, επειδή υπάρχουν πολλά άτομα στον κόσμο το όνομα John Smith. Αλλά έχουμε μόνο έναν χρήστη τον αριθμό ταυτότητας 10, ένας χρήστης αριθμό 11, 12, 13 ID. Δεν έχουμε δύο χρήστες με τον ίδιο αριθμό, και έτσι ίσως αριθμούς ταυτότητας χρήστη θα ήταν μια καλή πρωτεύον κλειδί. Δεν έχουμε καμία επικάλυψη, και μπορούμε τώρα μοναδικά προσδιορίσει κάθε γραμμή μόνο κοιτάζοντας αυτή τη στήλη. Επιλέγοντας πρωτεύοντα κλειδιά μπορεί πραγματικά να τις επακόλουθες ενέργειες τραπέζι πολύ πιο εύκολο, διότι μπορούν να αξιοποιήσουν το γεγονός ότι ορισμένες σειρές που θα είναι μοναδικό, ή μια συγκεκριμένη στήλη της βάσης δεδομένων ή το τραπέζι σας θα είναι μοναδικό για να πάρει έξω ιδιαίτερη σειρές. Μπορείτε επίσης να έχετε μια κοινή πρωτογενή κλειδί, το οποίο μπορείτε να βρείτε ευκαιρία στη χρήση, το οποίο είναι απλώς ένα συνδυασμός δύο στήλες που είναι εγγυημένη για να είναι μοναδική. Έτσι ίσως έχετε ένα στήλη που είναι Όπως και Β, μία στήλη που είναι ένα, δύο, και τρία, αλλά θα ποτέ μόνο έχουν ένα ενιαίο Α1, ένα ενιαίο Α2, και ούτω καθεξής και ούτω καθεξής. Αλλά μπορεί να έχετε μια Β2, μια C2, ή ένας Α1, Α2, Α3, Α4. Έτσι, μπορείτε να έχετε πολλαπλές Όπως, πολλαπλές BS, πολλαπλές αυτές, πολλαπλές δυάρια, αλλά το μόνο που μπορεί να έχει ποτέ ενιαία A1, B2, C3, και ούτω καθεξής. Έτσι, όπως είπα, είναι ένα SQL γλώσσα προγραμματισμού, αλλά έχει ένα αρκετά περιορισμένο λεξιλόγιο. Δεν είναι τόσο επεκτατική ως C και PHP και άλλες γλώσσες ότι μιλάμε στην πορεία. Είναι μια πιο αναλυτική περιγραφή γλώσσα από ό, τι είμαστε πρόκειται να μιλήσουμε για αυτό βίντεο, επειδή σε αυτό το βίντεο θα πάμε να μιλήσουμε για τέσσερις πράξεις ότι μπορεί να εκτελέσει σε ένα τραπέζι. Υπάρχουν περισσότερα από αυτό. Μπορούμε να κάνουμε περισσότερα από αυτό, αλλά για τους σκοπούς μας, είμαστε γενικά θα πρέπει να χρησιμοποιούν μόλις τέσσερις operations-- ένθετο, επιλέξετε, να ενημερώσετε και να διαγράψετε. Και μπορείτε να μαντέψετε ίσως διαισθητικά τι τα τέσσερα από αυτά τα πράγματα κάνουν. Αλλά θα πάμε σε ένα κομμάτι λεπτομέρειες για κάθε μία. Έτσι, για τους σκοπούς του παρόντος βίντεο, ας υποθέσουμε έχουμε τα εξής δύο πίνακες σε μια ενιαία βάση δεδομένων. Έχουμε έναν πίνακα που ονομάζεται Χρήστες που έχει τέσσερις columns-- αριθμό ταυτότητας, το όνομα χρήστη, κωδικό πρόσβασης και το πλήρες όνομα. Και έχουμε μια δεύτερη τραπέζι στην ίδια βάση δεδομένων που ονομάζεται Moms που αποθηκεύει μόνο πληροφορίες σχετικά με ένα όνομα χρήστη και μια μητέρα. Έτσι, για όλα τα παραδείγματα σε αυτό το βίντεο, θα να χρησιμοποιεί αυτή τη βάση δεδομένων και μετέπειτα ενημερώσεις σε αυτό. Ας πούμε ότι θέλουμε να προσθήκη πληροφοριών σε ένα τραπέζι. Αυτό είναι ό, τι κάνει η λειτουργία εισαγωγής. Σε εξηγώντας όλα Αυτές οι εντολές, θα πάω για να σας δώσει μια γενική σκελετό για να χρησιμοποιήσετε. Επειδή ουσιαστικά, τα ερωτήματα θα φαίνονται αρκετά παρόμοια, είμαστε ακριβώς πρόκειται να αλλάζει ελαφρώς διαφορετικά κομμάτια των πληροφοριών να κάνω διαφορετικά πράγματα με τον πίνακα. Έτσι, για INSERT, το σκελετό φαίνεται κάτι σαν αυτό. Θέλουμε να εισαγάγει ένα συγκεκριμένο πίνακα. Στη συνέχεια έχουμε μια ανοιχτή παρένθεση και μια λίστα των στηλών ότι θέλουμε να θέσει αξίες σε. Κλείστε παρενθέσεις, η ακόλουθες τιμές, και στη συνέχεια και πάλι, παραθέτουμε τις τιμές θέλουμε να βάλει στο τραπέζι. Έτσι, ένα παράδειγμα αυτού θα είναι η ακόλουθη. Θέλω να εισαγάγει στον πίνακα Οι χρήστες το ακόλουθο columns-- το όνομα χρήστη, τον κωδικό πρόσβασης, και Ονοματεπώνυμο. Έτσι, μια νέα σειρά όπου βάζω σε αυτές τις τρεις στήλες και είμαστε πρόκειται να θέσει στις τιμές Newman, USMAIL, και Newman. Έτσι, σε αυτή την περίπτωση, είμαι βάζοντας το πεζό Newman στη στήλη όνομα χρήστη, ο κωδικός πρόσβασης USMAIL, και το πλήρες όνομα του κεφαλαίου Ν Newman στη στήλη Ονοματεπώνυμο. Έτσι, εδώ είναι ό, τι η βάση δεδομένων έμοιαζε πριν. Εδώ είναι τι ο πίνακας των χρηστών σχετικά με το κορυφή έμοιαζε πριν το κάναμε αυτό. Μετά εκτελούμε αυτό ερώτημα, παίρνουμε αυτό. Έχουμε προσθέσει μια νέα γραμμή στον πίνακα. Αλλά παρατηρήσετε αυτό το ένα πράγμα ότι δεν διευκρίνισε, αλλά με κάποιο τρόπο έχω την τιμή για, το οποίο είναι αυτό το 12 εδώ. Δεν είπα ήθελα να να θέσει τον αριθμό ταυτότητας εκεί. Ήθελα να βάλει το όνομα χρήστη, κωδικό πρόσβασης, Ονοματεπώνυμο. Και το έκανα αυτό, ότι το πρόστιμο. Αλλά εγώ επίσης πήρα αυτό 12. Γιατί να πάρω αυτό το 12; Λοιπόν, αποδεικνύεται ότι όταν καθορίζετε μια στήλη που πρόκειται να σας πρωτεύον κλειδί, το οποίο είναι συνήθως, όπως είπα, ένας αριθμός ταυτότητας. Δεν είναι πάντα απαραίτητα πρόκειται να είναι ένας αριθμός ταυτότητας, αλλά είναι συνήθως μια καλή ιδέα να είναι ένα είδος ακέραιος αξίας. Έχετε μια επιλογή στο phpMyAdmin όταν είστε δημιουργία βάσης δεδομένων σας ή το τραπέζι σας για να ορίσετε ότι στήλη ως αυτόματη επαύξησης που. Ποια είναι μια πραγματικά καλή ιδέα, όταν εργάζεστε με ένα πρωτεύον κλειδί, επειδή θέλετε κάθε τιμή στην εν λόγω στήλη να είναι μοναδική. Και αν ξεχάσετε να καθορίσετε για περισσότερο από ένα άτομο, Έχετε τώρα μια κατάσταση όπου η στήλη αυτή δεν είναι πλέον το μοναδικό. Έχετε δύο κενά, έτσι ώστε να μπορείτε όχι πλέον να προσδιορίσει μονοσήμαντα ένα column-- ή δεν είστε πλέον μοναδικά μπορεί προσδιορίσει μια σειρά που βασίζεται σε αυτή τη στήλη. Είναι χάσει όλα του αξία ως πρωτεύον κλειδί. Και έτσι προφανώς αυτό που έχω κάνει Εδώ έχει διαμορφωθεί το αναγνωριστικό χρήστη στήλη για αυτόματη αύξηση, έτσι ώστε κάθε ώρα μπορώ να προσθέσω τις πληροφορίες στον πίνακα, θα μου δώσει αυτόματα μια τιμή για το πρωτεύον κλειδί. Έτσι μπορώ να ξεχάσω ποτέ να το κάνω γιατί η βάση δεδομένων θα το κάνει για μένα. Έτσι, αυτό είναι το είδος της Νίκαιας. Και έτσι γι 'αυτό έχουμε 12 εκεί, γιατί έχω σύνολο που στήλης μέχρι την αυτόματη αύξηση. Αν έχω προσθέσει κάποιος άλλος θα ήθελα να είναι 13, αν προστεθούν κάποιος άλλος θα ήθελα να είναι 14, και ούτω καθεξής. Οπότε ας κάνουμε μια ακόμη προσθήκη. Θα εισαχθεί στον πίνακα μαμάδες, σε Ειδικότερα, το όνομα και η μητέρα στήλη, οι τιμές Kramer και Μπαμπς Kramer. Και έτσι είχαμε πριν από αυτό. Μετά εκτελούμε ότι Ερώτημα SQL, έχουμε αυτό. Προσθέσαμε Kramer και Babs Kramer στο τραπέζι μαμάδες. Έτσι ώστε να είναι παρεμβολή. SELECT είναι αυτό που χρησιμοποιούμε για να εξαγάγετε πληροφορίες από τον πίνακα. Έτσι, αυτό είναι το πώς θα φτάσετε πληροφορίες από τη βάση δεδομένων. Και έτσι να επιλέξετε εντολές πρόκειται να είναι πολύ συχνά χρησιμοποιούνται στον προγραμματισμό. Η γενική framework-- η γενικές σκελετός μοιάζει με αυτό. Επιλέξτε ένα σύνολο στηλών από ένα τραπέζι, και στη συνέχεια, προαιρετικά μπορείτε να καθορίσετε ένα condition-- ή αυτό που συνήθως ονομάζουμε ένα κατηγόρημα, είναι συνήθως ο όρος που χρησιμοποιούμε στον SQL. Αλλά είναι αυτό που βασικά Ειδικότερα γραμμές που θέλετε να πάρετε. Αν θέλετε, αντί να πάρει τα πάντα, να το περιορίσετε, αυτό είναι όπου θα το κάνουμε αυτό. Και στη συνέχεια, προαιρετικά, μπορείτε επίσης να παραγγείλετε από μια συγκεκριμένη στήλη. Έτσι, ίσως θέλετε να έχουν τα πράγματα ταξινόμηση με αλφαβητική σειρά βασίζεται σε μία στήλη ή αλφαβητικά με βάση ένα άλλο. Και πάλι, πού και ORDER BY είναι προαιρετική. Αλλά μάλλον θα είναι useful-- ιδιαίτερα Πού θα ήταν χρήσιμο να Για να περιορίσετε τα κάτω έτσι ώστε να μην να πάρει ολόκληρη τη βάση δεδομένων σας πίσω και Πρέπει να το επεξεργαστεί, έχετε μόνο τα κομμάτια του αυτό που σας ενδιαφέρει. Έτσι, για παράδειγμα, ίσως να θέλετε να επιλέξετε Αριθμό ταυτότητας και Ονοματεπώνυμο από τους χρήστες. Λοιπόν, τι θα μπορούσε να μοιάζει με αυτό; Τόσο εδώ είναι χρήστες τραπέζι μου. Θέλω να επιλέξετε idnum Ονοματεπώνυμο και από τους χρήστες. Τι θα πάω να πάρω; Πάω να πάρω αυτό. Εγώ δεν το περιορίσετε, έτσι είμαι να πάρει τον αριθμό ταυτότητας για κάθε γραμμή και παίρνω την πλήρη όνομα από κάθε σειρά. ΕΝΤΆΞΕΙ. Τι γίνεται αν θέλω να επιλέξετε τον κωδικό πρόσβασης από τους χρήστες WHERE-- έτσι και τώρα Είμαι προσθέτοντας έναν όρο, μια predicate-- όπου idnum είναι μικρότερο από 12. Έτσι, εδώ είναι και πάλι τη βάση δεδομένων μου, Οι χρήστες τραπέζι μου την κορυφή. Τι είμαι πρόκειται να πάρει, αν θέλω να επιλέξτε τις πληροφορίες αυτές, ο κωδικός πρόσβασης, όπου το αναγνωριστικό χρήστη ή idnum είναι μικρότερη από 12; Πάω να πάρω αυτό πληροφορίες πίσω, έτσι δεν είναι; Συμβαίνει ότι idnum είναι 10, λιγότερο από 12, τον αριθμό ταυτότητας 11 μικρότερο από 12. Παίρνω τον κωδικό πρόσβασης για αυτές τις σειρές. Αυτό είναι ό, τι ζήτησα. Τι λες για αυτό? Τι γίνεται αν θέλω να επιλέξετε από το αστέρι moms πίνακα όπου το ψευδώνυμο ισούται Τζέρι; OK, επιλέξτε αστέρι είναι η ειδική είδος μπαλαντέρ λεγόμενων που χρησιμοποιούμε για να πάρει τα πάντα. Έτσι λένε επιλέξτε όνομα χρήστη κόμμα μητέρα, η οποία έτυχε να είναι η μόνη δύο στήλες του πίνακα, Μπορώ να επιλέξετε ακριβώς αστέρων και να πάρει τα πάντα όπου το όνομα χρήστη ισούται Τζέρι. Και έτσι αυτό είναι που θα ήθελα να πάρει αν έκανα αυτό το συγκεκριμένο ερώτημα. Τώρα, οι βάσεις δεδομένων είναι μεγάλη, επειδή επιτρέπουν μας για να οργανώσετε τις πληροφορίες ίσως λίγο πιο αποτελεσματικά από ό, τι μπορεί διαφορετικά. Δεν υποχρεωμένοι να αποθηκεύσετε κάθε σχετική πληροφορία για ένα χρήστη στον ίδιο πίνακα. Είχαμε δύο πίνακες εκεί. Θα πρέπει να αποθηκεύσετε το όνομα της μητέρας του καθενός, και ίσως δεν έχουμε κοινωνική ασφάλιση αριθμός, έχουμε την ημερομηνία γέννησής τους. Αυτό δεν πρέπει πάντα να είναι στο ίδιο τραπέζι. Όσο μπορούμε να ορίσουμε σχέσεις μεταξύ του tables-- και αυτό είναι όπου η σχεσιακή έννοια της βάσεως του είδους έρχεται σε play-- όσο μπορούμε να ορίσουμε σχέσεις μεταξύ των πινάκων, Είμαστε είδος μπορούν να κατακερματίσουν ή αφηρημένα πράγματα ένας τρόπος, όπου έχουμε μόνο το πραγματικά σημαντικές πληροφορίες νοιαζόμαστε για τον πίνακα του χρήστη. Και τότε έχουμε βοηθητικές πληροφορίες ή επιπλέον πληροφορίες σε άλλους πίνακες ότι μπορούμε να συνδέσουμε πίσω στην κύρια Οι χρήστες τραπέζι σε ένα συγκεκριμένο τρόπο. Έτσι, εδώ έχουμε αυτά τα δύο πίνακες, αλλά υπάρχει μια σχέση μεταξύ τους, δικαίωμα? Φαίνεται όπως το όνομα χρήστη θα μπορούσε να είναι κάτι ότι υπάρχει κοινό μεταξύ αυτά τα δύο διαφορετικούς πίνακες. Τι κι αν έχουμε τώρα μια κατάσταση όπου είμαστε Θέλετε να αποκτήσετε το πλήρες όνομα ενός χρήστη από τραπέζι του χρήστη, και η μητέρα τους όνομα από τον πίνακα μητέρα; Δεν έχουμε έναν τρόπο για να πάρει ότι, ως έχει, σωστά; Δεν υπάρχει ενιαίο πίνακα που περιέχει τόσο πλήρες όνομα και το όνομα της μητέρας του. Δεν έχουμε αυτή την επιλογή από ό, τι έχουμε δει μέχρι τώρα. Και έτσι πρέπει να εισαγάγει Η ιδέα ενός JOIN. Και ενώνει είναι πιθανώς το πιο complex-- είναι πραγματικά πιο σύνθετη λειτουργία θα πάμε να μιλήσουμε για το βίντεο. Είναι λίγο περίπλοκο, αλλά μόλις πάρετε κρεμάστε από το, ότι δεν είναι πραγματικά πάρα πολύ κακό. Είναι απλά μια ειδική περίπτωση ενός SELECT. Εμείς πάμε για να επιλέξετε ένα σύνολο στηλών από έναν πίνακα που ενώνει σε ένα δεύτερο πίνακα σε κάποιο κατηγόρημα. Σε αυτή την περίπτωση, σκεφτείτε αρέσει this-- τραπέζι ένα είναι ένα κύκλο πάνω από εδώ, πίνακας δύο είναι ένα άλλο κύκλο εδώ. Και αυτό το μέρος κατηγόρημα στη μέση, είναι περίπου όπως αν νομίζετε περίπου ως διάγραμμα Venn, τι δεν έχουν από κοινού; Θέλουμε να συνδέσουμε αυτά τα δύο πίνακες βασίζεται σε αυτό που έχουν κοινό και να δημιουργήσει αυτό το υποθετικό πίνακα ότι είναι η συγχώνευση των δύο μαζί. Έτσι θα δούμε αυτό σε μια παράδειγμα και ίσως ότι θα βοηθήσει καθαρίσει επάνω λίγο. Έτσι, ίσως να θέλετε να επιλέξετε USER.FULLNAME και moms.mother από τους χρήστες να συμμετέχουν στις πίνακας μαμάδες σε κάθε κατάσταση όπου η στήλη όνομα χρήστη είναι η ίδια μεταξύ τους. Και αυτό είναι ένα νέο συντακτικής εδώ, αυτό το χρήστη. και μαμάδες .. Αν κάνω πολλαπλούς πίνακες μαζί, να ορίσετε έναν πίνακα. Μπορώ να διακρίνω ιδίως όσον αφορά ότι στις στο κάτω μέρος εκεί. Μπορώ να διακρίνω το όνομα χρήστη στήλη του πίνακα χρηστών από τη στήλη όνομα του moms πίνακα, που είναι otherwise-- αν εμείς απλά είπε το όνομα χρήστη ισούται με το όνομα χρήστη, που πραγματικά δεν έχει σημαίνει τίποτα. Θέλουμε να το κάνουμε όπου ταιριάζουν. Έτσι μπορώ να καθορίσετε το τραπέζι και το όνομα στήλης σε περίπτωση μιας κατάστασης όπου θα ήταν ασαφής τι πράγμα μιλάω. Έτσι, αυτό είναι το μόνο που κάνω είναι εκεί είμαι λέγοντας αυτή τη στήλη από τον πίνακα αυτόν, και είναι πολύ σαφής. Έτσι και πάλι, είμαι η επιλογή το πλήρες όνομα και το όνομα της μητέρας του από τον πίνακα των χρηστών που συνδέονται μεταξύ τους με τον πίνακα μαμάδες σε κάθε κατάσταση όπου μοιράζονται αυτό το column-- μοιράζονται αυτό το όνομα χρήστη έννοια. Έτσι, εδώ είναι οι πίνακες που είχαμε πριν. Αυτή είναι η κατάσταση μας βάση δεδομένων όπως υπάρχει τώρα. Οι πληροφορίες είμαστε εξόρυξη Είναι αυτό για να αρχίσει με. Αυτός είναι ο νέος πίνακας θα πάμε να δημιουργήσει συνδυάζοντας αυτά μαζί. Και παρατηρήσετε δεν είμαστε τονίζοντας Σειρά του Newman στο τραπέζι του χρήστη, και δεν είμαστε τονίζοντας Σειρά Kramer στον πίνακα μαμάδες επειδή ούτε υπάρχει κανείς σε τόσο sets-- και στους δύο πίνακες. Η μόνη πληροφορία που είναι προς το κοινό μεταξύ τους είναι Jerry είναι δύο πίνακες και gcostanza είναι και στους δύο πίνακες. Και έτσι, όταν κάνουμε το SQL JOIN, τι get-- και κάνουμε πραγματικά να πάρει αυτό. Είναι το είδος της προσωρινής μεταβλητής. Είναι σαν ένα υποθετικό συγχώνευση των δύο πινάκων. Είμαστε πραγματικά να πάρει κάτι όπως αυτό, όπου έχουμε συγχωνευθεί μαζί τους πίνακες για το πληροφορίες που έχουν από κοινού. Έτσι παρατηρήσετε ότι users.username και η στήλη moms.username, Είναι ακριβώς το ίδιο. Αυτή ήταν η πληροφορία ότι ήταν συνεπής από τους χρήστες τραπέζι και το τραπέζι μαμάδες. Και γι 'αυτό τους συγχωνεύονται. Εμείς απορρίπτονται Kramer γιατί δεν υπάρχει στον πίνακα των χρηστών, και απορρίπτονται Newman, επειδή ότι δεν υπάρχει στον πίνακα μητέρες. Έτσι, αυτό είναι το υποθετικό συγχώνευση χρησιμοποιώντας τη λειτουργία JOIN SELECT. Και μετά ψάχναμε για το το πλήρες όνομα του χρήστη και η μητέρα του χρήστη, και έτσι αυτή είναι η πληροφορία που θα παίρναμε από το γενικό ερώτημα ότι κάναμε με το πλήκτρο SELECT. Έτσι ενώσαμε τους πίνακες μαζί και εξάγαμε αυτές τις δύο στήλες, και έτσι αυτό είναι αυτό που θα πάρετε. Αλλά SQL JOINs ένα είδος περίπλοκη. Πιθανότατα δεν θα τους κάνουμε πάρα πολλά, αλλά απλώς έχουν κάποια ιδέα για το σκελετό ότι θα μπορούσατε να χρησιμοποιήσετε για τη συγχώνευση δύο τραπέζια μαζί αν χρειάζεται να. Οι δύο τελευταίες είναι λίγο πιο απλό υπόσχομαι. Έτσι ενημέρωση, μπορούμε να χρησιμοποιήσουμε ΕΝΗΜΕΡΩΣΗ να αλλάξετε τις πληροφορίες σε έναν πίνακα. Η γενική μορφή είναι μερικά ΕΝΗΜΕΡΩΣΗ πίνακας, που ορισμένες στήλη να έχει κάποια αξία Σε περίπτωση που ορισμένες κατηγόρημα είναι ικανοποιημένοι. Έτσι, για παράδειγμα, θα μπορούσαμε να θέλουμε για την ενημέρωση του πίνακα των χρηστών και να ορίσετε τον κωδικό πρόσβασης για να μπλα μπλα, όπου ο αριθμός ID είναι 10. Έτσι, σε αυτή την περίπτωση, είμαστε ενημέρωση του πίνακα των χρηστών. Ο αριθμός ID είναι 10 για ότι η πρώτη γραμμή εκεί, και θέλουμε να ενημερώσετε το κωδικό πρόσβασης για αρκετά σημαντικό. Και έτσι αυτό είναι που θα συμβεί. Είναι αρκετά απλό, σωστά; Είναι απλά μια πολύ απλή τροποποίηση του πίνακα. DELETE είναι η λειτουργία που χρησιμοποιείται για την αφαιρέσει τις πληροφορίες από έναν πίνακα. Διαγραφή από το τραπέζι, όπου κάποια κατηγόρημα είναι ικανοποιημένος. Θέλουμε να διαγράψετε από το Οι χρήστες τραπέζι για παράδειγμα, όπου το όνομα χρήστη είναι Newman. Μπορείτε να μαντέψετε τι πρόκειται να να συμβεί εδώ μετά θα εκτελέσει το SQL ερώτημα, Newman έχει φύγει από το τραπέζι. Έτσι, όλες αυτές οι εργασίες, όπως έχω πει, είναι πολύ εύκολο να το κάνουμε στο phpMyAdmin. Είναι ένα πολύ φιλικό προς το χρήστη interface. Αλλά αυτό απαιτεί χειρωνακτική προσπάθεια. Δεν θέλουμε να απασχολούν χειρωνακτική προσπάθεια. Θέλουμε τα προγράμματά μας να κάνετε αυτό για εμάς, έτσι δεν είναι; Έτσι, θα μπορούσαμε να θέλουμε να κάνουμε Αυτή προγραμματισμού. Θέλουμε να ενσωματώσει SQL και έχουν κάτι άλλο να κάνει αυτό για εμάς. Αλλά αυτό που έχουμε δει που επιτρέπει μας να κάνουμε κάτι προγραμματισμού; Έχουμε δει PHP, σωστά; Εισάγει κάποια δυναμισμό στα προγράμματά μας. Και έτσι ευτυχώς, SQL και PHP παίζουν πολύ ωραία μαζί. Υπάρχει μια συνάρτηση σε PHP ονομάζεται ερώτημα, τα οποία μπορούν να χρησιμοποιηθούν. Και μπορείτε να περάσετε όσο το παράμετρος ή το επιχείρημα να διερευνούν ένα ερώτημα SQL που θα θέλατε να εκτελέσει. Και η PHP θα το κάνει για λογαριασμό σας. Έτσι, αφού έχετε συνδεθεί στη βάση δεδομένων σας με την PHP, υπάρχουν δύο προκριματικές το κάνετε αυτό. Υπάρχει κάτι που ονομάζεται mysqli και κάτι που ονομάζεται ΠΟΠ. Εμείς δεν θα πάμε σε μια τεράστια ποσό λεπτομέρεια εκεί. Σε CS50 χρησιμοποιούμε ΠΟΠ. Αφού έχετε συνδέσει στη βάση δεδομένων σας, μπορεί στη συνέχεια να κάνουν αναζητήσεις στη βάση δεδομένων σας με το πέρασμα των ερωτημάτων ως επιχειρήματα με τις λειτουργίες της PHP. Και όταν το κάνετε αυτό, μπορείτε να αποθηκεύσετε το σύνολο αποτελεσμάτων σε μια συνειρμική σειρά. Και ξέρουμε πώς να συνεργαστεί με συνειρμική συστοιχίες στην PHP. Έτσι μπορώ να πω κάτι όπως this-- $ results-- Αυτό είναι PHP-- ισούται με το ερώτημα. Και τότε μέσα από το Λειτουργία ερώτημα που επιχείρημα ότι περνώ στο ερώτημα που μοιάζει SQL. Και στην πραγματικότητα, που είναι SQL. Αυτό είναι το ερώτημα string που θα ήθελε να εκτελέσει στη βάση δεδομένων μου. Και έτσι με κόκκινο χρώμα, αυτό είναι η PHP. Αυτό είναι SQL που είμαι ενσωματώνοντας σε PHP, καθιστώντας αυτό το επιχείρημα στο ερώτημα λειτουργία. Θέλω να επιλέξετε από Ονοματεπώνυμο Οι χρήστες όπου ο ID αριθμός ισούται με το 10. Και τότε ίσως αφού έχω κάνει αυτό, Θα ήθελα να πω κάτι τέτοιο. Θέλω να εκτυπώσετε το Ευχαριστώ μήνυμα για να συνδεθείτε. Και θέλω interpolate-- θέλω να παρεμβάλει $ Ονοματεπώνυμο αποτελέσματα. Και έτσι αυτό είναι το πώς δουλεύω με αυτό συνειρμική σειρά που πήρα πίσω. $ αποτελέσματα θα Ονοματεπώνυμο ουσιαστικά καταλήγουν εκτύπωση, ευχαριστίες για τη σύνδεση, Jerry Seinfeld. Αυτό ήταν το πλήρες όνομα όπου idnum ισούται με το 10. Και έτσι όλα τα κάνω είναι ότι είμαι εγώ now-- αποθηκεύονται το ερώτημα μου, τα αποτελέσματα του ερωτήματος μου και καταλήγει σε ένα associative πίνακα, Ονοματεπώνυμο και είναι το όνομα του η στήλη είχα πάρει για. Έτσι, αυτό είναι το κλειδί μου στα αποτελέσματα συνειρμική σειρά που θέλω. Έτσι Ευχαριστώ για τη σύνδεση, $ αποτελέσματα, Ονοματεπώνυμο θα εκτυπώσετε, θα κολλήσει ακριβώς ανάμεσα σγουρά τιράντες, Jerry Seinfeld. Και εγώ θα ήθελα να εκτυπώσετε το μήνυμα Ευχαριστώ για τη σύνδεση στο Jerry Seinfeld. Τώρα, εμείς μάλλον δεν θέλουν να σκληρό Κωδικός πράγματα όπως ότι, έτσι δεν είναι; Θα μπορούσαμε να θέλουμε να κάνουμε κάτι σαν εκτύπωσης f, όπου μπορούμε να υποκαταστήσει και ίσως συλλέξουν διαφορετικές πληροφορίες, ή ίσως έχουν το ερώτημα διαδικασία διαφορετικές πληροφορίες. Και έτσι το ερώτημα, το ερώτημα λειτουργία έχει αυτή η έννοια της ταξινόμησης των αντικαταστάσεων πολύ παρόμοια με την εκτύπωση στ τοις εκατό s και γ τοις εκατό, είναι ερωτηματικά. Και μπορούμε να χρησιμοποιήσουμε ερώτηση σήματα πολύ αναλόγως για να εκτυπώσετε f για υποκατάστατο μεταβλητές. Έτσι ίσως χρήστη εισέλθει νωρίτερα, και έχετε αποθηκεύσει το χρήστη τον αριθμό ταυτότητας τους σε $ _SESSION της PHP σούπερ παγκόσμιες στο κλειδί ID. Έτσι ίσως αφού συνδεθείτε, ορίσετε $ _SESSION ID ισούται με το 10, παρέκταση από το παράδειγμα μόλις είδαμε πριν από ένα δευτερόλεπτο. Και έτσι, όταν στην πραγματικότητα εκτελεί Αυτό το ερώτημα τα αποτελέσματα τώρα, θα συνδέσετε σε 10, ή οτιδήποτε άλλο το αναγνωριστικό τιμή $ _SESSION είναι. Και έτσι αυτό μας επιτρέπει να να είναι λίγο πιο δυναμική. Δεν είμαστε κωδικοποίησης σκληρά τα πράγματα στο άλλο. Είμαστε αποθήκευση πληροφοριών κάπου και στη συνέχεια, μπορούμε να χρησιμοποιήσουμε αυτές τις πληροφορίες για να ξανά είδος γενικεύσουμε τι θέλουμε να κάνουμε, και μόλις plug-in και αλλαγή η συμπεριφορά της σελίδας μας με βάση το τι αριθμό ταυτότητας του χρήστη στην πραγματικότητα είναι αφού έχουν εισέλθει. Είναι επίσης δυνατό, αν και, ότι τα αποτελέσματα που σας μπορεί να αποτελείται από πολλαπλές σειρές. Σε αυτή την περίπτωση, έχετε μια σειρά από arrays-- μια σειρά από συνειρμικό συστοιχίες. Και το μόνο που χρειάζεται για να μετακινηθείτε μέσα από αυτό. Και ξέρουμε πώς να επαναλάβει μέσω μιας σειράς σε PHP, σωστά; Έτσι, εδώ είναι ίσως το πιο πολύπλοκο πράγμα που έχουμε δει μέχρι τώρα. Ενσωματώνει πραγματικότητα τρεις γλώσσες μαζί. Εδώ στο κόκκινο, αυτό είναι κάποια HTML. Είμαι προφανώς αυτό είναι starting-- ένα απόσπασμα από κάποιο HTML που έχω. Αρχίζω μια νέα παράγραφο που λέει ότι οι μητέρες των Seinfeld τηλεόρασης. Και στη συνέχεια αμέσως μετά Αρχίζω ένα τραπέζι. Και στη συνέχεια μετά από αυτό, έχουν κάποια PHP, σωστά; Έχω όλα αυτού του κώδικα PHP εκεί. Είμαι προφανώς θα κάνει ένα ερώτημα. Και για να κάνει το ερώτημα, Πάω να να χρησιμοποιούν ΕΠΙΛΟΓΗ ΑΠΟ μητέρες μαμάδες. Έτσι, αυτό είναι getting-- αυτό είναι SQL. Έτσι, το μπλε είναι η SQL. Το κόκκινο είδαμε ένα δευτερόλεπτο πριν ήταν HTML. Και το πράσινο εδώ είναι η PHP. Έτσι κάνω ένα ερώτημα με τη βάση δεδομένων μου, είμαι την επιλογή όλων των μητέρες στον πίνακα μητέρες. Όχι μόνο θα μειωθεί σε συγκεκριμένα σειρά, ρωτάω για όλα αυτά. Τότε μπορώ να ελέγξω εάν το αποτέλεσμα είναι Δεν ίσων ισούται με ψευδείς. Αυτός είναι ακριβώς ο τρόπος μου από τον έλεγχο του είδους του αν τα αποτελέσματα δεν είναι ίση με null, ότι θα βλέπαμε γ, για παράδειγμα. Βασικά, αυτό είναι μόνο για να κάνει τον έλεγχο βεβαιωθείτε ότι πήρε πραγματικά στοιχεία πίσω. Επειδή δεν θέλω να ξεκινήσει η εκτύπωση από τα δεδομένα αν δεν είχα πάρει όλα τα δεδομένα. Στη συνέχεια, για κάθε αποτέλεσμα ως αποτέλεσμα την σύνταξη από foreach της PHP, όλα τα κάνω Εκτυπώνει μητέρες $ αποτέλεσμα. Και έτσι είμαι πρόκειται να πάρει ένα σετ του συνόλου των μητέρων each-- Είναι μια σειρά από συνειρμική arrays-- και είμαι εκτύπωση το καθένα τη δική του γραμμή του πίνακα. Και αυτό είναι πραγματικά όμορφη πολύ όλα υπάρχει σε αυτό. Ξέρω ότι υπάρχει μια μικρή bit συμβαίνει εδώ σε αυτό το τελευταίο παράδειγμα με συστοιχίες arrays-- συστοιχίες της συνειρμικής συστοιχίες. Αλλά πραγματικά μόλις πάρει βράση προβλέπεται στο SQL για να κάνει ένα ερώτημα, συνήθως μετά την επιλογή που έχουμε ήδη τεθεί πληροφορίες στον πίνακα, και στη συνέχεια να το τράβηγμα έξω. Και αυτό είναι που θα το τραβήξει έξω στη συγκεκριμένη περίπτωση. Θα εξάγει το σύνολο των ατομικών μητέρες από το τραπέζι μητέρες. Πήραμε μια ολόκληρη σειρά από αυτά, και Θέλετε να επαναλάβει και να εκτυπώσετε κάθε ένα. Έτσι και πάλι, αυτό είναι πιθανώς το πιο περίπλοκο παράδειγμα έχουμε δει γιατί είμαστε ανάμειξη των τριών διαφορετικές γλώσσες μαζί, σωστά; Και πάλι, έχουμε HTML εδώ με κόκκινο χρώμα, αναμειγνύεται με κάποια SQL εδώ σε μπλε, αναμειγνύεται με κάποια PHP στο πράσινο. Αλλά όλα αυτά παίζουν όμορφα μαζί, είναι ακριβώς ένα θέμα της ανάπτυξης καλές συνήθειες, έτσι ώστε μπορείτε να πάρετε τους να εργαστούν από κοινού με τον τρόπο που θέλετε. Και ο μόνος τρόπος για να γίνει πραγματικά ότι είναι η πρακτική, πρακτική, πρακτική. Είμαι ο Νταγκ Lloyd, αυτό είναι CS50.