Mysql约束总结

  • A+
所属分类:Mysql

之前总是习惯使用Navicat来建表添加约束,方便是真的方便,以至于有一天写项目的时候发现竟然不会手写添加约束的语句了。。。

这两天总结了下关于mysql的一些约束,

主键约束
意义:它能够唯一确定一张表中的一条记录,也就是通过给某个字段添加约束,就可以适当该字段不重复且不为空。

创建方法

建表时创建
create table 表名(
字段名 字段类型 primary key,

);

建表后创建
alter table 表名 add primary key(列名);

+——-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+————–+——+—–+———+——-+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | YES | | NULL | |
| pass | varchar(255) | YES | | NULL | |
+——-+————–+——+—–+———+——-+

删除主键约束
alter table 表名 drop primary key;

联合主键
意义:联合主键就是用2个或2个以上的字段组成主键,联合主键可以分别重复,但不能同时重复。

建表时创建

create table 表名(
字段名 字段类型,
字段名 字段类型,
字段名 字段类型,
primary key(字段1,字段2)

);

建表后创建

alter table 表名 add primary key(列名1,列名2);

删除联合主键
alter table 表名 drop primary key;

自增约束
意义:自增约束的列必须是键列(主键,唯一键,外键),且一张表只能有一个自增约束,设置自增约束后,列值会自动增长。

建表时创建

create table 表名(
字段名1 int primary key auto_increment,
字段名2 数据类型 ,
字段名3 数据类型

);

建表后创建

alter table 表名称 modify 字段名 数据类型 auto_increment;

删除自增约束

alter table 表名称 modify 字段名 数据类型;

唯一约束
意义:约束修饰的字段值不可以重复

建表时创建
create table 表名(
字段1 类型 primary key,
字段2 类型 unique,
字段3 类型
);

+——-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+————–+——+—–+———+——-+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | NO | UNI | NULL | |
| pass | varchar(255) | YES | | NULL | |
+——-+————–+——+—–+———+——-+

建表后创建
alter table 表名 add unique(列名);

删除约束
alter table 表名 drop index 列名;

非空约束
意义:修饰的字段不能为空

建表时创建
create table 表名(
字段1 类型 not null,
字段2 类型,

);

建表后创建

alter table 表名 change column 字段名 字段名 类型 not null;

删除约束
alter table 表名 change column 字段名 字段名 类型 null;

默认约束
意义:就是当我们插入字段值的时候,如果没有传值,就会使用设置的默认值

建表时创建

create table 表名(
字段1 类型,
字段2 类型,
字段3 类型 default 默认值
);

+——-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+————–+——+—–+———+——-+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
| pass | varchar(255) | YES | | 123 | |
+——-+————–+——+—–+———+——-+

建表后创建
alter table 表名 modify 字段名 类型 default 默认值

删除默认约束
alter table 表名 alter column 字段名 drop default;

外键约束
意义:外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性

建表时创建

主表
create table classes(
字段1 类型 primary key,
字段2 类型
)ENGINE=innoDB DEFAULT CHARSET=utf8;

从表
create table students(
字段1 类型 primary key,
rimary key,
字段3 类型,
foreign key(从表的字段3) references 主表名(主表的字段1)
)ENGINE=innoDB DEFAULT CHARSET=utf8;

注意:数据表引擎需设置为innoDB,否则可能会不支持外键

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: