MYSQL – ALTER, DROP, RENAME, MODIFY
Τι είναι η εντολή ALTER;
Οπως λέει και το ρητό Η αλλαγή είναι η μόνη σταθερά
Με τον καιρό αλλάζουν και οι επιχειρηματικές απαιτήσεις. Καθώς οι επιχειρηματικές απαιτήσεις αλλάζουν, τα σχέδια βάσεων δεδομένων πρέπει επίσης να αλλάξουν.
MySQL παρέχει το ALTER λειτουργία που μας βοηθά ενσωματώσει τις αλλαγές στον ήδη υπάρχοντα σχεδιασμό της βάσης δεδομένων.
Η εντολή alter χρησιμοποιείται για την τροποποίηση μιας υπάρχουσας βάσης δεδομένων, πίνακα, προβολής ή άλλων αντικειμένων βάσης δεδομένων που μπορεί να χρειαστεί να αλλάξουν κατά τη διάρκεια του κύκλου ζωής μιας βάσης δεδομένων.
Ας υποθέσουμε ότι έχουμε ολοκληρώσει το σχεδιασμό της βάσης δεδομένων μας και έχει υλοποιηθεί. Οι χρήστες της βάσης δεδομένων μας τη χρησιμοποιούν και στη συνέχεια συνειδητοποιούν ότι ορισμένες από τις ζωτικής σημασίας πληροφορίες είχαν παραλειφθεί στη φάση του σχεδιασμού. Δεν θέλουν να χάσουν τα υπάρχοντα δεδομένα αλλά θέλουν απλώς να ενσωματώσουν τις νέες πληροφορίες. Η εντολή alter είναι χρήσιμη σε τέτοιες περιπτώσεις. Μπορούμε να χρησιμοποιήσουμε την εντολή alter για να αλλάξουμε τον τύπο δεδομένων ενός πεδίου από συμβολοσειρά ας πούμε σε αριθμητικό, να αλλάξουμε το όνομα του πεδίου σε νέο όνομα ή ακόμα και να προσθέσουμε μια νέα στήλη σε έναν πίνακα.
Alter – σύνταξη
Η βασική σύνταξη που χρησιμοποιείται για την προσθήκη μιας στήλης σε έναν ήδη υπάρχοντα πίνακα φαίνεται παρακάτω
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
ΕΔΩ
- "ΑΛΛΟΣ ΠΙΝΑΚΑ "όνομα_πίνακα"" είναι η εντολή που λέει MySQL διακομιστή για να τροποποιήσει τον πίνακα με το όνομα "table_name".
- "ΠΡΟΣΘΗΚΗ ΣΤΗΛΗΣ "όνομα_στήλης" "τύπος_δεδομένων"" είναι η εντολή που λέει MySQL διακομιστή για να προσθέσετε μια νέα στήλη με το όνομα "column_name" με τύπο δεδομένων "data_type".
Ας υποθέσουμε ότι το Myflix εισήγαγε την ηλεκτρονική χρέωση και πληρωμές. Για το σκοπό αυτό, μας ζητήθηκε να προσθέσουμε ένα πεδίο για τον αριθμό της πιστωτικής κάρτας στον πίνακα μελών μας. Μπορούμε να χρησιμοποιήσουμε την εντολή ALTER για να το κάνουμε αυτό. Ας δούμε πρώτα τη δομή του πίνακα μελών πριν κάνουμε οποιεσδήποτε τροποποιήσεις. Το σενάριο που φαίνεται παρακάτω μας βοηθά να το κάνουμε αυτό.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Μπορούμε να χρησιμοποιήσουμε το σενάριο που φαίνεται παρακάτω για να προσθέσουμε ένα νέο πεδίο στον πίνακα μελών.
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
Εκτέλεση του παραπάνω σεναρίου στο MySQL έναντι του Myflixdb προσθέτει μια νέα στήλη με το όνομα αριθμός πιστωτικής κάρτας στον πίνακα μελών με το VARCHAR ως τύπο δεδομένων. Η εκτέλεση του σεναρίου στηλών εμφάνισης μας δίνει τα ακόλουθα αποτελέσματα.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
Όπως μπορείτε να δείτε από τα αποτελέσματα που επιστράφηκαν, ο αριθμός πιστωτικής κάρτας έχει προστεθεί στον πίνακα μελών. Τα στοιχεία που περιέχονται στα στοιχεία των μελών δεν επηρεάζονται από την προσθήκη της νέας στήλης.
ΤΙ ΕΙΝΑΙ Η ΕΝΤΟΛΗ ΑΠΟΣΤΟΛΗΣ;
Η εντολή DROP χρησιμοποιείται για
- Διαγραφή βάσης δεδομένων από MySQL διακομιστής
- Διαγράψτε ένα αντικείμενο (όπως Πίνακας, Στήλη) από μια βάση δεδομένων.
Ας δούμε τώρα πρακτικά παραδείγματα που χρησιμοποιούν την εντολή DROP.
Στο προηγούμενο παράδειγμά μας στην Εντολή Alter, προσθέσαμε μια στήλη με το όνομα αριθμός πιστωτικής κάρτας στον πίνακα μελών.
Ας υποθέσουμε ότι η λειτουργία ηλεκτρονικής χρέωσης θα διαρκέσει λίγο και θέλουμε να ΑΠΟΡΡΙΨΟΥΜΕ τη στήλη της πιστωτικής κάρτας
Μπορούμε να χρησιμοποιήσουμε το παρακάτω σενάριο
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
Η εκτέλεση του παραπάνω σεναρίου αφαιρεί τη στήλη credit_card_number από τον πίνακα μελών
Ας δούμε τώρα τις στήλες στον πίνακα μελών για να επιβεβαιώσουμε εάν η στήλη μας έχει απορριφθεί.
SHOW COLUMNS FROM `members`;
Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Σημειώστε ότι ο αριθμός της πιστωτικής κάρτας έχει αφαιρεθεί από τη λίστα πεδίων.
ΠΤΡΑΠΕΖΙ ΠΤΩΣΗΣ
Η σύνταξη για το DROP ενός πίνακα από τη βάση δεδομένων είναι η εξής -
DROP TABLE `sample_table`;
Ας δούμε ένα παράδειγμα
DROP TABLE `categories_archive`;
Η εκτέλεση της παραπάνω δέσμης ενεργειών διαγράφει από τη βάση δεδομένων μας τον πίνακα με το όνομα `categories_archive`.
ΤΙ ΕΙΝΑΙ Η ΕΝΤΟΛΗ ΜΕΤΟΝΟΜΑΣΙΑ;
Η εντολή μετονομασία χρησιμοποιείται για να αλλάξτε το όνομα ενός υπάρχοντος αντικειμένου βάσης δεδομένων (όπως Πίνακας, Στήλη) σε νέο όνομα.
Η μετονομασία ενός πίνακα δεν τον κάνει να χάσει τα δεδομένα που περιέχονται σε αυτόν.
Σύνταξη:-
Η εντολή μετονομασία έχει την ακόλουθη βασική σύνταξη.
RENAME TABLE `current_table_name` TO `new_table_name`;
Ας υποθέσουμε ότι θέλουμε να μετονομάσουμε τον πίνακα movierentals σε movie_rentals, μπορούμε να χρησιμοποιήσουμε το σενάριο που φαίνεται παρακάτω για να το πετύχουμε.
RENAME TABLE `movierentals` TO `movie_rentals`;
Η εκτέλεση του παραπάνω σεναρίου μετονομάζει τον πίνακα "movierentals" σε "movie_rentals".
Τώρα θα μετονομάσουμε τον πίνακα movie_rentals στο αρχικό του όνομα.
RENAME TABLE `movie_rentals` TO `movierentals`;
ΑΛΛΑΓΗ ΛΕΞΗΣ ΚΛΕΙΔΙΟΥ
Η αλλαγή λέξεων-κλειδιών σάς επιτρέπει
- Αλλαγή ονόματος στήλης
- Αλλαγή τύπου δεδομένων στήλης
- Αλλαγή περιορισμών στήλης
Ας δούμε ένα παράδειγμα. Το πεδίο με πλήρη ονόματα στον πίνακα μελών είναι τύπου δεδομένων varchar και έχει πλάτος 150.
SHOW COLUMNS FROM `members`;
Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Ας υποθέσουμε ότι θέλουμε
- Αλλάξτε το όνομα του πεδίου από "full_names" σε "fullname".
- Αλλάξτε το σε τύπο δεδομένων χαρακτήρα με πλάτος 250
- Προσθέστε έναν περιορισμό NOT NULL
Μπορούμε να το πετύχουμε χρησιμοποιώντας την εντολή αλλαγή ως εξής –
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας έναντι του myflixdb και, στη συνέχεια, η εκτέλεση του σεναρίου στηλών εμφάνισης που δίνεται παραπάνω δίνει τα ακόλουθα αποτελέσματα.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
ΤΡΟΠΟΠΟΙΗΣΗ ΛΕΞΗΣ ΚΛΕΙΔΙΟΥ
Η λέξη-κλειδί TODIFY σας επιτρέπει
- Τροποποίηση τύπου δεδομένων στήλης
- Τροποποίηση περιορισμών στήλης
Στο παραπάνω παράδειγμα CHANGE, έπρεπε να αλλάξουμε το όνομα του πεδίου καθώς και άλλες λεπτομέρειες. Η παράλειψη του ονόματος πεδίου από τη δήλωση CHANGE θα δημιουργήσει ένα σφάλμα. Ας υποθέσουμε ότι μας ενδιαφέρει μόνο να αλλάξουμε τον τύπο δεδομένων και τους περιορισμούς στο πεδίο χωρίς να επηρεάσουμε το όνομα του πεδίου, μπορούμε να χρησιμοποιήσουμε τη λέξη-κλειδί MODIFY για να το πετύχουμε.
Η παρακάτω δέσμη ενεργειών αλλάζει το πλάτος του πεδίου "πλήρες όνομα" από 250 σε 50.
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας έναντι του myflixdb και, στη συνέχεια, η εκτέλεση του σεναρίου στηλών εμφάνισης που δίνεται παραπάνω δίνει τα ακόλουθα αποτελέσματα που φαίνονται παρακάτω.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
ΜΕΤΑ ΤΗ ΛΕΞΗ ΚΛΕΙΔΙ
Ας υποθέσουμε ότι θέλουμε να προσθέσουμε μια νέα στήλη σε μια συγκεκριμένη θέση στον πίνακα.
Μπορούμε να χρησιμοποιήσουμε την εντολή alter μαζί με τη λέξη-κλειδί AFTER.
Το παρακάτω σενάριο προσθέτει το "date_of_registration" αμέσως μετά την ημερομηνία γέννησης στον πίνακα μελών.
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας έναντι του myflixdb και, στη συνέχεια, η εκτέλεση του σεναρίου στηλών εμφάνισης που δίνεται παραπάνω δίνει τα ακόλουθα αποτελέσματα που φαίνονται παρακάτω.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Σύνοψη
- Η εντολή alter χρησιμοποιείται όταν θέλουμε να τροποποιήσουμε μια βάση δεδομένων ή οποιοδήποτε αντικείμενο περιέχεται στη βάση δεδομένων.
- Η εντολή drop χρησιμοποιείται για τη διαγραφή βάσεων δεδομένων από MySQL διακομιστής ή αντικείμενα μέσα σε μια βάση δεδομένων.
- Η εντολή μετονομασία χρησιμοποιείται για την αλλαγή του ονόματος ενός πίνακα σε ένα νέο όνομα πίνακα.
- Η λέξη-κλειδί Αλλαγή σάς επιτρέπει να αλλάξετε το όνομα στήλης, τον τύπο δεδομένων και τους περιορισμούς
- Η λέξη-κλειδί Τροποποίηση σάς επιτρέπει να τροποποιήσετε έναν τύπο δεδομένων στήλης και τους περιορισμούς
- Η λέξη-κλειδί Μετά χρησιμοποιείται για τον καθορισμό της θέσης μιας στήλης σε έναν πίνακα