Σε αυτό το σεμινάριο θα μάθετε πώς να το χρησιμοποιείτε Δήλωση MySQL UPDATEμε σύνταξη και παραδείγματα.
Δήλωση MySQL UPDATEχρησιμοποιείται για την ενημέρωση των υπαρχουσών εγγραφών σε έναν πίνακα στη βάση δεδομένων Δεδομένα MySQL. Υπάρχουν τρεις συντάξεις για την πρόταση UPDATE, ανάλογα με τον τύπο της ενημέρωσης που θέλετε να εκτελέσετε.
Μια απλή μορφή σύνταξης για τη δήλωση UPDATE κατά την ενημέρωση ενός μεμονωμένου πίνακα στη MySQL:
Τώρα η πλήρης σύνταξη για τη δήλωση MySQL UPDATE κατά την ενημέρωση ενός μεμονωμένου πίνακα είναι:
Ή
Η σύνταξη για τη δήλωση UPDATE κατά την ενημέρωση ενός πίνακα με δεδομένα από έναν άλλο πίνακα στη MySQL είναι:
Ή
Η σύνταξη της MySQL για τη δήλωση UPDATE κατά την ενημέρωση πολλών πινάκων είναι:
LOW_PRIORITY - προαιρετικό. Εάν έχει καθοριστεί LOW_PRIORITY, η ενημέρωση θα καθυστερήσει έως ότου δεν υπάρχουν διαδικασίες που διαβάζονται από τον πίνακα. Το LOW_PRIORITY μπορεί να χρησιμοποιηθεί με πίνακες MyISAM, MEMORY και MERGE που χρησιμοποιούν κλείδωμα σε επίπεδο πίνακα.
IGNORE - προαιρετικό. Εάν παρέχεται IGNORE, όλα τα σφάλματα που προέκυψαν κατά την ενημέρωση αγνοούνται. Εάν μια ενημέρωση σε μια σειρά θα έσπασε το πρωτεύον κλειδί ή μοναδικό ευρετήριο, η ενημέρωση σε αυτήν τη γραμμή δεν θα πραγματοποιηθεί.
στήλη1, στήλη 2 είναι οι στήλες που θέλετε να ενημερώσετε.
έκφραση1, έκφραση2 — νέες τιμές για την εκχώρηση στήλης1, στήλης2. Έτσι, στη στήλη 1 εκχωρείται η τιμή της έκφρασης1 , στη στήλη 2 εκχωρείται η τιμή της έκφρασης2 , και ούτω καθεξής.
Όπου προϋποθέσεις - προαιρετικό. Προϋποθέσεις που πρέπει να πληρούνται για να πραγματοποιηθεί η ενημέρωση.
ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ έκφραση - προαιρετικό. Μπορεί να χρησιμοποιηθεί σε συνδυασμό με το LIMIT για την κατάλληλη ταξινόμηση των εγγραφών, περιορίζοντας ταυτόχρονα τον αριθμό των εγγραφών που πρέπει να ενημερωθούν.
LIMIT αριθμός_σειρών - προαιρετικό. Εάν έχει καθοριστεί LIMIT, ελέγχει τον μέγιστο αριθμό εγγραφών για ενημέρωση στον πίνακα. Ο μέγιστος αριθμός εγγραφών που καθορίζεται στο αρχείο number_rows θα ενημερωθεί στον πίνακα.
Ας εξετάσουμε ένα πολύ απλό Παράδειγμα MySQLαίτημα ΕΝΗΜΕΡΩΣΗΣ.
Σε αυτό το παράδειγμα MySQL, η UPDATE ενημέρωσε το πεδίο last_name σε "Ford" στον πίνακα πελατών, όπου customer_id = 500.
Ας δούμε το παράδειγμα ΕΝΗΜΕΡΩΣΗΣ MySQL, όπου μπορείτε να ενημερώσετε περισσότερες από μία στήλες χρησιμοποιώντας μία μόνο δήλωση UPDATE.
Εάν θέλετε να ενημερώσετε πολλές στήλες, μπορείτε να το κάνετε διαχωρίζοντας τα ζεύγη στηλών/τιμών με κόμματα.
Αυτό το παράδειγμα δήλωσης MySQL UPDATE ενημερώθηκε σε "Nevada" και customer_rep σε 23, όπου το customer_id είναι μεγαλύτερο από 200.
Ας δούμε το παράδειγμα UPDATE, το οποίο δείχνει πώς να ενημερώσετε έναν πίνακα με δεδομένα από έναν άλλο πίνακα στη MySQL.
MySQL
Αυτό το παράδειγμα ΕΝΗΜΕΡΩΣΗΣ θα ενημερώσει τον πίνακα πελατών μόνο για όλες τις εγγραφές όπου το αναγνωριστικό πελάτη είναι μεγαλύτερο από 5000. Όταν το όνομα του προμηθευτή από τον πίνακα προμηθευτών αντιστοιχεί στο όνομα του πελάτη από τον πίνακα πελατών, η πόλη από τον πίνακα προμηθευτών θα αντιγραφεί στο πεδίο πόλης του πίνακα πελατών.
Εάν χρειάζεται να αλλάξουμε ή να ενημερώσουμε δεδομένα στη MySQL, μπορούμε να χρησιμοποιήσουμε την εντολή SQL UPDATE για να λειτουργήσει. ,
Ακολουθεί η εντολή UPDATE για την αλλαγή της γενικής σύνταξης SQL δεδομένων φύλλου MySQL:
ΕΝΗΜΕΡΩΣΗ ονόματος πίνακα SET field1=new-value1, field2=new-value2
Όταν χρειάζεται να ενημερώσετε τα δεδομένα που καθορίζονται στις σειρές ενός πίνακα, το INEKE είναι πολύ χρήσιμο.
Γραμμή εντολών για ενημέρωση δεδομένων
Παρακάτω θα ενημερώσουμε το w3big_tbl που καθορίζεται στον πίνακα δεδομένων χρησιμοποιώντας Εντολές SQLΕΝΗΜΕΡΩΣΗ ΙΝΕΚΕ:
Το ακόλουθο παράδειγμα θα ενημερώσει τον πίνακα δεδομένων ως τιμή πεδίου w3big_title w3big_id 3:
# mysql -u root -p κωδικός πρόσβασης; Εισαγάγετε τον κωδικό πρόσβασης:******* mysql> χρησιμοποιήστε το w3big; Η βάση δεδομένων άλλαξε mysql> UPDATE w3big_tbl -> SET w3big_title="Learning JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}Συνάρτηση PHP για χρήση mysql_query() για εκτέλεση Δηλώσεις SQL, μπορείτε να χρησιμοποιήσετε τη δήλωση UPDATE SQL ή το INEKE δεν ισχύει.
Αυτή η λειτουργία στο MySQL> γραμμή εντολώντο αποτέλεσμα της εκτέλεσης εντολών SQL είναι το ίδιο.
Το παρακάτω παράδειγμα θα ενημερώσει τα δεδομένα w3big_id στο πεδίο w3big_title 3.
Αυτό το σεμινάριο MySQL εξηγεί πώς να χρησιμοποιήσετε τη MySQL ΕΝΗΜΕΡΩΣΗ δήλωσηςμε σύνταξη και παραδείγματα.
Στην απλούστερη μορφή της, η σύνταξη για τη δήλωση UPDATE κατά την ενημέρωση ενός πίνακα στη MySQL είναι:
ΕΝΗΜΕΡΩΣΗ ΣΕΤ πίνακα στήλη1 = έκφραση1, στήλη2 = έκφραση2, ... ;
Ωστόσο, η πλήρης σύνταξη για τη δήλωση MySQL UPDATE κατά την ενημέρωση ενός πίνακα είναι:
ΕΝΗΜΕΡΩΣΗ [ LOW_PRIORITY ] [ IGNORE ] SET πίνακα στήλη1 = έκφραση1, στήλη2 = έκφραση2, ... ] ;
Η σύνταξη για τη δήλωση UPDATE κατά την ενημέρωση ενός πίνακα με δεδομένα από έναν άλλο πίνακα στη MySQL είναι:
ΕΝΗΜΕΡΩΣΗ πίνακα1 ΣΕΤ στήλη1 = (ΕΠΙΛΟΓΗ έκφραση1 ΑΠΟ τον πίνακα2 Όπου συνθήκες) ;
Η σύνταξη για τη δήλωση MySQL UPDATE κατά την ενημέρωση πολλών πινάκων είναι:
ΕΝΗΜΕΡΩΣΗ πίνακα1, πίνακα2, ... SET στήλη1 = έκφραση1, στήλη2 = έκφραση2, ... ΠΟΥ πίνακα1.στήλη = πίνακας2.στήλη ΚΑΙ συνθήκες;
Όπου προϋποθέσεις Προαιρετικό. Οι προϋποθέσεις που πρέπει να πληρούνται για να εκτελεστεί η ενημέρωση.
ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ έκφραση Προαιρετικό. Μπορεί να χρησιμοποιηθεί σε συνδυασμό με το LIMIT για την κατάλληλη ταξινόμηση των εγγραφών κατά τον περιορισμό του αριθμού των εγγραφών που πρέπει να ενημερωθούν.
LIMIT αριθμός_σειρές Προαιρετικό. Εάν παρέχεται LIMIT, ελέγχει τον μέγιστο αριθμό εγγραφών για ενημέρωση στον πίνακα. Το πολύ, ο αριθμός των εγγραφών που καθορίζεται από αριθμός_γραμμώνθα ενημερωθεί στον πίνακα. Παράδειγμα - Ενημέρωση μιας στήληςΑς δούμε ένα πολύ απλό παράδειγμα ερωτήματος MySQL UPDATE. ΕΝΗΜΕΡΩΣΗ πελατών SET last_name = "Anderson" WHERE customer_id = 5000;Αυτό το παράδειγμα ΕΝΗΜΕΡΩΣΗΣ MySQL θα ενημερώσει το
στον «Άντερσον» στο
πελάτες
πίνακας όπου το
πελάτη_αναγνωριστικόείναι 5000. Παράδειγμα - Ενημέρωση πολλών στηλώνΑς δούμε ένα παράδειγμα ΕΝΗΜΕΡΩΣΗΣ MySQL όπου μπορεί να θέλετε να ενημερώσετε περισσότερες από μία στήλες με μία μόνο δήλωση UPDATE. ΕΝΗΜΕΡΩΣΗ πελατών SET last_name = "Anderson" WHERE customer_id = 5000;ΕΝΗΜΕΡΩΣΗ πελατών SET state = "California", customer_rep = 32 WHERE customer_id > 100;
κατάσταση
προς «Καλιφόρνια» και το
customer_rep
έως 32 όπου το
είναι μεγαλύτερο από 100.
Παράδειγμα - Ενημέρωση πίνακα με δεδομένα από άλλο πίνακα
Ας δούμε ένα παράδειγμα UPDATE που δείχνει πώς να ενημερώσετε έναν πίνακα με δεδομένα από έναν άλλο πίνακα στη MySQL. Παράδειγμα - Ενημέρωση μιας στήληςΕΝΗΜΕΡΩΣΗ πελατών ΕΝΗΜΕΡΩΣΗ πελατών SET last_name = "Anderson" WHERE customer_id = 5000;είναι μεγαλύτερη από το 2000. Όταν το προμηθευτής_όνομααπό το προμηθευτέςο πίνακας ταιριάζει με το όνομα_πελάτηαπό το Παράδειγμα - Ενημέρωση μιας στήληςτραπέζι, το πόληαπό τον πίνακα προμηθευτών θα αντιγραφούν στο πόληπεδίο στο Παράδειγμα - Ενημέρωση μιας στήληςτραπέζι.
Ας δούμε ένα παράδειγμα ΕΝΗΜΕΡΩΣΗΣ MySQL όπου μπορεί να θέλετε να εκτελέσετε μια ενημέρωση που περιλαμβάνει περισσότερους από έναν πίνακες σε μία πρόταση UPDATE.
ΕΝΗΜΕΡΩΣΗ πελατών, προμηθευτών SET customers.city = προμηθευτές.city ΠΟΥ customers.customer_id = προμηθευτές.supplier_id;
Αυτό το παράδειγμα δήλωσης MySQL UPDATE θα ενημερώσει το πόληπεδίο στο Παράδειγμα - Ενημέρωση μιας στήληςτραπέζι προς το πόληαπό το προμηθευτέςΑς δούμε ένα πολύ απλό παράδειγμα ερωτήματος MySQL UPDATE. ΕΝΗΜΕΡΩΣΗ πελατών SET last_name = "Anderson" WHERE customer_id = 5000;ταιριάζει με το προμηθευτής_αναγνωριστικό.
ΕΝΗΜΕΡΩΣΗ tbl_name SET col_name1=expr1 [, col_name2=expr2, ...]Η δήλωση UPDATE ενημερώνει τις στήλες με τις νέες τιμές τους στις σειρές ενός υπάρχοντος πίνακα. Η δήλωση SET καθορίζει ποιες στήλες πρέπει να τροποποιηθούν και ποιες τιμές πρέπει να οριστούν σε αυτές. Η ρήτρα WHERE, εάν υπάρχει, καθορίζει ποιες σειρές ενημερώνονται. Διαφορετικά, όλες οι σειρές ενημερώνονται. Εάν έχει καθοριστεί μια παράσταση ORDER BY, οι σειρές θα ενημερωθούν με τη σειρά που καθορίζεται σε αυτήν.
Εάν έχει καθοριστεί η λέξη-κλειδί LOW_PRIORITY, η εκτέλεση αυτής της εντολής UPDATE καθυστερεί έως ότου οι άλλοι πελάτες ολοκληρώσουν την ανάγνωση του πίνακα.
Εάν έχει καθοριστεί η λέξη-κλειδί IGNORE, η εντολή ενημέρωσης δεν θα ματαιωθεί ακόμα και αν η ενημέρωση αντιμετωπίσει σφάλμα διπλού κλειδιού. Οι σειρές που προκαλούν διενέξεις δεν θα ενημερωθούν.
Εάν γίνεται πρόσβαση σε μια στήλη από την καθορισμένη έκφραση με το όρισμα tbl_name, τότε η εντολή UPDATE χρησιμοποιεί την τρέχουσα τιμή για αυτήν τη στήλη. Για παράδειγμα, η ακόλουθη εντολή ορίζει τη στήλη ηλικία σε μια τιμή μεγαλύτερη από την τρέχουσα τιμή της:
Mysql> ΕΝΗΜΕΡΩΣΗ ΣΕΤ δεδομένων προσωπικού χαρακτήρα ηλικία=ηλικία+1;
Η εντολή UPDATE εκχωρεί τιμές από αριστερά προς τα δεξιά. Για παράδειγμα, η ακόλουθη εντολή αντιγράφει τη στήλη ηλικία και, στη συνέχεια, την αυξάνει:
Mysql> ΕΝΗΜΕΡΩΣΗ ΣΕΤ δεδομένων προσωπικού χαρακτήρα ηλικία=ηλικία*2, ηλικία=ηλικία+1;
Εάν μια στήλη έχει οριστεί στην τρέχουσα τιμή της, τότε η MySQL το παρατηρεί και δεν την ενημερώνει.
Η εντολή UPDATE επιστρέφει τον αριθμό των σειρών που πραγματικά άλλαξαν. Στην έκδοση 3.22 της MySQL και μεταγενέστερη, η συνάρτηση C API mysql_info() επιστρέφει τον αριθμό των σειρών που βρέθηκαν και ενημερώθηκαν και τον αριθμό των προειδοποιήσεων που εμφανίστηκαν κατά την εκτέλεση του UPDATE.
Στην έκδοση 3.23 της MySQL, μπορείτε να χρησιμοποιήσετε το LIMIT # για να διασφαλίσετε ότι έχει τροποποιηθεί μόνο ο καθορισμένος αριθμός σειρών.
Εντολή UPDATE- κάνει αλλαγές σε ήδη υπάρχουσα εγγραφήή σε πολλαπλές εγγραφές σε έναν πίνακα SQL. Αλλαγές υπάρχουσες αξίεςστον πίνακα ή στον κεντρικό πίνακα της προβολής.
ΕΝΗΜΕΡΩΣΗ Σύνταξης Εντολής
Εντολή UPDATE. Βασικός λέξεις-κλειδιάκαι ΕΝΗΜΕΡΩΣΗ παραμέτρων εντολής
ΟΠΟΥ- ορίζει το εύρος των σειρών που πρέπει να τροποποιηθούν από εκείνες για τις οποίες ισχύει μια συγκεκριμένη συνθήκη ΑΛΗΘΗΣ; Εάν παραληφθεί αυτή η φράση, όλες οι σειρές στον πίνακα ή την προβολή τροποποιούνται.
Όταν εκδίδεται έγκριση, οποιαδήποτε Ενημέρωση ενεργοποίησης, που ορίζεται στον πίνακα.
Υποερωτήματα. Εάν η προσφορά ΣΕΙΡΑπεριέχει υποερώτημα, επιστρέφει ακριβώς μια σειρά για κάθε τροποποιημένη σειρά. Κάθε τιμή στο αποτέλεσμα του υποερωτήματος εκχωρείται στις αντίστοιχες στήλες λίστας σε παρένθεση. Εάν το υποερώτημα δεν επιστρέφει καμία σειρά, η στήλη εκχωρείται ΑΚΥΡΟΣ. Υποερωτήματαμπορεί να επιλέξει δεδομένα από τον τροποποιημένο πίνακα. Προσφορά ΣΕΙΡΑμπορεί να συνδυάσει εκφράσεις και υποερωτήματα.
Παράδειγμα Εντολής ΕΝΗΜΕΡΩΣΗΣ 1
Αλλαγή της βαθμολογίας για όλους τους αγοραστές σε τιμή ίση με 200:
Πελάτες ΣΕΙΡΑβαθμολογία = 200;
Παράδειγμα Εντολής ΕΝΗΜΕΡΩΣΗΣ 2
Η αντικατάσταση μιας τιμής στήλης σε όλες τις σειρές ενός πίνακα χρησιμοποιείται γενικά σπάνια. Επομένως στην ομάδα, όπως και στην ομάδα ΔΙΑΓΡΑΦΩ, μπορείτε να χρησιμοποιήσετε κατηγόρημα. Για να εκτελέσετε την καθορισμένη αντικατάσταση των τιμών της στήλης αξιολόγησης, για όλους τους πελάτες που εξυπηρετούνται από τον πωλητή Giovanni (snum = 1003), θα πρέπει να εισαγάγετε:
Πελάτες ΣΕΙΡΑβαθμολογία = 200 WHERE snum = 1001;
Παράδειγμα Εντολής SQL UPDATE 3
Σε μια πρόταση ΣΕΙΡΑΜπορείτε να καθορίσετε οποιονδήποτε αριθμό τιμών για τις στήλες, διαχωρισμένες με κόμματα:
Emp ΣΕΙΡΑ job = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';
Παράδειγμα Εντολής ΕΝΗΜΕΡΩΣΗ 4
Σε μια πρόταση ΣΕΙΡΑμπορείτε να καθορίσετε μια τιμή NULL χωρίς να χρησιμοποιήσετε κάποια ειδική σύνταξη (όπως IS NULL). Επομένως, εάν θέλετε να ορίσετε όλες τις αξιολογήσεις πελατών από το Λονδίνο (πόλη = 'Λονδίνο') σε NULL, θα εισαγάγετε:
Πελάτες ΣΕΙΡΑβαθμολογία = NULL WHERE city = 'Λονδίνο';
Παράδειγμα Εντολής UPDATE 5
Εξηγεί τη χρήση της ακόλουθης σύνταξης εντολών:
Emp α ΣΕΙΡΑ deptno =
(ΕΠΙΛΕΓΩ deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( ΕΠΙΛΕΓΩ 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( ΕΠΙΛΕΓΩ deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');
Η παραπάνω δήλωση κάνει τα εξής: