MySql中使用Sql語句修改表的結構(不斷更新)

使用phpmyadmin管理mysql時,由於很多原因在創建表後無法修改表的結構(點擊表的結構頁面會卡在當前頁面沒有反應)

在這種情況下,可以使用SQl語句來操作:

(1)設置外鍵:

alter table table1 add foreign key (shuxing)  references table2(shuxing2)

這句話可以將表table2的屬性shuxing2(該屬性必須爲主鍵)設置爲tabel1的shuxing屬性的外鍵

(2)設置自增字段

在Mysql中,可以在創建表時將一個字段設置爲自增字段

creat  table tabletest
(ID int not null identity(1,1) primary key)

如果是在phpmyadmin中創建的表,可以直接在設置字段屬性時選擇A-I選項即可。

如果沒有在創建表時設置其爲自增字段,無法直接通過alert修改該字段爲自增字段

而且如果在創建表時設置其爲自增字段,無法直接通過alert修改該字段爲非自增字段

只能通過迂迴的手段來解決這個問題

將一個非自增字段設置爲自增字段:

ALTER TABLE TABLENAME DROP COLUMN ID 
ALTER TABLE TABLENAME ADD ID int identity(1,1) not null

將一個自增字段改變爲非自增字段(a 表的 b 字段):

//新建臨時字段
alter table a add btmp int null
//賦值
update a set btmp =b
//刪除主鍵
alter table a drop pk_a
//刪除字段
alter table a drop column b
//增加字段
alter table a add b int null
//把值還原回來
update a set b = btmp
//刪除臨時字段
alter table a drop column btmp
//修改新建字段不爲空
alter table a alter column b int not null
//健主鍵,多個字段做主鍵,用逗號隔開,比如primary key (a,xxxxxx)
alter table a add primary key (a)

(3)插入數據

insert into R (A1,…,An) Values(v1,…,vn);//插入一行數據,必須保證R表後的屬性列表與Values後的屬性值對應

insert into R Values(v1,…,vn);//插入一行數據,如果插入的元組包括所有屬性數值,則R表後不必添加屬性列表,但是必須保證Values後屬性值的順序與R表屬性順序一致

insert into R (A1,…,An) 

     select A1,…,An from R2 Where ...  //可以將一個關係(通過select獲取)加入一張表中,同樣需要保證屬性順序一致


(4)刪除數據

delete from R where <condition>;   

(5)更新數據

update R set <new value assignments> where <condition>;

(6)增加列 

alter table tablename add columnname type default default_value

例如:

alter table table1 add column1 varchar(30) default ’abcde‘

alter table table1 add column2  int(10)  default 12345

(7)刪除列

alter table tablename drop column columnname

(8)新增timestamp類型的字段:

ALTER TABLE `encounter` ADD `test_time` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL

如此設置的時間戳字段可以在表結構發生改變時自動修改該字段以記錄最新的改動時間



發佈了38 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章