MySQL怎麼修改已建立表的結構?

2021-12-30 09:04:11 字數 2049 閱讀 9664

1、為什麼要討論關於altertable的問題呢?

mysql執行大部分修改表結構的原理:

用乙個新的結構建立乙個空表,從舊表中查出所有資料插入新錶,然後刪除舊表。

導致的問題:可能需要花費很長的時間(特別是當記憶體不大而表又很大,且又有很多索引的情況)

2、舉個栗子:更改上面的name欄位的校對規則,使其大小寫敏感

altertabletbl_alter_tablemodifycolumnnamevarchar(20)notnull;

注意:alter後面跟著的name的屬性是完整的。

轉換成功後,通過showcreatetabletbl_alter_table;可以檢視到:

createtable`tbl_alter_table`(

`id`int(10)unsignednotnullauto_increment,

`name`varchar(20)collateutf8_binnotnull,

primarykey(`id`)

)engine=innodbdefaultcharset=utf8collate=utf8_bin

此時輸入:select*fromtbl_alter_tablewherename=『tim』;輸出:

|id|name|

|1|tim|

3、對於小表的更改的一些方法

如果直接altertable則會將之前舊的表的結構更改,如果更改之後出現問題,回返回之前舊的表會比較麻煩。

推薦的做法是:複製乙份之前的表的結構和資料作為備份。

mysql語句如下:

createtabletbl_alter_table_newliketbl_alter_table;//複製表的結果

insertintotbl_alter_table_new

select*fromtbl_alter_table;//將原表的資料也複製過來

...//針對tbl_alter_table_new表進行操作

altertabletbl_alter_tablerenametbl_alter_table_old;//將原本備份

altertabletbl_alter_table_newrenametbl_alter_table;//新建的表替換成原表名

往已經存在乙個表中新增乙個新的column 「id」

alter table testdb.testtable

add id bigint(20)取消表的原有主鍵

alter table testdb.testtable

drop primary key設定」id」為主鍵

alter table testdb.testtable

add primary key (id)取消表中的某一列」id」

alter table testdb.testtable

drop column id現在有這樣乙個題目:

往已經存在資料的表中新增乙個新的column 「id」,並讓其值依次遞增,取消表的原有主鍵,設定」id」為主鍵

下面給出題目要求的做法:

改動前的表:

name

***title

lili

femal

dev

lilei

male

qa 往已經存在乙個表中新增乙個新的column 「id」,設定其為主鍵,並讓其值依次遞增

alter table testdb.testtable add `id` int not null auto_increment primary key first;執行上面一條sql,可得改動後的表:

name

***title

id

lili

female

dev 1

lilei

male

qa 2

有時候我們會發現,改動後的id,並不是按照加1來增加的。遞增步長控制著增加的數值:

設定遞增步長

set @@auto_increment_increment=1;

show variables like 'auto_inc%';

MySQL 如何修改已建立表的結構

1 為什麼要討論關於alter table的問題呢?mysql執行大部分修改表結構的原理 用乙個新的結構建立乙個空表,從舊表中查出所有資料插入新錶,然後刪除舊表。導致的問題 可能需要花費很長的時間 特別是當記憶體不大而表又很大,且又有很多索引的情況 2 舉個栗子 更改上面的name欄位的校對規則,使...

mysql 怎麼修改表型別 修改MYSQL表型別

最近遇到乙個修改 mysql 表型別的問題,以前在 phpmyadmin 管理 mysql 資料庫時,建立的表預設是 myisam 型別,而且修改表型別也比較方便。奈何現在配置 phpmyadmin 出了問題,也懶得去弄了,就裝了另乙個 mysql 的管理工具,比較方便。可是我新建的表預設確是 in...

mysql怎麼建立表 mysql怎麼建立乙個表

1.登陸成功後,首先進入某乙個資料庫 不是指資料庫伺服器 use t1 t1是資料庫名 如圖所示 2.在此資料庫中建立資料庫表 2.1 先建立表結構 可以理解為表的列名,也就是欄位名 在實際生產過程中,表結構是需要經過精心設計的。通用的語法格式為 1 create table table name ...