[Powered by Google Translate] [SQL] [CHRISTOPHER ΒΑΡΘΟΛΟΜΑΙΟΥ] [Πανεπιστήμιο Χάρβαρντ] [ΑΥΤΟ ΕΙΝΑΙ CS50] [CS50 TV] Έτσι, οι προγραμματιστές χρησιμοποιούν βάσεις δεδομένων ως ένα εργαλείο για να αποθηκεύσετε και να οργανώσετε επίμονη δεδομένα μας μέσα στους πίνακες. Αυτό σημαίνει ότι τα δεδομένα σας είναι αποθηκευμένα σε μη πτητικά διάμεσοι, όπως ένα σκληρό δίσκο, και ακόμη και όταν ο υπολογιστής είναι απενεργοποιημένος, τα δεδομένα είναι ακόμα άθικτο. Και, όπως προγραμματιστές, τα προγράμματα μας χρησιμοποιούν βάσεις δεδομένων για σενάρια, όπως η αποθήκευση πληροφορίες από το χρήστη φόρμες, κοιτώντας ψηλά απογραφή, ενημέρωση ή πληροφορίες σχετικά με το τι ιστοσελίδες εμφάνιση. Αλλά πώς μπορούμε πραγματικά να αλληλεπιδρούν με τη βάση δεδομένων μας, ή τι χρησιμοποιούμε για να διαβάσετε, να αποθηκεύσετε, να διαγράψετε, και να ενημερώσετε τα δεδομένα μας σε αυτούς τους πίνακες της βάσης δεδομένων; Λοιπόν, η απάντηση είναι ότι χρησιμοποιούμε ένα ειδικό τύπο της γλώσσας βάσης δεδομένων το οποίο αλληλεπιδρά άμεσα με τους πίνακες της βάσης δεδομένων μας. Το όνομά του είναι Structured Query Language, [Structured Query Language] ή ό, τι αναφέρεται ως SQL. Τώρα, [Se-QUEL], ή SQL, δεν είναι μια γλώσσα προγραμματισμού, αλλά αντ 'αυτού, είναι μια γλώσσα που παρέχει ένα τυποποιημένο σύνολο των εντολών για την ανάκτηση και διαχείριση των δεδομένων από μία ποικιλία συστημάτων διαχείρισης βάσης δεδομένων. Για τους σκοπούς του CS50, θα πάμε πάνω από τέσσερις βασικές εντολές: επιλέξτε, εισάγετε, να ανανεώσετε και να διαγράψετε. Επιπλέον, θα χρησιμοποιεί ένα web interface βάσης δεδομένων που ονομάζεται phpMyAdmin, που εγκαθίσταται στη συσκευή να γράψετε SQL δηλώσεις μας. Έτσι, για να σας βοηθήσει να θυμάστε αυτές τις εντολές, Έχω φέρει μερικά cupcakes σε ένα ντουλάπι για να βοηθήσει με τα σενάρια μας. Ας υποθέσουμε ότι έχετε μια βάση δεδομένων του cupcake, όπου μπορείτε να αποθηκεύσετε όλες τις πληροφορίες σχετικά με cupcakes σας. Τώρα, βάσεις δεδομένων μπορεί να περιέχει πολλούς πίνακες και οι ίδιοι οι πίνακες μπορεί να περιέχει πολλές στήλες. Μέσα βάση δεδομένων cupcake μας, έχουμε έναν πίνακα που ονομάζεται cupcake_cupboard. Ο πίνακας αυτός θα χρησιμοποιηθεί για την αποθήκευση όλων των πληροφοριών σχετικά με cupcakes ότι είναι, επίσης, στο ντουλάπι σας. Οι στήλες που είναι μέσα σας τραπέζι αντιπροσωπεύουν τα χαρακτηριστικά ενός cupcake. Για παράδειγμα, οι στήλες του cupcake_cupboard του Κέικ ID, CakeType, CakeColor, και CakeIsNice. Αυτό boolean-δακτυλογραφημένο στήλη χρησιμοποιείται για να προσδιοριστεί εάν το κέικ είναι ωραίο ή όχι ωραία. Εμείς πάμε για να ξεκινήσει με το γράψιμο μια επίλεκτη δήλωση. Τα επιλεγμένα δηλώσεις που χρησιμοποιούνται για την ανάκτηση δεδομένων από μια συγκεκριμένη πίνακα βάσης δεδομένων. Σε αυτό το σενάριο, θέλουμε να γνωρίζουμε τα πάντα για όλα τα cupcakes που υπάρχουν στο ντουλάπι μας. Η σύνταξη για να γίνει αυτό είναι η "Επιλογή" αστέρι χώρου, ή *, το διάστημα από το διάστημα τραπέζι μας, που είναι cupcake_cupboard. Ας πάμε μπροστά και να εκτελέσει αυτό. Όπως μπορούμε να δούμε, αυτά είναι όλα τα cupcakes στο ντουλάπι μας. Είναι σημαντικό να σημειωθεί ότι *, ή αστερίσκο, είναι μια άγρια ​​κάρτα χαρακτήρα που υποδηλώνει τη συγκέντρωση όλων των στηλών του πίνακα κάποια. Κανονικά, μπορούμε να έχουμε πρόσβαση μια συγκεκριμένη στήλη ή στήλες * με την αντικατάσταση με το πραγματικό όνομα της στήλης. Αν θέλουμε πολλαπλές στήλες, αλλά όχι όλα, μπορούμε να το επιτύχουμε αυτό γράφοντας τα ονόματα των στηλών οριοθέτηση κάθε στήλη με ένα κόμμα. Για παράδειγμα, ας ανακτήσει μόνο το CakeId και CakeType στον πίνακα cupcake_cupboard. Η σύνταξη για να γίνει αυτό είναι: SELECT κόμμα χώρος CakeID CakeType χώρο από τον πίνακα, cupcake_cupboard μας. Ας πάμε μπροστά και να εκτελέσει αυτό. Και εδώ, έχουμε τώρα μόνο τις δύο στήλες που καθορίζονται για κάθε cupcake στο ντουλάπι μας. Μπορούμε επίσης να βελτιώσετε τα αποτελέσματα των αιτημάτων μας, καθορίζοντας το "Πού" ρήτρα αμέσως μετά το όνομα του πίνακα. Για παράδειγμα, φαίνεται να υπάρχει μια cupcake στο ντουλάπι μας δηλαδή, καλά, όχι και τόσο ωραίο αναζητούν. Ας καταλάβουμε όλα τα cupcakes στο ντουλάπι μας που είναι, αλλά όχι τόσο ωραίο αναζητούν χρησιμοποιώντας το "Πού" ρήτρα. Η σύνταξη για να γίνει αυτό είναι: SELECT * χώρος χώρος ΑΠΟ cupcake_cupboard χώρο χώρο όπου ο χώρος όρους στήλη μας, σε αυτή την περίπτωση CakeIsNice =, και η boolean τιμή FALSE. Είναι σημαντικό να σημειωθεί ότι αν χρησιμοποιείτε χορδές, θα πρέπει να το βάλετε μέσα σε μονά εισαγωγικά. Αυτό ισχύει για όλες τις χορδές σε SQL, ή, σε βάση δεδομένων SQL όρους, παραλλαγή χαρακτήρες γνωστή ως varchar τύπο δεδομένων. Σε αυτή την περίπτωση, χρησιμοποιούμε Σωστό ή Λάθος, το οποίο είναι μια boolean τιμή και όχι μια σειρά. Ας πάμε μπροστά και να εκτελέσει αυτή την εντολή. Lo και behold, είναι η περίπτωση που έχουμε 1 σοκολάτα ωραία έτσι δεν cupcake στο ντουλάπι μας. Στη συνέχεια, θα πάμε να γράψει μια δήλωση ένθετο. Οι δηλώσεις Εισαγωγή χρησιμοποιείται για την εισαγωγή ή να προσθέσετε πρόσθετες γραμμές δεδομένων σε πίνακα της βάσης δεδομένων σας. Επανεξέταση σενάριο μας, ας υποθέσουμε ότι έχουμε κάνει μόλις ένα ολοκαίνουργιο cupcake. Από τη στιγμή που οργανώνονται πολύ cupcake τρώγοντες, θα πάμε να πρέπει να εισαγάγετε αυτό το νέο cupcake στον πίνακα cupcake_cupboard μας. Η σύνταξη για να γίνει αυτό είναι η εξής: Τοποθετήστε το χώρο σε χώρο τραπέζι μας, cupcake_cupboard, το διάστημα (, και εδώ ορίζουμε τα ονόματα στηλών, που οριοθετείται από ένα κόμμα, CakeType κόμμα CakeColor κόμμα CakeIsNice) χώρο. Μετά από αυτό, γράφουμε τη λέξη χώρου ΑΞΙΕΣ (και εδώ μπαίνουμε στην τιμή για κάθε στήλη αντίστοιχα, και οριοθετείται από ένα κόμμα. Ενιαία απόσπασμα, επειδή είναι όλες οι τιμές varchar θα περιβάλλουν τους σε μονά εισαγωγικά, ΦΩΣ κόμμα «κόμμα» φυστικοβούτυρο ΚΑΦΕ 'True. Τώρα, είναι σημαντικό να δοθεί σε κάθε γραμμή έναν μοναδικό αριθμό για να προσδιορίσει τον εαυτό της. Autoincrementing μια στήλη αυτή παρέχει ως  «Δεν υπάρχουν δύο ίδιες οι ταυτότητες μπορεί ποτέ να υπάρχουν σε αυτόν τον πίνακα." Ας πάμε μπροστά και να εκτελέσει. Εκεί πάμε, όλα τα οργανωμένα. Η επόμενη δήλωση SQL που θα γράψουμε είναι μια δήλωση ενημέρωσης. Η δήλωση ενημέρωσης μπορεί να χρησιμοποιηθεί για να τροποποιήσει τα δεδομένα εντός μιας στήλης για κάθε υφιστάμενη γραμμή του πίνακα της βάσης δεδομένων σας. Νωρίτερα στο σενάριο μας, χρησιμοποιώντας μια δήλωση επιλογής, εντοπίσαμε ένα cupcake στο τραπέζι cupcake_cupboard μας CakeIsNice αξία των οποίων ήταν ψευδείς. Ας υποθέσουμε ότι, ενώ φυστίκι cupcake μας ήταν βούτυρο στο φούρνο, κάναμε όχι και τόσο ωραία cupcake μας πολύ ωραία. Όντας εξαιρετικά οργανωμένη έτσι, θέλουμε cupcake μας να αντικατοπτρίζει αυτή την τιμή στον πίνακα cupcake_cupboard μας. Ως εκ τούτου, ας ενημερώσει cupcake σοκολάτα μας στη βάση δεδομένων ώστε να αντικατοπτρίζει αυτό. Η σύνταξη είναι: UPDATE χώρο τραπέζι μας, cupcake_cupboard, space space SET η στήλη που θέλουμε να αλλάξουμε, CakeIsNice =. Στη συνέχεια, εδώ δίνουμε νέα αξία True χώρο μας. Τώρα, επειδή δεν θέλουμε να ενημερώσετε όλες τις γραμμές με αυτή την τιμή, θέλουμε να παρέχουμε ένα "Όπου" ρήτρα που θα μας εντοπίσουν με την ακριβή σειρά που θέλετε να τροποποιήσετε. Σε αυτή την περίπτωση, γνωρίζουμε ότι υπάρχει μόνο ένα cupcake αυτό έχει μια τιμή CakeIsNice Λάθος. Επιπλέον, θα πρέπει επίσης να διασφαλίσουμε ότι θα έχουν τη σωστή ενημέρωση σειρά με τη χρήση του "Και" ρήτρα. Χρησιμοποιούμε το "Και" ρήτρα για να βελτιώσετε την απορία μας περαιτέρω. Σε αυτή την περίπτωση, επειδή γνωρίζουμε ότι η σοκολάτα είναι cupcake, θα χρησιμοποιήσουμε αυτό το CakeType στήλη. Όπου ο χώρος εξαρτάται χώρο στήλη μας CakeIsNice χώρο = False, και χώρο CakeType = 'CHOCOLATE ». Έτσι, βάζοντας όλοι μαζί, αυτή η δήλωση ενημέρωση λέει βρείτε όλα τα cupcakes cupcake στο ντουλάπι μας, και αν υπάρχει ένα cupcake των οποίων CakeIsNice στήλη περιέχει την τιμή False και CakeType περιέχει η σοκολάτα αξία, θέλουμε να ενημερώσετε την συγκεκριμένη τιμή CakeIsNice σειρές σε True. Έτσι, πάμε μπροστά και να εκτελέσει τη δήλωση. Και τώρα, είμαστε οργανωμένοι. Όλη αυτή η συζήτηση των cupcakes με έχει κάνει λίγο πεινασμένοι. Νομίζω ότι θα πρέπει να βοηθήσει τον εαυτό μου σε ένα. Αλλά αν τρώω πραγματικά αυτό το cupcake, θα πρέπει τουλάχιστον να αφαιρέσει, επίσης, την ύπαρξη του  από τον πίνακα cupcake_cupboard μας. Για να το κάνετε αυτό, θα χρησιμοποιήσουμε το "Διαγραφή" δήλωση. Η "Διαγραφή" δήλωση μπορεί να χρησιμοποιηθεί για την απομάκρυνση όλων ή ορισμένων γραμμών από τον πίνακα. Εάν επιθυμείτε να αφαιρέσετε κάποια συγκεκριμένη γραμμή από τον πίνακα, τότε θα πρέπει να παράσχει «Όπου" ρήτρα, προσδιορίζοντας έτσι μια στήλη αυτό θα πρέπει να είναι μοναδικό για την σειρά που θέλετε να αφαιρέσετε. Αυτή είναι η σύνταξη: DELETE χώρο από το χώρο τραπέζι μας, cupcake_cupboard, το διάστημα. Τώρα, σε αυτό το σημείο, κάθε φορά που αυτό είναι τώρα στην διαγραφή δήλωσή σας θέλετε να είστε πολύ προσεκτικοί. Για παράδειγμα, αν θέλετε να εκτελέσετε αυτό το ερώτημα, όπως είναι, χωρίς να παρέχει κάποια "Πού" ρήτρα Θα χάσετε όλα τα δεδομένα σε αυτόν τον πίνακα cupcake_cupboard, αλλά επειδή ξέρω ήδη ότι τα αναγνωριστικά τούρτα μου είναι μοναδική, θα χρησιμοποιήσω το κόκκινο κέικ βελούδου ID για το "Πού" ρήτρα μου. Όπου ο χώρος στήλη μας, CakeID = 1. Επειδή αυτό είναι μια ακέραια τιμή δεν υπάρχει καμία ανάγκη να την περιβάλλουν σε μονά εισαγωγικά. Έτσι, ας εκτελέσει τη δήλωση. Λοιπόν, τώρα που έχουμε σκούπισε την ύπαρξη αυτού του cupcake από τον πίνακα cupcake_cupboard μας, έχουμε μόνο ένα πράγμα αριστερά: Κάντε το εξαφανίζονται. Είμαι Christopher Βαρθολομαίος. Αυτό είναι CS50.