Maqolalar katalogi
MySQL bir nechta maydon pozitsiyalarini oshirish uchun qo'shishni o'zgartirasizmi? Modify ustunli bayonotidan foydalanishning batafsil tushuntirishi
MySQL ALTER buyrug'i
Ma'lumotlar jadvali nomini o'zgartirish yoki ma'lumotlar jadvali maydonlarini o'zgartirish kerak bo'lganda, MySQL ALTER buyrug'idan foydalanishimiz kerak.
Ushbu qo'llanmani boshlashdan oldin, keling, testalter_tbl nomli jadval yarataylik.
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)
Jadval maydonlarini o'chirish, qo'shish yoki o'zgartirish
Quyidagi buyruq yuqorida yaratilgan jadvalning i ustunini tushirish uchun DROP bandi bilan ALTER buyrug'idan foydalanadi:
mysql> ALTER TABLE testalter_tbl DROP i;
Agar ma'lumotlar jadvalida faqat bitta maydon qolsa, DROP-dan maydonni o'chirib bo'lmaydi.
ADD bandi MySQL da maʼlumotlar jadvaliga ustunlar qoʻshish uchun ishlatiladi.Quyidagi misol testalter_tbl jadvaliga i maydonini qoʻshadi va maʼlumotlar turini belgilaydi:
mysql> ALTER TABLE testalter_tbl ADD i INT;
Yuqoridagi buyruq bajarilgandan so'ng, i maydoni avtomatik ravishda ma'lumotlar jadvali maydonlarining oxiriga qo'shiladi.
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)
Agar siz yangi maydonning joylashuvini belgilashingiz kerak bo'lsa, MySQL tomonidan taqdim etilgan FIRST kalit so'zidan foydalanishingiz mumkin (to'siqJoylashuvbirinchi ustun), AFTER maydon nomi (maydondan keyin o'rnatiladi).
Quyidagi ALTER TABLE iborasini sinab ko'ring va muvaffaqiyatli bajarilgandan so'ng jadval tuzilmasidagi o'zgarishlarni ko'rish uchun KO'RSATISh USTUNLARI dan foydalaning:
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 va AFTER kalit so'zlari faqat ADD bandida qo'llaniladi, shuning uchun agar siz ma'lumotlar jadvali maydonining o'rnini qayta o'rnatmoqchi bo'lsangiz, maydonni olib tashlash uchun DROP tugmasidan foydalaning, so'ngra maydonni qo'shish va joyni o'rnatish uchun ADD dan foydalaning.
Maydon turi va nomini o'zgartiring
Maydon turini va nomini o'zgartirish kerak bo'lsa, ALTER buyrug'idagi O'G'RING yoki CHANGE bandidan foydalanishingiz mumkin.
Masalan, c maydonining turini CHAR(1) dan CHAR(10) ga o'zgartirish uchun quyidagi buyruqni bajaring:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
CHANGE bandi bilan sintaksis juda boshqacha.CHANGE kalit so'zidan so'ng darhol siz o'zgartirmoqchi bo'lgan maydonning nomi va keyin yangi maydon nomi va turini belgilang.Quyidagi misolni sinab ko'ring:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
ALTER TABLE ning nol va standart qiymatlarga ta'siri
Maydonni o'zgartirganda, faqat qo'shish yoki standart qiymatni belgilashni belgilashingiz mumkin.
Quyidagi misol j maydoni NULL EMASligini va standart qiymat 100 ekanligini bildiradi.
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Agar siz standart qiymatni o'rnatmasangiz, MySQL avtomatik ravishda maydonni sukut bo'yicha NULL ga o'rnatadi.
Maydonning standart qiymatini o'zgartirish
Maydonning standart qiymatini o'zgartirish uchun ALTER dan foydalanishingiz mumkin, quyidagi misollarni sinab ko'ring:
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)
Quyidagi misoldagi kabi maydonning standart qiymatini olib tashlash uchun DROP bandi bilan ALTER buyrug'idan ham foydalanishingiz mumkin:
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:
Ma'lumotlar jadvali turini o'zgartirish ALTER buyrug'i va TYPE bandi yordamida amalga oshirilishi mumkin.Quyidagi misolni sinab ko'ring, u erda testalter_tbl jadvalining turini MYISAM ga o'zgartiramiz:
Eslatma:Ma'lumotlar jadvali turini ko'rish uchun siz SHOW TABLE STATUS bayonotidan foydalanishingiz mumkin.
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)
Jadval nomini o'zgartirish
Agar siz ma'lumotlar jadvalining nomini o'zgartirishingiz kerak bo'lsa, buning uchun ALTER TABLE bayonotidagi RENAME bandidan foydalanishingiz mumkin.
testalter_tbl ma'lumotlar jadvalining nomini alter_tbl ga o'zgartirish uchun quyidagi misolni sinab ko'ring:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
ALTER buyrug'i MySQL ma'lumotlar jadvallarida indekslarni yaratish va o'chirish uchun ham ishlatilishi mumkin, biz keyingi boblarda tanishtiramiz.
boshqa foydalanishni o'zgartirish
Saqlash mexanizmini o'zgartiring: uni myisamga o'zgartiring
alter table tableName engine=myisam;
Chet el kalit cheklovini olib tashlang: keyName — chet el kaliti taxallus
alter table tableName drop foreign key keyName;
O'zgartirilgan maydonning nisbiy joylashuvi: bu erda nom1 - siz o'zgartirmoqchi bo'lgan maydon, 1 turi - maydonning asl turi va siz birinchi va keyingilardan birini tanlashingiz mumkin, bu aniq bo'lishi kerak, birinchi navbatda birinchi va keyin joylashadi. name2 maydonidan keyin joylashtiriladi
alter table tableName modify name1 type1 first|after name2;
Umid qilamanki, Chen Veyliang blogi ( https://www.chenweiliang.com/ ) birgalikda "MySQL bir nechta maydon pozitsiyalarini oshirish uchun qo'shishni o'zgartiradimi? Ustunni o'zgartirish bayonotidan foydalanish bo'yicha batafsil tushuntirish" siz uchun foydalidir.
Ushbu maqolaning havolasini baham ko'rish uchun xush kelibsiz:https://www.chenweiliang.com/cwl-495.html
Ko'proq yashirin fokuslarni ochish uchun🔑 Telegram kanalimizga qo'shiling!
Baham ko'ring va yoqsa like! Sizning aktsiyalaringiz va yoqtirishlaringiz bizning doimiy motivatsiyasimizdir!