Guhertina MySQL zêde bike da ku gelek pozîsyonên zeviyê zêde bike? Ravekirina berfireh a karanîna daxuyaniya stûnê biguhezîne

MySQL biguherîne lê zêde bike ku gelek pozîsyonên zeviyê lê zêde bike? Ravekirina berfireh a karanîna daxuyaniya stûnê biguhezîne

MySQL fermana ALTER

Dema ku em hewce ne ku navê tabloya daneyê biguhezînin an zeviyên tabloya daneyê biguhezînin, pêdivî ye ku em fermana MySQL ALTER bikar bînin.

Berî ku em dest bi vê dersê bikin, bila em pêşî tabloyek bi navê: testalter_tbl çêbikin.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use chenweiliang;
Database changed
mysql> create table testalter_tbl
    -> (
    -> i INT,
    -> c CHAR(1)
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Zeviyên tabloyê jêbirin, zêde bikin an biguherînin

Fermana jêrîn fermana ALTER û xala DROP bikar tîne da ku qada i ya tabloya ku li jor hatî afirandin jê bibe:

mysql> ALTER TABLE testalter_tbl  DROP i;

Ger di tabloya daneyê de tenê qadek mabe, DROP nikare ji bo jêbirina zeviyê were bikar anîn.

Daxuyana ADD di MySQL de tê bikar anîn da ku stûnan li tabloya daneyê zêde bike.Mînaka jêrîn qada i li tabloya testalter_tbl zêde dike û celebê daneyê diyar dike:

mysql> ALTER TABLE testalter_tbl ADD i INT;

Piştî pêkanîna fermana jorîn, qada i dê bixweber li dawiya qada tabloya daneyê were zêdekirin.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Heke hûn hewce ne ku cîhê qada nû diyar bikin, hûn dikarin keyword FIRST bikar bînin (setPositioningStûna yekem), LI PIŞT navê zeviyê (li dû qadek diyarkirî hatî danîn).

Daxuyaniya ALTER TABLE ya jêrîn biceribînin, û piştî pêkanîna serketî, SHOW COLUMNS bikar bînin da ku guhartinên di avahiya tabloyê de bibînin:

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

Peyvên sereke yên FIRST û PAŞT tenê di xala ADD de têne bikar anîn, ji ber vê yekê heke hûn dixwazin pozîsyona qada tabloya daneyê ji nû ve bikin, hûn hewce ne ku pêşî DROP bikar bînin da ku zeviyê jêbirin û dûv re ADD bikar bînin da ku zeviyê zêde bikin û pozîsyonê bicîh bikin.


Cure û navê zeviyê biguherînin

Heke hûn hewce ne ku celeb û navê zeviyê biguherînin, hûn dikarin di fermana ALTER de xala MODIFY an CHANGE bikar bînin.

Mînakî, ji bo guheztina celebê zeviyê c ji CHAR (1) bo CHAR (10), hûn dikarin fermana jêrîn bicîh bikin:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

Bi xala CHANGE re, hevoksazî pir cûda ye. Piştî peyva CHANGE, navê zeviyê ku hûn dixwazin biguhezînin bişopînin, û dûv re nav û tîpa zeviya nû diyar bikin. Mînaka jêrîn biceribînin:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

Bandorên ALTER TABLE li ser nirxên Null û nirxên xwerû

Dema ku hûn qadekê biguherînin, hûn dikarin diyar bikin ka wê têxin nav xwe an nirxek xwerû destnîşan bikin.

Di mînaka jêrîn de, qada diyarkirî j NE NULL e û nirxa xwerû 100 e.

mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Ger hûn nirxek xwerû destnîşan nekin, MySQL dê bixweber zeviyê ji hêla xwerû ve li NULL saz bike.


Nirxa xwerû ya zeviyê biguherîne

Hûn dikarin ALTER bikar bînin da ku nirxa xwerû ya zeviyek biguhezînin. Mînakek jêrîn biceribîne:

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Her weha hûn dikarin fermana ALTER û xala DROP bikar bînin da ku nirxa xwerû ya zeviyek jêbirin, wekî ku di mînaka jêrîn de tê xuyang kirin:

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Changing a Table Type:

Ji bo guheztina celebê tabloya daneyê, hûn dikarin fermana ALTER û xala TYPE bikar bînin. Mînaka jêrîn biceribînin, em celebê tabloya testalter_tbl bi MYISAM diguhezînin:

Nîşe:Ji bo dîtina celebê tabloya daneyê, hûn dikarin daxuyaniya REWŞA TASÊ NÎŞAN DE bikar bînin.

mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
     Check_time: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

Navê tabloyê biguherîne

Heke hûn hewce ne ku navê tabloya daneyê biguherînin, hûn dikarin di daxuyaniya ALTER TABLE de xala RENAME bikar bînin.

Mînaka jêrîn biceribînin ku navê tabloya daneyê testalter_tbl bike alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

Fermana ALTER dikare ji bo çêkirin û jêbirina îndeksan li ser tabloyên daneya MySQL jî were bikar anîn.Em ê di beşa pêş de vê fonksiyonê bidin nasîn.

karanîna din biguherînin

Motora hilanînê biguherînin: wê li myisam biguhezînin

alter table tableName engine=myisam;

Destûrên mifteya biyanî jêbirin: keyName navekî biyanî ye

alter table tableName drop foreign key keyName;

Helwesta têkildar a zeviyê biguhezîne: li vir navê1 qada ku hûn dixwazin biguhezînin e, tîp1 celebê zeviyê yê orîjînal e, yek ji yekem û paşîn hilbijêrin, divê ev eşkere be, yekem yekem tê danîn, û paşê tê danîn li dû qada nav2

alter table tableName modify name1 type1 first|after name2;

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) parve kir "MySQL alter lê zêde bike ku gelek pozîsyonên zeviyê lê zêde bike?" Ravekirina berfireh a karanîna daxuyaniya stûnê biguhezîne" dê ji we re bibe alîkar.

Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-495.html

Hûn bi xêr hatin kanala Telegramê ya bloga Chen Weiliang da ku nûvekirinên herî dawî bistînin!

🔔 Bibin yê yekem ku di pelrêça jorîn a kanalê de "Rêbernameya Bikaranîna Amûra AI-ya Kirrûbirra Naveroka ChatGPT" ya bi qîmet bistîne! 🌟
📚 Ev rêber nirxek pir mezin dihewîne, 🌟Ev derfetek kêm e, wê ji dest nede! ⏰⌛💨
Heke hûn hez dikin parve bikin û hez bikin!
Parvekirin û ecibandinên we motîvasyona meya domdar e!

 

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

li jor bigerin