MYSQL – ALTER, DROP, RENUMIRE, MODIFICA

⚡ Rezumat inteligent

ALTER, DROP, RENAME și MODIFY sunt MySQL comenzi care remodelează o bază de date după ce aceasta este deja utilizată. Acestea adaugă, elimină, redenumesc și redefinesc obiecte precum tabele și coloane fără a elimina rândurile deja stocate.

  • 🛠️ Comandă ALTER: ALTER TABLE redefinește un obiect care există deja, astfel încât o schemă live absoarbe noile cerințe fără o reconstrucție.
  • ADAUGĂ COLONĂ: ALTER TABLE ADD COLUMN adaugă un câmp, iar rândurile existente păstrează toate valorile pe care le dețineau deja.
  • 🗑️ Comandă DROP: DROP șterge definitiv: o bază de date, un tabel sau o singură coloană prin intermediul comenzii ALTER TABLE DROP COLUMN.
  • 🔁 Comandă RENAME: RENAME TABLE schimbă doar numele unui tabel și nicio informație din interiorul acestuia nu se pierde.
  • ✏️ SCHIMBARE Cuvânt cheie: CHANGE redenumește o coloană și redefinește tipul și constrângerile acesteia într-o singură instrucțiune, deci ambele nume de coloană sunt obligatorii.
  • 🧩 MODIFICARE Cuvânt cheie: MODIFY modifică tipul și constrângerile în timp ce keeping numele, alegerea mai sigură pentru o editare care include doar text.
  • 📍 DUPĂ cuvântul cheie: DUPĂ plasează o coloană nou adăugată într-o poziție aleasă în loc de la sfârșitul tabelului.

MySQL MODIFICARE, ELIMINARE, REDENUMIRE și MODIFICARE

Ce este comanda ALTER în MySQL?

MODIFICA Comanda modifică o bază de date, un tabel, o vizualizare sau alt obiect al bazei de date existente care trebuie modificate pe parcursul ciclului de viață al unei baze de date. Este comanda care permite unei scheme să evolueze după ce a fost deja creată și umplută cu date.

Cerințele de business rareori stagnează, iar designul bazei de date trebuie să se adapteze odată cu ele. Să presupunem că designul bazei de date Myflix a fost implementat și utilizatorii lucrează cu acesta, iar abia atunci echipa își dă seama că au fost omise informații vitale. Nimeni nu vrea să piardă rândurile existente; pur și simplu vor să înregistreze noile informații alături de ele.

ALTER acoperă exact această situație. Poate schimba tipul de date al unui câmp dintr-un șir de caractere într-un număr, poate redenumi un câmp sau poate adăuga o coloană complet nouă într-un tabel, toate acestea în timp ce datele deja stocate în tabel rămân intacte.

Odată ce scopul comenzii este stabilit, următorul pas este sintaxa care o execută.

MySQL Sintaxa ALTER

Sintaxa de bază utilizată pentru a adăuga o coloană la un tabel deja existent este prezentată mai jos.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

AICI

  • „ALTER TABLE `table_name`” este comanda care spune MySQL server pentru a modifica tabelul numit `table_name`.
  • „ADĂUGAȚI COLONA `nume_coloană` `tip_date`” este comanda care spune MySQL server pentru a adăuga o nouă coloană numită `column_name` cu tipul de date `data_type`.

Să presupunem că Myflix a introdus facturarea și plățile online. Pentru a susține acest lucru, trebuie adăugat în tabelul membrilor un câmp pentru numărul cardului de credit. Înainte de a face orice modificare, merită să analizăm structura tabelului așa cum este. Scriptul prezentat mai jos face acest lucru.

SHOW COLUMNS FROM `members`;
Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
nume complete varchar(350) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

💡 Notă despre int(11): Numărul dintre paranteze reprezintă doar lățimea afișajului. MySQL Versiunea 8.0.17 a fost depreciată pentru tipurile întregi, așa că un server modern raportează această coloană pur și simplu ca intDimensiunea spațiului de stocare rămâne neschimbată.

Scriptul prezentat mai jos adaugă noul câmp în tabelul membrilor.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Executarea acestui script în myflixdb adaugă o coloană numită credit_card_number în tabela members cu VARCHAR ca tip de date. Rularea din nou a scriptului SHOW COLUMNS dă următorul rezultat.

Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
nume complete varchar(350) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL
Numărul cărții de credit varchar(25) DA NULL

Rândul evidențiat confirmă faptul că obiectul credit_card_number a fost adăugat în tabelul membrilor, iar datele deja conținute în celelalte coloane nu sunt afectate de adăugare.

Adăugarea unei coloane este doar jumătate din poveste. O schemă trebuie, de asemenea, să scape de obiectele de care nu mai are nevoie, ceea ce este sarcina comenzii DROP.

Ce este comanda DROP în MySQL?

Comanda DROP șterge permanent un obiect. Este utilizată pentru a

  1. Ștergeți o bază de date din MySQL serverul.
  2. Ștergeți un obiect, cum ar fi un tabel sau o coloană, dintr-o bază de date.

⚠️ Atenție: Operația DROP nu este reversibilă. Nici obiectul, nici rândurile din interiorul său nu pot fi recuperate fără o copie de rezervă, așadar executați o comandă SELECT asupra țintei și confirmați mai întâi copia de rezervă.

Picăturăping o coloana

În exemplul ALTER de mai sus, o coloană numită credit_card_number a fost adăugată în tabelul members. Să presupunem că funcția de facturare online este amânată și că acea coloană ar trebui eliminată din nou. Următorul script face acest lucru.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Executarea scriptului elimină coloana credit_card_number din tabelul members. Listarea din nou a coloanelor confirmă rezultatul.

SHOW COLUMNS FROM `members`;
Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
nume complete varchar(350) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

Numărul cardului de credit a dispărut din lista de câmpuri.

DROP TABLE

Sintaxa pentru eliminarea unui tabel întreg dintr-o bază de date este următoarea.

DROP TABLE `sample_table`;

Aplicată unui obiect real, afirmația arată astfel.

DROP TABLE `categories_archive`;

Executarea acesteia șterge tabelul numit `categories_archive` și fiecare rând din interiorul acestuia din baza de date.

DROP BAZA DE DATE

Același cuvânt cheie elimină o întreagă schemă. Adăugarea IF EXISTS elimină eroarea care MySQL se ridică atunci când ținta a dispărut deja, ceea ce este util în scripturile care rulează de mai multe ori.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Eliminarea unui obiect este definitivă. Când obiectul în sine ar trebui să supraviețuiască și doar numele său este greșit, comanda RENAME este instrumentul corect.

Ce este comanda RENAME în MySQL?

Comanda RENAME schimbă numele unui obiect existent în baza de date, cum ar fi un tabel sau o coloană, cu un nume nou. Redenumirea unui tabel nu duce la pierderea datelor conținute în acesta.

Comanda are următoarea sintaxă de bază.

RENAME TABLE `current_table_name` TO `new_table_name`;

Pentru a redenumi tabela movierentals în movie_rentals, se folosește scriptul de mai jos.

RENAME TABLE `movierentals` TO `movie_rentals`;

Executarea acesteia redenumește tabelul `movierentals` în `movie_rentals`. Deoarece redenumirea este doar o schimbare de etichetă, aceeași instrucțiune inversată restaurează numele original.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE gestionează numele unui tabel. Redenumirea unui coloană...iar schimbarea a ceea ce conține este lucrarea cuvântului cheie CHANGE.

SCHIMBĂ cuvântul cheie

Cuvântul cheie CHANGE vă permite să

  1. Schimbarea numelui unei coloane
  2. Schimbarea tipului de date al coloanei
  3. Modificați constrângerile coloanei

Să luăm un exemplu. Câmpul full_names din tabelul members este de tipul de date varchar cu o lățime de 350, așa cum confirmă scriptul de mai jos.

SHOW COLUMNS FROM `members`;
Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
nume complete varchar(350) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

Să presupunem că cerința este de a

  1. Schimbați numele câmpului din „full_names” în „fullname”
  2. Schimbați-l la tipul de date char cu o lățime de 250
  3. Adăugați o constrângere NOT NULL

Toate cele trei editări sunt efectuate printr-o singură instrucțiune CHANGE.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Executarea sa în myflixdb și apoi rularea scriptului SHOW COLUMNS dă următorul rezultat.

Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
Numele complet char (250) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

Coloana se numește acum fullname, conține char(250) și respinge valorile NULL.

MODIFICARE Cuvânt cheie

Cuvântul cheie MODIFY vă permite să

  1. Modificarea tipului de date al coloanei
  2. Modificați constrângerile coloanei

În exemplul CHANGE de mai sus, numele câmpului a trebuit furnizat de două ori, chiar dacă redenumirea era doar o parte a obiectivului. Omiterea numelui câmpului dintr-o instrucțiune CHANGE generează o eroare. Când trebuie ajustate doar tipul de date și constrângerile, iar numele trebuie să rămână nemodificat, MODIFY face treaba cu o singură menționare a coloanei.

Scriptul de mai jos modifică lățimea câmpului „fullname” de la 250 la 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Executarea scriptului în myflixdb și apoi rularea scriptului SHOW COLUMNS dă rezultatul prezentat mai jos.

Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
Numele complet char (50) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

⚠️ Atenție: Restrângerea unei coloane trunchiază datele care nu se mai încadrează. Orice nume mai lung de 50 de caractere este scurtat de această instrucțiune, așadar verificați cea mai lungă valoare existentă cu un SELECT interogare înainte de a micșora un câmp.

MODIFICARE vs. MODIFICARE vs. REDENUMIRE COLOANĂ

Cele trei cuvinte cheie se suprapun, iar alegerea celui greșit este cea mai frecventă sursă de erori în acest domeniu. Tabelul de mai jos le prezintă alăturate.

Cuvânt cheie Redenumește coloana Modifică tipul și constrângerile Numele vechi este necesar Utilizare tipică
SCHIMBARE Da Da Da, plus noul nume Redenumiți și redefiniți într-o singură instrucțiune
MODIFICA Nu Da Nume dat o singură dată Lărgirea, îngustarea sau retestarea unei coloane
REDENUMIRE COLOANĂ Da Nu Da, plus noul nume Doar redenumire, de la MySQL 8.0 înainte

MySQL Versiunea 8.0 a adăugat o a patra opțiune pentru cel mai simplu caz, o redenumire fără nicio redefinire.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Tipul și numele sunt deja stabilite. Întrebarea rămasă este unde se află o nouă coloană în tabel, pe care cuvântul cheie AFTER o controlează.

DUPĂ cuvântul cheie

În mod implicit, o coloană adăugată cu ALTER TABLE ajunge la sfârșitul tabelului. Pentru a o plasa într-o anumită poziție, comanda ALTER este combinată cu cuvântul cheie AFTER.

Scriptul de mai jos adaugă „date_of_registration” direct după date_of_birth în tabelul membrilor.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Executarea scriptului în myflixdb și apoi rularea scriptului SHOW COLUMNS dă rezultatul prezentat mai jos.

Câmp Tip Null Cheie Mod implicit în plus - Extra
numar de membru int (11) NU PRI NULL increment auto
Numele complet char (50) NU NULL
sex varchar(6) DA NULL
data nașterii data DA NULL
data_înregistrării data DA NULL
adresă fizică varchar(255) DA NULL
adresă_poștală varchar(255) DA NULL
număr_de_contact varchar(75) DA NULL
e-mail varchar(255) DA NULL

Rândul evidențiat este coloana adăugată după data_nașterii. Cuvântul cheie FIRST funcționează în același mod și mută noua coloană chiar în fața tabelului.

Întrebări frecvente

Nu. Instrucțiunile DDL precum ALTER, DROP și RENAME se confirmă implicit în MySQL, deci o tranzacție deschisă nu le poate anula. Restaurarea dintr-o copie de rezervă este singura cale de întoarcere.

Depinde de modificare. Multe modificări InnoDB rulează online și permit citiri și scrieri simultane, în timp ce altele copiază întregul tabel și blochează scrierile. Adăugați clauze ALGORITHM și LOCK pentru a specifica ce veți accepta.

DROP elimină obiectul în sine. TRUNCATE golește un tabel, dar îi păstrează structura. DELETE elimină rândurile selectate și poate fi filtrat cu o clauză WHERE.

De obicei, da. Asistenți AI încorporați în clienți precum MySQL Banc de lucru transformă o cerere de genul „adăugați o coloană cu dată care poate fi validată cu valori nulla după data_nașterii” într-o sintaxă validă. RevVizualizați instrucțiunea generată în raport cu schema live înainte de a o rula.

Doar parțial. Instrumentele de revizuire bazate pe inteligență artificială semnalează riscuri evidente, cum ar fi o coloană omisă, care este totuși numită într-o interogare, sau un tip restrâns care trunchiază datele. Nu pot vedea fiecare apelant, așa că o rulare de tip „preluare” rămâne necesară.

Rezumați această postare cu: