一、简介
- ALTER DATABASE:用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中,要使用ALTER DATABASE,您需要获得数据库ALTER权限。
- ALTER TABLE:用于更改原有表的结构。如:
- 对表操作,更改表名
- 对列操作,可以 增加、修改(重命名,修改属性)、删除
- 对索引操作,可以 创建,取消,更改(索引原有列)
- 本文仅整理一些简单的语法,若有需要请移步 MSQL中文文档
二、ALTER DATABASE语法
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification [, alter_specification] ...
alter_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
CHARACTER SET 子句用于更改默认的数据库字符集
COLLATE子句用于更改默认的数据库整序
三、ALTER TABLE 语法
3.1、对表操作
-- 修改 table1 表名为 table2
ALTER TABLE table1 RENAME TO table2;
3.2、对表字段操作
-- ----------------------- 新增(ADD)
-- 给 table1 表增加 field1 字段,类型为 INT 长度默认,并且设置不能为空
ALTER TABLE table1 ADD field1 INT NOT NULL;
-- 给 table1 表增加 field2 字段,类型为 CHAR 长度为 2,并且设置定位第一列(FIRST)
ALTER TABLE table1 ADD field2 CHAR(2) FIRST;
-- 将 table1 表增加 field3 字段,类型为 VARCHAR 长度为 2,并且设置定位在 field2 后边
ALTER TABLE table1 ADD field3 VARCHAR(2) AFTER field2;
-- 注意:FIRST 和 AFTER 关键字只使用于 ADD 子句
-- ----------------------- 修改(MODIFY | CHANGE)
-- 将 table1 表字段 field2 的类型改为 CHAR 长度为 100
ALTER TABLE table1 MODIFY field2 CHAR(100);
-- 将 table1 表字段 field2 的类型改为 CHAR 长度为2,并设置不为空,默认值为 '1'
ALTER TABLE table1 MODIFY field2 CHAR(2) NOT NULL DEFAULT '1';
-- 讲 table1 表字段 field2 的类型改为 CHAR 长度为2,并设置注解为“性别,1男0女”
ALTER TABLE table1 MODIFY field2 CHAR(2) COMMENT '性别,1男0女'
-- 将 table1 表字段 field1 重命名为 field4 并且设置为 主键
ALTER TABLE table1 CHANGE field1 field4 BIGINT PRIMARY KEY;
-- 注意:如果不设置默认值,MySQL会自动设置该字段默认为 NULL
-- ----------------------- 删除(DROP)
-- 删除 table1 表的 field 字段
ALTER TABLE table1 DROP field;
-- 删除 table1 表字段 field2 的默认值
ALTER TABLE table1 ALTER field2 DROP DEFAULT;
3.3、对主键和索引操作
-- ----------------------- 主键
-- 删除表主键(删除table1 表中主键)
ALTER TABLE table1 DROP PRIMARY KEY;
-- 添加主键(设置 table1表中 field2 为主键字段)
ALTER TABLE table1 ADD CONSTRAINT PK_TABKE1 PRIMARY KEY ( field2 );
-- ----------------------- 索引
-- 添加索引(为table1表添加索引,索引列为 field3,名称是 index_name )
ALTER TABLE table1 ADD INDEX index_name (field3);
-- 查看索引
SHOW INDEX FROM table1;
-- 添加唯一限制索引(为 table1 表添加唯一索引,索引列为 field4,索引名称为unique_name)
ALTER TABLE table1 ADD UNIQUE unique_name(field4);
-- 删除索引(删除 table1 表中 索引名称为 'index_name' 的索引)
ALTER TABLE table1 DROP INDEX index_name;
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
标题:MySQL学习整理(ALTER命令)
作者:wangjing
地址:https://www.codedblogs.cn/articles/2024/04/12/1712905131886.html