MySQL AUTO_INCREMENT με Παραδείγματα
Τι είναι η αυτόματη αύξηση;
Η Αυτόματη Αύξηση είναι μια συνάρτηση που λειτουργεί σε τύπους αριθμητικών δεδομένων. Δημιουργεί αυτόματα διαδοχικές αριθμητικές τιμές κάθε φορά που μια εγγραφή εισάγεται σε έναν πίνακα για ένα πεδίο που ορίζεται ως αυτόματη αύξηση.
Πότε χρησιμοποιείται η αυτόματη αύξηση;
Στο μάθημα για την κανονικοποίηση της βάσης δεδομένων, εξετάσαμε πώς μπορούν να αποθηκευτούν δεδομένα με ελάχιστο πλεονασμό, αποθηκεύοντας δεδομένα σε πολλούς μικρούς πίνακες, που σχετίζονται μεταξύ τους χρησιμοποιώντας πρωτεύοντα και ξένα κλειδιά.
Ένα πρωτεύον κλειδί πρέπει να είναι μοναδικό καθώς προσδιορίζει μοναδικά μια σειρά σε μια βάση δεδομένων. Αλλά, πώς μπορούμε να διασφαλίσουμε ότι το πρωτεύον κλειδί είναι πάντα μοναδικό; Μία από τις πιθανές λύσεις θα ήταν η χρήση ενός τύπου για τη δημιουργία του πρωτεύοντος κλειδιού, ο οποίος ελέγχει την ύπαρξη του κλειδιού στον πίνακα, πριν προσθέσει δεδομένα. Αυτό μπορεί να λειτουργεί καλά, αλλά όπως μπορείτε να δείτε η προσέγγιση είναι πολύπλοκη και όχι αλάνθαστη. Για να αποφύγουμε τέτοια πολυπλοκότητα και να διασφαλίσουμε ότι το πρωτεύον κλειδί είναι πάντα μοναδικό, μπορούμε να χρησιμοποιήσουμε MySQLΛειτουργία αυτόματης αύξησης για τη δημιουργία πρωτευόντων κλειδιών. Η αυτόματη αύξηση χρησιμοποιείται με τον τύπο δεδομένων INT. Ο τύπος δεδομένων INT υποστηρίζει τόσο υπογεγραμμένες όσο και μη υπογεγραμμένες τιμές. Οι ανυπόγραφοι τύποι δεδομένων μπορούν να περιέχουν μόνο θετικούς αριθμούς. Ως βέλτιστη πρακτική, συνιστάται να ορίσετε τον ανυπόγραφο περιορισμό στο πρωτεύον κλειδί αυτόματης αύξησης.
Σύνταξη αυτόματης αύξησης
Ας δούμε τώρα το σενάριο που χρησιμοποιήθηκε για τη δημιουργία του πίνακα κατηγοριών ταινιών.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Παρατηρήστε το "AUTO_INCREMENT" στο πεδίο κατηγορίας_αναγνωριστικό. Αυτό προκαλεί το αναγνωριστικό κατηγορίας να δημιουργείται αυτόματα κάθε φορά που εισάγεται μια νέα σειρά στον πίνακα. Δεν παρέχεται κατά την εισαγωγή δεδομένων στον πίνακα, MySQL το δημιουργεί.
Από προεπιλογή, η αρχική τιμή για το AUTO_INCREMENT είναι 1 και θα αυξάνεται κατά 1 για κάθε νέα εγγραφή
Ας εξετάσουμε τα τρέχοντα περιεχόμενα του πίνακα κατηγοριών.
SELECT * FROM `categories`;
Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα.
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
Ας εισαγάγουμε τώρα μια νέα κατηγορία στον πίνακα κατηγοριών .
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Εκτέλεση του παραπάνω σεναρίου έναντι του myflixdb in MySQL πάγκος εργασίας μας δίνει τα ακόλουθα αποτελέσματα που φαίνονται παρακάτω.
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
9 | Cartoons | NULL |
Σημειώστε ότι δεν παρέχουμε το αναγνωριστικό κατηγορίας. MySQL το δημιούργησε αυτόματα για εμάς επειδή το αναγνωριστικό κατηγορίας ορίζεται ως αυτόματη αύξηση.
Εάν θέλετε να λάβετε το τελευταίο αναγνωριστικό εισαγωγής που δημιουργήθηκε από MySQL, μπορείτε να χρησιμοποιήσετε τη συνάρτηση LAST_INSERT_ID για να το κάνετε αυτό. Το σενάριο που εμφανίζεται παρακάτω λαμβάνει το τελευταίο αναγνωριστικό που δημιουργήθηκε.
SELECT LAST_INSERT_ID();
Η εκτέλεση της παραπάνω δέσμης ενεργειών δίνει τον τελευταίο αριθμό αυτόματης αύξησης που δημιουργήθηκε από το ερώτημα INSERT. Τα αποτελέσματα φαίνονται παρακάτω.
Σύνοψη
- Το χαρακτηριστικό Auto increment όταν καθορίζεται σε μια στήλη με τύπους αριθμητικών δεδομένων, δημιουργεί αριθμούς διαδοχικά κάθε φορά που προστίθεται μια νέα σειρά στη βάση δεδομένων.
- Η αυτόματη αύξηση χρησιμοποιείται συνήθως για τη δημιουργία πρωτευόντων κλειδιών.
- Ο καθορισμένος τύπος δεδομένων στην Αυτόματη προσαύξηση θα πρέπει να είναι αρκετά μεγάλος ώστε να χωράει πολλές εγγραφές. Ο ορισμός του TINYINT ως τύπου δεδομένων για ένα πεδίο αυτόματης αύξησης περιορίζει τον αριθμό των εγγραφών που μπορούν να προστεθούν στον πίνακα μόνο σε 255, καθώς οποιεσδήποτε τιμές πέραν αυτού δεν θα γίνονται δεκτές από τον τύπο δεδομένων TINYINT.
- Θεωρείται καλή πρακτική ο καθορισμός του ανυπόγραφου περιορισμού στα κύρια κλειδιά αυτόματης αύξησης για να αποφευχθεί η ύπαρξη αρνητικών αριθμών.
- Όταν μια σειρά διαγράφεται από έναν πίνακα, το αναγνωριστικό της αυτόματης αύξησης δεν χρησιμοποιείται ξανά. MySQL συνεχίζει να δημιουργεί νέους αριθμούς διαδοχικά.
- Από προεπιλογή, η αρχική τιμή για το AUTO_INCREMENT είναι 1 και θα αυξάνεται κατά 1 για κάθε νέα εγγραφή
- Για να αφήσετε την ακολουθία AUTO_INCREMENT να ξεκινά με άλλη τιμή, χρησιμοποιήστε AUTO_INCREMENT = 10