MySQL修改表結構操作命令總結 MySQL修改表結構操作命令總結 MySQL修改表結構操作命令總結 以下內容轉自:http://www.jb51.net/article/58079.htm 表的結構如下: 複製代碼代碼如下: mysql> show create table person;| pe ...
MySQL修改表結構操作命令總結
以下內容轉自:http://www.jb51.net/article/58079.htm
表的結構如下:
複製代碼代碼如下:
mysql> show create table person;
| person | CREATE TABLE `person` (
`number` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
刪除列:
複製代碼代碼如下:
ALTER TABLE person DROP COLUMN birthday;
添加列:
複製代碼代碼如下:
ALTER TABLE person ADD COLUMN birthday datetime;
修改列,把number修改為bigint:
複製代碼代碼如下:
ALTER TABLE person MODIFY number BIGINT NOT NULL;
或者是把number修改為id,類型為bigint:
複製代碼代碼如下:
ALTER TABLE person CHANGE number id BIGINT;
添加主鍵:
複製代碼代碼如下:
ALTER TABLE person ADD PRIMARY KEY (id);
刪除主鍵:
複製代碼代碼如下:
ALTER TABLE person DROP PRIMARY KEY;
添加唯一索引:
複製代碼代碼如下:
ALTER TABLE person ADD UNIQUE name_unique_index (`name`);
為name這一列創建了唯一索引,索引的名字是name_unique_index.
添加普通索引:
複製代碼代碼如下:
ALTER TABLE person ADD INDEX birthday_index (`birthday`);
刪除索引:
複製代碼代碼如下:
ALTER TABLE person DROP INDEX birthday_index;
ALTER TABLE person DROP INDEX name_unique_index;
禁用非唯一索引
複製代碼代碼如下:
ALTER TABLE person DISABLE KEYS;
ALTER TABLE...DISABLE KEYS讓MySQL停止更新MyISAM表中的非唯一索引。
激活非唯一索引
複製代碼代碼如下:
ALTER TABLE person ENABLE KEYS;
ALTER TABLE ... ENABLE KEYS重新創建丟失的索引。
把表預設的字元集和所有字元列(CHAR, VARCHAR, TEXT)改為新的字元集:
複製代碼代碼如下:
ALTER TABLE person CONVERT TO CHARACTER SET utf8;
修改表某一列的編碼
複製代碼代碼如下:
ALTER TABLE person CHANGE name name varchar(255) CHARACTER SET utf8;
僅僅改變一個表的預設字元集
複製代碼代碼如下:
ALTER TABLE person DEFAULT CHARACTER SET utf8;
修改表名
複製代碼代碼如下:
RENAME TABLE person TO person_other;
移動表到其他資料庫
複製代碼代碼如下:
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
以下內容轉自:http://www.cnblogs.com/FranklinD/p/4320155.html
MySql資料庫在表中添加新欄位,設置主鍵,設置外鍵,欄位移動位置,以及修改資料庫後如何進行部署和維護的總結
1,為當前已有的表添加新的欄位
alter table student add studentName varchar(20) not null;
2,為當前已有的表中的欄位設置為主鍵自增
alter table student add constraint PK_studentId primaryKey(studentId);
3,為當前已有的表中的欄位設置為外鍵
alter table student add constraint FK_teacherId_studentInfo foreign key (teacherId) references teacherInfo(teacherId)
alter table 表名 add constraint 鍵名 foreign key (外鍵欄位名) references 主表名(主表主鍵名)
4,欄位移動位置
alter table student modify studentId varchar(20) first
將student表中的studentId欄位的位置移動到第一位
5,關於修改資料庫結構後,如何部署,以及操作過程的總結
在項目開發過程中補課避免的需要修改資料庫的表結構,經過這幾天的操作總結的操作流程是
1,將遠程伺服器上的資料庫複製到本地
2,在本地將資料庫的結構進行修改,並研發新的項目功能
3,功能研發完畢,對比之前的資料庫看修改了哪些結構,然後統一將這些操作利用腳本的方式寫出來
4,將本地的資料庫恢覆成未修改之前的,然後運行腳本,為當前本地的資料庫修改結構
5,然後查看新增的功能是否能夠正常運行
6,如果出錯則重覆3,4步,直至利用腳本能夠直接完美的修改資料庫結構,並再次測試新的功能是否能夠正常運行
7,如果功能能夠正常運行則進行下一步部署伺服器
8,首先將遠程伺服器中的資料庫進行備份
9,部署新增的功能
10,利用腳本修改伺服器中的資料庫
11,修改完畢後查看新功能是否能夠正常運行,如果能夠正常運行並且日誌文件中沒有出錯,則表明部署成功!
12,如果有出錯的話,則先恢複數據庫並且重覆8,9,10,11步
以下內容轉自:http://www.cnblogs.com/mfryf/p/3457481.html
mysql 如何修改、添加、刪除表主鍵
在我們使用mysql的時候,有時會遇到須要更改或者刪除mysql的主鍵,我們能夠簡單的使用alter table table_name drop primary key;來完成。以下我使用數據表table_test來作了樣例。
1、首先創建一個數據表table_test:
create table table_test(
`id` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`name`)
)ENGINE=MyISAM DEFAULT CHARSET=gb2312;
2、如果發現主鍵設置錯了,應該是id是主鍵,但如今表裡已經有好多數據了,不能刪除表再重建了,僅僅能在這基礎上改動表結構。
先刪除主鍵
alter table table_test drop primary key;
然後再增加主鍵
alter table table_test add primary key(id);
註:在增加主鍵之前,必須先把反覆的id刪除掉。
以下內容轉自:http://www.cnblogs.com/suiy-160428/p/5649911.html
MySQL修改主鍵屬性:
前言:在學習MySQL的過程中,對於主鍵的屬性以及操作理解較模糊,在輸入多條修改主鍵屬性的語句後經常報錯,所以想整理一下這個過程中遇到的問題,作為自己的學習記錄,可能都是基礎知識,但也希望提高自己對資料庫的理解,同時也能幫助到其他人。
主鍵約束在數據表中可以定義一個主鍵值,唯一確定表中的每一條記錄。每張表中只能有一個primary key,並且primary key不能為空。如果主鍵約束定義在不止一列,則一列的值可以重覆,但是主鍵約束定義中的所有列組合必須唯一。
1. 添加主鍵約束:
alter table tbl_name add primary key (index_col_name,…); #括弧中為欄位名,可以為一個或者多個
2. 在數據表已存在的情況下,且無主鍵,添加新的欄位作為主鍵,並將該欄位移到表格的第一列
alter table tbl_name add col_name col_definition (data type, null, default...) primary key first current_first_col_name; # current_first_col_name表示當前數據表的第一列
Notes:關鍵字first表示位於某一列的前面,如果加入的欄位需要位於某一列的後面,可以使用after
3. 數據表已存在,且有主鍵,修改主鍵的定義
關鍵字modify
alter table tbl_name modify col_name col_definition [first|after col_name] #在col_definition 聲明要修改的屬性,如要添加自動編號auto_increment
Notes:
1) 此時不需要重新聲明主鍵屬性primary key,如果添加了則會報錯:主鍵重覆;
2) 如果原有屬性中存在auto_increment,修改時需要加上auto_increment,否則auto_increment屬性被刪除
關鍵字change
alter table tbl_name change col_name col_name col_definition [first|after col_name] #與modify的區別在於列表需要寫兩次列名,相當於原列名和新列名,所以change也可以用來修改列名