經常建立了資料庫資料表之後,需要上線修改資料表字段,總結了一下修改表的語句:
1.建立使用資料庫;
2. 建立資料表;
CREATE DATABASE IF NOT EXISTS database_name
DEFAULT CHARACTER SET = utf8
DEFAULT COLLATE = utf8_general_ci;
USE database_name;
-- ----------------------------
-- TABLE structure for `table_name`
-- ----------------------------
CREATE TABLE IF NOT EXISTS `table_name` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'auto increase',
`test` int(10) NOT NULL DEFAULT '' COMMENT 'test',
`string` varchar(20) NOT NULL DEFAULT '' COMMENT 'string',
`date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'yyyy-MM-dd HH:mm:ss',
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'last_update time',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'data create time',
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_test` (`test`),
KEY `indx_test_string` (`test`,`string`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='table just for test';
該示例建立了資料表table_name,有從1開始自增的主鍵id,數字類型test,字元串類型string,時間類型date,和last_update記錄上次更新時間,create_time記錄建立時間;
唯一索引test名稱為uniq_test,普通關聯索引關聯test和string。
索引的作用就是加快查找速度。
唯一索引就是指定插入資料庫的test值是唯一的,如果插入同一個test資料會報錯;
普通關聯索引indx_test_string,關聯test和string,就是以後查找像mysql 查找語句: select * where test=xxx and string=xxx;的時候能夠快速找到;
下面來介紹mysql語句:(以下所有樣例可以參考以上資料庫示例)
索引内容
1.普通索引。
這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:
(1)建立索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR類型,length可以小于字段實際長度;如果是BLOB 和 TEXT 類型,必須指定length,下同。
(2)修改表結構:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;
2.唯一索引
它與前面的"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:
(1)建立索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表結構:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));
3.主鍵索引
它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 當然也可以用ALTER指令。
示例:
增加索引
(索引部分參考:mysql 建立 主鍵索引 唯一索引 全文索引 多列索引 添加索引)
檢視索引 : show index from 資料庫表名
增加普通索引: ALTER TABLE 資料庫ADD INDEX 索引名稱(資料庫字段名稱)
INDEX(普通索引) (注意下面table_name的引号``,這個也是可以去掉的,不影響mysql語句的執行。帶上隻是為了好看區分)
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
ALTER TABLE `table_name` ADD INDEX idx_test (`test`);
PRIMARY KEY(主鍵索引)
增加主鍵索引: ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
增加唯一索引: ALTER TABLE `table_name` ADD UNIQUE unique_name(`column`)
ALTER TABLE `table_name` ADD UNIQUE uniq_test (`test`);
FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
ALTER TABLE `table_name` ADD INDEX idx_test_string (`test`,`string`);
删除索引
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE `table_name` DROP INDEX `uniq_test`;
增加字段
ALTER TABLE table_name ADD COLUMN `column` varchar(10) DEFAULT NULL COMMENT 'explain';
ALTER TABLE table_name ADD COLUMN `string` varchar(10) NOT NULL DEFAULT '';
修改字段
ALTER TABLE table_name MODIFY COLUMN column varchar(16) NOT NULL DEFAULT '' COMMENT 'xxx';
ALTER TABLE `table` MODIFY COLUMN `string` varchar(16) NOT NULL DEFAULT '' COMMENT 'just a string';
修改字段名稱
ALTER TABLE table_name CHANGE `old_column_name` `new_column_name` varchar(20) NOT NULL DEFAULT '';
ALTER TABLE table_name CHANGE `totoal` `total` varchar(20) NOT NULL DEFAULT '';