51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Mysql约束总结

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

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

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

创建方法

建表时创建
create table 表名(
字段名 字段类型primarykey,
...
);

建表后创建
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,否则可能会不支持外键


赞(4)
未经允许不得转载:工具盒子 » Mysql约束总结