1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER ΒΑΡΘΟΛΟΜΑΙΟΥ] [Πανεπιστήμιο Χάρβαρντ] 3 00:00:04,000 --> 00:00:06,000 [ΑΥΤΟ ΕΙΝΑΙ CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Έτσι, οι προγραμματιστές χρησιμοποιούν βάσεις δεδομένων ως ένα εργαλείο για να αποθηκεύσετε και να οργανώσετε 5 00:00:11,620 --> 00:00:13,620 επίμονη δεδομένα μας μέσα στους πίνακες. 6 00:00:13,620 --> 00:00:18,960 Αυτό σημαίνει ότι τα δεδομένα σας είναι αποθηκευμένα σε μη πτητικά διάμεσοι, όπως ένα σκληρό δίσκο, 7 00:00:18,960 --> 00:00:22,940 και ακόμη και όταν ο υπολογιστής είναι απενεργοποιημένος, τα δεδομένα είναι ακόμα άθικτο. 8 00:00:22,940 --> 00:00:29,530 Και, όπως προγραμματιστές, τα προγράμματα μας χρησιμοποιούν βάσεις δεδομένων για σενάρια, όπως η αποθήκευση 9 00:00:29,530 --> 00:00:32,890 πληροφορίες από το χρήστη φόρμες, κοιτώντας ψηλά απογραφή, 10 00:00:32,890 --> 00:00:36,210 ενημέρωση ή πληροφορίες σχετικά με το τι ιστοσελίδες εμφάνιση. 11 00:00:37,150 --> 00:00:40,070 Αλλά πώς μπορούμε πραγματικά να αλληλεπιδρούν με τη βάση δεδομένων μας, 12 00:00:40,070 --> 00:00:43,150 ή τι χρησιμοποιούμε για να διαβάσετε, να αποθηκεύσετε, να διαγράψετε, 13 00:00:43,150 --> 00:00:46,070 και να ενημερώσετε τα δεδομένα μας σε αυτούς τους πίνακες της βάσης δεδομένων; 14 00:00:47,280 --> 00:00:49,700 Λοιπόν, η απάντηση είναι ότι χρησιμοποιούμε ένα ειδικό τύπο της γλώσσας βάσης δεδομένων 15 00:00:49,700 --> 00:00:53,400 το οποίο αλληλεπιδρά άμεσα με τους πίνακες της βάσης δεδομένων μας. 16 00:00:53,400 --> 00:00:56,740 Το όνομά του είναι Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 ή ό, τι αναφέρεται ως SQL. 19 00:01:00,740 --> 00:01:05,100 >> Τώρα, [Se-QUEL], ή SQL, δεν είναι μια γλώσσα προγραμματισμού, 20 00:01:05,100 --> 00:01:08,580 αλλά αντ 'αυτού, είναι μια γλώσσα που παρέχει ένα τυποποιημένο σύνολο των εντολών 21 00:01:08,580 --> 00:01:13,520 για την ανάκτηση και διαχείριση των δεδομένων από μία ποικιλία συστημάτων διαχείρισης βάσης δεδομένων. 22 00:01:13,520 --> 00:01:17,630 Για τους σκοπούς του CS50, θα πάμε πάνω από τέσσερις βασικές εντολές: 23 00:01:17,630 --> 00:01:21,210 επιλέξτε, εισάγετε, να ανανεώσετε και να διαγράψετε. 24 00:01:21,210 --> 00:01:26,230 Επιπλέον, θα χρησιμοποιεί ένα web interface βάσης δεδομένων που ονομάζεται phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 που εγκαθίσταται στη συσκευή να γράψετε SQL δηλώσεις μας. 26 00:01:30,830 --> 00:01:33,050 Έτσι, για να σας βοηθήσει να θυμάστε αυτές τις εντολές, 27 00:01:33,050 --> 00:01:37,080 Έχω φέρει μερικά cupcakes σε ένα ντουλάπι για να βοηθήσει με τα σενάρια μας. 28 00:01:39,650 --> 00:01:42,210 Ας υποθέσουμε ότι έχετε μια βάση δεδομένων του cupcake, 29 00:01:42,210 --> 00:01:44,490 όπου μπορείτε να αποθηκεύσετε όλες τις πληροφορίες σχετικά με cupcakes σας. 30 00:01:44,490 --> 00:01:48,220 Τώρα, βάσεις δεδομένων μπορεί να περιέχει πολλούς πίνακες 31 00:01:48,220 --> 00:01:50,950 και οι ίδιοι οι πίνακες μπορεί να περιέχει πολλές στήλες. 32 00:01:50,950 --> 00:01:57,020 Μέσα βάση δεδομένων cupcake μας, έχουμε έναν πίνακα που ονομάζεται cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Ο πίνακας αυτός θα χρησιμοποιηθεί για την αποθήκευση όλων των πληροφοριών σχετικά με cupcakes 34 00:02:00,500 --> 00:02:02,990 ότι είναι, επίσης, στο ντουλάπι σας. 35 00:02:02,990 --> 00:02:07,770 Οι στήλες που είναι μέσα σας τραπέζι αντιπροσωπεύουν τα χαρακτηριστικά ενός cupcake. 36 00:02:07,770 --> 00:02:14,560 Για παράδειγμα, οι στήλες του cupcake_cupboard του 37 00:02:14,560 --> 00:02:15,920 Κέικ ID, CakeType, CakeColor, και CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Αυτό boolean-δακτυλογραφημένο στήλη χρησιμοποιείται για να προσδιοριστεί εάν το κέικ είναι ωραίο ή όχι ωραία. 39 00:02:23,040 --> 00:02:26,560 Εμείς πάμε για να ξεκινήσει με το γράψιμο μια επίλεκτη δήλωση. 40 00:02:26,560 --> 00:02:32,160 Τα επιλεγμένα δηλώσεις που χρησιμοποιούνται για την ανάκτηση δεδομένων από μια συγκεκριμένη πίνακα βάσης δεδομένων. 41 00:02:32,160 --> 00:02:34,890 Σε αυτό το σενάριο, θέλουμε να γνωρίζουμε τα πάντα 42 00:02:34,890 --> 00:02:39,080 για όλα τα cupcakes που υπάρχουν στο ντουλάπι μας. 43 00:02:39,080 --> 00:02:48,670 Η σύνταξη για να γίνει αυτό είναι η "Επιλογή" αστέρι χώρου, ή *, το διάστημα από το διάστημα τραπέζι μας, 44 00:02:48,670 --> 00:02:52,050 που είναι cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Ας πάμε μπροστά και να εκτελέσει αυτό. 46 00:02:56,670 --> 00:03:00,140 >> Όπως μπορούμε να δούμε, αυτά είναι όλα τα cupcakes στο ντουλάπι μας. 47 00:03:00,140 --> 00:03:05,110 Είναι σημαντικό να σημειωθεί ότι *, ή αστερίσκο, είναι μια άγρια ​​κάρτα χαρακτήρα 48 00:03:05,110 --> 00:03:08,830 που υποδηλώνει τη συγκέντρωση όλων των στηλών του πίνακα κάποια. 49 00:03:08,830 --> 00:03:13,650 Κανονικά, μπορούμε να έχουμε πρόσβαση μια συγκεκριμένη στήλη ή στήλες 50 00:03:13,650 --> 00:03:16,950 * με την αντικατάσταση με το πραγματικό όνομα της στήλης. 51 00:03:16,950 --> 00:03:21,220 Αν θέλουμε πολλαπλές στήλες, αλλά όχι όλα, μπορούμε να το επιτύχουμε αυτό 52 00:03:21,220 --> 00:03:25,620 γράφοντας τα ονόματα των στηλών οριοθέτηση κάθε στήλη με ένα κόμμα. 53 00:03:25,620 --> 00:03:28,620 Για παράδειγμα, ας ανακτήσει μόνο το CakeId και CakeType στον πίνακα cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Η σύνταξη για να γίνει αυτό είναι: SELECT κόμμα χώρος CakeID 55 00:03:38,370 --> 00:03:44,370 CakeType χώρο από τον πίνακα, cupcake_cupboard μας. 56 00:03:44,370 --> 00:03:46,370 Ας πάμε μπροστά και να εκτελέσει αυτό. 57 00:03:49,340 --> 00:03:52,670 Και εδώ, έχουμε τώρα μόνο τις δύο στήλες που καθορίζονται 58 00:03:52,670 --> 00:03:54,670 για κάθε cupcake στο ντουλάπι μας. 59 00:03:54,670 --> 00:03:57,710 Μπορούμε επίσης να βελτιώσετε τα αποτελέσματα των αιτημάτων μας, καθορίζοντας 60 00:03:57,710 --> 00:04:00,910 το "Πού" ρήτρα αμέσως μετά το όνομα του πίνακα. 61 00:04:02,000 --> 00:04:05,410 Για παράδειγμα, φαίνεται να υπάρχει μια cupcake στο ντουλάπι μας 62 00:04:05,410 --> 00:04:08,660 δηλαδή, καλά, όχι και τόσο ωραίο αναζητούν. 63 00:04:08,660 --> 00:04:13,950 Ας καταλάβουμε όλα τα cupcakes στο ντουλάπι μας που είναι, αλλά όχι τόσο ωραίο αναζητούν 64 00:04:13,950 --> 00:04:16,110 χρησιμοποιώντας το "Πού" ρήτρα. 65 00:04:16,110 --> 00:04:26,390 Η σύνταξη για να γίνει αυτό είναι: SELECT * χώρος χώρος ΑΠΟ cupcake_cupboard χώρο 66 00:04:26,390 --> 00:04:34,080 χώρο όπου ο χώρος όρους στήλη μας, σε αυτή την περίπτωση CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 και η boolean τιμή FALSE. 68 00:04:36,900 --> 00:04:42,750 Είναι σημαντικό να σημειωθεί ότι αν χρησιμοποιείτε χορδές, θα πρέπει να το βάλετε μέσα σε μονά εισαγωγικά. 69 00:04:42,750 --> 00:04:49,620 Αυτό ισχύει για όλες τις χορδές σε SQL, ή, σε βάση δεδομένων SQL όρους, παραλλαγή χαρακτήρες 70 00:04:49,620 --> 00:04:51,620 γνωστή ως varchar τύπο δεδομένων. 71 00:04:51,620 --> 00:04:57,660 Σε αυτή την περίπτωση, χρησιμοποιούμε Σωστό ή Λάθος, το οποίο είναι μια boolean τιμή και όχι μια σειρά. 72 00:04:59,120 --> 00:05:00,660 Ας πάμε μπροστά και να εκτελέσει αυτή την εντολή. 73 00:05:00,660 --> 00:05:05,340 >> Lo και behold, είναι η περίπτωση που έχουμε 1 σοκολάτα 74 00:05:05,340 --> 00:05:07,920 ωραία έτσι δεν cupcake στο ντουλάπι μας. 75 00:05:09,620 --> 00:05:11,460 Στη συνέχεια, θα πάμε να γράψει μια δήλωση ένθετο. 76 00:05:11,460 --> 00:05:15,560 Οι δηλώσεις Εισαγωγή χρησιμοποιείται για την εισαγωγή ή να προσθέσετε 77 00:05:15,560 --> 00:05:17,770 πρόσθετες γραμμές δεδομένων σε πίνακα της βάσης δεδομένων σας. 78 00:05:17,770 --> 00:05:23,160 Επανεξέταση σενάριο μας, ας υποθέσουμε ότι έχουμε κάνει μόλις ένα ολοκαίνουργιο cupcake. 79 00:05:25,910 --> 00:05:30,080 Από τη στιγμή που οργανώνονται πολύ cupcake τρώγοντες, θα πάμε να πρέπει να εισαγάγετε αυτό το νέο cupcake 80 00:05:30,080 --> 00:05:32,330 στον πίνακα cupcake_cupboard μας. 81 00:05:32,330 --> 00:05:40,690 Η σύνταξη για να γίνει αυτό είναι η εξής: Τοποθετήστε το χώρο σε χώρο τραπέζι μας, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, το διάστημα (, 83 00:05:46,830 --> 00:05:51,060 και εδώ ορίζουμε τα ονόματα στηλών, που οριοθετείται από ένα κόμμα, 84 00:05:51,060 --> 00:05:59,790 CakeType κόμμα CakeColor κόμμα CakeIsNice) χώρο. 85 00:05:59,790 --> 00:06:06,540 Μετά από αυτό, γράφουμε τη λέξη χώρου ΑΞΙΕΣ (και εδώ 86 00:06:06,540 --> 00:06:12,170 μπαίνουμε στην τιμή για κάθε στήλη αντίστοιχα, και οριοθετείται από ένα κόμμα. 87 00:06:12,170 --> 00:06:17,830 Ενιαία απόσπασμα, επειδή είναι όλες οι τιμές varchar θα περιβάλλουν τους σε μονά εισαγωγικά, 88 00:06:17,830 --> 00:06:26,780 ΦΩΣ κόμμα «κόμμα» φυστικοβούτυρο ΚΑΦΕ 'True. 89 00:06:26,780 --> 00:06:30,480 Τώρα, είναι σημαντικό να δοθεί σε κάθε γραμμή έναν μοναδικό αριθμό για να προσδιορίσει τον εαυτό της. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing μια στήλη αυτή παρέχει ως 91 00:06:33,660 --> 00:06:37,410  «Δεν υπάρχουν δύο ίδιες οι ταυτότητες μπορεί ποτέ να υπάρχουν σε αυτόν τον πίνακα." 92 00:06:37,410 --> 00:06:39,480 Ας πάμε μπροστά και να εκτελέσει. 93 00:06:39,480 --> 00:06:45,380 Εκεί πάμε, όλα τα οργανωμένα. 94 00:06:49,720 --> 00:06:52,100 >> Η επόμενη δήλωση SQL που θα γράψουμε είναι μια δήλωση ενημέρωσης. 95 00:06:52,100 --> 00:06:55,650 Η δήλωση ενημέρωσης μπορεί να χρησιμοποιηθεί για να τροποποιήσει τα δεδομένα εντός μιας στήλης 96 00:06:55,650 --> 00:06:58,440 για κάθε υφιστάμενη γραμμή του πίνακα της βάσης δεδομένων σας. 97 00:06:59,670 --> 00:07:03,420 Νωρίτερα στο σενάριο μας, χρησιμοποιώντας μια δήλωση επιλογής, εντοπίσαμε ένα cupcake 98 00:07:03,420 --> 00:07:08,300 στο τραπέζι cupcake_cupboard μας CakeIsNice αξία των οποίων ήταν ψευδείς. 99 00:07:08,300 --> 00:07:12,050 Ας υποθέσουμε ότι, ενώ φυστίκι cupcake μας ήταν βούτυρο στο φούρνο, 100 00:07:12,050 --> 00:07:15,790 κάναμε όχι και τόσο ωραία cupcake μας πολύ ωραία. 101 00:07:18,020 --> 00:07:22,240 Όντας εξαιρετικά οργανωμένη έτσι, θέλουμε cupcake μας να αντικατοπτρίζει αυτή την τιμή 102 00:07:22,240 --> 00:07:24,240 στον πίνακα cupcake_cupboard μας. 103 00:07:24,240 --> 00:07:28,710 Ως εκ τούτου, ας ενημερώσει cupcake σοκολάτα μας στη βάση δεδομένων ώστε να αντικατοπτρίζει αυτό. 104 00:07:28,710 --> 00:07:39,720 Η σύνταξη είναι: UPDATE χώρο τραπέζι μας, cupcake_cupboard, space space SET 105 00:07:39,720 --> 00:07:44,240 η στήλη που θέλουμε να αλλάξουμε, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Στη συνέχεια, εδώ δίνουμε νέα αξία True χώρο μας. 107 00:07:49,210 --> 00:07:54,290 Τώρα, επειδή δεν θέλουμε να ενημερώσετε όλες τις γραμμές με αυτή την τιμή, 108 00:07:54,290 --> 00:07:57,400 θέλουμε να παρέχουμε ένα "Όπου" ρήτρα που θα μας εντοπίσουν 109 00:07:57,400 --> 00:07:59,830 με την ακριβή σειρά που θέλετε να τροποποιήσετε. 110 00:07:59,830 --> 00:08:03,690 Σε αυτή την περίπτωση, γνωρίζουμε ότι υπάρχει μόνο ένα cupcake 111 00:08:03,690 --> 00:08:06,670 αυτό έχει μια τιμή CakeIsNice Λάθος. 112 00:08:06,670 --> 00:08:11,030 Επιπλέον, θα πρέπει επίσης να διασφαλίσουμε ότι θα έχουν τη σωστή ενημέρωση σειρά 113 00:08:11,030 --> 00:08:13,030 με τη χρήση του "Και" ρήτρα. 114 00:08:14,340 --> 00:08:17,270 Χρησιμοποιούμε το "Και" ρήτρα για να βελτιώσετε την απορία μας περαιτέρω. 115 00:08:17,270 --> 00:08:20,380 Σε αυτή την περίπτωση, επειδή γνωρίζουμε ότι η σοκολάτα είναι cupcake, 116 00:08:20,380 --> 00:08:23,160 θα χρησιμοποιήσουμε αυτό το CakeType στήλη. 117 00:08:23,160 --> 00:08:31,500 Όπου ο χώρος εξαρτάται χώρο στήλη μας CakeIsNice χώρο = False, 118 00:08:31,500 --> 00:08:38,330 και χώρο CakeType = 'CHOCOLATE ». 119 00:08:38,330 --> 00:08:41,880 Έτσι, βάζοντας όλοι μαζί, αυτή η δήλωση ενημέρωση λέει 120 00:08:41,880 --> 00:08:44,670 βρείτε όλα τα cupcakes cupcake στο ντουλάπι μας, 121 00:08:44,670 --> 00:08:50,520 και αν υπάρχει ένα cupcake των οποίων CakeIsNice στήλη περιέχει την τιμή False 122 00:08:50,520 --> 00:08:54,130 και CakeType περιέχει η σοκολάτα αξία, 123 00:08:54,130 --> 00:08:58,240 θέλουμε να ενημερώσετε την συγκεκριμένη τιμή CakeIsNice σειρές σε True. 124 00:08:58,240 --> 00:09:01,140 Έτσι, πάμε μπροστά και να εκτελέσει τη δήλωση. 125 00:09:03,860 --> 00:09:05,860 Και τώρα, είμαστε οργανωμένοι. 126 00:09:06,650 --> 00:09:09,220 >> Όλη αυτή η συζήτηση των cupcakes με έχει κάνει λίγο πεινασμένοι. 127 00:09:09,220 --> 00:09:11,360 Νομίζω ότι θα πρέπει να βοηθήσει τον εαυτό μου σε ένα. 128 00:09:11,360 --> 00:09:17,670 Αλλά αν τρώω πραγματικά αυτό το cupcake, θα πρέπει τουλάχιστον να αφαιρέσει, επίσης, την ύπαρξη του 129 00:09:17,670 --> 00:09:19,670  από τον πίνακα cupcake_cupboard μας. 130 00:09:20,650 --> 00:09:22,590 Για να το κάνετε αυτό, θα χρησιμοποιήσουμε το "Διαγραφή" δήλωση. 131 00:09:22,590 --> 00:09:27,400 Η "Διαγραφή" δήλωση μπορεί να χρησιμοποιηθεί για την απομάκρυνση όλων ή ορισμένων γραμμών από τον πίνακα. 132 00:09:27,400 --> 00:09:29,920 Εάν επιθυμείτε να αφαιρέσετε κάποια συγκεκριμένη γραμμή από τον πίνακα, 133 00:09:29,920 --> 00:09:34,360 τότε θα πρέπει να παράσχει «Όπου" ρήτρα, προσδιορίζοντας έτσι μια στήλη 134 00:09:34,360 --> 00:09:37,660 αυτό θα πρέπει να είναι μοναδικό για την σειρά που θέλετε να αφαιρέσετε. 135 00:09:37,660 --> 00:09:47,370 Αυτή είναι η σύνταξη: DELETE χώρο από το χώρο τραπέζι μας, cupcake_cupboard, το διάστημα. 136 00:09:47,370 --> 00:09:51,760 Τώρα, σε αυτό το σημείο, κάθε φορά που αυτό είναι τώρα στην διαγραφή δήλωσή σας 137 00:09:51,760 --> 00:09:54,240 θέλετε να είστε πολύ προσεκτικοί. 138 00:09:54,240 --> 00:09:59,970 Για παράδειγμα, αν θέλετε να εκτελέσετε αυτό το ερώτημα, όπως είναι, χωρίς να παρέχει κάποια "Πού" ρήτρα 139 00:09:59,970 --> 00:10:04,500 Θα χάσετε όλα τα δεδομένα σε αυτόν τον πίνακα cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 αλλά επειδή ξέρω ήδη ότι τα αναγνωριστικά τούρτα μου είναι μοναδική, θα χρησιμοποιήσω 141 00:10:09,590 --> 00:10:12,410 το κόκκινο κέικ βελούδου ID για το "Πού" ρήτρα μου. 142 00:10:14,550 --> 00:10:20,670 Όπου ο χώρος στήλη μας, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Επειδή αυτό είναι μια ακέραια τιμή δεν υπάρχει καμία ανάγκη να την περιβάλλουν σε μονά εισαγωγικά. 144 00:10:25,010 --> 00:10:27,020 Έτσι, ας εκτελέσει τη δήλωση. 145 00:10:33,560 --> 00:10:35,990 Λοιπόν, τώρα που έχουμε σκούπισε την ύπαρξη αυτού του cupcake 146 00:10:35,990 --> 00:10:40,360 από τον πίνακα cupcake_cupboard μας, έχουμε μόνο ένα πράγμα αριστερά: 147 00:10:41,680 --> 00:10:43,680 Κάντε το εξαφανίζονται. 148 00:10:43,680 --> 00:10:46,990 Είμαι Christopher Βαρθολομαίος. Αυτό είναι CS50.