mysql修改表的结构_MySQL修改表结构
我們在修改表字段類型和約束條件的時(shí)候,如果表中的字段已經(jīng)有值了,但是你修改的這個(gè)類型和字段里邊的值不匹配是不允許修改的,就比如說你當(dāng)初設(shè)置字段的時(shí)候,字段的值是允許存空值,并且字段里邊已經(jīng)存儲(chǔ)空值了,但是你后來又要修改這個(gè)字段不能存空值,那就會(huì)發(fā)生沖突,是不允許修改的,還有一個(gè)需要注意的是,需要修改的地方寫新的,不需要修改的地方要原樣的給抄下來,如果不原樣抄下來那就恢復(fù)到系統(tǒng)給的默認(rèn)配置
我現(xiàn)在要修改下圖表里的年齡字段類型為int類型,并且約束條件是不允許為空
查看表結(jié)構(gòu)
mysql> desc tab15;
修改字段類型和約束條件
mysql> alter table tab15
-> modify
-> 年齡 int(4) unsigned not null;//unsigned不需要修改的要原樣抄下來
Query OK, 0 rows affected (0.01 sec)
查看表結(jié)構(gòu)
mysql> desc tab15;
那我們在來做一個(gè)錯(cuò)誤的示范,我現(xiàn)在給這個(gè)表里邊允許為空的字段賦個(gè)空值,然后我在修改它不允許為空,我們看看效果
賦值的時(shí)候不允許為空的字段要賦值
mysql> insert into tab15 values(null,"haha","女",18,null,null);
Query OK, 1 row affected (0.00 sec)
查看表記錄
mysql> select * from tab15;
接下來我要修改一下編號字段不允許為空,看看能修改成功嗎
mysql> alter table tab15
-> modify
-> 編號 int(3) not null;
ERROR 1138 (22004): Invalid use of NULL value
解釋:無效的空值,這字段里邊已經(jīng)有空值了,但是你又要修改這個(gè)字段的值不能為空,這就是沖突了,是不允許修改的
還有一個(gè)注意事項(xiàng),修改字段類型和約束條件的時(shí)候,修改的寫新的,不改的要原樣的抄下來,就比如那個(gè)年齡字段我當(dāng)初設(shè)置的時(shí)候是不能存負(fù)數(shù),也不能賦空值,那現(xiàn)在如果我在想修改類型的時(shí)候,沒有把約束的條件抄下來,那它就恢復(fù)到系統(tǒng)的默認(rèn)配置,
mysql> alter table tab15
-> modify
-> 年齡 tinyint(4);//只修改了字段類型,原有的約束條件我沒有抄下來
Query OK, 1 row affected (0.02 sec)
那我們在看看表結(jié)構(gòu)
mysql> desc tab15;
字段原有的設(shè)置沒有抄下來將會(huì)恢復(fù)到系統(tǒng)默認(rèn)的配置
我們在修改表字段的時(shí)候,還可以調(diào)整字段的位置,比如說現(xiàn)在我想把職業(yè)字段調(diào)到編號字段的下邊
mysql> alter table tab15
-> modify
-> 職業(yè) varchar(50) after 編號;
Query OK, 0 rows affected (0.04 sec)
解釋:只想調(diào)整位置也是把原先的類型都原樣抄下來,然后指定放在那個(gè)字段的后邊就可以了
查看表結(jié)構(gòu)
mysql> desc tab15;
如果你覺得哪個(gè)字段的位置不合理,那你就可以通過這樣的方法去調(diào)整位置,想調(diào)到第一個(gè)字段那就用first(第一),想調(diào)到某一個(gè)字段的下邊,那就用after(后)修改字段名
基本語法
ALTERTABLE 表名
CHANGE 原字段名新字段名類型(寬度) 約束條件;
修改字段名字的時(shí)候,字段里邊的值是不受影響的,但是也有幾個(gè)注意事項(xiàng),需要改變的寫新的,不需要改變的就原樣抄下來,不然它也會(huì)恢復(fù)到默認(rèn)配置,修改字段名時(shí)也可以順便修改字段的類型和約束條件,但如果修改的類型與約束條件與字段里邊的值發(fā)生沖突時(shí)也是不允許修改
我現(xiàn)在要把這個(gè)表的職業(yè)字段的名字修改一下,修改成家庭地址
修改字段名
mysql> alter table tab15
-> change 職業(yè) 家庭地址 varchar(50) after 年齡; //順便調(diào)整到年齡字段后邊
Query OK, 0 rows affected (0.06 sec)
查看表結(jié)構(gòu)
mysql> desc tab15;
修改字段名的時(shí)候,可以修改字段的類型,也可以設(shè)置約束條件,但是不要和原有字段里邊的值發(fā)生沖突
刪除字段名
基本語法
ALTERTABLE表名
DROP字段名
刪除表字段的時(shí)候,如果表字段里邊有值的話,那值也就沒了
刪除表里的電話字段
mysql> alter table tab15
-> drop 電話;
Query OK, 0 rows affected (0.06 sec)
查看表結(jié)構(gòu)
mysql> desc tab15;
要是想同時(shí)刪除多個(gè)字段的話,用逗號分隔
mysql> alter table tab15
-> drop 年齡,//字段之間用逗號分隔
-> drop 家庭地址;
Query OK, 0 rows affected (0.05 sec)
查看表結(jié)構(gòu)
mysql> desc tab15;
修改表名
基本語法
ALTERTABLE表名
RENAME新表名;//用的關(guān)鍵字是rename
修改tab15表的名字為haha
mysql> alter table tab15
-> rename haha;
Query OK, 0 rows affected (0.00 sec)
查看表
mysql> show tables;
查看表結(jié)構(gòu)
mysql> desc haha;
總結(jié)
以上是生活随笔為你收集整理的mysql修改表的结构_MySQL修改表结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity中链接字符串和变量显示_理解U
- 下一篇: 颐和园订的中午的票,下午可以进去吗