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...