SQL-ALTER-change和modify区别
ALTER 对于列的应用:
1.更改列名
格式:CHANGE
old_col_name
new_col_name
column_definition
保留old和new列名
列名:a ---->b 列类型
ALTER TABLE t1 CHANGE a b INTEGER;
2.更改列类型,不改列名
保留old和new的列名,即使一样。
ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
3.更改列类型,不改列名。
不保留old列名。
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
注意:
< 1>.使用CHANGE或者MODIFY时,列的定义必须包含:数据的类型和应用到列上的属性,但不包括:索引,例如:
PRIMARY KEY
or UNIQUE
例如: 列的定义:
INT UNSIGNED DEFAULT 1 COMMENT 'my column'
更改 :
ALTER TABLE t1 MODIFY col1 BIGINT UNSIGNED DEFAULT 1 COMMENT 'my column';
<2>.使用CHANGE或者MODIFY改变数据类型时,列的值也会尽可能转成对应的列类型。可能会丢失数据,最好,在使用ALTER table 之前设置;strict SQL mode
<3>.增加指定位置的列,可以用FIRST,AFTER column_name,
<4>.使用CHANGE,MODIFY缩短列的长度候,列长小于对应索引长度,索引会自动缩短。
4.更改列的默认值:ALTER TABLE tb_name ALTER column_name。
CREATE TABLE test2(id INT ,NAME VARCHAR(4)); 在不指定默认值的情况下,建表之后:默认null。
更改默认值:ALTER TABLE test2 ALTER name SET DEFAULT '';
注意:更改默认值 只对更改之后,新插入的数据有效。表中以前的数据,是NULL还是NULL,是空还是空。
远方不一定有诗,但有更好的自己!你我共勉!