当需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。
修改表名
语法格式:ALTER TABLE old_table_name RENAME TO new_table_name
查看表结构
SHOW COLUMNS FROM table_name
查看数据表类型
SHOW TABLE STATUS LIKE 'table_name'
修改数据表类型 语法:ALTER TABLE testalter_tbl ENGINE = 新的数据类型;
如果一个系统有很多数据库,在找某张表的时候可以使用如下sql:
SELECT table_schema FROM information_schema.TABLES WHERE table_name = '表名';
查看表的建表语句
语法格式:SHOW CREATE TABLE table_name
删除,添加或修改表字段
1.删除
语法格式:ALTER TABLE table_name DROP i
i:为字段名
如果数据表中只剩余一个字段则无法使用DROP来删除字段。
2.添加
语法格式:ALTER TABLE table_name ADD i int [ FIRST | AFTER column ]
添加使用add,后面紧跟你要添加的字段及字段类型。
[ FIRST | AFTER column ]:为可选参数。
FIRST:添加至表的第一列。
AFTER column:添加至某个字段column的后面。
修改字段类型及名称
语法格式:1 ALTER TABLE table_name MODIFY 字段名称 字段数据类型
2 ALTER TABLE table_name CHANGE 旧字段名称 新字段名称 新字段数据类型
方法1:只修改字段的数据类型。方法2:可以修改字段名称和数据类型。
ALTER TABLE 对 NULL 值和默认值的影响
语法格式:ALTER TABLE table_name MODIFY 字段名称 字段类型 是否为NULL 默认值
示例:alter table test modify c varchar(10) not null default 100
MYSQL设置字段时,不设置默认值,MYSQL会自动设置该字段默认为 NULL。
修改和删除字段的默认值
1.修改
语法格式:ALTER TABLE table_name ALTER 字段名称 SET DEFAULT 数值
2.删除
语法格式:ALTER TABLE table_name ALTER 字段名称 DROP DEFAULT
添加,删除表中的主键或者外键
Mysql的两种主键。Primary key 和not null auto_incriment在建立mysql表时,给一个字段添加了主键primary key 在insert数据时可以不用insert主键,mysql会自动添加0,但是在第二次insert时没有填写值mysql数据库还是默认添加0,会导致 有重复的主键,这是不可以的。所有在定义了primary key时,在insert数据时要给主键填写值。
添加主键
语法格式:1 ALTER TABLE table_name ADD PRIMARY KEY( id )
2 ALTER TABLE table_name MODIFY id int(10) NOT NULL AUTO_INCREMENT
删除主键:
语法格式: 1 ALTER TABLE table_name CHANGE id id int(10) //先删除自增长
2 ALTER TABLE table_name DROP PRIMARY KEY //再删除主键
添加外键
语法格式:
ALTER TABLE 表1 ADD CONSTRAINT 外键名 FOREIGN KEY(表1中得到字段名) REFERENCES 表2(表2中的字段名)
删除外键
语法格式:ALTER TABLE table_name DROP FOREIGN KEY 外键名称
添加和删除索引
查看索引
语法格式:SHOW INDEX FROM table_name
添加索引
1.唯一索引 unique
语法格式: ALTER TABLE table_name ADD UNIQUE ( 字段名称 )
2.普通索引
语法格式:ALTER TABLE test ADD INDEX 索引名称 ( 字段名称 )
3.全文索引
语法格式:ALTER TABLE table_name ADD FULLTEXT ( 字段名称 )
备注:如果是InnoDB,改为MyISAM,InnoDB不支持FULLTEXT类型的索引
InnoDB会报错: [Err] 1214 - The used table type doesn't support FULLTEXT indexes