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

2021-09-30 14:08:52 字數 1366 閱讀 7979

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

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

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

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

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

alter table tbl_alter_table modify column name varchar(20) not null;

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

轉換成功後,通過show create table tbl_alter_table;可以檢視到:

create table `tbl_alter_table` (

`id` int(10) unsigned not null auto_increment,

`name` varchar(20)collate utf8_bin not null,

primary key (`id`)

) engine=innodb  default charset=utf8 collate=utf8_bin 

此時輸入:select * from tbl_alter_table where name=『tim』;輸出:

| id | name |

|  1 | tim  |

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

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

複製乙份之前的表的結構和資料作為備份。

mysql語句如下:

create table tbl_alter_table_new like tbl_alter_table; //複製表的結果

insert into tbl_alter_table_new

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

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

alter table tbl_alter_table rename tbl_alter_table_old; //將原本備份

alter table tbl_alter_table_new rename tbl_alter_table;//新建的表替換成原表名

4、如何對大表進行更改(待補充)

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

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

mysql表如何建立 如何建立mysql表?

mysql中建立資料表的語法為 create table table name column name column type 在mysql 提示符下,建立乙個mysql表這是很容易的。使用 sql 命令 create table 來建立表。在建立表前需要使用use databasename命令選擇...

mysql 建立表 修改表

一 建立表 1.建表語句 create table 表名 列名稱1 列型別 列引數 not null default 列名稱2 列型別 列引數 not null default 列名稱n 列型別 列引數 not null default engine myisam innodb charset ut...