MySQL барои зиёд кардани мавқеъҳои сершумори саҳро илова кунед? Шарҳи муфассали истифодаи изҳороти сутуни тағир додан

MySQL тағир додани илова барои зиёд кардани мавқеъҳои сершумор? Шарҳи муфассали истифодаи изҳороти сутуни тағир додан

MySQL Фармони ALTER

Вақте ки мо бояд номи ҷадвали маълумотро тағир диҳем ё майдонҳои ҷадвали маълумотро тағир диҳем, мо бояд фармони MySQL ALTER -ро истифода барем.

Пеш аз оғози ин дарс, биёед ҷадвалеро бо номи: testalter_tbl созем.

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)

Майдонҳои ҷадвалро нест кунед, илова кунед ё тағир диҳед

Фармони зерин фармони ALTER-ро бо банди DROP барои партофтани сутуни i ҷадвали дар боло сохташуда истифода мебарад:

mysql> ALTER TABLE testalter_tbl  DROP i;

DROP-ро барои нест кардани майдон истифода бурдан мумкин нест, агар дар ҷадвали маълумот танҳо як майдон боқӣ монда бошад.

Ҷумлаи ADD дар MySQL барои илова кардани сутунҳо ба ҷадвали додаҳо истифода мешавад. Мисоли зерин майдони i-ро ба ҷадвали testalter_tbl илова мекунад ва навъи маълумотро муайян мекунад:

mysql> ALTER TABLE testalter_tbl ADD i INT;

Пас аз иҷрои фармони боло, майдони i ба таври худкор ба охири майдонҳои ҷадвали маълумот илова карда мешавад.

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)

Агар ба шумо лозим аст, ки ҷойгиршавии майдони навро муайян кунед, шумо метавонед калимаи калидии FIRST аз ҷониби MySQL пешниҳодшударо истифода баред (маҷмӯаҶойгиршавӣсутуни якум), БАЪДИ номи майдон (пас аз майдон гузошта мешавад).

Изҳороти зерини ALTER TABLE-ро санҷед ва пас аз иҷрои бомуваффақият, барои дидани тағйирот дар сохтори ҷадвал аз SHOW COLUMNS -ро истифода баред:

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;

Калидвожаҳои FIRST ва AFTER танҳо дар банди ADD истифода мешаванд, бинобар ин, агар шумо хоҳед, ки мавқеи майдони ҷадвали маълумотро аз нав танзим кунед, шумо бояд DROP-ро барои нест кардани майдон истифода баред ва сипас барои илова кардани майдон ва гузоштани мавқеъ ADD-ро истифода баред.


Навъи майдон ва номи онро тағир диҳед

Агар ба шумо лозим ояд, ки навъи майдон ва номи майдонро тағир диҳед, шумо метавонед банди ТАҒЙИР додан ё ТАГИРИШ-ро дар фармони ALTER истифода баред.

Масалан, барои иваз кардани навъи майдони c аз CHAR(1) ба CHAR(10), фармони зеринро иҷро кунед:

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

Бо банди CHANGE, синтаксис хеле фарқ мекунад.Дарҳол пас аз калимаи калидии CHANGE номи майдонеро, ки шумо тағир додан мехоҳед, пайдо кунед ва номи майдон ва навъи навро муайян кунед.Намунаи зеринро санҷед:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

Таъсири ALTER TABLE ба арзишҳои нул ва пешфарз

Вақте ки шумо майдонро тағир медиҳед, шумо метавонед муайян кунед, ки танҳо дохил кардан ё таъин кардани арзиши пешфарз.

Мисоли зерин муайян мекунад, ки майдони j NULL НЕСТ ва арзиши пешфарз 100 аст.

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

Агар шумо арзиши пешфарзро таъин накунед, MySQL ба таври худкор майдонро ба NULL муқаррар мекунад.


Тағир додани арзиши пешфарзи майдон

Шумо метавонед ALTER-ро барои тағир додани арзиши пешфарзии майдон истифода баред, мисолҳои зеринро санҷед:

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)

Шумо инчунин метавонед фармони ALTER-ро бо банди DROP барои нест кардани арзиши пешфарзии майдон истифода баред, ба мисли мисоли зерин:

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:

Тағир додани навъи ҷадвали маълумотро бо истифода аз фармони ALTER ва банди TYPE анҷом додан мумкин аст.Намунаи зеринро санҷед, ки дар он мо навъи ҷадвали testalter_tbl -ро ба MYISAM иваз мекунем:

Эзоҳ:Барои дидани намуди ҷадвали додаҳо, шумо метавонед изҳороти SHOW TABLE STATUS-ро истифода баред.

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)

Номи ҷадвалро тағир диҳед

Агар ба шумо лозим аст, ки номи ҷадвали маълумотро тағир диҳед, шумо метавонед барои ин кор банди RENAME-ро дар изҳороти ALTER TABLE истифода баред.

Намунаи зеринро барои тағир додани номи ҷадвали маълумот testalter_tbl ба alter_tbl санҷед:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

Фармони ALTER инчунин метавонад барои эҷод ва нест кардани индексҳо дар ҷадвалҳои додаҳои MySQL истифода шавад, ки мо онҳоро дар бобҳои оянда муаррифӣ хоҳем кард.

дигар истифодаҳоро тағир диҳед

Муҳаррики нигоҳдорӣ тағир диҳед: онро ба myisam тағир диҳед

alter table tableName engine=myisam;

Маҳдудияти калиди хориҷиро хориҷ кунед: keyName тахаллуси калиди хориҷӣ аст

alter table tableName drop foreign key keyName;

Мавқеи нисбии майдони тағирёфта: дар ин ҷо ном1 майдонест, ки шумо тағир додан мехоҳед, навъи 1 навъи аслии майдон аст ва шумо метавонед яке аз аввал ва баъдро интихоб кунед, ки бояд аён бошад, аввал аввал ва баъд аз он ҷойгир карда мешавад. пас аз майдони name2 ҷойгир карда шудааст

alter table tableName modify name1 type1 first|after name2;

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) муштарак "Тағйир додани MySQL барои зиёд кардани мавқеъҳои сершумор илова кунед? Шарҳи муфассали истифодаи Изҳороти сутуни тағир додан" барои шумо муфид аст.

Хуш омадед ба мубодилаи истиноди ин мақола:https://www.chenweiliang.com/cwl-495.html

Хуш омадед ба канали Telegram блоги Чен Вейлян барои гирифтани навсозиҳои охирин!

🔔 Аввалин шуда дар феҳристи болоии канал "Дастури истифодаи абзори AI-и ChatGPT Content Marketing" -ро гиред! 🌟
📚 Ин дастур дорои арзиши бузург аст, 🌟Ин як имконияти нодир аст, онро аз даст надиҳед! ⏰⌛💨
Агар ба шумо маъқул бошад, мубодила кунед ва лайк монед!
Мубодилаи шумо ва лайкҳои шумо ангезаи доимии мост!

 

发表 评论

Суроғаи почтаи электронии шумо нашр карда намешавад. 必填 项 已 用 * Нишон

ба боло ҳаракат кунед