Mysql 主键约束、唯一约束、联合唯一约束、非空约束、外键约束
主键约束 PRIMARY KEY
PRIMARY KEY 主键是唯一的,一张表只能有一个主键
主键可以由多个字段组合而成(字段越少越好),多个字段时复合主键形成唯一索引
主键不允许为空
在创建表时,添加主键约束
自动增长:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长
1
2
3
4
5
6 > create table stu(
> Id int(11) NOT NULL AUTO_INCREMENT, --自动增长数值
> username varchar(20) NOT NULL unique,
> PRIMARY KEY(Id)
> );
>
删除自动增长
1
2 > ALTER TABLE stu MODIFY Id int(11) NOT NULL;
>
添加自动增长
1
2 > ALTER TABLE stu MODIFY Id int(11) NOT NULL AUTO_INCREMENT;
>
删除主键
1
2 > ALTER TABLE stu DROP PRIMARY KEY;
>
创建完表后添加主键
1
2 > ALTER TABLE stu MODIFY Id int(11) NOT NULL PRIMARY KEY;
>
唯一约束 UNIQUE KEY
唯一约束可以保证数据的唯一性
每张表可以存在多个唯一约束
唯一约束的字段可以为空
添加唯一约束、联合唯一约束
注:text类型字段不能添加唯一约束
1
2
3
4 > ALTER TABLE tableName ADD UNIQUE(key1);
>
> ALTER TABLE tableName ADD UNIQUE KEY(key1, key2);
>
查看添加后的结果
1
2 > SHOW INDEX FROM tableName
>
可以看到唯一约束添加后,实际上建立了一个索引,将此索引删除后就是删除了唯一约束
注:其中联合唯一约束建立的索引名为key1(第一个key的名称)
1
2 > ALTER TABLE tableName DROP INDEX 索引名;
>
Mysql 修改字段类型
能修改字段类型、类型长度、默认值、注释
1
2
3 > ALTER TABLE tableName MODIFY userId INT(20) NOT NULL
> ALTER TABLE tableName MODIFY column1 decimal(10,1) DEFAULT NULL COMMENT '注释'; -- 正常,能修改字段类型、类型长度、默认值、注释
>
修改字段名
1
2 > ALTER TABLE table1 CHANGE column1 column2 DECIMAL(10,1) DEFAULT NULL COMMENT '注释'
>
Mysql 修改数据表编码为 utf8mb4 (存放emoji)
1 | ALTER TABLE neZha_maoyan_comment_test CONVERT TO CHARACTER SET utf8mb4; |