mysql修改表的结构_MySQL修改表结构
我們在修改表字段類型和約束條件的時候,如果表中的字段已經有值了,但是你修改的這個類型和字段里邊的值不匹配是不允許修改的,就比如說你當初設置字段的時候,字段的值是允許存空值,并且字段里邊已經存儲空值了,但是你后來又要修改這個字段不能存空值,那就會發生沖突,是不允許修改的,還有一個需要注意的是,需要修改的地方寫新的,不需要修改的地方要原樣的給抄下來,如果不原樣抄下來那就恢復到系統給的默認配置
我現在要修改下圖表里的年齡字段類型為int類型,并且約束條件是不允許為空
查看表結構
mysql> desc tab15;
修改字段類型和約束條件
mysql> alter table tab15
-> modify
-> 年齡 int(4) unsigned not null;//unsigned不需要修改的要原樣抄下來
Query OK, 0 rows affected (0.01 sec)
查看表結構
mysql> desc tab15;
那我們在來做一個錯誤的示范,我現在給這個表里邊允許為空的字段賦個空值,然后我在修改它不允許為空,我們看看效果
賦值的時候不允許為空的字段要賦值
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
解釋:無效的空值,這字段里邊已經有空值了,但是你又要修改這個字段的值不能為空,這就是沖突了,是不允許修改的
還有一個注意事項,修改字段類型和約束條件的時候,修改的寫新的,不改的要原樣的抄下來,就比如那個年齡字段我當初設置的時候是不能存負數,也不能賦空值,那現在如果我在想修改類型的時候,沒有把約束的條件抄下來,那它就恢復到系統的默認配置,
mysql> alter table tab15
-> modify
-> 年齡 tinyint(4);//只修改了字段類型,原有的約束條件我沒有抄下來
Query OK, 1 row affected (0.02 sec)
那我們在看看表結構
mysql> desc tab15;
字段原有的設置沒有抄下來將會恢復到系統默認的配置
我們在修改表字段的時候,還可以調整字段的位置,比如說現在我想把職業字段調到編號字段的下邊
mysql> alter table tab15
-> modify
-> 職業 varchar(50) after 編號;
Query OK, 0 rows affected (0.04 sec)
解釋:只想調整位置也是把原先的類型都原樣抄下來,然后指定放在那個字段的后邊就可以了
查看表結構
mysql> desc tab15;
如果你覺得哪個字段的位置不合理,那你就可以通過這樣的方法去調整位置,想調到第一個字段那就用first(第一),想調到某一個字段的下邊,那就用after(后)修改字段名
基本語法
ALTERTABLE 表名
CHANGE 原字段名新字段名類型(寬度) 約束條件;
修改字段名字的時候,字段里邊的值是不受影響的,但是也有幾個注意事項,需要改變的寫新的,不需要改變的就原樣抄下來,不然它也會恢復到默認配置,修改字段名時也可以順便修改字段的類型和約束條件,但如果修改的類型與約束條件與字段里邊的值發生沖突時也是不允許修改
我現在要把這個表的職業字段的名字修改一下,修改成家庭地址
修改字段名
mysql> alter table tab15
-> change 職業 家庭地址 varchar(50) after 年齡; //順便調整到年齡字段后邊
Query OK, 0 rows affected (0.06 sec)
查看表結構
mysql> desc tab15;
修改字段名的時候,可以修改字段的類型,也可以設置約束條件,但是不要和原有字段里邊的值發生沖突
刪除字段名
基本語法
ALTERTABLE表名
DROP字段名
刪除表字段的時候,如果表字段里邊有值的話,那值也就沒了
刪除表里的電話字段
mysql> alter table tab15
-> drop 電話;
Query OK, 0 rows affected (0.06 sec)
查看表結構
mysql> desc tab15;
要是想同時刪除多個字段的話,用逗號分隔
mysql> alter table tab15
-> drop 年齡,//字段之間用逗號分隔
-> drop 家庭地址;
Query OK, 0 rows affected (0.05 sec)
查看表結構
mysql> desc tab15;
修改表名
基本語法
ALTERTABLE表名
RENAME新表名;//用的關鍵字是rename
修改tab15表的名字為haha
mysql> alter table tab15
-> rename haha;
Query OK, 0 rows affected (0.00 sec)
查看表
mysql> show tables;
查看表結構
mysql> desc haha;
總結
以上是生活随笔為你收集整理的mysql修改表的结构_MySQL修改表结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity中链接字符串和变量显示_理解U
- 下一篇: excel oledb mysql_OL