数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。
约束类型 | 约束 | 主键 | 外键 | 唯一 | 非空 | 默认 | 检查 | 自增 |
---|---|---|---|---|---|---|---|---|
关键字 | constraint | primary key | foreign key | unique | not null | default | check | auto_incteament |
1、主键约束 primary key
- 主键约束相当于 唯一约束 + 非空约束 的组合。
- 每个表只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
--列级别创建
<字段名> <数据类型> primary key
--表级别创建
[constraint <约束名>] primary key <字段名1、字段名2>
-- 单列
create table temp(
id int primary key,
name varchar(20)
);
-- 多列组合
create table temp(
id int ,
name varchar(20),
primary key(id, name)
);
-- 删除主键约束
alter table 表名 drop primary key;
-- 添加主键约束
alter table 表名 add primary key(id,name);
-- 修改主键约束
alter table 表名 modify 字段名 字段属性 primary key;
2、外键约束 foreign key
、references
、cascade
用来在两个表的数据之间建立链接,它可以是一列或者多列,一个表可以有一个或多个外键。外键的每个非空值出现在指定的主键中。
--表级别添加
constraint [外键约束名称] foreign key(外键字段名) references 主表名(主键字段名)
--建表之后添加
alter table 从表 add [constraint [外键约束名称] foreign key (外键字段名) references 主表(主键字段名);
--删除外键
alter table 表名 drop foreign key 外键名称;
外键联级
constraint [外键约束名称] foreign key(外键字段名) references 主表名(主键字段名) on update cascade on delete cascade
这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。
on update
和 on delete
后面可以跟的词语有四个
no action
表示 不做任何操作,
set null
表示在外键表中将相应字段设置为null
set default
表示设置为默认值
cascade
表示级联操作,主键表中被参考字段更新/删除,外键表中也更新/删除
不用联级,修改主表只能先改从表,设置空,再改主表
3、唯一约束unique
--列级别创建
<字段名> <数据类型> unique
--表级别创建,有单列
[constraint <约束名>] unique <字段名1、字段名2>
4、非空约束not null
--列级别创建
<字段名> <数据类型> not null
5、默认约束default
--列级别创建
<字段名> <数据类型> default<默认值>
--修改
alter table 表名 change 字段名 <数据类型> default <默认值>;
--删除
alter table 表名 change 字段名 <数据类型> default null;
6、检查约束check
--建表增加检查约束
check<SQL 表达式>
--修改检查约束
alter table 表名 add constraint 检查约束名 check (检查约束表达式)
7、自增约束auto_incteament
主键字段后