经常创建了数据库数据表之后,需要上线修改数据表字段,总结了一下修改表的语句:
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 '';