mysql-修改字段属性(8)

modify和change关键字修改属性,使用modify和change关键字都可以修改字段属性,可以字段的数据格式类型,以及约束性条件。
但是change和modify也有不同之处的,change可以修改字段名,但是modify不能。下面分别测试一下change和Modify

--修改字段类型,字段属性
alter table table_name modify 字段名称 字段类型 [字段属性] [first | after]
--修改字段名称,字段类型,字段属性
alter table table_name change 原字段名称 新字段名称 字段属性[first | after]

mysql> desc test_alter;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)      | NO   | UNI | 小明    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
----修改字段名name的同时修改varchar最大长度以及删除了默认值
mysql> alter table test_alter change name usrname varchar(30) unique not null;
Query OK, 0 rows affected, 1 warning (0.28 sec)
Records: 0  Duplicates: 0  Warnings: 1

mysql> desc test_alter;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| usrname | varchar(30)      | NO   | UNI | NULL    |                |
+---------+------------------+------+-----+---------+----------------+
-----可以看到name字段名称改成了usrname,varchar长度也已经修改,default默认值也删除了。

mysql> create table test_alter(
    -> id int unsigned auto_increment key,
    -> name varchar(30) not null unique)engine=innodb charset=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> desc test_alter;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(30)      | NO   | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
---使用modify修改varchar数据长度
mysql> alter table test_alter
    -> modify name varchar(40) not null unique key;
Query OK, 0 rows affected, 1 warning (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 1

mysql> desc test_alter;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(40)      | NO   | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
----添加两列addr(地址),email(邮箱)
mysql> alter table test_alter  add addr varchar(30) not null default '北京',  add email varchar(40) not null unique default '1122@126.com';
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_alter;
+-------+------------------+------+-----+--------------+----------------+
| Field | Type             | Null | Key | Default      | Extra          |
+-------+------------------+------+-----+--------------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL         | auto_increment |
| name  | varchar(40)      | NO   | UNI | NULL         |                |
| addr  | varchar(30)      | NO   |     | 北京         |                |
| email | varchar(40)      | NO   | UNI | 1122@126.com |                |
+-------+------------------+------+-----+--------------+----------------+
4 rows in set (0.00 sec)
--使用Modify关键字同时修改addr字段和email字段的属性以及约束条件,中间采用逗号分隔符.
mysql> alter table test_alter modify addr varchar(40) default '深圳',  modify email varchar(50) not null unique default '12345@11.com';
Query OK, 0 rows affected, 1 warning (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 1

mysql> desc test_alter;
+-------+------------------+------+-----+--------------+----------------+
| Field | Type             | Null | Key | Default      | Extra          |
+-------+------------------+------+-----+--------------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL         | auto_increment |
| name  | varchar(40)      | NO   | UNI | NULL         |                |
| addr  | varchar(40)      | YES  |     | 深圳         |                |
| email | varchar(50)      | NO   | UNI | 12345@11.com |                |
+-------+------------------+------+-----+--------------+----------------+
4 rows in set (0.00 sec)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值