天天看點

mysql 增加字段 / 修改字段 / 增加删除索引 / 修改字段名索引内容增加索引删除索引增加字段修改字段修改字段名稱

經常建立了資料庫資料表之後,需要上線修改資料表字段,總結了一下修改表的語句:

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 '';
           

繼續閱讀