Mysql 主键约束、唯一约束、联合唯一约束、非空约束、外键约束

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;