MySQL資料庫表結構修改總結

2021-09-29 13:55:17 字數 2589 閱讀 5042

建立表dept和stu:

mysql> create table department(

dept_id int primary key auto_increment,

dept_name char(20) not null default ''

);mysql> create table stu(

stu_id int primary key auto_increment,

stu_name char(20),

age int,

height decimal(4,1)

dept_id int,

foreign key(dept_id) references dept(dept_id)

);

修改表名:
--格式: alter table tablename rename newtablename;   

mysql> alter table department rename dept;

檢視表結構:
--格式: desc tablename;   

mysql> desc stu;

檢視建表語句:
--格式: show create table tablename;

mysql> show create table stu;

新增字段:
--格式:alter table tablename add fieldname type;

mysql> alter table stu add phone char(11) after height; --新增乙個phone欄位,位置處於欄位height之後

mysql> alter table stu add addr varchar(200); --新增乙個addr欄位,位置為表中的最後乙個字段

刪除字段:
--格式:alter table tablename drop fieldname;

mysql> alter table stu drop age;

更改欄位的名稱和型別:
--格式:alter table tablename change oldfieldname newfieldname type;

mysql> alter table stu change addr address varchar(200) after phone;

--把addr欄位的名稱更改為address,並且放在phone之後。

更改欄位的型別:
--格式:alter table tablename modify fieldname type;

mysql> alter table stu modify phone varchar(20) after stu_name;

--把phone欄位的型別更改為varchar,長度為20,並且放在stu_name之後。

新增和刪除主鍵:
--刪除主鍵格式:alter table tablename drop primary key;

--新增主鍵格式:alter table tablename add primary key(fieldname);

mysql> alter table dept drop primary key; --刪除dept表的主鍵

mysql> alter table dept add primary key(dept_id); --為dept表新增主鍵,主鍵列為dept_id

新增和刪除外來鍵:
--先用show create table tablename;命令檢視外來鍵約束的名稱

--刪除外來鍵格式:alter table tablename drop foreign key 外來鍵約束名;

--新增外來鍵格式:alter table tablename add foreign key(fieldname) references tablename(fieldname);

mysql> show create table stu; --檢視stu表中外鍵約束的名稱

mysql> alter table dept drop foreign key stu_ibfk_1; --刪除stu表的外來鍵

mysql> alter table dept add foreign key(dept_id) references dept(dept_id); --為stu表新增外來鍵

設定欄位的預設值以及是否為空:
--格式:alter table tablename modify fieldname fieldtype not null|null default value;

mysql> alter table stu modify address varchar(200) not null default 'xinxiang';

--設定address欄位不能為空,預設值為'xinxiang'

mysql> alter table dept modify dept_name char(20) null; --設定dept表中的dept_name欄位允許取空值

資料庫修改表結構

修改資料表 alter table 表名sql 的書寫不考慮順序,但是批量執行 需要要考慮好先執行哪些,後執行哪些 在修改資料表結構時,必須要明確 修改的字段中是否存在資料,例如 如果需要更改乙個欄位的約束為非空約束,那麼首先要保證該字段中已有的資料沒有null值。因此在做程式之前資料庫分析,設計是...

資料庫修改表結構SQL

資料庫修改欄位名 alter table t pda node template item rename column sequence number to sequence number1 新增字段 alter table t pda node template item add sequence...

Mysql資料庫alter修改表

如果你想要修改表的資訊,你會發現alter很強大。我們可以看到這樣一張表。create table score student id int 10 unsigned notnull event id int 10 unsigned notnull score int 11 default null ...